From: Dongwoo Lee Date: Fri, 25 Aug 2017 06:12:02 +0000 (+0900) Subject: pass: parser: Fix memory leakage for resource list X-Git-Tag: submit/tizen/20170828.071557~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=36b1a1e3e2314a0f723ff3289623de38c34e680d;p=platform%2Fcore%2Fsystem%2Fpass.git pass: parser: Fix memory leakage for resource list Resource list is allocated during pass configuration is parsed. But, nowhere is deallocation function for freeing it. To protect memory leakage, resource will be freed properly. Change-Id: I6125c06604e2b0c6824c258b2a4d4f6ce4a2d902 Signed-off-by: Dongwoo Lee --- diff --git a/src/pass/pass-parser.c b/src/pass/pass-parser.c index 73f5b08..c27ec2f 100644 --- a/src/pass/pass-parser.c +++ b/src/pass/pass-parser.c @@ -661,7 +661,13 @@ static int pass_resource_config(struct parse_result *result, void *user_data) return 0; } -int pass_parse_resource(struct pass *pass, char *pass_conf_path) +int pass_get_resource_config(struct pass *pass, char *pass_conf_path) { return config_parse(pass_conf_path, pass_resource_config, pass); } + +void pass_put_resource_config(struct pass *pass) +{ + free(pass->res); + pass->res = NULL; +} diff --git a/src/pass/pass-parser.h b/src/pass/pass-parser.h index 1b6bf44..81c6674 100644 --- a/src/pass/pass-parser.h +++ b/src/pass/pass-parser.h @@ -23,6 +23,7 @@ int pass_get_table(struct pass_policy *policy, char *pass_conf_path); void pass_put_table(struct pass_policy *policy); -int pass_parse_resource(struct pass *pass, char *pass_conf_path); +int pass_get_resource_config(struct pass *pass, char *pass_conf_path); +void pass_put_resource_config(struct pass *pass); #endif /* __PASS_PARSER__ */ diff --git a/src/pass/pass.c b/src/pass/pass.c index b0ab1b2..8794080 100644 --- a/src/pass/pass.c +++ b/src/pass/pass.c @@ -217,7 +217,7 @@ static int pass_init_done(void *data, void *user_data) int i, ret; /* Parse configuration file (/etc/pass/pass.conf) */ - ret = pass_parse_resource(&g_pass, PASS_CONF_PATH); + ret = pass_get_resource_config(&g_pass, PASS_CONF_PATH); if (ret < 0) { _E("cannot parse %s\n", PASS_CONF_PATH); return ret; @@ -304,6 +304,8 @@ static int pass_exit_done(void) } } + pass_put_resource_config(&g_pass); + return 0; }