diff options
-rw-r--r-- | src/load.c | 10 | ||||
-rw-r--r-- | test/testdata/invalid | 11 |
2 files changed, 21 insertions, 0 deletions
@@ -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; } diff --git a/test/testdata/invalid b/test/testdata/invalid index bdca8a5..2887692 100644 --- a/test/testdata/invalid +++ b/test/testdata/invalid @@ -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' |