Skip to content

Commit

Permalink
Avoid duplicating the filename string when profiling in XSL (#15010)
Browse files Browse the repository at this point in the history
  • Loading branch information
nielsdos committed Jul 18, 2024
1 parent a59103f commit 2d029ef
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 8 deletions.
2 changes: 1 addition & 1 deletion ext/xsl/php_xsl.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
13 changes: 6 additions & 7 deletions ext/xsl/xsltprocessor.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit 2d029ef

Please sign in to comment.