1
0
Fork 0
mirror of https://git.tukaani.org/xz.git synced 2024-04-04 12:36:23 +02:00

liblzma: Check the return value of lzma_index_append() in threaded encoder.

If lzma_index_append() failed (most likely memory allocation failure)
it could have gone unnoticed and the resulting .xz file would have
an incorrect Index. Decompressing such a file would produce the
correct uncompressed data but then an error would occur when
verifying the Index field.
This commit is contained in:
Lasse Collin 2022-02-22 02:04:18 +02:00
parent 2356d53edd
commit b8f667fe0c

View file

@ -715,6 +715,10 @@ stream_encode_mt(void *coder_ptr, const lzma_allocator *allocator,
ret = lzma_index_append(coder->index, ret = lzma_index_append(coder->index,
allocator, unpadded_size, allocator, unpadded_size,
uncompressed_size); uncompressed_size);
if (ret != LZMA_OK) {
threads_stop(coder, false);
return ret;
}
// If we didn't fill the output buffer yet, // If we didn't fill the output buffer yet,
// try to read more data. Maybe the next // try to read more data. Maybe the next
@ -724,8 +728,7 @@ stream_encode_mt(void *coder_ptr, const lzma_allocator *allocator,
} }
if (ret != LZMA_OK) { if (ret != LZMA_OK) {
// coder->thread_error was set or // coder->thread_error was set.
// lzma_index_append() failed.
threads_stop(coder, false); threads_stop(coder, false);
return ret; return ret;
} }