pass: parser: update policy->scenario.num_scenarios properly 16/158216/2
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Mon, 30 Oct 2017 10:42:24 +0000 (19:42 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Wed, 1 Nov 2017 06:20:15 +0000 (06:20 +0000)
The policy->scenario.num_scenarios is not updated properly if
allocation of policy->scernario.list is failed. Also for case of
free it. Update policy->scenario.num_scenarios properly for both
cases.

Change-Id: I0fe18520ab304c57df9e1cac8713848da19055e4
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
src/pass/pass-parser.c

index e000938146203b4abbf68cb2cafccfe2fb9c315d..07f483ed238d42ede51204f7e9376d3bb07fb71c 100644 (file)
@@ -76,15 +76,15 @@ static int pass_parse_scenario(struct parse_result *result, void *user_data,
                                return -EINVAL;
                        }
 
-                       scenario->num_scenarios = num_scenarios;
-
-                       if (scenario->num_scenarios > 0 && !scenario->list) {
-                               scenario->list = calloc(scenario->num_scenarios,
+                       if (num_scenarios > 0 && !scenario->list) {
+                               scenario->list = calloc(num_scenarios,
                                                sizeof(struct pass_scenario));
                                if (!scenario->list) {
                                        _E("cannot allocate memory for Scenario\n");
                                        return -EINVAL;
                                }
+
+                               scenario->num_scenarios = num_scenarios;
                        }
                }
        }
@@ -486,6 +486,8 @@ void pass_put_table(struct pass_policy *policy)
                free(policy->scenario.list);
                policy->scenario.list = NULL;
        }
+
+       policy->scenario.num_scenarios = 0;
 }
 
 static int pass_parse_resource_data(struct parse_result *result,