1. 28 Mar, 2017 1 commit
  2. 26 Mar, 2017 1 commit
    • Nikias Bassen's avatar
      bplist: Make sure sanity checks work on 32bit platforms · dccd9290
      Nikias Bassen authored
      Because on 32-bit platforms 32-bit pointers and 64-bit sizes have been
      used for the sanity checks of the offset table and object references,
      the range checks would fail in certain interger-overflowish situations,
      causing heap buffer overflows or other unwanted behavior.
      Fixed by wideing the operands in question to 64-bit.
      dccd9290
  3. 18 Mar, 2017 1 commit
  4. 18 Feb, 2017 1 commit
  5. 15 Feb, 2017 1 commit
    • Nikias Bassen's avatar
      xplist: Improve writing of large PLIST_DATA nodes by growing buffer in advance · 8ad21e6b
      Nikias Bassen authored
      Instead of letting the buffer grow by just the amount of bytes currently
      transformed to base64 - which is basically line by line - we now calculate
      the size of the output blob in advance and grow the buffer accordingly.
      This will reduce the amount of reallocs to just one, which is especially
      important for large data blobs.
      While this is a general improvement for all platforms, it is on platforms
      like Windows where realloc() can be REALLY slow; converting a 20mb blob to
      XML can easily take up to a minute (due to the several hundred thousand
      calls to realloc()). With this commit, it will be fast again.
      8ad21e6b
  6. 10 Feb, 2017 2 commits
  7. 09 Feb, 2017 3 commits
  8. 08 Feb, 2017 1 commit
  9. 07 Feb, 2017 15 commits
  10. 06 Feb, 2017 3 commits
  11. 05 Feb, 2017 5 commits
  12. 04 Feb, 2017 1 commit
    • 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
  13. 03 Feb, 2017 2 commits
  14. 01 Feb, 2017 3 commits