Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 071a1d5

Browse files
committed
Fix memory leak when aquiring lock
1 parent 92f14b1 commit 071a1d5

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

redis_session.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ static int lock_acquire(RedisSock *redis_sock, redis_session_lock_status *lock_s
275275
}
276276

277277
/* Generate our qualified lock key */
278+
if (lock_status->lock_key) zend_string_release(lock_status->lock_key);
278279
lock_status->lock_key = zend_string_alloc(ZSTR_LEN(lock_status->session_key) + sizeof(suffix) - 1, 0);
279280
memcpy(ZSTR_VAL(lock_status->lock_key), ZSTR_VAL(lock_status->session_key), ZSTR_LEN(lock_status->session_key));
280281
memcpy(ZSTR_VAL(lock_status->lock_key) + ZSTR_LEN(lock_status->session_key), suffix, sizeof(suffix) - 1);
@@ -283,6 +284,7 @@ static int lock_acquire(RedisSock *redis_sock, redis_session_lock_status *lock_s
283284
gethostname(hostname, HOST_NAME_MAX);
284285
size_t hostname_len = strlen(hostname);
285286
size_t pid_len = snprintf(pid, sizeof(pid), "|%ld", (long)getpid());
287+
if (lock_status->lock_secret) zend_string_release(lock_status->lock_secret);
286288
lock_status->lock_secret = zend_string_alloc(hostname_len + pid_len, 0);
287289
memcpy(ZSTR_VAL(lock_status->lock_secret), hostname, hostname_len);
288290
memcpy(ZSTR_VAL(lock_status->lock_secret) + hostname_len, pid, pid_len);

0 commit comments

Comments
 (0)