Bladeren bron

HPCC-20540 Fix Dynamic ESDL Request transform core

Xpath result object freed twice when converting a non-string xpath
result to a string.

Signed-off-by: Anthony Fishbeck <anthony.fishbeck@lexisnexis.com>
Anthony Fishbeck 6 jaren geleden
bovenliggende
commit
98136719a6
1 gewijzigde bestanden met toevoegingen van 4 en 1 verwijderingen
  1. 4 1
      system/xmllib/libxml_xpathprocessor.cpp

+ 4 - 1
system/xmllib/libxml_xpathprocessor.cpp

@@ -204,7 +204,10 @@ public:
                 case XPATH_USERS:
                 case XPATH_XSLT_TREE:
                 {
-                    evaluated.append(xmlXPathConvertString (evaluatedXpathObj)->stringval);
+                    evaluatedXpathObj = xmlXPathConvertString (evaluatedXpathObj); //existing object is freed
+                    if (!evaluatedXpathObj)
+                        throw MakeStringException(-1,"XpathProcessor:evaluateAsString: could not convert result to string");
+                    evaluated.append(evaluatedXpathObj->stringval);
                     break;
                 }
                 default: