From 783777b8e1082a9275d2c6c1aa6b7996e9c4ff00 Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Sat, 28 Jan 2017 05:20:44 +0100 Subject: bplist: Don't duplicate output buffer in plist_to_bin() --- src/bplist.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/bplist.c b/src/bplist.c index 0c57a75..64c9081 100644 --- a/src/bplist.c +++ b/src/bplist.c @@ -1154,6 +1154,7 @@ PLIST_API void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length) uint64_t offset = be64toh(offsets[i]); byte_array_append(bplist_buff, (uint8_t*)&offset + (sizeof(uint64_t) - offset_size), offset_size); } + free(offsets); //setup trailer memset(trailer.unused, '\0', sizeof(trailer.unused)); @@ -1165,11 +1166,10 @@ PLIST_API void plist_to_bin(plist_t plist, char **plist_bin, uint32_t * length) byte_array_append(bplist_buff, &trailer, sizeof(bplist_trailer_t)); - //duplicate buffer - *plist_bin = (char *) malloc(bplist_buff->len); - memcpy(*plist_bin, bplist_buff->data, bplist_buff->len); + //set output buffer and size + *plist_bin = bplist_buff->data; *length = bplist_buff->len; + bplist_buff->data = NULL; // make sure we don't free the output buffer byte_array_free(bplist_buff); - free(offsets); } -- cgit v1.1-32-gdbae