From: Petri Lehtinen Date: Thu, 29 Oct 2009 13:42:05 +0000 (+0200) Subject: load: Parse a badly put - sign correctly X-Git-Tag: v1.1.2~2 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=jansson.git;a=commitdiff_plain;h=d3959a8ce79bb30a8b39a275a4682885e97d17cc load: Parse a badly put - sign correctly Thanks to Manolis Delakis for reporting. --- diff --git a/src/load.c b/src/load.c index 53241ff..1ae62b3 100644 --- a/src/load.c +++ b/src/load.c @@ -418,11 +418,15 @@ static int lex_scan_number(lex_t *lex, char c, json_error_t *error) goto out; } } - else /* c != '0' */ { + else if(isdigit(c)) { c = lex_get_save(lex, error); while(isdigit(c)) c = lex_get_save(lex, error); } + else { + lex_unget_unsave(lex, c); + goto out; + } if(c != '.' && c != 'E' && c != 'e') { long value; diff --git a/test/testdata/invalid b/test/testdata/invalid index 1a70422..7fede67 100644 --- a/test/testdata/invalid +++ b/test/testdata/invalid @@ -167,7 +167,22 @@ too big negative integer near '-123123123123123' ==== 1 invalid token near 'troo' -==== invalid-escap ==== +==== minus-sign-without-number ==== +[-foo] +==== +1 +invalid token near '-' +==== invalid-negative-integerr ==== +[-123foo] +==== +1 +']' expected near 'foo' +==== invalid-negative-real ==== +[-123.123foo] +==== +1 +']' expected near 'foo' +==== invalid-escape ==== ["\a <-- invalid escape"] ==== 1 diff --git a/test/testdata/invalid-strip b/test/testdata/invalid-strip index 8b4a574..1efdc25 100644 --- a/test/testdata/invalid-strip +++ b/test/testdata/invalid-strip @@ -167,7 +167,22 @@ too big negative integer near '-123123123123123' ==== 1 invalid token near 'troo' -==== invalid-escap ==== +==== minus-sign-without-number ==== +[-foo] +==== +1 +invalid token near '-' +==== invalid-negative-integerr ==== +[-123foo] +==== +1 +']' expected near 'foo' +==== invalid-negative-real ==== +[-123.123foo] +==== +1 +']' expected near 'foo' +==== invalid-escape ==== ["\a <-- invalid escape"] ==== 1