diff options
author | Nikias Bassen | 2017-01-28 05:20:44 +0100 |
---|---|---|
committer | Nikias Bassen | 2017-01-28 05:20:44 +0100 |
commit | 783777b8e1082a9275d2c6c1aa6b7996e9c4ff00 (patch) | |
tree | 9ef81035620cb497a3a2cc49b062e4d8cbbc1f42 /src/bplist.c | |
parent | 30e14a3ec62ddc37738b8afe2345413397410420 (diff) | |
download | libplist-783777b8e1082a9275d2c6c1aa6b7996e9c4ff00.tar.gz libplist-783777b8e1082a9275d2c6c1aa6b7996e9c4ff00.tar.bz2 |
bplist: Don't duplicate output buffer in plist_to_bin()
Diffstat (limited to 'src/bplist.c')
-rw-r--r-- | src/bplist.c | 8 |
1 files changed, 4 insertions, 4 deletions
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); } |