[php-pecl-memcache/f16] update to 3.0.7
Remi Collet
remi at fedoraproject.org
Sun Sep 23 07:41:54 UTC 2012
commit e7f5ec158925361bf8c3cb26c79d9fbbf9782666
Author: Remi Collet <remi at fedoraproject.org>
Date: Sun Sep 23 09:41:32 2012 +0200
update to 3.0.7
.gitignore | 2 +
LICENSE | 68 ++++++++++++++++
php-pecl-memcache-3.0.5-get-mem-corrupt.patch | 89 +++++++++++++++++++++
php-pecl-memcache.spec | 102 +++++++++++++------------
sources | 2 +-
5 files changed, 214 insertions(+), 49 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e30a1c0..671f4f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
+*spec~
/memcache-3.0.6.tgz
+/memcache-3.0.7.tgz
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..6c1c170
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,68 @@
+--------------------------------------------------------------------
+ The PHP License, version 3.0
+Copyright (c) 1999 - 2006 The PHP Group. All rights reserved.
+--------------------------------------------------------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, is permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ 3. The name "PHP" must not be used to endorse or promote products
+ derived from this software without prior written permission. For
+ written permission, please contact group at php.net.
+
+ 4. Products derived from this software may not be called "PHP", nor
+ may "PHP" appear in their name, without prior written permission
+ from group at php.net. You may indicate that your software works in
+ conjunction with PHP by saying "Foo for PHP" instead of calling
+ it "PHP Foo" or "phpfoo"
+
+ 5. The PHP Group may publish revised and/or new versions of the
+ license from time to time. Each version will be given a
+ distinguishing version number.
+ Once covered code has been published under a particular version
+ of the license, you may always continue to use it under the terms
+ of that version. You may also choose to use such covered code
+ under the terms of any subsequent version of the license
+ published by the PHP Group. No one other than the PHP Group has
+ the right to modify the terms applicable to covered code created
+ under this License.
+
+ 6. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes PHP, freely available from
+ <http://www.php.net/>".
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group at php.net.
+
+For more information on the PHP Group and the PHP project,
+please see <http://www.php.net>.
+
+This product includes the Zend Engine, freely available at
+<http://www.zend.com>.
diff --git a/php-pecl-memcache-3.0.5-get-mem-corrupt.patch b/php-pecl-memcache-3.0.5-get-mem-corrupt.patch
new file mode 100644
index 0000000..0b7c66c
--- /dev/null
+++ b/php-pecl-memcache-3.0.5-get-mem-corrupt.patch
@@ -0,0 +1,89 @@
+From 6e09e8db8d36de6a5020f5d517f62a8c16af8222 Mon Sep 17 00:00:00 2001
+From: "Vojtech Vitek (V-Teq)" <vvitek at redhat.com>
+Date: Mon, 17 Oct 2011 16:17:51 +0200
+Subject: [PATCH] fix get/unserialize memory corruption
+
+Possible memory corruption (and segfault) after unserialising objects:
+<?php
+$obj = new StdClass;
+$obj->obj = $obj;
+$memcache = new Memcache;
+$memcache->connect('127.0.0.1', 11211);
+$memcache->set('x', $obj, false, 300);
+$x = $memcache->get('x');
+$x = $memcache->get('x');
+$x = $memcache->get('x');
+$x = $memcache->get('x');
+$x = $memcache->get('x');
+
+Patch by Paul Clifford.
+
+---
+ memcache-3.0.5/memcache_pool.c | 15 +++++++--------
+ 1 files changed, 7 insertions(+), 8 deletions(-)
+
+diff --git memcache-3.0.5/memcache_pool.c memcache-3.0.5/memcache_pool.c
+index 420a773..e89ebce 100644
+--- memcache-3.0.5/memcache_pool.c
++++ memcache-3.0.5/memcache_pool.c
+@@ -422,8 +422,8 @@ int mmc_unpack_value(
+ char *data = NULL;
+ unsigned long data_len;
+
+- zval value;
+- INIT_ZVAL(value);
++ zval *object;
++ ALLOC_INIT_ZVAL(object);
+
+ if (flags & MMC_COMPRESSED) {
+ if (mmc_uncompress(buffer->value.c, bytes, &data, &data_len) != MMC_OK) {
+@@ -439,7 +439,6 @@ int mmc_unpack_value(
+ if (flags & MMC_SERIALIZED) {
+ php_unserialize_data_t var_hash;
+ const unsigned char *p = (unsigned char *)data;
+- zval *object = &value;
+
+ char key_tmp[MMC_MAX_KEY_LEN + 1];
+ mmc_request_value_handler value_handler;
+@@ -495,7 +494,7 @@ int mmc_unpack_value(
+ long val;
+ data[data_len] = '\0';
+ val = strtol(data, NULL, 10);
+- ZVAL_LONG(&value, val);
++ ZVAL_LONG(object, val);
+ break;
+ }
+
+@@ -503,17 +502,17 @@ int mmc_unpack_value(
+ double val = 0;
+ data[data_len] = '\0';
+ sscanf(data, "%lg", &val);
+- ZVAL_DOUBLE(&value, val);
++ ZVAL_DOUBLE(object, val);
+ break;
+ }
+
+ case MMC_TYPE_BOOL:
+- ZVAL_BOOL(&value, data_len == 1 && data[0] == '1');
++ ZVAL_BOOL(object, data_len == 1 && data[0] == '1');
+ break;
+
+ default:
+ data[data_len] = '\0';
+- ZVAL_STRINGL(&value, data, data_len, 0);
++ ZVAL_STRINGL(object, data, data_len, 0);
+
+ if (!(flags & MMC_COMPRESSED)) {
+ /* release buffer because it's now owned by the zval */
+@@ -522,7 +521,7 @@ int mmc_unpack_value(
+ }
+
+ /* delegate to value handler */
+- return request->value_handler(key, key_len, &value, flags, cas, request->value_handler_param TSRMLS_CC);
++ return request->value_handler(key, key_len, object, flags, cas, request->value_handler_param TSRMLS_CC);
+ }
+ }
+ /* }}}*/
+--
+1.7.6.2
+
diff --git a/php-pecl-memcache.spec b/php-pecl-memcache.spec
index f521d61..bf55ff1 100644
--- a/php-pecl-memcache.spec
+++ b/php-pecl-memcache.spec
@@ -1,12 +1,10 @@
%{!?__pecl: %{expand: %%global __pecl %{_bindir}/pecl}}
-%{!?php_extdir: %{expand: %%global php_extdir %(php-config --extension-dir)}}
-%global php_apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1)
%global pecl_name memcache
Summary: Extension to work with the Memcached caching daemon
Name: php-pecl-memcache
-Version: 3.0.6
+Version: 3.0.7
Release: 1%{?dist}
License: PHP
Group: Development/Languages
@@ -14,29 +12,25 @@ URL: http://pecl.php.net/package/%{pecl_name}
Source: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
Source2: xml2changelog
+# https://bugs.php.net/63141
+Source3: LICENSE
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: php-devel >= 4.3.11, php-pear, zlib-devel
+# https://bugs.php.net/63142
+Patch2: php-pecl-memcache-3.0.5-get-mem-corrupt.patch
+
+BuildRequires: php-devel, php-pear, zlib-devel
-%if 0%{?pecl_install:1}
Requires(post): %{__pecl}
-%endif
-%if 0%{?pecl_uninstall:1}
Requires(postun): %{__pecl}
-%endif
-Provides: php-pecl(%{pecl_name}) = %{version}-%{release}
-%if 0%{?php_zend_api:1}
Requires: php(zend-abi) = %{php_zend_api}
Requires: php(api) = %{php_core_api}
-%else
-Requires: php-api = %{php_apiver}
-%endif
+Provides: php-pecl(%{pecl_name}) = %{version}
+Provides: php-pecl(%{pecl_name})%{?_isa} = %{version}
-%{?filter_setup:
-%filter_provides_in %{php_extdir}/.*\.so$
-%filter_setup
-}
+# Filter private shared
+%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$}
+%{?filter_setup}
%description
@@ -52,31 +46,29 @@ Memcache can be used as a PHP session handler.
%prep
%setup -c -q
-%{_bindir}/php -n %{SOURCE2} package.xml | tee CHANGELOG | head -n 5
-# avoid spurious-executable-perm
-find . -type f -exec chmod -x {} \;
+pushd %{pecl_name}-%{version}
+%patch2 -p1 -b .get-mem-corrupt.patch
+# Chech version as upstream often forget to update this
+extver=$(sed -n '/#define PHP_MEMCACHE_VERSION/{s/.* "//;s/".*$//;p}' php_memcache.h)
+if test "x${extver}" != "x%{version}"; then
+ : Error: Upstream version is now ${extver}, expecting %{version}.
+ : Update the pdover macro and rebuild.
+ exit 1
+fi
+popd
-%build
-cd %{pecl_name}-%{version}
-phpize
-%configure
-%{__make} %{?_smp_mflags}
-
+%{_bindir}/php -n %{SOURCE2} package.xml | tee CHANGELOG | head -n 5
-%install
-cd %{pecl_name}-%{version}
-%{__rm} -rf %{buildroot}
-%{__make} install INSTALL_ROOT=%{buildroot}
+cp -p %{SOURCE3} .
-# Drop in the bit of configuration
-%{__mkdir_p} %{buildroot}%{_sysconfdir}/php.d
-%{__cat} > %{buildroot}%{_sysconfdir}/php.d/%{pecl_name}.ini << 'EOF'
+cat >%{pecl_name}.ini << 'EOF'
; ----- Enable %{pecl_name} extension module
extension=%{pecl_name}.so
; ----- Options for the %{pecl_name} module
+; see http://www.php.net/manual/en/memcache.ini.php
; Whether to transparently failover to other servers on errors
;memcache.allow_failover=1
@@ -109,42 +101,46 @@ extension=%{pecl_name}.so
;session.save_path="tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
EOF
+
+%build
+cd %{pecl_name}-%{version}
+phpize
+%configure
+make %{?_smp_mflags}
+
+
+%install
+make -C %{pecl_name}-%{version} \
+ install INSTALL_ROOT=%{buildroot}
+
+# Drop in the bit of configuration
+install -D -m 644 %{pecl_name}.ini %{buildroot}%{_sysconfdir}/php.d/%{pecl_name}.ini
+
# Install XML package description
-# use 'name' rather than 'pecl_name' to avoid conflict with pear extensions
-%{__mkdir_p} %{buildroot}%{pecl_xmldir}
-%{__install} -m 644 ../package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml
+install -Dpm 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml
%check
cd %{pecl_name}-%{version}
# simple module load test
%{_bindir}/php --no-php-ini \
- --define extension_dir=modules \
+ --define extension_dir=%{buildroot}%{php_extdir} \
--define extension=%{pecl_name}.so \
--modules | grep %{pecl_name}
-%clean
-%{__rm} -rf %{buildroot}
-
-
-%if 0%{?pecl_install:1}
%post
%{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || :
-%endif
-%if 0%{?pecl_uninstall:1}
%postun
if [ $1 -eq 0 ] ; then
%{pecl_uninstall} %{pecl_name} >/dev/null || :
fi
-%endif
%files
-%defattr(-, root, root, -)
-%doc CHANGELOG %{pecl_name}-%{version}/CREDITS %{pecl_name}-%{version}/README
+%doc CHANGELOG %{pecl_name}-%{version}/CREDITS %{pecl_name}-%{version}/README LICENSE
%doc %{pecl_name}-%{version}/example.php %{pecl_name}-%{version}/memcache.php
%config(noreplace) %{_sysconfdir}/php.d/%{pecl_name}.ini
%{php_extdir}/%{pecl_name}.so
@@ -152,6 +148,16 @@ fi
%changelog
+* Sun Sep 23 2012 Remi Collet <remi at fedoraproject.org> - 3.0.7-1
+- update to 3.0.7
+- drop patches merged upstream
+- cleanup spec
+
+* Thu Jul 5 2012 Joe Orton <jorton at redhat.com> - 3.0.6-4
+- fix php_stream_cast() usage
+- fix memory corruption after unserialization (Paul Clifford)
+- package license
+
* Mon Apr 11 2011 Remi Collet <Fedora at FamilleCollet.com> 3.0.6-1
- update to 3.0.6
diff --git a/sources b/sources
index e4bb097..1be676e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-23c2a1548f3fc7658b98b1c60e6d83b1 memcache-3.0.6.tgz
+5cc9f2ef11f5c931794ece1a148416df memcache-3.0.7.tgz
More information about the scm-commits
mailing list