Skip to content

Assertion `ns->mode == PHP_DOM_REG_FUNC_MODE_SET' failed in ext/dom/xpath_callbacks.c #23897

Description

@YuanchengJiang

Description

The following code:

<?php
try {
try {
$dom = new \DOMDocument();
$rootNode = $dom->appendChild($dom->createElement('root'));
for ($i = 0; $i <= 100; $i++) {
$level1Node = $rootNode->appendChild($dom->createElement('level1'));
}
$xslStr = <<<EOF
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
<xsl:template match="root">
<output>
<xsl:for-each select="level1">
<node>
<xsl:value-of select="php:function('testPhpFunction', .)" />
</node>
</xsl:for-each>
</output>
</xsl:template>
</xsl:stylesheet>
EOF;
$xsl = new \DOMDocument();
$xsl->loadXML($xslStr);
$xslt = new \XSLTProcessor();
$xslt->registerPHPFunctions('testPhpFunction');
} catch (\Throwable $_ffl_e) {}
try {
$xslt->importStyleSheet($xsl);
echo $xslt->transformToXML($dom);
} catch (\Throwable $_ffl_e) {}
} catch (\Throwable $_ffl_e) {}

Resulted in this output:

php: /home/fuzz/WorkSpace/fusion-fuzz/projects/php/php-src/ext/dom/xpath_callbacks.c:437: zend_result php_dom_xpath_callback_dispatch(php_dom_xpath_callbacks *, php_dom_xpath_callback_ns *, xmlXPathParserContextPtr, zval *, uint32_t, const char *, size_t): Assertion `ns->mode == PHP_DOM_REG_FUNC_MODE_SET' failed.
Aborted (core dumped)

To reproduce:

/home/fuzz/WorkSpace/fusion-fuzz/projects/php/php-src/sapi/cli/php  ./test.php

Commit:

100e8f353ea8ef841339ba4c74a0966a7eea5157

Configurations:

CC="clang-12" CXX="clang++-12" CFLAGS="-DZEND_VERIFY_TYPE_INFERENCE" CXXFLAGS="-DZEND_VERIFY_TYPE_INFERENCE" ./configure --enable-debug --enable-address-sanitizer --enable-undefined-sanitizer --enable-re2c-cgoto --enable-fpm --enable-litespeed --enable-phpdbg-debug --enable-zts --enable-bcmath --enable-calendar --enable-dba --enable-dl-test --enable-exif --enable-ftp --enable-gd --enable-gd-jis-conv --enable-mbstring --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-zend-test --with-zlib --with-bz2 --with-curl --with-enchant --with-gettext --with-gmp --with-mhash --with-ldap --with-libedit --with-readline --with-snmp --with-sodium --with-xsl --with-zip --with-mysqli --with-pdo-mysql --with-pdo-pgsql --with-pgsql --with-sqlite3 --with-pdo-sqlite --with-webp --with-jpeg --with-freetype --enable-sigchild --with-readline --with-pcre-jit --with-iconv

Operating System:

Ubuntu 20.04 Host, Docker 0599jiangyc/flowfusion:latest

This bug was found by fusion-fuzz

PHP Version

100e8f353ea8ef841339ba4c74a0966a7eea5157

Operating System

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions