Skip to content

Commit

Permalink
src/yajl_lex.[ch]: invalid leading zero: call it a number!
Browse files Browse the repository at this point in the history
- also add more tests for invalid "leading zero in number"
  • Loading branch information
robohack committed May 23, 2024
1 parent cb20d64 commit 78fcd24
Show file tree
Hide file tree
Showing 17 changed files with 40 additions and 5 deletions.
6 changes: 3 additions & 3 deletions src/yajl_lex.c
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,7 @@ yajl_lex_number(yajl_lexer lexer,
}
if (leadingZero) {
unreadChar(lexer, offset);
lexer->error = yajl_lex_integer_with_leading_zero;
lexer->error = yajl_lex_number_with_leading_zero;
return yajl_tok_error;
}

Expand Down Expand Up @@ -858,8 +858,8 @@ yajl_lex_error_to_string(yajl_lex_error error) /*+ lexer error value +*/
case yajl_lex_unallowed_comment:
return "probable comment found in input text, comments are "
"not enabled.";
case yajl_lex_integer_with_leading_zero:
return "malformed integer, a leading zero is invalid.";
case yajl_lex_number_with_leading_zero:
return "malformed number, a leading zero is invalid.";
}
/* NOTREACHED */
return "unknown error code";
Expand Down
2 changes: 1 addition & 1 deletion src/yajl_lex.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ typedef enum {
yajl_lex_missing_integer_after_exponent,
yajl_lex_missing_integer_after_minus,
yajl_lex_unallowed_comment,
yajl_lex_integer_with_leading_zero
yajl_lex_number_with_leading_zero
} yajl_lex_error;

const char * yajl_lex_error_to_string(yajl_lex_error error);
Expand Down
2 changes: 1 addition & 1 deletion test/parsing/cases/leading_zero_in_number.json.gold
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
map open '{'
key: 'bad thing'
line: 1: offset: 15: lexical error: malformed integer, a leading zero is invalid.
line: 1: offset: 15: lexical error: malformed number, a leading zero is invalid.
memory leaks: 0
1 change: 1 addition & 0 deletions test/parsing/cases/leading_zero_in_number2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "bad negative thing": -01 }
4 changes: 4 additions & 0 deletions test/parsing/cases/leading_zero_in_number2.json.gold
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
map open '{'
key: 'bad negative thing'
line: 1: offset: 25: lexical error: malformed number, a leading zero is invalid.
memory leaks: 0
1 change: 1 addition & 0 deletions test/parsing/cases/leading_zero_in_number3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "bad decimal": 00.01 }
4 changes: 4 additions & 0 deletions test/parsing/cases/leading_zero_in_number3.json.gold
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
map open '{'
key: 'bad decimal'
line: 1: offset: 17: lexical error: malformed number, a leading zero is invalid.
memory leaks: 0
1 change: 1 addition & 0 deletions test/parsing/cases/leading_zero_in_number4.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "bad negative decimal": -01.01 }
4 changes: 4 additions & 0 deletions test/parsing/cases/leading_zero_in_number4.json.gold
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
map open '{'
key: 'bad negative decimal'
line: 1: offset: 27: lexical error: malformed number, a leading zero is invalid.
memory leaks: 0
1 change: 1 addition & 0 deletions test/parsing/cases/leading_zero_in_number5.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "bad float": 00e }
4 changes: 4 additions & 0 deletions test/parsing/cases/leading_zero_in_number5.json.gold
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
map open '{'
key: 'bad float'
line: 1: offset: 15: lexical error: malformed number, a leading zero is invalid.
memory leaks: 0
1 change: 1 addition & 0 deletions test/parsing/cases/leading_zero_in_number6.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "bad negative float": -00e }
4 changes: 4 additions & 0 deletions test/parsing/cases/leading_zero_in_number6.json.gold
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
map open '{'
key: 'bad negative float'
line: 1: offset: 25: lexical error: malformed number, a leading zero is invalid.
memory leaks: 0
1 change: 1 addition & 0 deletions test/parsing/cases/leading_zero_in_number7.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "bad floating number": 00e10 }
4 changes: 4 additions & 0 deletions test/parsing/cases/leading_zero_in_number7.json.gold
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
map open '{'
key: 'bad floating number'
line: 1: offset: 25: lexical error: malformed number, a leading zero is invalid.
memory leaks: 0
1 change: 1 addition & 0 deletions test/parsing/cases/leading_zero_in_number8.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "bad negative floating number": -00e10 }
4 changes: 4 additions & 0 deletions test/parsing/cases/leading_zero_in_number8.json.gold
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
map open '{'
key: 'bad negative floating number'
line: 1: offset: 35: lexical error: malformed number, a leading zero is invalid.
memory leaks: 0

0 comments on commit 78fcd24

Please sign in to comment.