From 6a781e6f69cb820347bae02a1f947e6b01ccaa47 Mon Sep 17 00:00:00 2001
From: Nikias Bassen <nikias@gmx.li>
Date: Sat, 31 Jan 2015 20:21:07 +0100
Subject: [PATCH] bplist: Plug memory leaks caused by unused (and unfreed)
 buffer

When parsing binary plists with BPLIST_DICT or BPLIST_ARRAY nodes that are
referenced multiple times in a particular file, a buffer was allocated that
was not used, and also not freed, thus causing memory leaks.
---
 src/bplist.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/src/bplist.c b/src/bplist.c
index cbe9481..5ddca26 100644
--- a/src/bplist.c
+++ b/src/bplist.c
@@ -584,14 +584,9 @@ static void* copy_plist_data(const void* src)
         dstdata->strval = strdup(srcdata->strval);
         break;
     case PLIST_DATA:
-    case PLIST_ARRAY:
         dstdata->buff = (uint8_t*) malloc(sizeof(uint8_t) * srcdata->length);
         memcpy(dstdata->buff, srcdata->buff, sizeof(uint8_t) * srcdata->length);
         break;
-    case PLIST_DICT:
-        dstdata->buff = (uint8_t*) malloc(sizeof(uint8_t) * srcdata->length * 2);
-        memcpy(dstdata->buff, srcdata->buff, sizeof(uint8_t) * srcdata->length * 2);
-        break;
     case PLIST_UID:
         dstdata->intval = srcdata->intval;
         break;
-- 
2.18.1