When the policy file doesn't define all values of the policy
some of the values are not properly initialized or set
to sane defaults. Setting all values to defaults and then
overwrite all or partially is what most people would expect.
Let's do it this way.
---
 plugins/session_policy_local.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/plugins/session_policy_local.c b/plugins/session_policy_local.c
index b2369bd..f003c0e 100644
--- a/plugins/session_policy_local.c
+++ b/plugins/session_policy_local.c
@@ -459,6 +459,8 @@ static int load_policy(GKeyFile *keyfile, const char 
*groupname,
        str = g_key_file_get_string(keyfile, groupname, "AllowedBearers",
                                NULL);
        if (str) {
+               g_slist_free(config->allowed_bearers);
+               config->allowed_bearers = NULL;
                tokens = g_strsplit(str, " ", 0);
 
                for (i = 0; tokens[i]; i++) {
@@ -623,7 +625,7 @@ static int load_file(const char *filename, struct 
policy_file *file)
 
        for (i = 0; groupnames[i]; i++) {
                group = g_new0(struct policy_group, 1);
-               group->config = g_new0(struct connman_session_config, 1);
+               group->config = connman_session_create_default_config();
 
                err = load_policy(keyfile, groupnames[i], group);
                if (err < 0) {
-- 
2.4.3

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to