<feed xmlns='http://www.w3.org/2005/Atom'>
<title>libplist/src/ptrarray.h, branch 2.8.0</title>
<subtitle>Library to handle Apple Property List format files in binary or XML</subtitle>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/'/>
<entry>
<title>ptrarray: Handle realloc() failure in ptr_array_insert()</title>
<updated>2026-09-27T06:06:22+00:00</updated>
<author>
<name>Comtea04</name>
</author>
<published>2026-09-27T06:06:22+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=8b48fa72d359de89215f50cbf6ac8c77ae5de9b4'/>
<id>8b48fa72d359de89215f50cbf6ac8c77ae5de9b4</id>
<content type='text'>
ptr_array_insert() assigned the result of realloc() directly to
pa-&gt;pdata and bumped the capacity without checking for failure, so on
out-of-memory the old buffer was leaked and the following store or
memmove() wrote through a NULL pointer.

Keep the old buffer on failure and return -1 from ptr_array_insert()
and ptr_array_add(). The callers now handle the error:

- the array lookup cache (plist.c) is dropped instead of silently going
  out of sync with the node list; lookups then fall back to walking
  the children, as they do before the cache exists
- bplist parsing (used_indexes) and serialization (objects) return
  PLIST_ERR_NO_MEM; ignoring the error in parse_bin_node_at_index()
  would otherwise loop forever since the array never grows

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ptr_array_insert() assigned the result of realloc() directly to
pa-&gt;pdata and bumped the capacity without checking for failure, so on
out-of-memory the old buffer was leaked and the following store or
memmove() wrote through a NULL pointer.

Keep the old buffer on failure and return -1 from ptr_array_insert()
and ptr_array_add(). The callers now handle the error:

- the array lookup cache (plist.c) is dropped instead of silently going
  out of sync with the node list; lookups then fall back to walking
  the children, as they do before the cache exists
- bplist parsing (used_indexes) and serialization (objects) return
  PLIST_ERR_NO_MEM; ignoring the error in parse_bin_node_at_index()
  would otherwise loop forever since the array never grows

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ptrarray: Add function returning the size (number of elements) of the array</title>
<updated>2019-12-09T00:07:32+00:00</updated>
<author>
<name>XD</name>
</author>
<published>2019-12-09T00:07:32+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=4289c5eb8d18fa64ea92b1f8d013011b58f8edbb'/>
<id>4289c5eb8d18fa64ea92b1f8d013011b58f8edbb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add index lookup table for large PLIST_ARRAY nodes</title>
<updated>2019-05-18T22:20:51+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2019-05-18T22:20:51+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=08c6143b870167ad29f9c20a298e0f75c986d0ea'/>
<id>08c6143b870167ad29f9c20a298e0f75c986d0ea</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid exporting non-public symbols</title>
<updated>2014-10-03T13:39:47+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2014-10-03T13:39:47+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=62813daf2c4aaec675652d9c1131a58dfa634e38'/>
<id>62813daf2c4aaec675652d9c1131a58dfa634e38</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Make libplist glib free</title>
<updated>2011-05-27T12:55:31+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2011-05-27T12:55:31+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=024e755d9f3c33e742ce158542b1ded057a88f4f'/>
<id>024e755d9f3c33e742ce158542b1ded057a88f4f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
