Commit 8ae3ef28ac34fddb1cc8b03b2479f499e4af5f8a
1 parent
3d569e21
Fix #1170
In QPDF::read_xrefEntry add buffer overflow test for first eol character. Overlong f1 or f2 entries consisting only of zeros could cause a buffer overflow. Add fuzz testcase 69913.
Showing
4 changed files
with
4 additions
and
4 deletions
fuzz/CMakeLists.txt
fuzz/qpdf_extra/69913.fuzz
0 → 100644
No preview for this file type
fuzz/qtest/fuzz.test
libqpdf/QPDF.cc
| ... | ... | @@ -905,9 +905,8 @@ QPDF::read_xrefEntry(qpdf_offset_t& f1, int& f2, char& type) |
| 905 | 905 | if (QUtil::is_space(*p++) && (*p == 'f' || *p == 'n')) { |
| 906 | 906 | // C++20: [[likely]] |
| 907 | 907 | type = *p; |
| 908 | - ++p; | |
| 909 | - ++p; // No test for valid line[19]. | |
| 910 | - if ((*p == '\n' || *p == '\r') && f1_len == 10 && f2_len == 5) { | |
| 908 | + // No test for valid line[19]. | |
| 909 | + if (*(++p) && *(++p) && (*p == '\n' || *p == '\r') && f1_len == 10 && f2_len == 5) { | |
| 911 | 910 | // C++20: [[likely]] |
| 912 | 911 | return true; |
| 913 | 912 | } | ... | ... |