You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
libavcodec/exr: fix PRX24 Float decompression
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
committed by
Paul B Mahol
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++)
|
||||
|
Reference in New Issue
Block a user