1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Avoid duplicating the filename string when profiling in XSL (#15010)

This commit is contained in:
Niels Dossche
2024-07-18 17:27:53 +02:00
committed by GitHub
parent a59103feed
commit 2d029efd94
2 changed files with 7 additions and 8 deletions

View File

@@ -60,7 +60,7 @@ typedef struct xsl_object {
zend_long securityPrefs;
php_dom_xpath_callbacks xpath_callbacks;
php_libxml_node_object *doc;
char *profiling;
zend_string *profiling;
zend_object std;
} xsl_object;

View File

@@ -317,10 +317,10 @@ static xmlDocPtr php_xsl_apply_stylesheet(zval *id, xsl_object *intern, xsltStyl
}
if (intern->profiling) {
if (php_check_open_basedir(intern->profiling)) {
if (php_check_open_basedir(ZSTR_VAL(intern->profiling))) {
f = NULL;
} else {
f = VCWD_FOPEN(intern->profiling, "w");
f = VCWD_FOPEN(ZSTR_VAL(intern->profiling), "w");
}
} else {
f = NULL;
@@ -730,19 +730,18 @@ PHP_METHOD(XSLTProcessor, setProfiling)
{
zval *id = ZEND_THIS;
xsl_object *intern;
char *filename = NULL;
size_t filename_len;
zend_string *filename = NULL;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "p!", &filename, &filename_len) == FAILURE) {
if (zend_parse_parameters(ZEND_NUM_ARGS(), "P!", &filename) == FAILURE) {
RETURN_THROWS();
}
intern = Z_XSL_P(id);
if (intern->profiling) {
efree(intern->profiling);
zend_string_release(intern->profiling);
}
if (filename != NULL) {
intern->profiling = estrndup(filename, filename_len);
intern->profiling = zend_string_copy(filename);
} else {
intern->profiling = NULL;
}