connman relies on GLib to read key/value pairs from config files

g_key_file_get_string() strips leading whitespace of a value, but
preserves trailing whitespace

this can lead to hard to find errors when values contain whitespace,
e.g.
Type = wifi[blank]
or
Name = MYSSID[blank]
in provisioning config files

no error/warning is given

this patch aims to call g_strchomp() on values read by various
g_key_file_get_...() functions by providing wrapper functions

one problem is handling of pass phrases, given by keys PrivateKeyPassphrase
and Passphrase; trailing whitespace is removed now
---
 src/config.c |   46 +++++++++++++++++++++++-----------------------
 src/main.c   |   18 +++++++++---------
 2 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/src/config.c b/src/config.c
index fee3ed1..f023a97 100644
--- a/src/config.c
+++ b/src/config.c
@@ -377,7 +377,7 @@ static bool load_service_generic(GKeyFile *keyfile,
        char **strlist;
        gsize length;
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_IPv4, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_IPv4, 
NULL);
        if (str && check_address(str, &service->ipv4_address)) {
                mask = NULL;
 
@@ -412,7 +412,7 @@ static bool load_service_generic(GKeyFile *keyfile,
                g_free(str);
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_IPv6, NULL);
+       str =  __connman_config_get_string(keyfile, group, SERVICE_KEY_IPv6, 
NULL);
        if (str && check_address(str, &service->ipv6_address)) {
                long int value;
                char *ptr;
@@ -437,26 +437,26 @@ static bool load_service_generic(GKeyFile *keyfile,
                g_free(str);
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_IPv6_PRIVACY,
+       str = __connman_config_get_string(keyfile, group, 
SERVICE_KEY_IPv6_PRIVACY,
                                                                        NULL);
        if (str) {
                g_free(service->ipv6_privacy);
                service->ipv6_privacy = str;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_MAC, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_MAC, 
NULL);
        if (str) {
                g_free(service->mac);
                service->mac = str;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_DOMAIN, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_DOMAIN, 
NULL);
        if (str) {
                g_free(service->domain_name);
                service->domain_name = str;
        }
 
-       strlist = g_key_file_get_string_list(keyfile, group,
+       strlist = __connman_config_get_string_list(keyfile, group,
                                        SERVICE_KEY_NAMESERVERS,
                                        &length, NULL);
        if (strlist) {
@@ -467,7 +467,7 @@ static bool load_service_generic(GKeyFile *keyfile,
                        g_strfreev(strlist);
        }
 
-       strlist = g_key_file_get_string_list(keyfile, group,
+       strlist = __connman_config_get_string_list(keyfile, group,
                                        SERVICE_KEY_SEARCH_DOMAINS,
                                        &length, NULL);
        if (strlist) {
@@ -478,7 +478,7 @@ static bool load_service_generic(GKeyFile *keyfile,
                        g_strfreev(strlist);
        }
 
-       strlist = g_key_file_get_string_list(keyfile, group,
+       strlist = __connman_config_get_string_list(keyfile, group,
                                        SERVICE_KEY_TIMESERVERS,
                                        &length, NULL);
        if (strlist) {
@@ -533,7 +533,7 @@ static bool load_service(GKeyFile *keyfile, const char 
*group,
                service_created = true;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_TYPE, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_TYPE, 
NULL);
        if (str) {
                g_free(service->type);
                service->type = str;
@@ -556,13 +556,13 @@ static bool load_service(GKeyFile *keyfile, const char 
*group,
                return 0;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_NAME, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_NAME, 
NULL);
        if (str) {
                g_free(service->name);
                service->name = str;
        }
 
-       hex_ssid = g_key_file_get_string(keyfile, group, SERVICE_KEY_SSID,
+       hex_ssid = __connman_config_get_string(keyfile, group, SERVICE_KEY_SSID,
                                         NULL);
        if (hex_ssid) {
                char *ssid;
@@ -605,57 +605,57 @@ static bool load_service(GKeyFile *keyfile, const char 
*group,
                service->ssid_len = ssid_len;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_EAP, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_EAP, 
NULL);
        if (str) {
                g_free(service->eap);
                service->eap = str;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_CA_CERT, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_CA_CERT, 
NULL);
        if (str) {
                g_free(service->ca_cert_file);
                service->ca_cert_file = str;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_CL_CERT, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_CL_CERT, 
NULL);
        if (str) {
                g_free(service->client_cert_file);
                service->client_cert_file = str;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_PRV_KEY, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_PRV_KEY, 
NULL);
        if (str) {
                g_free(service->private_key_file);
                service->private_key_file = str;
        }
 
-       str = g_key_file_get_string(keyfile, group,
+       str = __connman_config_get_string(keyfile, group,
                                                SERVICE_KEY_PRV_KEY_PASS, NULL);
        if (str) {
                g_free(service->private_key_passphrase);
                service->private_key_passphrase = str;
        }
 
-       str = g_key_file_get_string(keyfile, group,
+       str = __connman_config_get_string(keyfile, group,
                                        SERVICE_KEY_PRV_KEY_PASS_TYPE, NULL);
        if (str) {
                g_free(service->private_key_passphrase_type);
                service->private_key_passphrase_type = str;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_IDENTITY, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_IDENTITY, 
NULL);
        if (str) {
                g_free(service->identity);
                service->identity = str;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_PHASE2, NULL);
+       str = __connman_config_get_string(keyfile, group, SERVICE_KEY_PHASE2, 
NULL);
        if (str) {
                g_free(service->phase2);
                service->phase2 = str;
        }
 
-       str = g_key_file_get_string(keyfile, group, SERVICE_KEY_PASSPHRASE,
+       str = __connman_config_get_string(keyfile, group, 
SERVICE_KEY_PASSPHRASE,
                                        NULL);
        if (str) {
                g_free(service->passphrase);
@@ -665,7 +665,7 @@ static bool load_service(GKeyFile *keyfile, const char 
*group,
        service->config_ident = g_strdup(config->ident);
        service->config_entry = g_strdup_printf("service_%s", service->ident);
 
-       service->hidden = g_key_file_get_boolean(keyfile, group,
+       service->hidden = __connman_config_get_bool(keyfile, group,
                                                SERVICE_KEY_HIDDEN, NULL);
 
        if (service_created)
@@ -723,13 +723,13 @@ static int load_config(struct connman_config *config)
        /* Verify keys validity of the global section */
        check_keys(keyfile, "global", config_possible_keys);
 
-       str = g_key_file_get_string(keyfile, "global", CONFIG_KEY_NAME, NULL);
+       str = __connman_config_get_string(keyfile, "global", CONFIG_KEY_NAME, 
NULL);
        if (str) {
                g_free(config->name);
                config->name = str;
        }
 
-       str = g_key_file_get_string(keyfile, "global", CONFIG_KEY_DESC, NULL);
+       str = __connman_config_get_string(keyfile, "global", CONFIG_KEY_DESC, 
NULL);
        if (str) {
                g_free(config->description);
                config->description = str;
diff --git a/src/main.c b/src/main.c
index 7bb7659..c1d4620 100644
--- a/src/main.c
+++ b/src/main.c
@@ -255,14 +255,14 @@ static void parse_config(GKeyFile *config)
 
        g_clear_error(&error);
 
-       timeservers = g_key_file_get_string_list(config, "General",
+       timeservers = __connman_config_get_string_list(config, "General",
                                        CONF_PREF_TIMESERVERS, NULL, &error);
        if (!error)
                connman_settings.pref_timeservers = timeservers;
 
        g_clear_error(&error);
 
-       str_list = g_key_file_get_string_list(config, "General",
+       str_list = __connman_config_get_string_list(config, "General",
                        CONF_AUTO_CONNECT, &len, &error);
 
        if (!error)
@@ -276,7 +276,7 @@ static void parse_config(GKeyFile *config)
 
        g_clear_error(&error);
 
-       str_list = g_key_file_get_string_list(config, "General",
+       str_list = __connman_config_get_string_list(config, "General",
                        CONF_PREFERRED_TECHS, &len, &error);
 
        if (!error)
@@ -287,7 +287,7 @@ static void parse_config(GKeyFile *config)
 
        g_clear_error(&error);
 
-       str_list = g_key_file_get_string_list(config, "General",
+       str_list = __connman_config_get_string_list(config, "General",
                        CONF_FALLBACK_NAMESERVERS, &len, &error);
 
        if (!error)
@@ -312,7 +312,7 @@ static void parse_config(GKeyFile *config)
 
        g_clear_error(&error);
 
-       interfaces = g_key_file_get_string_list(config, "General",
+       interfaces = __connman_config_get_string_list(config, "General",
                        CONF_BLACKLISTED_INTERFACES, &len, &error);
 
        if (!error)
@@ -323,7 +323,7 @@ static void parse_config(GKeyFile *config)
 
        g_clear_error(&error);
 
-       boolean = g_key_file_get_boolean(config, "General",
+       boolean = __connman_config_get_bool(config, "General",
                                        CONF_ALLOW_HOSTNAME_UPDATES,
                                        &error);
        if (!error)
@@ -331,14 +331,14 @@ static void parse_config(GKeyFile *config)
 
        g_clear_error(&error);
 
-       boolean = g_key_file_get_boolean(config, "General",
+       boolean = __connman_config_get_bool(config, "General",
                        CONF_SINGLE_TECH, &error);
        if (!error)
                connman_settings.single_tech = boolean;
 
        g_clear_error(&error);
 
-       tethering = g_key_file_get_string_list(config, "General",
+       tethering = __connman_config_get_string_list(config, "General",
                        CONF_TETHERING_TECHNOLOGIES, &len, &error);
 
        if (!error)
@@ -346,7 +346,7 @@ static void parse_config(GKeyFile *config)
 
        g_clear_error(&error);
 
-       boolean = g_key_file_get_boolean(config, "General",
+       boolean = __connman_config_get_bool(config, "General",
                                        CONF_PERSISTENT_TETHERING_MODE,
                                        &error);
        if (!error)
-- 
1.7.9.5

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to