diff options
| -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);  } | 
