mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
stub: mem fixes in devicetree addon handling (#33624)
* stub: mem fixes in devicetree addon handling Two bugs here: The elements are of size `DevicetreeAddon`, not `size_t`, and `[]` binds stronger than `*`. This means the first element is ok, but the second corrupts the stack. Found this while refactoring #32463
This commit is contained in:
@@ -463,10 +463,10 @@ static EFI_STATUS load_addons(
|
||||
|
||||
if (devicetree_addons && PE_SECTION_VECTOR_IS_SET(sections + UNIFIED_SECTION_DTB)) {
|
||||
*devicetree_addons = xrealloc(*devicetree_addons,
|
||||
*n_devicetree_addons * sizeof(size_t),
|
||||
(*n_devicetree_addons + 1) * sizeof(size_t));
|
||||
*n_devicetree_addons * sizeof(DevicetreeAddon),
|
||||
(*n_devicetree_addons + 1) * sizeof(DevicetreeAddon));
|
||||
|
||||
*devicetree_addons[(*n_devicetree_addons)++] = (DevicetreeAddon) {
|
||||
(*devicetree_addons)[(*n_devicetree_addons)++] = (DevicetreeAddon) {
|
||||
.blob = {
|
||||
.iov_base = xmemdup((const uint8_t*) loaded_addon->ImageBase + sections[UNIFIED_SECTION_DTB].memory_offset, sections[UNIFIED_SECTION_DTB].size),
|
||||
.iov_len = sections[UNIFIED_SECTION_DTB].size,
|
||||
|
||||
Reference in New Issue
Block a user