summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/agm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavcodec/agm.c b/libavcodec/agm.c
index b0e8b80f81..2d2092222d 100644
--- a/libavcodec/agm.c
+++ b/libavcodec/agm.c
@@ -562,7 +562,8 @@ static int decode_frame(AVCodecContext *avctx, void *data,
for (int i = 0; i < 3; i++)
s->size[i] = bytestream2_get_le32(gbyte);
- if (32LL + s->size[0] + s->size[1] + s->size[2] > avpkt->size)
+ if (s->size[0] < 0 || s->size[1] < 0 || s->size[2] < 0 ||
+ 32LL + s->size[0] + s->size[1] + s->size[2] > avpkt->size)
return AVERROR_INVALIDDATA;
if ((ret = ff_get_buffer(avctx, frame, AV_GET_BUFFER_FLAG_REF)) < 0)