File 0002-Plug-memory-leaks-caused-by-unused-and-unfreed-buffer.patch of Package libplist.4090
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;