If the last line in a config file doesn't have a newline
we end up chopping off the last character from that line.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
+#include <ctype.h>
#include "config-parser.h"
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;