summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPascal Terjan <pterjan@google.com>2016-08-17 21:52:48 -0400
committerHans Petter Jansson <hpj@cl.no>2016-08-18 15:45:18 +0200
commitd281ed4b9db22ff9e4c7e56b5cce58a72d11fc54 (patch)
treeddf745bcc51f35f47e4437821a45cc75b353bb75
parent39d97ce20acba97ec924aa9ddd7016fc32252960 (diff)
Fix missing ; when appending to a list not ending with one
https://bugs.freedesktop.org/show_bug.cgi?id=97388 Signed-off-by: Hans Petter Jansson <hpj@cl.no>
-rw-r--r--src/keyfileutils.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/keyfileutils.c b/src/keyfileutils.c
index a6891ee..8bad4b5 100644
--- a/src/keyfileutils.c
+++ b/src/keyfileutils.c
@@ -187,9 +187,14 @@ dfu_key_file_merge_list (GKeyFile *keyfile,
value = g_key_file_get_value (keyfile, group, key, NULL);
- if (value)
- str = g_strconcat (value, to_merge, ";", NULL);
- else
+ if (value) {
+ size_t len = strlen (value);
+ if (len > 0 && value[len - 1] != ';') {
+ str = g_strconcat (value, ";", to_merge, ";", NULL);
+ } else {
+ str = g_strconcat (value, to_merge, ";", NULL);
+ }
+ } else
str = g_strconcat (to_merge, ";", NULL);
g_key_file_set_value (keyfile, group, key, str);