diff --git a/libavcodec/dfa.c b/libavcodec/dfa.c
index d8516b2f50..13637d6a05 100644
--- a/libavcodec/dfa.c
+++ b/libavcodec/dfa.c
@@ -242,6 +242,8 @@ static int decode_wdlt(GetByteContext *gb, uint8_t *frame, int width, int height
             frame    += delta;
             segments = bytestream2_get_le16(gb);
         }
+        if (frame_end <= frame)
+            return -1;
         if (segments & 0x8000) {
             frame[width - 1] = segments & 0xFF;
             segments = bytestream2_get_le16(gb);