]> granicus.if.org Git - php/commitdiff
MFB: Fixed bug #47282 (FILTER_VALIDATE_EMAIL is marking valid email
authorIlia Alshanetsky <iliaa@php.net>
Mon, 2 Feb 2009 23:51:58 +0000 (23:51 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Mon, 2 Feb 2009 23:51:58 +0000 (23:51 +0000)
addresses as invalid)

NEWS
ext/filter/logical_filters.c
ext/filter/tests/016.phpt

diff --git a/NEWS b/NEWS
index ff91db4c6af620b978a3fbbce2f4fe6b2605da32..f64436c641d21ea531ed38dbb9f6fde9c31d032f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -17,6 +17,8 @@ PHP                                                                        NEWS
 - Fixed bug in xml_error_string() which resulted in messages being
   off by one. (Scott)
 
+- Fixed bug #47282 (FILTER_VALIDATE_EMAIL is marking valid email addresses
+  as invalid). (Ilia)
 - Fixed bug #47220 (segfault in dom_document_parser in recovery mode). (Rob)
 - Fixed bug #47217 (content-type is not set properly for file uploads).
   (Ilia)
index 4e64aabfefeb5c5790e6d059f0bdb134086cadaf..2df6265df2595a741c5dade6e684b8019dd1d639 100644 (file)
@@ -469,7 +469,7 @@ void php_filter_validate_url(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
 void php_filter_validate_email(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
 {
        /* From http://cvs.php.net/co.php/pear/HTML_QuickForm/QuickForm/Rule/Email.php?r=1.4 */
-       const char regexp[] = "/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+(\\.[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?\\.)+[A-Za-z\\-]+))$/D";
+       const char regexp[] = "/^((\\\"[^\\\"\\f\\n\\r\\t\\b]+\\\")|([\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]+(\\.[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\~\\/\\^\\`\\|\\{\\}]*)*))@((\\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9])(([A-Za-z0-9\\-])*([A-Za-z0-9]))?\\.?)+[A-Za-z\\-]*))$/D";
 
        pcre       *re = NULL;
        pcre_extra *pcre_extra = NULL;
index e013c550a623db657146458490b585177381cc80..d7e33b800dfe0d0c6fc66163322c02f5e61d185d 100644 (file)
@@ -13,7 +13,8 @@ $values = Array(
 'test@com',    
 '@',   
 '[]()/@example.com',   
-'QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET',   
+'QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET',
+'e.x.a.m.p.l.e.@example.com'
 );
 foreach ($values as $value) {
        var_dump(filter_var($value, FILTER_VALIDATE_EMAIL));
@@ -27,8 +28,9 @@ string(17) "abuse@example.com"
 bool(false)
 bool(false)
 bool(false)
-bool(false)
+string(8) "test@com"
 bool(false)
 bool(false)
 string(57) "QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET"
-Done
+string(26) "e.x.a.m.p.l.e.@example.com"
+Done
\ No newline at end of file