fix memleak in php_domxslt_string_to_xpathexpr

This commit is contained in:
Christian Stocker 2002-08-27 06:54:21 +00:00
parent 61f70a3cb7
commit e0b4533eeb

View File

@ -5051,20 +5051,21 @@ static char *php_domxslt_string_to_xpathexpr(const char *str TSRMLS_DC)
const xmlChar *string = (const xmlChar *)str; const xmlChar *string = (const xmlChar *)str;
xmlChar *value; xmlChar *value;
int str_len;
str_len = xmlStrlen(string) + 3;
if (xmlStrchr(string, '"')) { if (xmlStrchr(string, '"')) {
if (xmlStrchr(string, '\'')) { if (xmlStrchr(string, '\'')) {
php_error(E_WARNING, "%s(): Cannot create XPath expression (string contains both quote and double-quotes)", php_error(E_WARNING, "%s(): Cannot create XPath expression (string contains both quote and double-quotes)",
get_active_function_name(TSRMLS_C)); get_active_function_name(TSRMLS_C));
return NULL; return NULL;
} }
value = xmlStrdup((const xmlChar *)"'"); value = (xmlChar*) emalloc (str_len * sizeof(xmlChar *) );
value = xmlStrcat(value, string); snprintf(value, str_len, "'%s'", string);
value = xmlStrcat(value, (const xmlChar *)"'");
} else { } else {
value = xmlStrdup((const xmlChar *)"\""); value = (xmlChar*) emalloc (str_len * sizeof(xmlChar *) );
value = xmlStrcat(value, string); snprintf(value, str_len, "\"%s\"", string);
value = xmlStrcat(value, (const xmlChar *)"\"");
} }
return (char *)value; return (char *)value;