diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-02-24 16:03:58 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-02-24 16:03:58 +0000 |
| commit | 4739966e14ca2df24d4f44fb814b6275b9bf2a3c (patch) | |
| tree | 2398dee3380dfa48582a71a4f2d4278448fa6cb8 /src/engine/e_compression.c | |
| parent | 1ea859c431b33a384727c0016917dde15bceeff3 (diff) | |
| download | zcatch-4739966e14ca2df24d4f44fb814b6275b9bf2a3c.tar.gz zcatch-4739966e14ca2df24d4f44fb814b6275b9bf2a3c.zip | |
larger restructure to improve security
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_); |