config-parser: Handle lines that don't end in \n
If the last line in a config file doesn't have a newline
we end up chopping off the last character from that line.
diff --git a/shared/config-parser.c b/shared/config-parser.c
index 5ffa466..10ff86a 100644
--- a/shared/config-parser.c
+++ b/shared/config-parser.c
@@ -24,6 +24,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
+#include <ctype.h>
#include "config-parser.h"
@@ -55,11 +56,13 @@
case CONFIG_KEY_STRING:
len = strlen(value);
- s = malloc(len);
+ while (len > 0 && isspace(value[len - 1]))
+ len--;
+ s = malloc(len + 1);
if (s == NULL)
return -1;
- memcpy(s, value, len - 1);
- s[len - 1] = '\0';
+ memcpy(s, value, len);
+ s[len] = '\0';
*(char **)key->data = s;
return 0;