summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2017-03-29 22:08:21 +0200
committerGravatar Nikias Bassen2017-03-29 22:08:21 +0200
commit765f062a4563901ecf9881ac541fc248aa30d44d (patch)
tree01532b7f4049d093a51458fe37a6ac5c6c22b672
parent012e4a8d7c99baf326cbcf06eabe899e2cdf66f7 (diff)
downloadlibplist-765f062a4563901ecf9881ac541fc248aa30d44d.tar.gz
libplist-765f062a4563901ecf9881ac541fc248aa30d44d.tar.bz2
xplist: Prevent memory leak(s) when parsing fails
Credit to OSS-Fuzz
-rw-r--r--src/xplist.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/xplist.c b/src/xplist.c
index 022f1cd..f896030 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -1221,7 +1221,7 @@ static void node_from_xml(parse_ctx ctx, plist_t *plist)
if (!keyname) {
PLIST_XML_ERR("missing key name while adding dict item\n");
ctx->err++;
- break;
+ goto err_out;
}
plist_dict_set_item(parent, keyname, subnode);
break;
@@ -1232,7 +1232,7 @@ static void node_from_xml(parse_ctx ctx, plist_t *plist)
/* should not happen */
PLIST_XML_ERR("parent is not a structered node\n");
ctx->err++;
- break;
+ goto err_out;
}
}
if (!is_empty && (data->type == PLIST_DICT || data->type == PLIST_ARRAY)) {