mirror of
https://git.videolan.org/git/ffmpeg.git
synced 2024-09-16 03:44:15 +02:00
libavcodec/exr: fix PRX24 Float decompression
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
4f682318fb
commit
d2ed3391fb
@ -778,14 +778,23 @@ static int pxr24_uncompress(EXRContext *s, const uint8_t *src,
|
||||
int compressed_size, int uncompressed_size,
|
||||
EXRThreadData *td)
|
||||
{
|
||||
unsigned long dest_len = uncompressed_size;
|
||||
unsigned long dest_len, expected_len;
|
||||
const uint8_t *in = td->tmp;
|
||||
uint8_t *out;
|
||||
int c, i, j;
|
||||
|
||||
if (uncompress(td->tmp, &dest_len, src, compressed_size) != Z_OK ||
|
||||
dest_len != uncompressed_size)
|
||||
if (s->pixel_type == EXR_FLOAT)
|
||||
expected_len = (uncompressed_size / 4) * 3; /* PRX 24 store float in 24 bit instead of 32 */
|
||||
else
|
||||
expected_len = uncompressed_size;
|
||||
|
||||
dest_len = expected_len;
|
||||
|
||||
if (uncompress(td->tmp, &dest_len, src, compressed_size) != Z_OK) {
|
||||
return AVERROR_INVALIDDATA;
|
||||
} else if (dest_len != expected_len){
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
out = td->uncompressed_data;
|
||||
for (i = 0; i < s->ysize; i++)
|
||||
|
Loading…
Reference in New Issue
Block a user