diff options
| author | 2017-03-29 22:08:21 +0200 | |
|---|---|---|
| committer | 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)) { | 
