summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2013-12-28 09:53:54 +0100
committerRemi Collet <fedora@famillecollet.com>2013-12-28 09:53:54 +0100
commit2982afcaf2754b7ee713d634f88acc7451f2127b (patch)
tree6cadc1d05008e37ba37015cf1e0e506af72d5efa
parent969a883bb4e40fbd79a2ef10b03188425fdc5b02 (diff)
test build of 5.5.8RC1
-rw-r--r--php-bug66060.patch40
-rw-r--r--php-bug66218.patch251
-rw-r--r--php-bugarm.patch41
-rw-r--r--php55.spec36
4 files changed, 15 insertions, 353 deletions
diff --git a/php-bug66060.patch b/php-bug66060.patch
deleted file mode 100644
index 553f708..0000000
--- a/php-bug66060.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 12fe4e90be7bfa2a763197079f68f5568a14e071 Mon Sep 17 00:00:00 2001
-From: Remi Collet <remi@php.net>
-Date: Wed, 27 Nov 2013 11:13:16 +0100
-Subject: [PATCH] Fixed bug #66060 (Heap buffer over-read in DateInterval)
-
----
- NEWS | 3 +++
- ext/date/lib/parse_iso_intervals.c | 4 ++--
- ext/date/lib/parse_iso_intervals.re | 2 +-
- 3 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/ext/date/lib/parse_iso_intervals.c b/ext/date/lib/parse_iso_intervals.c
-index bd1ad05..480ea38 100644
---- a/ext/date/lib/parse_iso_intervals.c
-+++ b/ext/date/lib/parse_iso_intervals.c
-@@ -380,7 +380,7 @@ yy6:
- break;
- }
- ptr++;
-- } while (*ptr);
-+ } while (!s->errors->error_count && *ptr);
- s->have_period = 1;
- TIMELIB_DEINIT;
- return TIMELIB_PERIOD;
-diff --git a/ext/date/lib/parse_iso_intervals.re b/ext/date/lib/parse_iso_intervals.re
-index 56aa34d..c5e9f67 100644
---- a/ext/date/lib/parse_iso_intervals.re
-+++ b/ext/date/lib/parse_iso_intervals.re
-@@ -348,7 +348,7 @@ isoweek = year4 "-"? "W" weekofyear;
- break;
- }
- ptr++;
-- } while (*ptr);
-+ } while (!s->errors->error_count && *ptr);
- s->have_period = 1;
- TIMELIB_DEINIT;
- return TIMELIB_PERIOD;
---
-1.8.4.3
-
diff --git a/php-bug66218.patch b/php-bug66218.patch
deleted file mode 100644
index 848ab5a..0000000
--- a/php-bug66218.patch
+++ /dev/null
@@ -1,251 +0,0 @@
-From 3e963f8eb44863ef3d758eabe791190b0fd7bb9a Mon Sep 17 00:00:00 2001
-From: Remi Collet <remi@php.net>
-Date: Tue, 10 Dec 2013 16:07:16 +0100
-Subject: [PATCH] Fixed Bug #66218 zend_register_functions breaks reflection
-
-Functions registered using zend_register_functions instead of zend_module_entry.functions are not seen on reflection.
-
-Ex: additional_functions from api_module_entry.
-Ex: in CLI, dl, cli_set_process_title and cli_get_process_title
-
-Note:
-- also affects functions overrided in extension
- (should be be reported in extension, where overrided, not in original extension)
-- also allow extension to call zend_register_functions for various list
- (instead of having a single bug list)
----
- NEWS | 1 +
- Zend/tests/bug66218.phpt | 21 +++++++
- Zend/zend_builtin_functions.c | 51 ++++++++++-------
- ext/reflection/php_reflection.c | 66 +++++++++-------------
- .../tests/ReflectionExtension_bug66218.phpt | 21 +++++++
- 5 files changed, 101 insertions(+), 59 deletions(-)
- create mode 100644 Zend/tests/bug66218.phpt
- create mode 100644 ext/reflection/tests/ReflectionExtension_bug66218.phpt
-
-diff --git a/Zend/tests/bug66218.phpt b/Zend/tests/bug66218.phpt
-new file mode 100644
-index 0000000..af7a5ab
---- /dev/null
-+++ b/Zend/tests/bug66218.phpt
-@@ -0,0 +1,21 @@
-+--TEST--
-+Bug #66218 zend_register_functions breaks reflection
-+--SKIPIF--
-+<?php
-+if (PHP_SAPI != "cli") die("skip CLI only test");
-+if (!function_exists("dl")) die("skip need dl");
-+?>
-+--FILE--
-+<?php
-+$tab = get_extension_funcs("standard");
-+$fcts = array("dl");
-+foreach ($fcts as $fct) {
-+ if (in_array($fct, $tab)) {
-+ echo "$fct Ok\n";
-+ }
-+}
-+?>
-+Done
-+--EXPECTF--
-+dl Ok
-+Done
-diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
-index 04f4ebe..12a8fb2 100644
---- a/Zend/zend_builtin_functions.c
-+++ b/Zend/zend_builtin_functions.c
-@@ -2442,36 +2442,49 @@ ZEND_FUNCTION(extension_loaded)
- Returns an array with the names of functions belonging to the named extension */
- ZEND_FUNCTION(get_extension_funcs)
- {
-- char *extension_name;
-- int extension_name_len;
-+ char *extension_name, *lcname;
-+ int extension_name_len, array;
- zend_module_entry *module;
-- const zend_function_entry *func;
--
-+ HashPosition iterator;
-+ zend_function *zif;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &extension_name, &extension_name_len) == FAILURE) {
- return;
- }
--
- if (strncasecmp(extension_name, "zend", sizeof("zend"))) {
-- char *lcname = zend_str_tolower_dup(extension_name, extension_name_len);
-- if (zend_hash_find(&module_registry, lcname,
-- extension_name_len+1, (void**)&module) == FAILURE) {
-- efree(lcname);
-- RETURN_FALSE;
-- }
-+ lcname = zend_str_tolower_dup(extension_name, extension_name_len);
-+ } else {
-+ lcname = estrdup("core");
-+ }
-+ if (zend_hash_find(&module_registry, lcname,
-+ extension_name_len+1, (void**)&module) == FAILURE) {
- efree(lcname);
-+ RETURN_FALSE;
-+ }
-
-- if (!(func = module->functions)) {
-- RETURN_FALSE;
-- }
-+ zend_hash_internal_pointer_reset_ex(CG(function_table), &iterator);
-+ if (module->functions) {
-+ /* avoid BC break, if functions list is empty, will return an empty array */
-+ array_init(return_value);
-+ array = 1;
- } else {
-- func = builtin_functions;
-+ array = 0;
-+ }
-+ while (zend_hash_get_current_data_ex(CG(function_table), (void **) &zif, &iterator) == SUCCESS) {
-+ if (zif->common.type==ZEND_INTERNAL_FUNCTION
-+ && zif->internal_function.module == module) {
-+ if (!array) {
-+ array_init(return_value);
-+ array = 1;
-+ }
-+ add_next_index_string(return_value, zif->common.function_name, 1);
-+ }
-+ zend_hash_move_forward_ex(CG(function_table), &iterator);
- }
-
-- array_init(return_value);
-+ efree(lcname);
-
-- while (func->fname) {
-- add_next_index_string(return_value, func->fname, 1);
-- func++;
-+ if (!array) {
-+ RETURN_FALSE;
- }
- }
- /* }}} */
-diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
-index c4a7c55..803b12b 100644
---- a/ext/reflection/php_reflection.c
-+++ b/ext/reflection/php_reflection.c
-@@ -1105,29 +1105,26 @@
- string_free(&str_constants);
- }
-
-- if (module->functions && module->functions->fname) {
-+ {
-+ HashPosition iterator;
- zend_function *fptr;
-- const zend_function_entry *func = module->functions;
--
-- string_printf(str, "\n - Functions {\n");
-+ int first = 1;
-
-- /* Is there a better way of doing this? */
-- while (func->fname) {
-- int fname_len = strlen(func->fname);
-- char *lc_name = zend_str_tolower_dup(func->fname, fname_len);
--
-- if (zend_hash_find(EG(function_table), lc_name, fname_len + 1, (void**) &fptr) == FAILURE) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal error: Cannot find extension function %s in global function table", func->fname);
-- func++;
-- efree(lc_name);
-- continue;
-+ zend_hash_internal_pointer_reset_ex(CG(function_table), &iterator);
-+ while (zend_hash_get_current_data_ex(CG(function_table), (void **) &fptr, &iterator) == SUCCESS) {
-+ if (fptr->common.type==ZEND_INTERNAL_FUNCTION
-+ && fptr->internal_function.module == module) {
-+ if (first) {
-+ string_printf(str, "\n - Functions {\n");
-+ first = 0;
-+ }
-+ _function_string(str, fptr, NULL, " " TSRMLS_CC);
- }
--
-- _function_string(str, fptr, NULL, " " TSRMLS_CC);
-- efree(lc_name);
-- func++;
-+ zend_hash_move_forward_ex(CG(function_table), &iterator);
-+ }
-+ if (!first) {
-+ string_printf(str, "%s }\n", indent);
- }
-- string_printf(str, "%s }\n", indent);
- }
-
- {
-@@ -5264,6 +5261,9 @@
- {
- reflection_object *intern;
- zend_module_entry *module;
-+ HashPosition iterator;
-+ zval *function;
-+ zend_function *fptr;
-
- if (zend_parse_parameters_none() == FAILURE) {
- return;
-@@ -5271,29 +5271,15 @@
- GET_REFLECTION_OBJECT_PTR(module);
-
- array_init(return_value);
-- if (module->functions) {
-- zval *function;
-- zend_function *fptr;
-- const zend_function_entry *func = module->functions;
--
-- /* Is there a better way of doing this? */
-- while (func->fname) {
-- int fname_len = strlen(func->fname);
-- char *lc_name = zend_str_tolower_dup(func->fname, fname_len);
--
-- if (zend_hash_find(EG(function_table), lc_name, fname_len + 1, (void**) &fptr) == FAILURE) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal error: Cannot find extension function %s in global function table", func->fname);
-- func++;
-- efree(lc_name);
-- continue;
-- }
--
-+ zend_hash_internal_pointer_reset_ex(CG(function_table), &iterator);
-+ while (zend_hash_get_current_data_ex(CG(function_table), (void **) &fptr, &iterator) == SUCCESS) {
-+ if (fptr->common.type==ZEND_INTERNAL_FUNCTION
-+ && fptr->internal_function.module == module) {
- ALLOC_ZVAL(function);
- reflection_function_factory(fptr, NULL, function TSRMLS_CC);
-- add_assoc_zval_ex(return_value, func->fname, fname_len+1, function);
-- func++;
-- efree(lc_name);
-+ add_assoc_zval(return_value, fptr->common.function_name, function);
- }
-+ zend_hash_move_forward_ex(CG(function_table), &iterator);
- }
- }
- /* }}} */
- diff --git a/ext/reflection/tests/ReflectionExtension_bug66218.phpt b/ext/reflection/tests/ReflectionExtension_bug66218.phpt
-new file mode 100644
-index 0000000..e263624
---- /dev/null
-+++ b/ext/reflection/tests/ReflectionExtension_bug66218.phpt
-@@ -0,0 +1,21 @@
-+--TEST--
-+ReflectionExtension::getFunctions() ##6218 zend_register_functions breaks reflection
-+--SKIPIF--
-+<?php
-+if (!extension_loaded('reflection')) print 'skip missing reflection extension';
-+if (PHP_SAPI != "cli") die("skip CLI only test");
-+if (!function_exists("dl")) die("skip need dl");
-+?>
-+--FILE--
-+<?php
-+$r = new ReflectionExtension('standard');
-+$t = $r->getFunctions();
-+var_dump($t['dl']);
-+?>
-+Done
-+--EXPECTF--
-+object(ReflectionFunction)#%d (1) {
-+ ["name"]=>
-+ string(2) "dl"
-+}
-+Done
---
-1.8.4.3
-
diff --git a/php-bugarm.patch b/php-bugarm.patch
deleted file mode 100644
index 6bd63b3..0000000
--- a/php-bugarm.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 60d2e70c062e436a6c6cd3c8a17469a083a38b46 Mon Sep 17 00:00:00 2001
-From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-Date: Tue, 10 Dec 2013 12:07:46 +0100
-Subject: [PATCH] Zend: fix overflow handling bug in non-x86
- fast_add_function()
-
-The 'result' argument of fast_add_function() may alias with either
-of its operands (or both). Take care not to write to 'result' before
-reading op1 and op2.
----
- Zend/zend_operators.h | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h
-index 0152e03..5c6fc86 100644
---- a/Zend/zend_operators.h
-+++ b/Zend/zend_operators.h
-@@ -640,13 +640,18 @@ static zend_always_inline int fast_add_function(zval *result, zval *op1, zval *o
- "n"(ZVAL_OFFSETOF_TYPE)
- : "rax","cc");
- #else
-- Z_LVAL_P(result) = Z_LVAL_P(op1) + Z_LVAL_P(op2);
-+ /*
-+ * 'result' may alias with op1 or op2, so we need to
-+ * ensure that 'result' is not updated until after we
-+ * have read the values of op1 and op2.
-+ */
-
- if (UNEXPECTED((Z_LVAL_P(op1) & LONG_SIGN_MASK) == (Z_LVAL_P(op2) & LONG_SIGN_MASK)
-- && (Z_LVAL_P(op1) & LONG_SIGN_MASK) != (Z_LVAL_P(result) & LONG_SIGN_MASK))) {
-+ && (Z_LVAL_P(op1) & LONG_SIGN_MASK) != ((Z_LVAL_P(op1) + Z_LVAL_P(op2)) & LONG_SIGN_MASK))) {
- Z_DVAL_P(result) = (double) Z_LVAL_P(op1) + (double) Z_LVAL_P(op2);
- Z_TYPE_P(result) = IS_DOUBLE;
- } else {
-+ Z_LVAL_P(result) = Z_LVAL_P(op1) + Z_LVAL_P(op2);
- Z_TYPE_P(result) = IS_LONG;
- }
- #endif
---
-1.8.4.3
-
diff --git a/php55.spec b/php55.spec
index cfcd6e8..efde641 100644
--- a/php55.spec
+++ b/php55.spec
@@ -100,13 +100,13 @@
%endif
#global snapdate 201308300430
-#global rcver RC1
+%global rcver RC1
Summary: PHP scripting language for creating dynamic web sites
Name: php
-Version: 5.5.7
+Version: 5.5.8
%if 0%{?snapdate:1}%{?rcver:1}
-Release: 0.4.%{?snapdate}%{?rcver}%{?dist}
+Release: 0.1.%{?snapdate}%{?rcver}%{?dist}
%else
Release: 1%{?dist}.1
%endif
@@ -169,12 +169,6 @@ Patch47: php-5.4.9-phpinfo.patch
Patch91: php-5.3.7-oci8conf.patch
# Upstream fixes
-# 66060 Heap buffer over-read in DateInterval
-Patch100: php-bug66060.patch
-# 66218 zend_register_functions breaks reflection
-Patch101: php-bug66218.patch
-# Zend: fix overflow handling bug in non-x86
-Patch102: php-bugarm.patch
# Security fixes
@@ -239,7 +233,7 @@ easy for developers to write dynamically generated web pages. PHP also
offers built-in database integration for several commercial and
non-commercial database management systems, so writing a
database-enabled webpage with PHP is fairly simple. The most common
-use of PHP coding is probably as a replacement for CGI scripts.
+use of PHP coding is probably as a replacement for CGI scripts.
The php package contains the module (often referred to as mod_php)
which adds support for the PHP language to Apache HTTP Server.
@@ -254,7 +248,7 @@ Provides: php-readline, php-readline%{?_isa}
Obsoletes: php53-cli, php53u-cli, php54-cli, php55u-cli
%description cli
-The php-cli package contains the command-line interface
+The php-cli package contains the command-line interface
executing PHP scripts, /usr/bin/php, and the CGI interface.
@@ -442,7 +436,7 @@ Obsoletes: php53-pdo, php53u-pdo, php54-pdo, php55u-pdo
%description pdo
The php-pdo package contains a dynamic shared object that will add
a database access abstraction layer to PHP. This module provides
-a common interface for accessing MySQL, PostgreSQL or other
+a common interface for accessing MySQL, PostgreSQL or other
databases.
%if %{with_libmysql}
@@ -582,11 +576,11 @@ The php-interbase package contains a dynamic shared object that will add
database support through Interbase/Firebird to PHP.
InterBase is the name of the closed-source variant of this RDBMS that was
-developed by Borland/Inprise.
+developed by Borland/Inprise.
-Firebird is a commercially independent project of C and C++ programmers,
-technical advisors and supporters developing and enhancing a multi-platform
-relational database management system based on the source code released by
+Firebird is a commercially independent project of C and C++ programmers,
+technical advisors and supporters developing and enhancing a multi-platform
+relational database management system based on the source code released by
Inprise Corp (now known as Borland Software Corp) under the InterBase Public
License.
@@ -890,9 +884,6 @@ rm -rf ext/json
%patch91 -p1 -b .remi-oci8
# upstream patches
-%patch100 -p1 -b .bug66060
-%patch101 -p1 -b .bug66218
-%patch102 -p1 -b .bugarm
# security patches
@@ -1090,7 +1081,7 @@ ln -sf ../configure
--enable-debug \
%endif
$*
-if test $? != 0; then
+if test $? != 0; then
tail -500 config.log
: configure failed
exit 1
@@ -1872,7 +1863,10 @@ fi
%changelog
-* Sat Dec 20 2013 Remi Collet <rcollet@redhat.com> 5.5.7-1.1
+* Sat Dec 28 2013 Remi Collet <rcollet@redhat.com> 5.5.8-0.1.RC1
+- test build of 5.5.8RC1
+
+* Fri Dec 20 2013 Remi Collet <rcollet@redhat.com> 5.5.7-1.1
- test build for https://bugs.php.net/66331
* Wed Dec 11 2013 Remi Collet <rcollet@redhat.com> 5.5.7-1