aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Fan2016-05-02 21:24:52 -0500
committerMarek Vasut2016-05-06 13:06:56 -0500
commit5d8fae79163e94671956c99654abf48cf49757ba (patch)
treee3da0f8e08b8a27a097bfae31c694eb32dba5d67
parent2bf352f0c1b7f58d4610bc0777e8febbd2dfd5ff (diff)
downloadu-boot-5d8fae79163e94671956c99654abf48cf49757ba.tar.gz
u-boot-5d8fae79163e94671956c99654abf48cf49757ba.tar.xz
u-boot-5d8fae79163e94671956c99654abf48cf49757ba.zip
dfu: avoid memory leak
When dfu_fill_entity fail, need to free dfu to avoid memory leak. Reported by Coverity: " Resource leak (RESOURCE_LEAK) leaked_storage: Variable dfu going out of scope leaks the storage it points to. " Signed-off-by: Peng Fan <van.freenix@gmail.com> Cc: "Ɓukasz Majewski" <l.majewski@samsung.com> Cc: Marek Vasut <marex@denx.de>
-rw-r--r--drivers/dfu/dfu.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 8f5915e49c..20dfcbbf18 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -468,8 +468,10 @@ int dfu_config_entities(char *env, char *interface, char *devstr)
468 s = strsep(&env, ";"); 468 s = strsep(&env, ";");
469 ret = dfu_fill_entity(&dfu[i], s, alt_num_cnt, interface, 469 ret = dfu_fill_entity(&dfu[i], s, alt_num_cnt, interface,
470 devstr); 470 devstr);
471 if (ret) 471 if (ret) {
472 free(dfu);
472 return -1; 473 return -1;
474 }
473 475
474 list_add_tail(&dfu[i].list, &dfu_list); 476 list_add_tail(&dfu[i].list, &dfu_list);
475 alt_num_cnt++; 477 alt_num_cnt++;