--- /dev/null
+--TEST--
+Bug #69025 (Invalid read of size 4 when calling __callStatic)
+--FILE--
+<?php
+class A {
+ public static function __callStatic($method, $args)
+ {
+ }
+}
+
+A::init();
+?>
+OK
+--EXPECT--
+OK
/* destruct the function also, then - we have allocated it in get_method */
efree_size(func, sizeof(zend_internal_function));
+ execute_data->func = NULL;
}
/* }}} */
/* destruct the function also, then - we have allocated it in get_method */
efree_size(func, sizeof(zend_internal_function));
+ execute_data->func = NULL;
}
/* }}} */
} else {
zend_execute_internal(call, ret);
}
+
+ ZEND_ASSERT(
+ !call->func ||
+ !(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
+ zend_verify_internal_return_type(call->func, EX_VAR(opline->result.var)));
+
EG(current_execute_data) = call->prev_execute_data;
zend_vm_stack_free_args(call);
zend_vm_stack_free_call_frame(call);
- ZEND_ASSERT(
- !(fbc->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
- zend_verify_internal_return_type(fbc, EX_VAR(opline->result.var)));
-
if (!RETURN_VALUE_USED(opline)) {
zval_ptr_dtor(EX_VAR(opline->result.var));
}
} else {
zend_execute_internal(call, ret);
}
+
+ ZEND_ASSERT(
+ !call->func ||
+ !(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
+ zend_verify_internal_return_type(call->func, EX_VAR(opline->result.var)));
+
EG(current_execute_data) = call->prev_execute_data;
zend_vm_stack_free_args(call);
zend_vm_stack_free_call_frame(call);
- ZEND_ASSERT(
- !(fbc->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
- zend_verify_internal_return_type(fbc, EX_VAR(opline->result.var)));
-
if (!RETURN_VALUE_USED(opline)) {
zval_ptr_dtor(EX_VAR(opline->result.var));
}