From: Ilia Alshanetsky Date: Mon, 2 Feb 2009 23:51:58 +0000 (+0000) Subject: MFB: Fixed bug #47282 (FILTER_VALIDATE_EMAIL is marking valid email X-Git-Tag: php-5.2.9RC1~7 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6131780061dce3d9526d5e70336a25d78bde6dcb;p=php MFB: Fixed bug #47282 (FILTER_VALIDATE_EMAIL is marking valid email addresses as invalid) --- diff --git a/NEWS b/NEWS index ff91db4c6a..f64436c641 100644 --- 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) diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c index 4e64aabfef..2df6265df2 100644 --- a/ext/filter/logical_filters.c +++ b/ext/filter/logical_filters.c @@ -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; diff --git a/ext/filter/tests/016.phpt b/ext/filter/tests/016.phpt index e013c550a6..d7e33b800d 100644 --- a/ext/filter/tests/016.phpt +++ b/ext/filter/tests/016.phpt @@ -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