partial fix upx/lzma

0.96
aCaB 16 years ago
parent 5e1d2c2822
commit f1f0418e6d
  1. 38
      libclamav/lzma_iface.c
  2. 2
      libclamav/lzma_iface.h
  3. 2
      libclamav/upx.c

@ -125,32 +125,14 @@ int cli_LzmaDecode(struct CLI_LZMA *L) {
return LZMA_RESULT_OK;
}
/* int cli_LzmaInitUPX(CLI_LZMA **Lp, uint32_t dictsz) { */
/* CLI_LZMA *L = *Lp; */
/* if(!L) { */
/* *Lp = L = cli_calloc(sizeof(*L), 1); */
/* if(!L) { */
/* return LZMA_RESULT_DATA_ERROR; */
/* } */
/* } */
/* L->state.Properties.pb = 2; /\* FIXME: these *\/ */
/* L->state.Properties.lp = 0; /\* values may *\/ */
/* L->state.Properties.lc = 3; /\* not be static *\/ */
/* L->state.Properties.DictionarySize = dictsz; */
/* if (!(L->state.Probs = (CProb *)cli_malloc(LzmaGetNumProbs(&L->state.Properties) * sizeof(CProb)))) */
/* return LZMA_RESULT_DATA_ERROR; */
/* if (!(L->state.Dictionary = (unsigned char *)cli_malloc(L->state.Properties.DictionarySize))) { */
/* free(L->state.Probs); */
/* return LZMA_RESULT_DATA_ERROR; */
/* } */
/* L->initted = 1; */
/* LzmaDecoderInit(&L->state); */
/* return LZMA_RESULT_OK; */
/* } */
int cli_LzmaInitUPX(struct CLI_LZMA *L, uint32_t dsz) {
unsigned char fake_hdr[5];
unsigned char *next_in = L->next_in;
SizeT avail_in = L->avail_in;
cli_writeint32(fake_hdr + 1, dsz);
*fake_hdr = 9 /* lc */ + 9* ( 5* 2 /* pb */ + 0 /* lp */);
L->next_in = fake_hdr;
L->avail_in = 5;
return cli_LzmaInit(L, dsz);
}

@ -52,7 +52,7 @@ struct stream_state {
int cli_LzmaInit(struct CLI_LZMA *, uint64_t);
void cli_LzmaShutdown(struct CLI_LZMA *);
int cli_LzmaDecode(struct CLI_LZMA *);
/* int cli_LzmaInitUPX(struct CLI_LZMA **, uint32_t); FIXMELZMA */
int cli_LzmaInitUPX(struct CLI_LZMA *, uint32_t);
#define LZMA_STREAM_END 2
#define LZMA_RESULT_OK 0

@ -528,7 +528,7 @@ int upx_inflatelzma(char *src, uint32_t ssize, char *dst, uint32_t *dsize, uint3
uint32_t magic[]={0xb16,0xb1e,0};
memset(&l, 0, sizeof(l));
//cli_LzmaInitUPX(&lz, *dsize); /* FIXMELZMA: make func and check return value */
cli_LzmaInitUPX(&l, *dsize); /* FIXMELZMA: check return value */
s.avail_in = ssize;
s.avail_out = *dsize;
s.next_in = (unsigned char*)src+2;

Loading…
Cancel
Save