diff options
author | SzuWei Lin <szuweilin@google.com> | 2017-04-07 18:56:13 +0800 |
---|---|---|
committer | SzuWei Lin <szuweilin@google.com> | 2017-04-10 03:12:15 +0000 |
commit | 70107c8f5c65bc9798d8f6b7f5b580997d0aca19 (patch) | |
tree | 15b82b50d8419412e59559fb0f6c8a6e44b584d6 /ufdt_overlay.c | |
parent | 1661eb958a0f7b4f9ebcf0a73257019d97e52901 (diff) | |
download | libufdt-70107c8f5c65bc9798d8f6b7f5b580997d0aca19.tar.gz |
Fix memory and file leak
Bug: 35652061
Test: valgrind --leak-check=yes --show-reachable=yes ufdt_apply_overlay ...
and result no leak
Change-Id: Iec0fe77468d2fdf6c692209cd9571c02f96e2e44
Diffstat (limited to 'ufdt_overlay.c')
-rw-r--r-- | ufdt_overlay.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/ufdt_overlay.c b/ufdt_overlay.c index b595c4f..05f949f 100644 --- a/ufdt_overlay.c +++ b/ufdt_overlay.c @@ -625,10 +625,10 @@ struct fdt_header *ufdt_apply_overlay(struct fdt_header *main_fdt_header, return NULL; } - struct ufdt *main_tree, *overlay_tree; + struct ufdt *main_tree = NULL; + struct ufdt *overlay_tree = NULL; main_tree = fdt_to_ufdt(main_fdt_header, main_fdt_size); - overlay_tree = fdt_to_ufdt(overlay_fdtp, overlay_size); int err = ufdt_overlay_apply(main_tree, overlay_tree, overlay_size); @@ -642,13 +642,15 @@ struct fdt_header *ufdt_apply_overlay(struct fdt_header *main_fdt_header, goto fail; } - ufdt_destruct(main_tree); ufdt_destruct(overlay_tree); + ufdt_destruct(main_tree); + return out_fdt_header; fail: - ufdt_destruct(main_tree); ufdt_destruct(overlay_tree); + ufdt_destruct(main_tree); dto_free(out_fdt_header); + return NULL; } |