lib/device_tree.c: zero-initialize new DT nodes

Prevents bad things from happening later when these new nodes are used.

This issue is hard to observe because:
 1. Heap is zero-initialized, so you need to use allocated memory
    filling it with non-zero values, free, allocate it again, use
    uninitialized.
 2. Most of allocated memory is not freed.
 3. Implementation of free() does something only for one last malloc'ed
    block, making most of freed memory unavailable for future
    allocation.

Change-Id: I38a7ec1949d80f7a2564fac380ce94de6056a0c7
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/62928
Reviewed-by: Krystian Hebel <krystian.hebel@3mdeb.com>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Sergii Dmytruk 2022-03-13 18:23:17 +02:00 committed by Felix Held
parent 9ad63e4460
commit 206328d57b
1 changed files with 1 additions and 1 deletions

View File

@ -554,7 +554,7 @@ struct device_tree_node *dt_find_node(struct device_tree_node *parent,
if (!create) if (!create)
return NULL; return NULL;
found = malloc(sizeof(*found)); found = calloc(1, sizeof(*found));
if (!found) if (!found)
return NULL; return NULL;
found->name = strdup(*path); found->name = strdup(*path);