summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2021-02-16 13:42:36 +0100
committerPaul B Mahol <onemda@gmail.com>2021-02-16 13:58:48 +0100
commit3ea660c78aade07d2616b2e1024a888780eb3a83 (patch)
treec2bd8b7b5b84d0340e46f086733ef858111674e9 /libavcodec
parentb1eb15c1cf6d57fa807f5e7972f98c55586d75db (diff)
avcodec/exr: correctly calculate display window
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/exr.c12
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",