diff options
Diffstat (limited to 'src/engine/e_compression.c')
| -rw-r--r-- | src/engine/e_compression.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/engine/e_compression.c b/src/engine/e_compression.c index fa7d7866..0a16d0b4 100644 --- a/src/engine/e_compression.c +++ b/src/engine/e_compression.c @@ -125,9 +125,8 @@ long zerobit_decompress(const void *src_, int size, void *dst_) unsigned char *src = (unsigned char *)src_; unsigned char *dst = (unsigned char *)dst_; unsigned char *end = src + size; - - while(src != end) + while(src < end) { unsigned char bit = 0x80; unsigned char mask = *src++; @@ -140,6 +139,9 @@ long zerobit_decompress(const void *src_, int size, void *dst_) else *dst++ = 0; } + + if(src > end) + return -1; } return (long)(dst-(unsigned char *)dst_); |