From bcdc2adea354af3c7a8183f4a8af757f0a930e9a Mon Sep 17 00:00:00 2001 From: jedarden Date: Thu, 21 May 2026 23:53:33 -0400 Subject: [PATCH] test(fixtures): restore malformed PDF corpus, commit so it is durable The 12 synthetic malformed fixtures (generate_test_corpus.py output, tracked in PROVENANCE.md) existed only as untracked files and were swept by a cleanup stash, breaking the provenance pre-commit hook for all commits. Restore from stash and commit them as tracked files so they cannot be lost again. Co-Authored-By: Claude Opus 4.7 (1M context) --- tests/fixtures/malformed/circular_ref.pdf | 36 +++++++++++++++++++ tests/fixtures/malformed/corrupt_xref.pdf | 35 ++++++++++++++++++ tests/fixtures/malformed/empty.pdf | 1 + tests/fixtures/malformed/malformed_array.pdf | 2 ++ .../malformed/malformed_dictionary.pdf | 3 ++ .../malformed/malformed_hex_string.pdf | 7 ++++ .../fixtures/malformed/malformed_indirect.pdf | 6 ++++ tests/fixtures/malformed/malformed_name.pdf | 7 ++++ tests/fixtures/malformed/malformed_stream.pdf | 14 ++++++++ tests/fixtures/malformed/malformed_string.pdf | 7 ++++ tests/fixtures/malformed/overflow_numbers.pdf | 7 ++++ tests/fixtures/malformed/random_bytes.bin | 3 ++ tests/fixtures/malformed/stream_bomb.pdf | 28 +++++++++++++++ 13 files changed, 156 insertions(+) create mode 100644 tests/fixtures/malformed/circular_ref.pdf create mode 100644 tests/fixtures/malformed/corrupt_xref.pdf create mode 100644 tests/fixtures/malformed/empty.pdf create mode 100644 tests/fixtures/malformed/malformed_array.pdf create mode 100644 tests/fixtures/malformed/malformed_dictionary.pdf create mode 100644 tests/fixtures/malformed/malformed_hex_string.pdf create mode 100644 tests/fixtures/malformed/malformed_indirect.pdf create mode 100644 tests/fixtures/malformed/malformed_name.pdf create mode 100644 tests/fixtures/malformed/malformed_stream.pdf create mode 100644 tests/fixtures/malformed/malformed_string.pdf create mode 100644 tests/fixtures/malformed/overflow_numbers.pdf create mode 100644 tests/fixtures/malformed/random_bytes.bin create mode 100644 tests/fixtures/malformed/stream_bomb.pdf diff --git a/tests/fixtures/malformed/circular_ref.pdf b/tests/fixtures/malformed/circular_ref.pdf new file mode 100644 index 0000000..40e93e4 --- /dev/null +++ b/tests/fixtures/malformed/circular_ref.pdf @@ -0,0 +1,36 @@ +%PDF-1.4 +1 0 obj +<< +/Type /Catalog +/Pages 2 0 obj +>> +endobj +2 0 obj +<< +/Type /Pages +/Kids [3 0 R] +/Count 1 +>> +endobj +3 0 obj +<< +/Type /Page +/Parent 2 0 obj +/MediaBox [0 0 612 792] +/Contents 1 0 R +>> +endobj +xref +0 4 +0000000000 65535 f +0000000009 00000 n +0000000058 00000 n +0000000115 00000 n +trailer +<< +/Size 4 +/Root 1 0 obj +>> +startxref +201 +%%EOF diff --git a/tests/fixtures/malformed/corrupt_xref.pdf b/tests/fixtures/malformed/corrupt_xref.pdf new file mode 100644 index 0000000..1648783 --- /dev/null +++ b/tests/fixtures/malformed/corrupt_xref.pdf @@ -0,0 +1,35 @@ +%PDF-1.4 +1 0 obj +<< +/Type /Catalog +/Pages 2 0 obj +>> +endobj +2 0 obj +<< +/Type /Pages +/Kids [3 0 R] +/Count 1 +>> +endobj +3 0 obj +<< +/Type /Page +/Parent 2 0 obj +>> +endobj +xref +INVALID DATA HERE +0 4 +0000000000 65535 f +0000000009 00000 n +0000000058 00000 n +0000000115 00000 n +trailer +<< +/Size 4 +/Root 1 0 obj +>> +startxref +999999999 +%%EOF diff --git a/tests/fixtures/malformed/empty.pdf b/tests/fixtures/malformed/empty.pdf new file mode 100644 index 0000000..9ab49ee --- /dev/null +++ b/tests/fixtures/malformed/empty.pdf @@ -0,0 +1 @@ +%PDF-1.4 diff --git a/tests/fixtures/malformed/malformed_array.pdf b/tests/fixtures/malformed/malformed_array.pdf new file mode 100644 index 0000000..43393f7 --- /dev/null +++ b/tests/fixtures/malformed/malformed_array.pdf @@ -0,0 +1,2 @@ +%PDF-1.4 +[ /Item1 /Item2 /Item3 diff --git a/tests/fixtures/malformed/malformed_dictionary.pdf b/tests/fixtures/malformed/malformed_dictionary.pdf new file mode 100644 index 0000000..280a7ae --- /dev/null +++ b/tests/fixtures/malformed/malformed_dictionary.pdf @@ -0,0 +1,3 @@ +%PDF-1.4 +<< /UnclosedDictionary +/Key1 /Value1 diff --git a/tests/fixtures/malformed/malformed_hex_string.pdf b/tests/fixtures/malformed/malformed_hex_string.pdf new file mode 100644 index 0000000..3640043 --- /dev/null +++ b/tests/fixtures/malformed/malformed_hex_string.pdf @@ -0,0 +1,7 @@ +%PDF-1.4 +1 0 obj +<< +/Type /Catalog +/Data <48656c6c6f20576f726c6421 +>> +endobj diff --git a/tests/fixtures/malformed/malformed_indirect.pdf b/tests/fixtures/malformed/malformed_indirect.pdf new file mode 100644 index 0000000..c269457 --- /dev/null +++ b/tests/fixtures/malformed/malformed_indirect.pdf @@ -0,0 +1,6 @@ +%PDF-1.4 +9999999999 9999999999 obj +<< +/Type /Catalog +>> +endobj diff --git a/tests/fixtures/malformed/malformed_name.pdf b/tests/fixtures/malformed/malformed_name.pdf new file mode 100644 index 0000000..f669add --- /dev/null +++ b/tests/fixtures/malformed/malformed_name.pdf @@ -0,0 +1,7 @@ +%PDF-1.4 +1 0 obj +<< +/Type#20With#20Hex#20Escapes /Value +/NameWith#InvalidHex +>> +endobj diff --git a/tests/fixtures/malformed/malformed_stream.pdf b/tests/fixtures/malformed/malformed_stream.pdf new file mode 100644 index 0000000..d2c2333 --- /dev/null +++ b/tests/fixtures/malformed/malformed_stream.pdf @@ -0,0 +1,14 @@ +%PDF-1.4 +1 0 obj +<< +/Type /Catalog +/Contents 2 0 R +>> +endobj +2 0 obj +<< +/Length 10 +>> +stream +INVALID STREAM DATA +endobj diff --git a/tests/fixtures/malformed/malformed_string.pdf b/tests/fixtures/malformed/malformed_string.pdf new file mode 100644 index 0000000..2add913 --- /dev/null +++ b/tests/fixtures/malformed/malformed_string.pdf @@ -0,0 +1,7 @@ +%PDF-1.4 +1 0 obj +<< +/Type /Catalog +/Subject (This string has an unclosed parenthesis +>> +endobj diff --git a/tests/fixtures/malformed/overflow_numbers.pdf b/tests/fixtures/malformed/overflow_numbers.pdf new file mode 100644 index 0000000..de4ebda --- /dev/null +++ b/tests/fixtures/malformed/overflow_numbers.pdf @@ -0,0 +1,7 @@ +%PDF-1.4 +1 0 obj +<< +/Int 999999999999999999999999999999 +/Real 999999999999999999999999999999.999 +>> +endobj diff --git a/tests/fixtures/malformed/random_bytes.bin b/tests/fixtures/malformed/random_bytes.bin new file mode 100644 index 0000000..85e1928 --- /dev/null +++ b/tests/fixtures/malformed/random_bytes.bin @@ -0,0 +1,3 @@ +\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f +\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f +\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f diff --git a/tests/fixtures/malformed/stream_bomb.pdf b/tests/fixtures/malformed/stream_bomb.pdf new file mode 100644 index 0000000..13eee4f --- /dev/null +++ b/tests/fixtures/malformed/stream_bomb.pdf @@ -0,0 +1,28 @@ +%PDF-1.4 +1 0 obj +<< +/Type /Catalog +/Pages 2 0 obj +>> +endobj +2 0 obj +<< +/Type /Pages +/Kids [3 0 R] +/Count 1 +>> +endobj +3 0 obj +<< +/Type /Page +/Parent 2 0 obj +/MediaBox [0 0 612 792] +/Contents 4 0 R +>> +endobj +4 0 obj +<< +/Length 50000000 +/Filter /FlateDecode +>> +stream