Commit dfdf60c69cabab3d3f4ed31840bd4f0a72ba8e0e

Authored by Luo Ji
Committed by Ji Luo
1 parent 682826b332

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 }