util/cbfstool/flashmap: Fix memory leaks on failure

Fix several memory leaks on failed printing or tests. These don't matter
much, but it keeps Coverity happy.

Change-Id: Ie750acb50ae1590c3aea533338a8827c03459c1a
Signed-off-by: Jacob Garber <jgarber1@ualberta.ca>
Found-by: Coverity CID 130245{1,2,3}
Reviewed-on: https://review.coreboot.org/c/coreboot/+/34412
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: HAOUAS Elyes <ehaouas@noos.fr>
This commit is contained in:
Jacob Garber 2019-07-18 15:57:45 -06:00 committed by Martin Roth
parent b3042ed234
commit 3a82e9b8a3
1 changed files with 8 additions and 4 deletions

View File

@ -236,8 +236,11 @@ int fmap_print(const struct fmap *fmap)
/* Print descriptive strings for flags rather than the field */ /* Print descriptive strings for flags rather than the field */
flags = fmap->areas[i].flags; flags = fmap->areas[i].flags;
if ((str = fmap_flags_to_string(flags)) == NULL) str = fmap_flags_to_string(flags);
if (str == NULL) {
kv_pair_free(pair);
return -1; return -1;
}
kv_pair_fmt(pair, "area_flags", "%s", str); kv_pair_fmt(pair, "area_flags", "%s", str);
free(str); free(str);
@ -509,7 +512,8 @@ fmap_find_area_test_exit:
static int fmap_flags_to_string_test(void) static int fmap_flags_to_string_test(void)
{ {
char *str, *my_str; char *str = NULL;
char *my_str = NULL;
unsigned int i; unsigned int i;
uint16_t flags; uint16_t flags;
@ -555,11 +559,11 @@ static int fmap_flags_to_string_test(void)
printf("FAILURE: bad result from fmap_flags_to_string\n"); printf("FAILURE: bad result from fmap_flags_to_string\n");
goto fmap_flags_to_string_test_exit; goto fmap_flags_to_string_test_exit;
} }
free(my_str);
free(str);
status = pass; status = pass;
fmap_flags_to_string_test_exit: fmap_flags_to_string_test_exit:
free(str);
free(my_str);
return status; return status;
} }