mirror of
https://github.com/php/php-src.git
synced 2026-04-21 23:18:13 +02:00
d679f02295
This patch adds missing newlines, trims multiple redundant final newlines into a single one, and trims redundant leading newlines in all *.phpt sections. According to POSIX, a line is a sequence of zero or more non-' <newline>' characters plus a terminating '<newline>' character. [1] Files should normally have at least one final newline character. C89 [2] and later standards [3] mention a final newline: "A source file that is not empty shall end in a new-line character, which shall not be immediately preceded by a backslash character." Although it is not mandatory for all files to have a final newline fixed, a more consistent and homogeneous approach brings less of commit differences issues and a better development experience in certain text editors and IDEs. [1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206 [2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2 [3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
93 lines
2.5 KiB
PHP
93 lines
2.5 KiB
PHP
--TEST--
|
|
Bug #54446 (Arbitrary file creation via libxslt 'output' extension)
|
|
--SKIPIF--
|
|
<?php
|
|
if (!extension_loaded('xsl')) die("skip Extension XSL is required\n");
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
include("prepare.inc");
|
|
|
|
$outputfile = dirname(__FILE__)."/bug54446test.txt";
|
|
if (file_exists($outputfile)) {
|
|
unlink($outputfile);
|
|
}
|
|
|
|
$sXsl = <<<EOT
|
|
<xsl:stylesheet version="1.0"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns:sax="http://icl.com/saxon"
|
|
extension-element-prefixes="sax">
|
|
|
|
<xsl:template match="/">
|
|
<sax:output href="$outputfile" method="text">
|
|
<xsl:value-of select="'0wn3d via PHP and libxslt ...'"/>
|
|
</sax:output>
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|
|
EOT;
|
|
|
|
$xsl->loadXML( $sXsl );
|
|
|
|
# START XSLT
|
|
$proc->importStylesheet( $xsl );
|
|
|
|
# TRASNFORM & PRINT
|
|
print $proc->transformToXML( $dom );
|
|
|
|
|
|
if (file_exists($outputfile)) {
|
|
print "$outputfile exists, but shouldn't!\n";
|
|
} else {
|
|
print "OK, no file created\n";
|
|
}
|
|
|
|
#SET NO SECURITY PREFS
|
|
$proc->setSecurityPrefs(XSL_SECPREF_NONE);
|
|
|
|
# TRASNFORM & PRINT
|
|
print $proc->transformToXML( $dom );
|
|
|
|
|
|
if (file_exists($outputfile)) {
|
|
print "OK, file exists\n";
|
|
} else {
|
|
print "$outputfile doesn't exist, but should!\n";
|
|
}
|
|
|
|
unlink($outputfile);
|
|
|
|
#SET SECURITY PREFS AGAIN
|
|
$proc->setSecurityPrefs( XSL_SECPREF_WRITE_FILE | XSL_SECPREF_WRITE_NETWORK | XSL_SECPREF_CREATE_DIRECTORY);
|
|
|
|
# TRASNFORM & PRINT
|
|
print $proc->transformToXML( $dom );
|
|
|
|
if (file_exists($outputfile)) {
|
|
print "$outputfile exists, but shouldn't!\n";
|
|
} else {
|
|
print "OK, no file created\n";
|
|
}
|
|
--EXPECTF--
|
|
Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %s element output in %s on line %d
|
|
|
|
Warning: XSLTProcessor::transformToXml(): File write for %s/bug54446test.txt refused in %s on line %d
|
|
|
|
Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %d element output in %s on line %d
|
|
|
|
Warning: XSLTProcessor::transformToXml(): xsltDocumentElem: write rights for %s/bug54446test.txt denied in %s on line %d
|
|
OK, no file created
|
|
OK, file exists
|
|
|
|
Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %s element output in %s on line %d
|
|
|
|
Warning: XSLTProcessor::transformToXml(): File write for %s/bug54446test.txt refused in %s on line %d
|
|
|
|
Warning: XSLTProcessor::transformToXml(): runtime error: file %s line %d element output in %s on line %d
|
|
|
|
Warning: XSLTProcessor::transformToXml(): xsltDocumentElem: write rights for %s/bug54446test.txt denied in %s on line %d
|
|
OK, no file created
|
|
--CREDITS--
|
|
Christian Stocker, chregu@php.net
|