diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 0f1808773b934d8f72dcedb527cb3b4c4d028e74..500048f761b3f96a533cc904c2a3759f994f6840 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1580,7 +1580,7 @@ static int matroska_read_header(AVFormatContext *s)
                    && (track->codec_priv.data != NULL)) {
             fourcc = AV_RL32(track->codec_priv.data);
             codec_id = ff_codec_get_id(ff_codec_movvideo_tags, fourcc);
-        } else if (codec_id == CODEC_ID_ALAC && track->codec_priv.size) {
+        } else if (codec_id == CODEC_ID_ALAC && track->codec_priv.size && track->codec_priv.size < INT_MAX-12) {
             /* Only ALAC's magic cookie is stored in Matroska's track headers.
                Create the "atom size", "tag", and "tag version" fields the
                decoder expects manually. */