mirror of
https://github.com/rkd77/elinks.git
synced 2025-02-02 15:09:23 -05:00
lzma: Set *new_len even if data was truncated.
Commit 474f1f4268d24ba7782ab57ae47c87113ec2a8f5 did the same to bzip2 and deflate.
This commit is contained in:
parent
26607d2263
commit
a03698d695
@ -109,6 +109,8 @@ lzma_decode_buffer(unsigned char *data, int len, int *new_len)
|
|||||||
unsigned char *buffer = NULL;
|
unsigned char *buffer = NULL;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
*new_len = 0; /* default, left there if an error occurs */
|
||||||
|
|
||||||
stream.next_in = data;
|
stream.next_in = data;
|
||||||
stream.avail_in = len;
|
stream.avail_in = len;
|
||||||
|
|
||||||
@ -131,7 +133,6 @@ lzma_decode_buffer(unsigned char *data, int len, int *new_len)
|
|||||||
|
|
||||||
error = lzma_code(&stream, LZMA_RUN);
|
error = lzma_code(&stream, LZMA_RUN);
|
||||||
if (error == LZMA_STREAM_END) {
|
if (error == LZMA_STREAM_END) {
|
||||||
*new_len = stream.total_out;
|
|
||||||
error = LZMA_OK;
|
error = LZMA_OK;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -139,13 +140,13 @@ lzma_decode_buffer(unsigned char *data, int len, int *new_len)
|
|||||||
|
|
||||||
lzma_end(&stream);
|
lzma_end(&stream);
|
||||||
|
|
||||||
if (error != LZMA_OK) {
|
if (error == LZMA_OK) {
|
||||||
|
*new_len = stream.total_out;
|
||||||
|
return buffer;
|
||||||
|
} else {
|
||||||
if (buffer) mem_free(buffer);
|
if (buffer) mem_free(buffer);
|
||||||
*new_len = 0;
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user