Commit 7ae095fa091af9a94e0e9bf140280a0519859d98
1 parent
f0fb19df
Fix JSON parser error found by fuzz
Showing
3 changed files
with
4 additions
and
2 deletions
fuzz/json_fuzzer_seed_corpus/f297bc5680b3730d3386caa8dee36bf5a853516b
0 → 100644
fuzz/qtest/fuzz.test
| @@ -16,7 +16,7 @@ my @fuzzers = ( | @@ -16,7 +16,7 @@ my @fuzzers = ( | ||
| 16 | ['dct' => 1], | 16 | ['dct' => 1], |
| 17 | ['flate' => 1], | 17 | ['flate' => 1], |
| 18 | ['hex' => 1], | 18 | ['hex' => 1], |
| 19 | - ['json' => 37], | 19 | + ['json' => 38], |
| 20 | ['lzw' => 2], | 20 | ['lzw' => 2], |
| 21 | ['pngpredictor' => 1], | 21 | ['pngpredictor' => 1], |
| 22 | ['runlength' => 6], | 22 | ['runlength' => 6], |
libqpdf/JSON.cc
| @@ -1246,7 +1246,8 @@ JSONParser::handleToken() | @@ -1246,7 +1246,8 @@ JSONParser::handleToken() | ||
| 1246 | break; | 1246 | break; |
| 1247 | 1247 | ||
| 1248 | default: | 1248 | default: |
| 1249 | - throw std::logic_error("JSONParser::handleToken : non-terminal lexer state encountered"); | 1249 | + throw std::runtime_error( |
| 1250 | + "JSON: offset " + std::to_string(offset) + ": premature end of input"); | ||
| 1250 | break; | 1251 | break; |
| 1251 | } | 1252 | } |
| 1252 | 1253 |