diff --git a/sshzlib.c b/sshzlib.c index 8a64e356..c69edfb8 100644 --- a/sshzlib.c +++ b/sshzlib.c @@ -1234,6 +1234,8 @@ int zlib_decompress_block(void *handle, unsigned char *block, int len, goto finished; if (code == -2) goto decode_error; + if (code >= 30) /* dist symbols 30 and 31 are invalid */ + goto decode_error; dctx->state = GOTDISTSYM; dctx->sym = code; break;