diff options
author | Nikias Bassen | 2017-03-29 22:08:21 +0200 |
---|---|---|
committer | Nikias Bassen | 2017-03-29 22:08:21 +0200 |
commit | 765f062a4563901ecf9881ac541fc248aa30d44d (patch) | |
tree | 01532b7f4049d093a51458fe37a6ac5c6c22b672 | |
parent | 012e4a8d7c99baf326cbcf06eabe899e2cdf66f7 (diff) | |
download | libplist-765f062a4563901ecf9881ac541fc248aa30d44d.tar.gz libplist-765f062a4563901ecf9881ac541fc248aa30d44d.tar.bz2 |
xplist: Prevent memory leak(s) when parsing fails
Credit to OSS-Fuzz
-rw-r--r-- | src/xplist.c | 4 |
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)) { |