pajoye                                   Fri, 09 Oct 2009 17:32:53 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=289434

Log:
- Merge: fix #49274, filter_var does not accept object without a toString 
implementation

Bug: http://bugs.php.net/49274 (Assigned) filter_var() should accept objects 
without fatal error
      
Changed paths:
    U   php/php-src/branches/PHP_5_3_1/ext/filter/filter.c
    A   php/php-src/branches/PHP_5_3_1/ext/filter/tests/bug49274.phpt

Modified: php/php-src/branches/PHP_5_3_1/ext/filter/filter.c
===================================================================
--- php/php-src/branches/PHP_5_3_1/ext/filter/filter.c  2009-10-09 17:28:52 UTC 
(rev 289433)
+++ php/php-src/branches/PHP_5_3_1/ext/filter/filter.c  2009-10-09 17:32:53 UTC 
(rev 289434)
@@ -365,6 +365,19 @@
        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);


Added: php/php-src/branches/PHP_5_3_1/ext/filter/tests/bug49274.phpt
===================================================================
--- php/php-src/branches/PHP_5_3_1/ext/filter/tests/bug49274.phpt               
                (rev 0)
+++ php/php-src/branches/PHP_5_3_1/ext/filter/tests/bug49274.phpt       
2009-10-09 17:32:53 UTC (rev 289434)
@@ -0,0 +1,10 @@
+--TEST--
+#49274, fatal error when an object does not implement toString
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
+--FILE--
+<?php
+var_dump(filter_var(new stdClass, FILTER_VALIDATE_EMAIL));
+?>
+--EXPECTF--
+bool(false)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to