common: avb_verify: Fix memory leaks
authorEugeniu Rosca <roscaeugeniu@gmail.com>
Tue, 14 Aug 2018 00:43:07 +0000 (02:43 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 24 Aug 2018 17:19:53 +0000 (13:19 -0400)
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 <erosca@de.adit-jv.com>
Reviewed-by: Igor Opaniuk <igor.opaniuk@linaro.org>
common/avb_verify.c

index 55632500db264405a468331a475447247fe28174..0bc1c2369fac419372595a97462c14d052542a30 100644 (file)
@@ -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,