You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
avcodec/exr: fix skipping too long metadata values
This commit is contained in:
@@ -1962,7 +1962,7 @@ static int decode_header(EXRContext *s, AVFrame *frame)
|
|||||||
{
|
{
|
||||||
uint8_t name[256] = { 0 };
|
uint8_t name[256] = { 0 };
|
||||||
uint8_t type[256] = { 0 };
|
uint8_t type[256] = { 0 };
|
||||||
uint8_t value[256] = { 0 };
|
uint8_t value[8192] = { 0 };
|
||||||
int i = 0, size;
|
int i = 0, size;
|
||||||
|
|
||||||
while (bytestream2_get_bytes_left(gb) > 0 &&
|
while (bytestream2_get_bytes_left(gb) > 0 &&
|
||||||
@@ -1980,6 +1980,8 @@ static int decode_header(EXRContext *s, AVFrame *frame)
|
|||||||
size = bytestream2_get_le32(gb);
|
size = bytestream2_get_le32(gb);
|
||||||
|
|
||||||
bytestream2_get_buffer(gb, value, FFMIN(sizeof(value) - 1, size));
|
bytestream2_get_buffer(gb, value, FFMIN(sizeof(value) - 1, size));
|
||||||
|
if (size > sizeof(value) - 1)
|
||||||
|
bytestream2_skip(gb, size - (sizeof(value) - 1));
|
||||||
if (!strcmp(type, "string"))
|
if (!strcmp(type, "string"))
|
||||||
av_dict_set(&metadata, name, value, 0);
|
av_dict_set(&metadata, name, value, 0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user