details: https://hg.nginx.org/njs/rev/7197f860de2f branches: changeset: 2060:7197f860de2f user: Dmitry Volyntsev <xei...@nginx.com> date: Tue Feb 28 20:34:38 2023 -0800 description: XML: fixed memory leaks in node.$tags set handler.
If xmlAddChild() failed the node pointer leaked, if xmlReconciliateNs() failed the copy pointer leaked. diffstat: external/njs_xml_module.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diffs (32 lines): diff -r 688c4b1d9626 -r 7197f860de2f external/njs_xml_module.c --- a/external/njs_xml_module.c Tue Feb 28 20:34:31 2023 -0800 +++ b/external/njs_xml_module.c Tue Feb 28 20:34:38 2023 -0800 @@ -1211,7 +1211,7 @@ njs_xml_node_tags_handler(njs_vm_t *vm, { 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, 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, ret = xmlReconciliateNs(current->doc, copy); if (njs_slow_path(ret == -1)) { njs_vm_error(vm, "xmlReconciliateNs() failed"); - return NJS_ERROR; + goto error; } } _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel