Commit dfdf60c69cabab3d3f4ed31840bd4f0a72ba8e0e
Committed by
Ji Luo
1 parent
682826b332
Exists in
smarc_8mm-imx_v2018.03_4.14.98_2.0.0_ga
and in
4 other branches
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>
Showing 1 changed file with 37 additions and 20 deletions Side-by-side Diff
lib/avb/fsl/fsl_avbkey.c
... | ... | @@ -84,12 +84,14 @@ |
84 | 84 | dev_desc = blk_get_dev("mmc", mmcc); |
85 | 85 | #else |
86 | 86 | dev_desc = mmc_get_blk_desc(mmc); |
87 | - original_part = dev_desc->hwpart; | |
88 | 87 | #endif |
89 | 88 | if (NULL == dev_desc) { |
90 | 89 | printf("** Block device MMC %d not supported\n", mmcc); |
91 | 90 | return -1; |
92 | 91 | } |
92 | +#ifdef CONFIG_BLK | |
93 | + original_part = dev_desc->hwpart; | |
94 | +#endif | |
93 | 95 | |
94 | 96 | blksz = dev_desc->blksz; |
95 | 97 | fill = (unsigned char *)memalign(ALIGN_BYTES, blksz); |
... | ... | @@ -101,7 +103,10 @@ |
101 | 103 | goto fail;; |
102 | 104 | } |
103 | 105 | |
104 | - mmc_switch_part(mmc, KEYSLOT_HWPARTITION_ID); | |
106 | + if (mmc_switch_part(mmc, KEYSLOT_HWPARTITION_ID) != 0) { | |
107 | + ret = -1; | |
108 | + goto fail; | |
109 | + } | |
105 | 110 | #ifndef CONFIG_BLK |
106 | 111 | mmc->block_dev.hwpart = KEYSLOT_HWPARTITION_ID; |
107 | 112 | #else |
... | ... | @@ -276,8 +281,9 @@ |
276 | 281 | /* Return to original partition */ |
277 | 282 | if (desc->hwpart != original_part) { |
278 | 283 | if (mmc_switch_part(mmc, original_part) != 0) |
279 | - return -1; | |
280 | - desc->hwpart = original_part; | |
284 | + ret = -1; | |
285 | + else | |
286 | + desc->hwpart = original_part; | |
281 | 287 | } |
282 | 288 | if (blob != NULL) |
283 | 289 | free(blob); |
... | ... | @@ -380,8 +386,9 @@ |
380 | 386 | /* Return to original partition */ |
381 | 387 | if (desc->hwpart != original_part) { |
382 | 388 | if (mmc_switch_part(mmc, original_part) != 0) |
383 | - return -1; | |
384 | - desc->hwpart = original_part; | |
389 | + ret = -1; | |
390 | + else | |
391 | + desc->hwpart = original_part; | |
385 | 392 | } |
386 | 393 | if (blob != NULL) |
387 | 394 | free(blob); |
... | ... | @@ -576,7 +583,11 @@ |
576 | 583 | } |
577 | 584 | memcpy(fill, kp, sizeof(struct keyslot_package)); |
578 | 585 | |
579 | - mmc_switch_part(mmc, KEYSLOT_HWPARTITION_ID); | |
586 | + if (mmc_switch_part(mmc, KEYSLOT_HWPARTITION_ID) != 0) { | |
587 | + ret = -1; | |
588 | + goto fail; | |
589 | + } | |
590 | + | |
580 | 591 | if (blk_dwrite(dev_desc, KEYSLOT_BLKS, |
581 | 592 | 1, (void *)fill) != 1) { |
582 | 593 | printf("Failed to write rpmbkeyblob."); |
583 | 594 | |
... | ... | @@ -586,15 +597,19 @@ |
586 | 597 | /* program key to mmc */ |
587 | 598 | #ifndef CONFIG_BLK |
588 | 599 | if (mmc->block_dev.hwpart != MMC_PART_RPMB) { |
589 | - if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0) | |
590 | - return -1; | |
591 | - mmc->block_dev.hwpart = MMC_PART_RPMB; | |
600 | + if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0) { | |
601 | + ret = -1; | |
602 | + goto fail; | |
603 | + } else | |
604 | + mmc->block_dev.hwpart = MMC_PART_RPMB; | |
592 | 605 | } |
593 | 606 | #else |
594 | 607 | if (dev_desc->hwpart != MMC_PART_RPMB) { |
595 | - if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0) | |
596 | - return -1; | |
597 | - dev_desc->hwpart = MMC_PART_RPMB; | |
608 | + if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0) { | |
609 | + ret = -1; | |
610 | + goto fail; | |
611 | + } else | |
612 | + dev_desc->hwpart = MMC_PART_RPMB; | |
598 | 613 | } |
599 | 614 | #endif |
600 | 615 | if (mmc_rpmb_set_key(mmc, plain_key)) { |
601 | 616 | |
602 | 617 | |
603 | 618 | |
... | ... | @@ -605,23 +620,25 @@ |
605 | 620 | ret = 0; |
606 | 621 | |
607 | 622 | fail: |
608 | - if (fill != NULL) | |
609 | - free(fill); | |
610 | - | |
611 | 623 | /* Return to original partition */ |
612 | 624 | #ifndef CONFIG_BLK |
613 | 625 | if (mmc->block_dev.hwpart != original_part) { |
614 | 626 | if (mmc_switch_part(mmc, original_part) != 0) |
615 | - return -1; | |
616 | - mmc->block_dev.hwpart = original_part; | |
627 | + ret = -1; | |
628 | + else | |
629 | + mmc->block_dev.hwpart = original_part; | |
617 | 630 | } |
618 | 631 | #else |
619 | 632 | if (dev_desc->hwpart != original_part) { |
620 | 633 | if (mmc_switch_part(mmc, original_part) != 0) |
621 | - return -1; | |
622 | - dev_desc->hwpart = original_part; | |
634 | + ret = -1; | |
635 | + else | |
636 | + dev_desc->hwpart = original_part; | |
623 | 637 | } |
624 | 638 | #endif |
639 | + if (fill != NULL) | |
640 | + free(fill); | |
641 | + | |
625 | 642 | return ret; |
626 | 643 | |
627 | 644 | } |