Detect garbage near EOF in json_loadf() and json_load_file()
authorPetri Lehtinen <petri@digip.org>
Mon, 24 Aug 2009 17:58:59 +0000 (20:58 +0300)
committerPetri Lehtinen <petri@digip.org>
Mon, 24 Aug 2009 17:58:59 +0000 (20:58 +0300)
src/load.c
test/testdata/invalid

index 88cd1f0..25df182 100644 (file)
@@ -805,7 +805,17 @@ json_t *json_loadf(FILE *input, json_error_t *error)
         return NULL;
 
     result = parse_json(&lex, error);
+    if(!result)
+        goto out;
+
+    lex_scan(&lex, error);
+    if(lex.token != TOKEN_EOF) {
+        error_set(error, &lex, "end of file expected");
+        json_decref(result);
+        result = NULL;
+    }
 
+out:
     lex_close(&lex);
     return result;
 }
index bdca8a5..2887692 100644 (file)
@@ -182,3 +182,14 @@ aĆ„
 ====
 1
 '[' or '{' expected near 'a'
+==== garbage-at-the-end ====
+[1,2,3]foo
+====
+1
+end of file expected near 'foo'
+==== garbage-after-newline ====
+[1,2,3]
+foo
+====
+2
+end of file expected near 'foo'