diff --git a/libavcodec/lcldec.c b/libavcodec/lcldec.c
index 53637f25076a22dff0692ed76ce17fa3524bfb5a..bc7e11d2678ad7c4319354c11386ce61c61f1878 100644
--- a/libavcodec/lcldec.c
+++ b/libavcodec/lcldec.c
@@ -93,6 +93,7 @@ static unsigned int mszh_decomp(const unsigned char * srcptr, int srclen, unsign
             unsigned ofs = bytestream_get_le16(&srcptr);
             unsigned cnt = (ofs >> 11) + 1;
             ofs &= 0x7ff;
+            ofs = FFMIN(ofs, destptr - destptr_bak);
             cnt *= 4;
             cnt = FFMIN(cnt, destptr_end - destptr);
             av_memcpy_backptr(destptr, ofs, cnt);