From: Peter Meerwald <[email protected]> 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 Signed-off-by: Peter Meerwald <[email protected]> Cc: Patrik Flykt <[email protected]> Cc: Daniel Wagner <[email protected]> --- src/config.c | 46 +++++++++++++++++++++++----------------------- src/main.c | 18 +++++++++--------- vpn/vpn-config.c | 4 ++-- vpn/vpn-provider.c | 10 +++++----- 4 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/config.c b/src/config.c index 61e69fb..24180e9 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 905f478..a424295 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) diff --git a/vpn/vpn-config.c b/vpn/vpn-config.c index abb641b..f671db9 100644 --- a/vpn/vpn-config.c +++ b/vpn/vpn-config.c @@ -332,13 +332,13 @@ static int load_config(struct vpn_config *config, char *path, enum what action) /* 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/vpn/vpn-provider.c b/vpn/vpn-provider.c index 8d89a31..af9c660 100644 --- a/vpn/vpn-provider.c +++ b/vpn/vpn-provider.c @@ -743,7 +743,7 @@ static int provider_load_from_keyfile(struct vpn_provider *provider, key = settings[idx]; if (key) { if (g_str_equal(key, "Networks")) { - networks = g_key_file_get_string_list(keyfile, + networks = __connman_config_get_string_list(keyfile, provider->identifier, key, &num_user_networks, @@ -751,7 +751,7 @@ static int provider_load_from_keyfile(struct vpn_provider *provider, provider->user_networks = get_routes(networks); } else { - value = g_key_file_get_string(keyfile, + value = __connman_config_get_string(keyfile, provider->identifier, key, NULL); vpn_provider_set_string(provider, key, @@ -1735,7 +1735,7 @@ static void provider_create_all_from_type(const char *provider_type) if (!keyfile) continue; - type = g_key_file_get_string(keyfile, id, "Type", NULL); + type = __connman_config_get_string(keyfile, id, "Type", NULL); DBG("keyfile %p id %s type %s", keyfile, id, type); @@ -2577,12 +2577,12 @@ static void remove_unprovisioned_providers() if (!keyfile) continue; - file = g_key_file_get_string(keyfile, group, + file = __connman_config_get_string(keyfile, group, "Config.file", NULL); if (!file) goto next; - section = g_key_file_get_string(keyfile, group, + section = __connman_config_get_string(keyfile, group, "Config.ident", NULL); if (!section) goto next; -- 1.8.3.4 _______________________________________________ connman mailing list [email protected] https://lists.connman.net/mailman/listinfo/connman
