• Nikias Bassen's avatar
    bplist: Fix OOB write on heap buffer and improve recursion check · c4dcf11b
    Nikias Bassen authored
    Issue #92 pointed out an problem with (invalid) bplist files which have
    exactly one structured node whose subnode reference itself.
    The recursion check used a fixed size array with the size of the total number
    of objects. In this case the number of objects is 1 but the recursion check
    code wanted to set the node_index for the level 1 which leads to an OOB write
    on the heap. This commit fixes/improves two things:
    1) Prevent OOB write by using a dynamic data storage for the used node
       indexes (plist_t of type PLIST_ARRAY)
    2) Reduces the memory usage of large binary plists, because not the total
       number of nodes in the binary plist, but the number of recursion levels
       is important for the recursion check.
    c4dcf11b
Name
Last commit
Last update
cython Loading commit data...
include Loading commit data...
libcnary Loading commit data...
m4 Loading commit data...
src Loading commit data...
test Loading commit data...
tools Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
COPYING Loading commit data...
COPYING.LESSER Loading commit data...
Makefile.am Loading commit data...
NEWS Loading commit data...
README Loading commit data...
autogen.sh Loading commit data...
configure.ac Loading commit data...
doxygen.cfg.in Loading commit data...