Skip to content

Commit b5e0043

Browse files
committed
Partial fix for bug #79029
1 parent f09b958 commit b5e0043

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

ext/xmlwriter/php_xmlwriter.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,15 @@ typedef int (*xmlwriter_read_int_t)(xmlTextWriterPtr writer);
8383
static void xmlwriter_free_resource_ptr(xmlwriter_object *intern)
8484
{
8585
if (intern) {
86-
if (intern->ptr) {
87-
xmlFreeTextWriter(intern->ptr);
88-
intern->ptr = NULL;
89-
}
90-
if (intern->output) {
91-
xmlBufferFree(intern->output);
92-
intern->output = NULL;
86+
if (EG(active)) {
87+
if (intern->ptr) {
88+
xmlFreeTextWriter(intern->ptr);
89+
intern->ptr = NULL;
90+
}
91+
if (intern->output) {
92+
xmlBufferFree(intern->output);
93+
intern->output = NULL;
94+
}
9395
}
9496
efree(intern);
9597
}

ext/xmlwriter/tests/bug79029_1.phpt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
--TEST--
2+
#79029 (Use After Free's in XMLReader / XMLWriter)
3+
--SKIPIF--
4+
<?php if (!extension_loaded("xmlwriter")) print "skip"; ?>
5+
--FILE--
6+
<?php
7+
$x = array( new XMLWriter() );
8+
$x[0]->openUri("a");
9+
$x[0]->startComment();
10+
?>
11+
okey
12+
--EXPECT--
13+
okey

0 commit comments

Comments
 (0)