diff config.c @ 796:41f73c76b978

Fix some memory issues
author =?UTF-8?q?Higor=20Eur=C3=ADpedes?= <heuripedes@gmail.com>
date Sun, 26 Jul 2015 11:00:25 -0700
parents bce97fc0bb8a
children 0b692b5d154b
line wrap: on
line diff
--- a/config.c	Sun Jul 26 10:59:41 2015 -0700
+++ b/config.c	Sun Jul 26 11:00:25 2015 -0700
@@ -48,11 +48,11 @@
 		curline = strip_ws(curline);
 		int len = strlen(curline);
 		if (!len) {
-			*line++;
+			*line = *line + 1;
 			continue;
 		}
 		if (curline[0] == '#') {
-			*line++;
+			*line = *line + 1;
 			continue;
 		}
 		if (curline[0] == '}') {
@@ -67,7 +67,7 @@
 		if (*end == '{') {
 			*end = 0;
 			curline = strip_ws(curline);
-			*line++;
+			*line = *line + 1;
 			head = tern_insert_node(head, curline, parse_config_int(state, 1, line));
 		} else {
 			char * val = strip_ws(split_keyval(curline));
@@ -77,7 +77,7 @@
 			} else {
 				fprintf(stderr, "Key %s is missing a value on line %d\n", key, *line);
 			}
-			*line++;
+			*line = *line + 1;
 		}
 	}
 	return head;
@@ -100,10 +100,12 @@
 	if (!config_size) {
 		goto config_empty;
 	}
-	char * config_data = malloc(config_size);
+	char * config_data = malloc(config_size+1);
 	if (fread(config_data, 1, config_size, config_file) != config_size) {
 		goto config_read_fail;
 	}
+	config_data[config_size] = '\0';
+
 	ret = parse_config(config_data);
 config_read_fail:
 	free(config_data);