Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2022-08-21 14:59:15 +0300
committerPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2022-08-21 14:59:39 +0300
commita471c87a3b0fe3f82879b8df0fcfeb869d03e2a2 (patch)
treea9d88ad99a5ab81ce1b55438927b4ef2d531879f /redis_session.c
parent677c9da3cbff53b74f7b26ca7dcbdf7e37e1da04 (diff)
Issue #2141issue-2141
Fix segfault with session+tls
Diffstat (limited to 'redis_session.c')
-rw-r--r--redis_session.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/redis_session.c b/redis_session.c
index 3e3e8816..b3b3d31f 100644
--- a/redis_session.c
+++ b/redis_session.c
@@ -380,7 +380,7 @@ static void lock_release(RedisSock *redis_sock, redis_session_lock_status *lock_
PS_OPEN_FUNC(redis)
{
php_url *url;
- zval params, *context = NULL;
+ zval params, context, *zv;
int i, j, path_len;
redis_pool *pool = ecalloc(1, sizeof(*pool));
@@ -425,6 +425,7 @@ PS_OPEN_FUNC(redis)
return FAILURE;
}
+ ZVAL_NULL(&context);
/* parse parameters */
if (url->query != NULL) {
HashTable *ht;
@@ -450,7 +451,9 @@ PS_OPEN_FUNC(redis)
REDIS_CONF_STRING_STATIC(ht, "prefix", &prefix);
REDIS_CONF_AUTH_STATIC(ht, "auth", &user, &pass);
- context = REDIS_HASH_STR_FIND_TYPE_STATIC(ht, "stream", IS_ARRAY);
+ if ((zv = REDIS_HASH_STR_FIND_TYPE_STATIC(ht, "stream", IS_ARRAY)) != NULL) {
+ ZVAL_ZVAL(&context, zv, 1, 0);
+ }
zval_dtor(&params);
}
@@ -492,9 +495,8 @@ PS_OPEN_FUNC(redis)
persistent, persistent_id ? ZSTR_VAL(persistent_id) : NULL,
retry_interval);
- if (context != NULL) {
- redis_sock_set_stream_context(redis_sock, context);
- context = NULL;
+ if (Z_TYPE(context) == IS_ARRAY) {
+ redis_sock_set_stream_context(redis_sock, &context);
}
redis_pool_add(pool, redis_sock, weight, db);