pass: parser: Fix memory leakage for resource list 61/146161/2
authorDongwoo Lee <dwoo08.lee@samsung.com>
Fri, 25 Aug 2017 06:12:02 +0000 (15:12 +0900)
committerDongwoo Lee <dwoo08.lee@samsung.com>
Fri, 25 Aug 2017 07:41:43 +0000 (16:41 +0900)
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 <dwoo08.lee@samsung.com>
src/pass/pass-parser.c
src/pass/pass-parser.h
src/pass/pass.c

index 73f5b08..c27ec2f 100644 (file)
@@ -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;
+}
index 1b6bf44..81c6674 100644 (file)
@@ -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__ */
index b0ab1b2..8794080 100644 (file)
@@ -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;
 }