diff options
author | Paul B Mahol <onemda@gmail.com> | 2021-02-16 13:42:36 +0100 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2021-02-16 13:58:48 +0100 |
commit | 3ea660c78aade07d2616b2e1024a888780eb3a83 (patch) | |
tree | c2bd8b7b5b84d0340e46f086733ef858111674e9 /libavcodec/exr.c | |
parent | b1eb15c1cf6d57fa807f5e7972f98c55586d75db (diff) |
avcodec/exr: correctly calculate display window
Diffstat (limited to 'libavcodec/exr.c')
-rw-r--r-- | libavcodec/exr.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libavcodec/exr.c b/libavcodec/exr.c index 7d46e8e027..2b57efb0d2 100644 --- a/libavcodec/exr.c +++ b/libavcodec/exr.c @@ -1604,14 +1604,20 @@ static int decode_header(EXRContext *s, AVFrame *frame) continue; } else if ((var_size = check_header_variable(s, "displayWindow", "box2i", 34)) >= 0) { + int32_t sx, sy, dx, dy; + if (!var_size) { ret = AVERROR_INVALIDDATA; goto fail; } - bytestream2_skip(&s->gb, 8); - s->w = bytestream2_get_le32(&s->gb) + 1; - s->h = bytestream2_get_le32(&s->gb) + 1; + sx = bytestream2_get_le32(&s->gb); + sy = bytestream2_get_le32(&s->gb); + dx = bytestream2_get_le32(&s->gb); + dy = bytestream2_get_le32(&s->gb); + + s->w = dx - sx + 1; + s->h = dy - sy + 1; continue; } else if ((var_size = check_header_variable(s, "lineOrder", |