diff options
| author | Michael Biebl <biebl@debian.org> | 2015-05-05 17:48:57 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2015-05-05 17:48:57 +0200 |
| commit | f408e27bccfacf347605a8d98649975a68f38a17 (patch) | |
| tree | 654fd6695c31511baf919b1c0870d119a352ed75 /src/nm-config.c | |
| parent | 2c032d8f1c6292c1338a615e6ec40252889ba85c (diff) | |
Imported Upstream version 1.0.2 upstream/1.0.2
Diffstat (limited to 'src/nm-config.c')
| -rw-r--r-- | src/nm-config.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/nm-config.c b/src/nm-config.c index e8cb0864..4626ae26 100644 --- a/src/nm-config.c +++ b/src/nm-config.c @@ -275,14 +275,18 @@ merge_no_auto_default_state (NMConfig *config) if (g_file_get_contents (priv->no_auto_default_file, &data, NULL, NULL)) { list = g_strsplit (data, "\n", -1); for (i = 0; list[i]; i++) { - if (!*list[i]) + if (!*list[i]) { + g_free (list[i]); continue; + } for (j = 0; j < updated->len; j++) { if (!strcmp (list[i], updated->pdata[j])) break; } if (j == updated->len) g_ptr_array_add (updated, list[i]); + else + g_free (list[i]); } g_free (list); g_free (data); @@ -403,10 +407,12 @@ read_config (NMConfig *config, const char *path, GError **error) continue; for (k = 0; keys[k]; k++) { int len = strlen (keys[k]); + char *v; + if (keys[k][len - 1] == '+') { char *base_key = g_strndup (keys[k], len - 1); - const char *old_val = g_key_file_get_value (priv->keyfile, groups[g], base_key, NULL); - const char *new_val = g_key_file_get_value (kf, groups[g], keys[k], NULL); + char *old_val = g_key_file_get_value (priv->keyfile, groups[g], base_key, NULL); + char *new_val = g_key_file_get_value (kf, groups[g], keys[k], NULL); if (old_val && *old_val) { char *combined = g_strconcat (old_val, ",", new_val, NULL); @@ -417,13 +423,18 @@ read_config (NMConfig *config, const char *path, GError **error) g_key_file_set_value (priv->keyfile, groups[g], base_key, new_val); g_free (base_key); + g_free (old_val); + g_free (new_val); continue; } g_key_file_set_value (priv->keyfile, groups[g], keys[k], - g_key_file_get_value (kf, groups[g], keys[k], NULL)); + v = g_key_file_get_value (kf, groups[g], keys[k], NULL)); + g_free (v); } + g_strfreev (keys); } + g_strfreev (groups); g_key_file_free (kf); return TRUE; |