1--TEST-- 2is_callable() with trampoline should not caused UAF 3--FILE-- 4<?php 5 6class B {} 7class A extends B { 8 public function bar($func) { 9 var_dump(is_callable(array('B', 'foo'))); 10 } 11 12 public function __call($func, $args) { 13 } 14} 15 16class X { 17 public static function __callStatic($func, $args) { 18 } 19} 20 21$a = new A(); 22// Extra X::foo() wrapper to force use of allocated trampoline. 23X::foo($a->bar('foo')); 24 25?> 26--EXPECT-- 27bool(false) 28