summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLuo Ji <ji.luo@nxp.com>2019-03-14 15:04:20 +0800
committerJi Luo <ji.luo@nxp.com>2019-03-15 12:25:28 +0800
commit35599c12090d3e52576d41acfb2b81c16811e4f5 (patch)
treebade05a585b01a6f4001974ca20f9e290a9a3b84 /lib
parentae4200a47bdb28611ca7270333d209bd0c52e3dd (diff)
MA-14374 [coverity] Fix coverity issues in fsl_avbkey.c
Fix coverity issues as: CID 5899697: Dereference before null check (REVERSE_INULL) CID 3616594: Unchecked return value (CHECKED_RETURN) CID 3616598: Resource leak (RESOURCE_LEAK) CID 3616591: Resource leak (RESOURCE_LEAK) Test: Coverity scan pass. Change-Id: I70abb41c3cd825c6eec43dc7e5baec716ae46680 Signed-off-by: Luo Ji <ji.luo@nxp.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/avb/fsl/fsl_avbkey.c57
1 files changed, 37 insertions, 20 deletions
diff --git a/lib/avb/fsl/fsl_avbkey.c b/lib/avb/fsl/fsl_avbkey.c
index 26afe2448d..63d51102f3 100644
--- a/lib/avb/fsl/fsl_avbkey.c
+++ b/lib/avb/fsl/fsl_avbkey.c
@@ -84,12 +84,14 @@ int read_keyslot_package(struct keyslot_package* kp) {
dev_desc = blk_get_dev("mmc", mmcc);
#else
dev_desc = mmc_get_blk_desc(mmc);
- original_part = dev_desc->hwpart;
#endif
if (NULL == dev_desc) {
printf("** Block device MMC %d not supported\n", mmcc);
return -1;
}
+#ifdef CONFIG_BLK
+ original_part = dev_desc->hwpart;
+#endif
blksz = dev_desc->blksz;
fill = (unsigned char *)memalign(ALIGN_BYTES, blksz);
@@ -101,7 +103,10 @@ int read_keyslot_package(struct keyslot_package* kp) {
goto fail;;
}
- mmc_switch_part(mmc, KEYSLOT_HWPARTITION_ID);
+ if (mmc_switch_part(mmc, KEYSLOT_HWPARTITION_ID) != 0) {
+ ret = -1;
+ goto fail;
+ }
#ifndef CONFIG_BLK
mmc->block_dev.hwpart = KEYSLOT_HWPARTITION_ID;
#else
@@ -276,8 +281,9 @@ fail:
/* Return to original partition */
if (desc->hwpart != original_part) {
if (mmc_switch_part(mmc, original_part) != 0)
- return -1;
- desc->hwpart = original_part;
+ ret = -1;
+ else
+ desc->hwpart = original_part;
}
if (blob != NULL)
free(blob);
@@ -380,8 +386,9 @@ fail:
/* Return to original partition */
if (desc->hwpart != original_part) {
if (mmc_switch_part(mmc, original_part) != 0)
- return -1;
- desc->hwpart = original_part;
+ ret = -1;
+ else
+ desc->hwpart = original_part;
}
if (blob != NULL)
free(blob);
@@ -576,7 +583,11 @@ int gen_rpmb_key(struct keyslot_package *kp) {
}
memcpy(fill, kp, sizeof(struct keyslot_package));
- mmc_switch_part(mmc, KEYSLOT_HWPARTITION_ID);
+ if (mmc_switch_part(mmc, KEYSLOT_HWPARTITION_ID) != 0) {
+ ret = -1;
+ goto fail;
+ }
+
if (blk_dwrite(dev_desc, KEYSLOT_BLKS,
1, (void *)fill) != 1) {
printf("Failed to write rpmbkeyblob.");
@@ -586,15 +597,19 @@ int gen_rpmb_key(struct keyslot_package *kp) {
/* program key to mmc */
#ifndef CONFIG_BLK
if (mmc->block_dev.hwpart != MMC_PART_RPMB) {
- if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0)
- return -1;
- mmc->block_dev.hwpart = MMC_PART_RPMB;
+ if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0) {
+ ret = -1;
+ goto fail;
+ } else
+ mmc->block_dev.hwpart = MMC_PART_RPMB;
}
#else
if (dev_desc->hwpart != MMC_PART_RPMB) {
- if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0)
- return -1;
- dev_desc->hwpart = MMC_PART_RPMB;
+ if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0) {
+ ret = -1;
+ goto fail;
+ } else
+ dev_desc->hwpart = MMC_PART_RPMB;
}
#endif
if (mmc_rpmb_set_key(mmc, plain_key)) {
@@ -605,23 +620,25 @@ int gen_rpmb_key(struct keyslot_package *kp) {
ret = 0;
fail:
- if (fill != NULL)
- free(fill);
-
/* Return to original partition */
#ifndef CONFIG_BLK
if (mmc->block_dev.hwpart != original_part) {
if (mmc_switch_part(mmc, original_part) != 0)
- return -1;
- mmc->block_dev.hwpart = original_part;
+ ret = -1;
+ else
+ mmc->block_dev.hwpart = original_part;
}
#else
if (dev_desc->hwpart != original_part) {
if (mmc_switch_part(mmc, original_part) != 0)
- return -1;
- dev_desc->hwpart = original_part;
+ ret = -1;
+ else
+ dev_desc->hwpart = original_part;
}
#endif
+ if (fill != NULL)
+ free(fill);
+
return ret;
}