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

Skip to content

Commit 6a77ef5

Browse files
Small extra ZSTD validity check
1 parent b287147 commit 6a77ef5

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

library.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2909,14 +2909,17 @@ redis_unpack(RedisSock *redis_sock, const char *val, int val_len, zval *z_ret)
29092909

29102910
len = ZSTD_getFrameContentSize(val, val_len);
29112911

2912-
if (len != ZSTD_CONTENTSIZE_ERROR && len != ZSTD_CONTENTSIZE_UNKNOWN) {
2912+
if (len != ZSTD_CONTENTSIZE_ERROR && len != ZSTD_CONTENTSIZE_UNKNOWN && len <= INT_MAX)
2913+
{
2914+
size_t zlen;
2915+
29132916
data = emalloc(len);
2914-
len = ZSTD_decompress(data, len, val, val_len);
2915-
if (ZSTD_isError(len)) {
2917+
zlen = ZSTD_decompress(data, len, val, val_len);
2918+
if (ZSTD_isError(zlen) || zlen != len) {
29162919
efree(data);
29172920
break;
2918-
} else if (redis_unserialize(redis_sock, data, len, z_ret) == 0) {
2919-
ZVAL_STRINGL(z_ret, data, len);
2921+
} else if (redis_unserialize(redis_sock, data, zlen, z_ret) == 0) {
2922+
ZVAL_STRINGL(z_ret, data, zlen);
29202923
}
29212924
efree(data);
29222925
return 1;

0 commit comments

Comments
 (0)