]> granicus.if.org Git - php/commitdiff
Added test for bug #32647
authorfoobar <sniper@php.net>
Thu, 21 Apr 2005 14:17:52 +0000 (14:17 +0000)
committerfoobar <sniper@php.net>
Thu, 21 Apr 2005 14:17:52 +0000 (14:17 +0000)
ext/standard/tests/general_functions/bug32647.phpt [new file with mode: 0644]

diff --git a/ext/standard/tests/general_functions/bug32647.phpt b/ext/standard/tests/general_functions/bug32647.phpt
new file mode 100644 (file)
index 0000000..ca98f42
--- /dev/null
@@ -0,0 +1,55 @@
+--TEST--
+Bug #32647 (Using register_shutdown_function() with invalid callback can crash PHP)
+--INI--
+error_reporting=2047
+display_errors=1
+--FILE--
+<?php
+
+function foo()
+{
+  echo "joo!\n";
+}
+
+class bar
+{
+       function barfoo ()
+       { echo "bar!\n"; }
+}
+
+unset($obj);
+register_shutdown_function(array($obj,""));            // Invalid
+register_shutdown_function(array($obj,"some string")); // Invalid
+register_shutdown_function(array(0,""));               // Invalid
+register_shutdown_function(array('bar','foo'));        // Invalid
+register_shutdown_function(array(0,"some string"));    // Invalid
+register_shutdown_function('bar');                     // Valid
+register_shutdown_function('foo');                     // Valid
+register_shutdown_function(array('bar','barfoo'));     // Valid
+
+$obj = new bar;
+register_shutdown_function(array($obj,'foobar'));      // Invalid
+register_shutdown_function(array($obj,'barfoo'));      // Valid
+
+?>
+--EXPECTF--
+Notice: Undefined variable: obj in %s on line %d
+
+Warning: register_shutdown_function(): Invalid shutdown callback 'Array' passed in %s on line %d
+
+Notice: Undefined variable: obj in %s on line %d
+
+Warning: register_shutdown_function(): Invalid shutdown callback 'Array' passed in %s on line %d
+
+Warning: register_shutdown_function(): Invalid shutdown callback 'Array' passed in %s on line %d
+
+Warning: register_shutdown_function(): Invalid shutdown callback 'Array' passed in %s on line %d
+
+Warning: (Registered shutdown functions) Unable to call bar::foo() - function does not exist in Unknown on line 0
+
+Warning: (Registered shutdown functions) Unable to call bar() - function does not exist in Unknown on line 0
+joo!
+bar!
+
+Warning: (Registered shutdown functions) Unable to call bar::foobar() - function does not exist in Unknown on line 0
+bar!