diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
|---|---|---|
| committer | <> | 2013-04-03 16:25:08 +0000 |
| commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
| tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/libxml/tests/bug61367-write.phpt | |
| download | php2-master.tar.gz | |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/libxml/tests/bug61367-write.phpt')
| -rw-r--r-- | ext/libxml/tests/bug61367-write.phpt | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/ext/libxml/tests/bug61367-write.phpt b/ext/libxml/tests/bug61367-write.phpt new file mode 100644 index 0000000..e18b071 --- /dev/null +++ b/ext/libxml/tests/bug61367-write.phpt @@ -0,0 +1,46 @@ +--TEST-- +Bug #61367: open_basedir bypass in libxml RSHUTDOWN: write test +--SKIPIF-- +<?php if(!extension_loaded('dom')) echo 'skip'; ?> +--INI-- +open_basedir=. +--FILE-- +<?php + +class StreamExploiter { + public function stream_close ( ) { + $doc = new DOMDocument; + $doc->appendChild($doc->createTextNode('hello')); + var_dump($doc->save(dirname(getcwd()) . '/bad')); + } + + public function stream_open ( $path , $mode , $options , &$opened_path ) { + return true; + } +} + +var_dump(mkdir('test_bug_61367')); +var_dump(mkdir('test_bug_61367/base')); +var_dump(file_put_contents('test_bug_61367/bad', 'blah')); +var_dump(chdir('test_bug_61367/base')); + +stream_wrapper_register( 'exploit', 'StreamExploiter' ); +$s = fopen( 'exploit://', 'r' ); + +?> +--CLEAN-- +<?php +@unlink('test_bug_61367/bad'); +rmdir('test_bug_61367/base'); +rmdir('test_bug_61367'); +?> +--EXPECTF-- +bool(true) +bool(true) +int(4) +bool(true) + +Warning: DOMDocument::save(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (.) in %s on line %d + +Warning: DOMDocument::save(%s): failed to open stream: Operation not permitted in %s on line %d +bool(false) |
