File php-5.3.3-CVE-2010-3710.patch of Package php5

Index: php-5.3.3/ext/filter/logical_filters.c
===================================================================
--- php-5.3.3.orig/ext/filter/logical_filters.c
+++ php-5.3.3/ext/filter/logical_filters.c
@@ -530,6 +530,10 @@ void php_filter_validate_email(PHP_INPUT
 	int         ovector[150]; /* Needs to be a multiple of 3 */
 	int         matches;
 
+        /* The maximum length of an e-mail address is 320 octets, per RFC 2821. */
+        if (Z_STRLEN_P(value) > 320) {
+                RETURN_VALIDATION_FAILED
+        }
 
 	re = pcre_get_compiled_regex((char *)regexp, &pcre_extra, &preg_options TSRMLS_CC);
 	if (!re) {
Index: php-5.3.3/ext/filter/tests/bug52929.phpt
===================================================================
--- /dev/null
+++ php-5.3.3/ext/filter/tests/bug52929.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Bug #52929 (Segfault in filter_var with FILTER_VALIDATE_EMAIL with large amount of data)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
+--FILE--
+<?php
+var_dump(filter_var('valid@email.address', FILTER_VALIDATE_EMAIL));
+// Beyond the allowable limit for an e-mail address.
+var_dump(filter_var('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.zz', FILTER_VALIDATE_EMAIL));
+// An invalid address likely to crash PHP due to stack exhaustion if it goes to
+// the validation regex.
+var_dump(filter_var(str_repeat('x', 8000), FILTER_VALIDATE_EMAIL));
+--EXPECT--
+string(19) "valid@email.address"
+bool(false)
+bool(false) 
+
openSUSE Build Service is sponsored by