From 3f0b0b8da748a3981083d7b8133d67a3f2a13446 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Sun, 2 Nov 2014 09:27:26 +0100 Subject: php54-php: gmp: fix memory management conflict with other libraries using libgmp, backport fix for https://bugs.php.net/63595 --- php-5.4.34-bug63595.patch | 72 +++++++++++++++++++++++++++++++++++++++++++++++ php.spec | 5 ++++ 2 files changed, 77 insertions(+) create mode 100644 php-5.4.34-bug63595.patch diff --git a/php-5.4.34-bug63595.patch b/php-5.4.34-bug63595.patch new file mode 100644 index 0000000..7df8438 --- /dev/null +++ b/php-5.4.34-bug63595.patch @@ -0,0 +1,72 @@ +From 3c925b18fa96043e5d7e86f9ce544b143c3c2079 Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Mon, 27 Oct 2014 07:45:34 +0100 +Subject: [PATCH] Fix bug #63595 GMP memory management conflicts with other + libraries using GMP + +Drop use of php memory allocators as this raise various conflicts +with other extensions and libraries which use libgmp. + +No other solution found. +We cannot for ensure correct use of allocator with shared lib. + +Some memory can allocated before php init +Some memory can be freed after php shutdown + +Known broken run cases +- php + curl + gnutls + gmp +- mod_gnutls + mod_php + gnutls + gmp +- php + freetds + gnutls + gmp +- php + odbc + freetds + gnutls + gmp +- php + php-mapi (zarafa) + gnutls + gmp +--- + ext/gmp/gmp.c | 26 -------------------------- + 1 file changed, 26 deletions(-) + +diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c +index f51bd8c..b1553fa 100644 +--- a/ext/gmp/gmp.c ++++ b/ext/gmp/gmp.c +@@ -324,30 +324,6 @@ static void _php_gmpnum_free(zend_rsrc_list_entry *rsrc TSRMLS_DC); + # define MAX_BASE 36 + #endif + +-/* {{{ gmp_emalloc +- */ +-static void *gmp_emalloc(size_t size) +-{ +- return emalloc(size); +-} +-/* }}} */ +- +-/* {{{ gmp_erealloc +- */ +-static void *gmp_erealloc(void *ptr, size_t old_size, size_t new_size) +-{ +- return erealloc(ptr, new_size); +-} +-/* }}} */ +- +-/* {{{ gmp_efree +- */ +-static void gmp_efree(void *ptr, size_t size) +-{ +- efree(ptr); +-} +-/* }}} */ +- + /* {{{ ZEND_GINIT_FUNCTION + */ + static ZEND_GINIT_FUNCTION(gmp) +@@ -369,8 +345,6 @@ ZEND_MODULE_STARTUP_D(gmp) + #endif + REGISTER_STRING_CONSTANT("GMP_VERSION", (char *)gmp_version, CONST_CS | CONST_PERSISTENT); + +- mp_set_memory_functions(gmp_emalloc, gmp_erealloc, gmp_efree); +- + return SUCCESS; + } + /* }}} */ +-- +2.1.0 + diff --git a/php.spec b/php.spec index 50a7c64..bc5dc3b 100644 --- a/php.spec +++ b/php.spec @@ -155,6 +155,8 @@ Patch91: php-5.3.7-oci8conf.patch # Upstream fixes (100+) # Backported from 5.5.18 for https://bugs.php.net/65641 Patch100: php-5.4.33-bug65641.patch +# Backported from 5.5.19 for https://bugs.php.net/63595 +Patch101: php-5.4.34-bug63595.patch # Security fixes (200+) @@ -769,6 +771,7 @@ support for using the enchant library to PHP. # upstream patches %patch100 -p1 -b .bug65641 +%patch101 -p1 -b .bug63595 # security patches @@ -1543,6 +1546,8 @@ fi * Sun Nov 2 2014 Remi Collet 5.4.34-2 - new version of systzdata patch, fix case sensitivity - add php54-cgi command in base system +- gmp: fix memory management conflict with other libraries + using libgmp, backport fix for https://bugs.php.net/63595 * Thu Oct 16 2014 Remi Collet 5.4.34-1 - Update to 5.4.34 -- cgit