From: [EMAIL PROTECTED] Operating system: redhat 7.1 PHP version: 4.1.0 PHP Bug Type: Sablotron XSL Bug description: segault when translating
given the following xml (bug_report.xml): <?xml version="1.0" encoding="utf-8" ?> <ITEM> <TEST>1</TEST> <ABC>0</ABC> </ITEM> and the following xsl (bug_report.xsl): <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" indent="no"/> <xsl:param name="TEST"/> <xsl:param name="ABC"/> <xsl:template match="/"> <xsl:apply-templates select="ITEM[TEST=$TEST and ABC=$ABC]"/> </xsl:template> <xsl:template match="ITEM"> position: <xsl:value-of select="position()"/> </xsl:template> </xsl:stylesheet> and the following php (bug_report.php): <?php /* * this function is the xslt processor * @param ($xml) string xml text-data * @param ($xsl) string xsl stylesheet * @param ($addl_buffers) array additional xml buffers, if any * @param ($rt_params) array run-time paramaters for the stylesheet, if any. optional. * @return ($data) xslt translated data */ function transform_xslt ($xml = '', $xsl = '', $addl_buffers = '', $rt_params = array()) { $args = array( "/_xml" => $xml, "/_xsl" => $xsl ); /* add addl buffers here */ /* testng */ if($addl_buffers != '') { foreach($addl_buffers as $buffer_name => $values) { $args[$buffer_name] = $values; } } $xh = xslt_create(); $data = xslt_process($xh, "arg:/_xml", "arg:/_xsl", NULL, $args, $rt_params) or $data = xslt_error($xh).":".xslt_errno($xh); xslt_free($xh); return($data); } $xml = join('', file("bug_report.xml")); $xsl = join('', file("bug_report.xsl")); $params = array("TEST" => 1, "ABC" => 0); $trans = transform_xslt($xml, $xsl, "", $params); echo "<pre>\n"; echo $trans; echo "</pre>\n"; ?> if you inadvertently use: <xsl:apply-templates match="ITEM[@TEST=$TEST and @ABC=ABC]"/> on line 10 of bug_report.xsl instead of: <xsl:apply-templates match="ITEM[TEST=$TEST and ABC=$ABC]"/> apache/php segfaults with the following: Program received signal SIGSEGV, Segmentation fault. (gdb) bt0x403cf6c0 in zif_xslt_error (ht=1, return_value=0x818955c, this_ptr=0x0, return_value_used=1) at sablot.c:584 584 RETURN_STRING(XSLT_ERRSTR(handle), 1); (gdb) bt #0 0x403cf6c0 in zif_xslt_error (ht=1, return_value=0x818955c, this_ptr=0x0, return_value_used=1) at sablot.c:584 #1 0x40339cbc in execute (op_array=0x8176ee8) at ./zend_execute.c:1590 #2 0x40339ef6 in execute (op_array=0x81308ec) at ./zend_execute.c:1630 #3 0x40347fb0 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at zend.c:814 #4 0x403558b9 in php_execute_script (primary_file=0xbffff5d0) at main.c:1309 #5 0x40351966 in apache_php_module_main (r=0x812697c, display_source_mode=0) at sapi_apache.c:90 #6 0x40352446 in send_php (r=0x812697c, display_source_mode=0, filename=0x0) at mod_php4.c:575 #7 0x403524aa in send_parsed_php (r=0x812697c) at mod_php4.c:590 #8 0x8053bb3 in ap_invoke_handler () #9 0x806791f in process_request_internal () #10 0x8067980 in ap_process_request () #11 0x805ee45 in child_main () #12 0x805eff0 in make_child () #13 0x805f164 in startup_children () #14 0x805f7b3 in standalone_main () #15 0x805ffcf in main () #16 0x40169b5c in __libc_start_main (main=0x805fc38 <main>, argc=2, ubp_av=0xbffffa54, init=0x804e1fc <_init>, fini=0x807ce80 <_fini>, rtld_fini=0x4000d634 <_dl_fini>, stack_end=0xbffffa4c) at ../sysdeps/generic/libc-start.c:129 ./configure options: --cache-file=/dev/null --with-config-file-path=/usr/local/apache/conf --enable-trans-sid --with-imap --with-imap-ssl --enable-ftp --enable-track- vars --with-mysql=/usr/local/mysql --enable-libgcc --disable-debug --with-db --verbose --with-gdbm --with-ndbm --with-db2 --with-gd=shared --with-ttf --with-xml --with-zlib --with-mhash --prefix=/usr/local/php --with-regex=system --enable-memory-limit --enable-calendar --enable-sysvsem --enable-sysvshm --with-bz2 --wit h-gettext --with-jpeg-dir=/usr --with-xpm-dir=/usr/X11R6 --with-ldap --with-mcal=/usr/local/src/libmcal --enable-exif --with-pcre-regex=/usr/local/lib --without -pgsql --enable-yp --enable-shmop --with-snmp --enable-sockets --enable-dba --with-kerberos=/usr/kerberos --with-pspell --with-expat-dir=/usr --with-pear --with -iconv --enable-xslt --with-xslt-sablot --with-mnogosearch=/usr/local/mnogosearch sablot version: 0.71 -- Edit bug report at: http://bugs.php.net/?id=14560&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]