From b71806b0e4cf2d6445d65bfe005dbdea76ab9bc7 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 16 Oct 2017 18:50:23 +0900 Subject: [PATCH] pio: fix memory leak - Overwriting key_list in key_list = iniparser_getseckeys(dict, section) leaks the storage that key_list points to. Change-Id: Ia1aefe750ff8addfd40c6372a2720e5515289a8e Signed-off-by: kibak.yoon --- src/daemon/peripheral_bus_board.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/daemon/peripheral_bus_board.c b/src/daemon/peripheral_bus_board.c index a08ea54..b2abbc7 100644 --- a/src/daemon/peripheral_bus_board.c +++ b/src/daemon/peripheral_bus_board.c @@ -156,8 +156,6 @@ static pb_board_s *peripheral_bus_board_get_info() dictionary *dict = NULL; int i, j, ret; int sec_num, key_num, cnt_key = 0; - char *section, *key_str; - char **key_list = NULL; pb_board_dev_s *dev; pb_board_dev_e enum_dev; pb_board_s *board; @@ -195,6 +193,9 @@ static pb_board_s *peripheral_bus_board_get_info() sec_num = iniparser_getnsec(dict); for (i = 0; i < sec_num; i++) { + char *section, *key_str; + char **key_list = NULL; + section = iniparser_getsecname(dict, i); ret = peripheral_bus_board_get_device_type(section); if (ret < 0) continue; @@ -212,10 +213,10 @@ static pb_board_s *peripheral_bus_board_get_info() dev->num_pins = peripheral_bus_board_ini_parse_pins(key_str, dev->pins); cnt_key++; } - } - if (key_list) - free(key_list); + if (key_list) + free(key_list); + } iniparser_freedict(dict); -- 2.34.1