xml2: Fix more memory leaks with libxml2 and XPath evaluations
Michael Paquier <michael@paquier.xyz>
xml2: Fix more memory leaks with libxml2 and XPath evaluations Several objects were allocated by libxml2 and never released in some error or even success paths, leading to some memory leaks that would stack across SQL calls: - In pgxml_xpath(), the result of xmlXPathCompiledEval() could leak. This now uses a TRY/CATCH block to ensure a correct cleanup of a workspace on failure. - In xpath_table() missed some objects not freed on failure. Some xmlFree() calls were missing for the results copied after a success. - In pgxmlNodeSetToText(), xmlXPathCastNodeToString() allocates a result that the caller is responsible for freeing. It was not freed. Most of the work of this commit stands on top of 732061150b0, that has refactored xml2 to make the handling of such leaks easier. The leaks fixed here are more ancient than the commit mentioned above, and we have never bothered doing something about them in older stable branches. Author: Andrey Chernyy <andrey.cherny@tantorlabs.com> Co-authored-by: Michael Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/20260601010124.5edf9a20@andrnote
Files
| Path | Change | +/− |
|---|---|---|
| contrib/xml2/xpath.c | modified | +87 −22 |
Discussion
- [PATCH] Fix libxml leaks in contrib/xml2 XPath functions 5 messages · 2026-05-31 → 2026-06-02