|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2013-07-25 12:01 UTC] laruence@php.net
Description:
------------
the codes is obviously wrong
if the php_memc_zval_from_payload return -1, the value's type is unitialized
value.
so the patch is:
diff --git a/php_memcached.c b/php_memcached.c
index bf3037c..6ae3147 100644
--- a/php_memcached.c
+++ b/php_memcached.c
@@ -784,7 +784,7 @@ static void
php_memc_getMulti_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_ke
MAKE_STD_ZVAL(value);
if (php_memc_zval_from_payload(value, payload, payload_len, flags,
m_obj->serializer TSRMLS_CC) < 0) {
- zval_ptr_dtor(&value);
+ efree(value);
if (EG(exception)) {
status = MEMC_RES_PAYLOAD_FAILURE;
php_memc_handle_error(i_obj, status TSRMLS_CC);
Patchesbug65334.patch (last revision 2013-07-26 03:22 UTC by laruence@php.net)Pull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Dec 07 14:00:01 2025 UTC |
maybe this patch is better: $ git diff diff --git a/php_memcached.c b/php_memcached.c index bf3037c..677858c 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -2604,6 +2604,7 @@ static int php_memc_zval_from_payload(zval *value, char *payload, size_t payload if (payload == NULL && payload_len > 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not handle non-existing value of length %zu", payload_len); + ZVAL_NULL(value); return -1; } else if (payload == NULL) { if (MEMC_VAL_GET_TYPE(flags) == MEMC_VAL_IS_BOOL) { @@ -2654,6 +2655,7 @@ static int php_memc_zval_from_payload(zval *value, char *payload, size_t payload if (!decompress_status) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "could not decompress value"); + ZVAL_NULL(value); efree(buffer); return -1; }