mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix GH-17223: Memory leak in libxml encoding handling
This was a bug in both libxml and PHP. We follow up with the same change as done in GNOME/libxml@b3871dd138. Changing away from `xmlOutputBufferCreateFilenameDefault` is not possible yet because this is a stable branch and would break BC. Closes GH-17254.
This commit is contained in:
parent
99a14b805e
commit
7be950f3f6
3 changed files with 23 additions and 3 deletions
|
@ -590,11 +590,11 @@ php_libxml_output_buffer_create_filename(const char *URI,
|
|||
char *unescaped = NULL;
|
||||
|
||||
if (URI == NULL)
|
||||
return(NULL);
|
||||
goto err;
|
||||
|
||||
if (strstr(URI, "%00")) {
|
||||
php_error_docref(NULL, E_WARNING, "URI must not contain percent-encoded NUL bytes");
|
||||
return NULL;
|
||||
goto err;
|
||||
}
|
||||
|
||||
puri = xmlParseURI(URI);
|
||||
|
@ -615,7 +615,7 @@ php_libxml_output_buffer_create_filename(const char *URI,
|
|||
}
|
||||
|
||||
if (context == NULL) {
|
||||
return(NULL);
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Allocate the Output buffer front-end. */
|
||||
|
@ -627,6 +627,11 @@ php_libxml_output_buffer_create_filename(const char *URI,
|
|||
}
|
||||
|
||||
return(ret);
|
||||
|
||||
err:
|
||||
/* Similarly to __xmlOutputBufferCreateFilename we should also close the encoder on failure. */
|
||||
xmlCharEncCloseFunc(encoder);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void _php_libxml_free_error(void *ptr)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue