Cppcheck (v1.85) reports w/o this patch:

[common/avb_verify.c:351]: (error) Memory leak: part
[common/avb_verify.c:356]: (error) Memory leak: part
[common/avb_verify.c:361]: (error) Memory leak: part
[common/avb_verify.c:366]: (error) Memory leak: part

Signed-off-by: Eugeniu Rosca <ero...@de.adit-jv.com>
---
 common/avb_verify.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/common/avb_verify.c b/common/avb_verify.c
index 9c90e1b4ae5c..58cfa1aa7de8 100644
--- a/common/avb_verify.c
+++ b/common/avb_verify.c
@@ -348,34 +348,37 @@ static struct mmc_part *get_partition(AvbOps *ops, const 
char *partition)
        part->mmc = find_mmc_device(dev_num);
        if (!part->mmc) {
                printf("No MMC device at slot %x\n", dev_num);
-               return NULL;
+               goto err;
        }
 
        if (mmc_init(part->mmc)) {
                printf("MMC initialization failed\n");
-               return NULL;
+               goto err;
        }
 
        ret = mmc_switch_part(part->mmc, part_num);
        if (ret)
-               return NULL;
+               goto err;
 
        mmc_blk = mmc_get_blk_desc(part->mmc);
        if (!mmc_blk) {
                printf("Error - failed to obtain block descriptor\n");
-               return NULL;
+               goto err;
        }
 
        ret = part_get_info_by_name(mmc_blk, partition, &part->info);
        if (!ret) {
                printf("Can't find partition '%s'\n", partition);
-               return NULL;
+               goto err;
        }
 
        part->dev_num = dev_num;
        part->mmc_blk = mmc_blk;
 
        return part;
+err:
+       free(part);
+       return NULL;
 }
 
 static AvbIOResult mmc_byte_io(AvbOps *ops,
-- 
2.18.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to