From: Dmitry Volyntsev Date: Wed, 1 Mar 2023 04:34:38 +0000 (-0800) Subject: XML: fixed memory leaks in node.$tags set handler. X-Git-Tag: 0.7.11~9 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=b3f27310009156d88447781d776c9b5b9f70942f;p=njs.git XML: fixed memory leaks in node.$tags set handler. If xmlAddChild() failed the node pointer leaked, if xmlReconciliateNs() failed the copy pointer leaked. --- diff --git a/external/njs_xml_module.c b/external/njs_xml_module.c index d30ff98b..4a3bda05 100644 --- a/external/njs_xml_module.c +++ b/external/njs_xml_module.c @@ -1211,7 +1211,7 @@ njs_xml_node_tags_handler(njs_vm_t *vm, xmlNode *current, njs_str_t *name, { size_t size; int64_t i, length; - xmlNode *node, *copy; + xmlNode *node, *rnode, *copy; njs_int_t ret; njs_value_t *push; njs_opaque_value_t *start; @@ -1303,8 +1303,8 @@ njs_xml_node_tags_handler(njs_vm_t *vm, xmlNode *current, njs_str_t *name, goto error; } - node = xmlAddChild(copy, node); - if (njs_slow_path(node == NULL)) { + rnode = xmlAddChild(copy, node); + if (njs_slow_path(rnode == NULL)) { njs_vm_error(vm, "xmlAddChild() failed"); xmlFreeNode(node); goto error; @@ -1313,7 +1313,7 @@ njs_xml_node_tags_handler(njs_vm_t *vm, xmlNode *current, njs_str_t *name, ret = xmlReconciliateNs(current->doc, copy); if (njs_slow_path(ret == -1)) { njs_vm_error(vm, "xmlReconciliateNs() failed"); - return NJS_ERROR; + goto error; } }