From e1855006a080ab9cd4a50e977850b1dfc36b7eb7 Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Fri, 9 Oct 2009 17:32:53 +0000 Subject: [PATCH] - Merge: fix #49274, filter_var does not accept object without a toString implementation --- ext/filter/filter.c | 13 +++++++++++++ ext/filter/tests/bug49274.phpt | 10 ++++++++++ 2 files changed, 23 insertions(+) create mode 100644 ext/filter/tests/bug49274.phpt diff --git a/ext/filter/filter.c b/ext/filter/filter.c index bbe457de85..824d558405 100644 --- a/ext/filter/filter.c +++ b/ext/filter/filter.c @@ -365,6 +365,19 @@ static void php_zval_filter(zval **value, long filter, long flags, zval *options if (copy) { SEPARATE_ZVAL(value); } + + /* #49274, fatal error with object without a toString method + Fails nicely instead of getting a recovarable fatal error. */ + if (Z_TYPE_PP(value) == IS_OBJECT) { + zend_class_entry *ce; + + ce = Z_OBJCE_PP(value); + if (!ce->__tostring) { + ZVAL_FALSE(*value); + return; + } + } + /* Here be strings */ convert_to_string(*value); diff --git a/ext/filter/tests/bug49274.phpt b/ext/filter/tests/bug49274.phpt new file mode 100644 index 0000000000..c87e6be1c7 --- /dev/null +++ b/ext/filter/tests/bug49274.phpt @@ -0,0 +1,10 @@ +--TEST-- +#49274, fatal error when an object does not implement toString +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(false) -- 2.40.0