Hello community,

here is the log from the commit of package php5 for openSUSE:Factory checked in 
at 2012-01-06 11:46:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/php5 (Old)
 and      /work/SRC/openSUSE:Factory/.php5.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "php5", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/php5/php5.changes        2011-12-27 
18:38:09.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.php5.new/php5.changes   2012-01-06 
11:46:27.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Jan  2 16:52:43 UTC 2012 - [email protected]
+
+- security update:
+  * CVE-2011-4885 [bnc#738221] -- added max_input_vars directive
+    to prevent attacks based on hash collisions
+
+-------------------------------------------------------------------

New:
----
  php-5.3.8-CVE-2011-4885.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ php5.spec ++++++
--- /var/tmp/diff_new_pack.j9I9O1/_old  2012-01-06 11:46:28.000000000 +0100
+++ /var/tmp/diff_new_pack.j9I9O1/_new  2012-01-06 11:46:28.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package php5
 #
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -15,6 +15,8 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
+
+
 Name:           php5
 %global apiver      20090626
 %global zendver     20090626
@@ -170,6 +172,7 @@
 Patch37:        php-5.3.8-no-reentrant-crypt.patch
 Patch38:        php-5.3.8-CVE-2011-4566.patch
 Patch39:        php-5.3.8-CVE-2011-1466.patch
+Patch40:        php-5.3.8-CVE-2011-4885.patch
 Url:            http://www.php.net
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Summary:        PHP5 Core Files
@@ -1287,6 +1290,7 @@
 %patch37
 %patch38
 %patch39
+%patch40
 # Safety check for API version change.
 vapi=`sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h`
 if test "x${vapi}" != "x%{apiver}"; then


++++++ php-5.3.8-CVE-2011-4885.patch ++++++
http://svn.php.net/viewvc?view=revision&revision=321038
http://svn.php.net/viewvc?view=revision&revision=321040
Index: php.ini-development
===================================================================
--- php.ini-development.orig
+++ php.ini-development
@@ -453,6 +453,9 @@ max_input_time = 60
 ; http://php.net/max-input-nesting-level
 ;max_input_nesting_level = 64
 
+; How many GET/POST/COOKIE input variables may be accepted
+; max_input_vars = 1000
+
 ; Maximum amount of memory a script may consume (128MB)
 ; http://php.net/memory-limit
 memory_limit = 128M
Index: php.ini-production
===================================================================
--- php.ini-production.orig
+++ php.ini-production
@@ -453,6 +453,9 @@ max_input_time = 60
 ; http://php.net/max-input-nesting-level
 ;max_input_nesting_level = 64
 
+; How many GET/POST/COOKIE input variables may be accepted
+; max_input_vars = 1000
+
 ; Maximum amount of memory a script may consume (128MB)
 ; http://php.net/memory-limit
 memory_limit = 128M
Index: main/main.c
===================================================================
--- main/main.c.orig
+++ main/main.c
@@ -512,6 +512,7 @@ PHP_INI_BEGIN()
        STD_PHP_INI_ENTRY("post_max_size",                      "8M",           
PHP_INI_SYSTEM|PHP_INI_PERDIR,          OnUpdateLong,                   
post_max_size,                  sapi_globals_struct,sapi_globals)
        STD_PHP_INI_ENTRY("upload_tmp_dir",                     NULL,           
PHP_INI_SYSTEM,         OnUpdateStringUnempty,  upload_tmp_dir,                 
php_core_globals,       core_globals)
        STD_PHP_INI_ENTRY("max_input_nesting_level", "64",              
PHP_INI_SYSTEM|PHP_INI_PERDIR,          OnUpdateLongGEZero,     
max_input_nesting_level,                        php_core_globals,       
core_globals)
+       STD_PHP_INI_ENTRY("max_input_vars",                     "1000",         
PHP_INI_SYSTEM|PHP_INI_PERDIR,          OnUpdateLongGEZero,     max_input_vars, 
                                        php_core_globals,       core_globals)
 
        STD_PHP_INI_ENTRY("user_dir",                           NULL,           
PHP_INI_SYSTEM,         OnUpdateString,                 user_dir,               
                php_core_globals,       core_globals)
        STD_PHP_INI_ENTRY("variables_order",            "EGPCS",        
PHP_INI_SYSTEM|PHP_INI_PERDIR,          OnUpdateStringUnempty,  
variables_order,                php_core_globals,       core_globals)
Index: main/php_globals.h
===================================================================
--- main/php_globals.h.orig
+++ main/php_globals.h
@@ -170,6 +170,8 @@ struct _php_core_globals {
        char *mail_log;
 
        zend_bool in_error_log;
+
+       long max_input_vars;
 };
 
 
Index: main/php_variables.c
===================================================================
--- main/php_variables.c.orig
+++ main/php_variables.c
@@ -191,6 +191,9 @@ PHPAPI void php_register_variable_ex(cha
                                }
                                if (zend_symtable_find(symtable1, 
escaped_index, index_len + 1, (void **) &gpc_element_p) == FAILURE
                                        || Z_TYPE_PP(gpc_element_p) != 
IS_ARRAY) {
+                                       if (zend_hash_num_elements(symtable1) 
>= PG(max_input_vars)) {
+                                               php_error_docref(NULL 
TSRMLS_CC, E_ERROR, "Input variables exceeded %ld. To increase the limit change 
max_input_vars in php.ini.", PG(max_input_vars));
+                                       }
                                        MAKE_STD_ZVAL(gpc_element);
                                        array_init(gpc_element);
                                        zend_symtable_update(symtable1, 
escaped_index, index_len + 1, &gpc_element, sizeof(zval *), (void **) 
&gpc_element_p);
@@ -236,6 +239,9 @@ plain_var:
                                zend_symtable_exists(symtable1, escaped_index, 
index_len + 1)) {
                                zval_ptr_dtor(&gpc_element);
                        } else {
+                               if (zend_hash_num_elements(symtable1) >= 
PG(max_input_vars)) {
+                                       php_error_docref(NULL TSRMLS_CC, 
E_ERROR, "Input variables exceeded %ld. To increase the limit change 
max_input_vars in php.ini.", PG(max_input_vars));
+                               }
                                zend_symtable_update(symtable1, escaped_index, 
index_len + 1, &gpc_element, sizeof(zval *), (void **) &gpc_element_p);
                        }
                        if (escaped_index != index) {
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to