jshn: fix off by one in jshn_parse_file
[project/libubox.git] / jshn.c
diff --git a/jshn.c b/jshn.c
index 2eebe6c3df09520bb7883062b9b90bcf82ed3fb0..28cfa8df7a21c0c7f97258812b3698d2dfc107b9 100644 (file)
--- a/jshn.c
+++ b/jshn.c
@@ -178,12 +178,15 @@ static int jshn_parse(const char *str)
 
        obj = json_tokener_parse(str);
        if (!obj || json_object_get_type(obj) != json_type_object) {
+               if (obj)
+                       json_object_put(obj);
                fprintf(stderr, "Failed to parse message data\n");
                return 1;
        }
        fprintf(stdout, "json_init;\n");
        add_json_object(obj);
        fflush(stdout);
+       json_object_put(obj);
 
        return 0;
 }
@@ -351,7 +354,7 @@ static int jshn_parse_file(const char *path)
                return 3;
        }
 
-       if (!(fbuf = malloc(sb.st_size))) {
+       if (!(fbuf = calloc(1, sb.st_size+1))) {
                fprintf(stderr, "Error allocating memory for %s\n", path);
                close(fd);
                return 3;