diff options
| author | 2026-11-05 09:35:33 +0100 | |
|---|---|---|
| committer | 2026-11-05 09:35:33 +0100 | |
| commit | 3e9c034c93fa6f59584ec179d3df1333f250c694 (patch) | |
| tree | 96444ba52f58f002229d1b6724082e7c27d3e426 /test/plist_jtest.c | |
| parent | fe3dc34dc3484006e12b403f7ceb06f0ad40b6f4 (diff) | |
| download | libplist-3e9c034c93fa6f59584ec179d3df1333f250c694.tar.gz libplist-3e9c034c93fa6f59584ec179d3df1333f250c694.tar.bz2 | |
plist: fix use-after-free in plist_copy_node() on stack realloc
plist_copy_node() kept a pointer `f` to the top frame of its traversal
stack and dereferenced it after the stack was grown with realloc(),
which may move the buffer. Plists nested deeper than 64 levels hit this
path, causing a heap-use-after-free when reading f->depth.
Read the child depth before the realloc and use it when building the
new frame.
Thanks to @sdnuhfiu for reporting!
Fixes #328
Diffstat (limited to 'test/plist_jtest.c')
0 files changed, 0 insertions, 0 deletions
