[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b
aCaB
acab at clamav.net
Sun Apr 4 00:59:29 UTC 2010
The following commit has been merged in the debian/unstable branch:
commit 5e1d2c2822f97c38f53d07272fd38f73b93d9746
Author: aCaB <acab at clamav.net>
Date: Wed Aug 5 20:51:02 2009 +0200
fix lzma return codes, update nsis/lzma
diff --git a/libclamav/lzma_iface.c b/libclamav/lzma_iface.c
index 994e7db..21f7180 100644
--- a/libclamav/lzma_iface.c
+++ b/libclamav/lzma_iface.c
@@ -81,12 +81,10 @@ int cli_LzmaInit(struct CLI_LZMA *L, uint64_t size_override) {
LzmaDec_Construct(&L->state);
if(LzmaDec_Allocate(&L->state, L->header, LZMA_PROPS_SIZE, &g_Alloc) != SZ_OK)
- return CL_EMEM;
+ return LZMA_RESULT_DATA_ERROR;
LzmaDec_Init(&L->state);
L->freeme = 1;
- if(~L->usize) L->finish = LZMA_FINISH_END;
- else L->finish = LZMA_FINISH_ANY;
return LZMA_RESULT_OK;
}
@@ -102,16 +100,29 @@ int cli_LzmaDecode(struct CLI_LZMA *L) {
SRes res;
SizeT outbytes, inbytes;
ELzmaStatus status;
+ ELzmaFinishMode finish;
if(!L->freeme) return cli_LzmaInit(L, 0);
- outbytes = L->avail_out;
inbytes = L->avail_in;
- res = LzmaDec_DecodeToBuf(&L->state, L->next_out, &outbytes, L->next_in, &inbytes, L->finish, &status);
+ if(~L->usize && L->avail_out > L->usize) {
+ outbytes = L->usize;
+ finish = LZMA_FINISH_END;
+ } else {
+ outbytes = L->avail_out;
+ finish = LZMA_FINISH_ANY;
+ }
+ res = LzmaDec_DecodeToBuf(&L->state, L->next_out, &outbytes, L->next_in, &inbytes, finish, &status);
+ L->avail_in -= inbytes;
L->next_in += inbytes;
+ L->avail_out -= outbytes;
L->next_out += outbytes;
- L->usize -= outbytes;
- return 0; /* FIXMELZMA */
+ if(~L->usize) L->usize -= outbytes;
+ if(res != SZ_OK)
+ return LZMA_RESULT_DATA_ERROR;
+ if(!L->usize || status == LZMA_STATUS_FINISHED_WITH_MARK)
+ return LZMA_STREAM_END;
+ return LZMA_RESULT_OK;
}
/* int cli_LzmaInitUPX(CLI_LZMA **Lp, uint32_t dictsz) { */
diff --git a/libclamav/lzma_iface.h b/libclamav/lzma_iface.h
index 4ee5d08..b5d68e0 100644
--- a/libclamav/lzma_iface.h
+++ b/libclamav/lzma_iface.h
@@ -35,7 +35,6 @@ struct CLI_LZMA {
unsigned int freeme;
unsigned int init;
uint64_t usize;
- ELzmaFinishMode finish;
unsigned char *next_in;
unsigned char *next_out;
SizeT avail_in;
diff --git a/libclamav/nsis/nulsft.c b/libclamav/nsis/nulsft.c
index bd50ac6..db1b7c5 100644
--- a/libclamav/nsis/nulsft.c
+++ b/libclamav/nsis/nulsft.c
@@ -97,8 +97,9 @@ static int nsis_init(struct nsis_st *n) {
n->freecomp=1;
break;
case COMP_LZMA:
- memset(&n->bz, 0, sizeof(struct CLI_LZMA));
- cli_LzmaInit(&n->lz, 0xffffffffffffffffULL);
+ memset(&n->lz, 0, sizeof(struct CLI_LZMA));
+ if(cli_LzmaInit(&n->lz, 0xffffffffffffffffULL)!=LZMA_RESULT_OK)
+ return CL_EUNPACK;
n->freecomp=1;
break;
case COMP_ZLIB:
--
Debian repository for ClamAV
More information about the Pkg-clamav-commits
mailing list