summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2017-02-09 23:06:13 +0100
committerGravatar Nikias Bassen2017-02-09 23:06:13 +0100
commit8e4b7a591c6a31b960d6e9e769c8efe15751df97 (patch)
tree3642a8bca2f9d86fa06b0e5501902209a207f830
parentb1be1e99dd1f489720e83d018bcbdb91fb1e87e5 (diff)
downloadlibplist-8e4b7a591c6a31b960d6e9e769c8efe15751df97.tar.gz
libplist-8e4b7a591c6a31b960d6e9e769c8efe15751df97.tar.bz2
xplist: Fix OOB heap buffer read with empty data nodes
Credit to OSS-Fuzz
-rw-r--r--src/xplist.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/xplist.c b/src/xplist.c
index f5ddddd..0e9b007 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -1103,8 +1103,10 @@ static void node_from_xml(parse_ctx ctx, plist_t *plist, uint32_t depth)
1103 goto err_out; 1103 goto err_out;
1104 } 1104 }
1105 size_t size = tp->length; 1105 size_t size = tp->length;
1106 data->buff = base64decode(str_content, &size); 1106 if (size > 0) {
1107 data->length = size; 1107 data->buff = base64decode(str_content, &size);
1108 data->length = size;
1109 }
1108 1110
1109 if (requires_free) { 1111 if (requires_free) {
1110 free(str_content); 1112 free(str_content);