diff options
| author | Anatol Belski <ab@php.net> | 2015-06-18 00:14:57 +0200 |
|---|---|---|
| committer | Anatol Belski <ab@php.net> | 2015-06-18 00:14:57 +0200 |
| commit | 57940664a82ae6bf0e0d476e3a39059c5b7576a0 (patch) | |
| tree | 86e7b1f45c1340fd4cd028a9e824d49f12d71f25 | |
| parent | bfdc9e280515c1639dfe1d81ce6fc225d2cf1bc9 (diff) | |
| download | php-git-57940664a82ae6bf0e0d476e3a39059c5b7576a0.tar.gz | |
fix crash when invalid exception arguments passed
| -rw-r--r-- | Zend/zend_exceptions.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index cf18084ff5..75259c397e 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -243,7 +243,14 @@ ZEND_METHOD(exception, __construct) int argc = ZEND_NUM_ARGS(); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, argc, "|SlO!", &message, &code, &previous, zend_ce_throwable) == FAILURE) { - zend_error(E_EXCEPTION | E_ERROR, "Wrong parameters for %s([string $message [, long $code [, Throwable $previous = NULL]]])", base_ce->name->val); + zend_class_entry *ce; + + if (execute_data->called_scope) { + ce = execute_data->called_scope; + } else { + ce = zend_get_exception_base(getThis()); + } + zend_error(E_EXCEPTION | E_ERROR, "Wrong parameters for %s([string $message [, long $code [, Throwable $previous = NULL]]])", ce->name->val); return; } |
