diff options
| author | 2026-11-05 10:07:22 +0100 | |
|---|---|---|
| committer | 2026-11-05 10:07:22 +0100 | |
| commit | 2b3cc554270d34ca1e1fae3eb2cbbc740a65bbf3 (patch) | |
| tree | 26648136f289451bddef614b124a168cb6b9669a /fuzz/bplist-crashes/crash-33a67313fa7864cd627ef92d12017a127d342f28 | |
| parent | 51f471432715f7a1880d38c135ce41182b4dc78e (diff) | |
| download | libplist-2b3cc554270d34ca1e1fae3eb2cbbc740a65bbf3.tar.gz libplist-2b3cc554270d34ca1e1fae3eb2cbbc740a65bbf3.tar.bz2 | |
bplist: limit total parsed nodes to prevent memory exhaustion
Binary plist objects may be referenced multiple times, and each
reference is parsed into a separate node. A tiny crafted input where
arrays reference the same objects repeatedly (without forming a cycle,
so the recursion check does not trigger) expands into millions of
nodes and exhausts memory.
Track the number of nodes parsed and fail with PLIST_ERR_PARSE once it
exceeds num_objects * 16 + 65536. Legitimate files create roughly as
many nodes as they have objects, so they stay well below this limit.
Credit to OSSFuzz
Diffstat (limited to 'fuzz/bplist-crashes/crash-33a67313fa7864cd627ef92d12017a127d342f28')
0 files changed, 0 insertions, 0 deletions
