diff --git a/libavformat/mov.c b/libavformat/mov.c
index bf68fbd46affb070961e805bea86c425ffdc72e2..8ff60222efb91a78b6e8f72d38d0295b8d40f765 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1875,6 +1875,11 @@ static int mov_read_stsd(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     avio_rb24(pb); /* flags */
     entries = avio_rb32(pb);
 
+    if (entries <= 0) {
+        av_log(c->fc, AV_LOG_ERROR, "invalid STSD entries %d\n", entries);
+        return AVERROR_INVALIDDATA;
+    }
+
     if (sc->extradata) {
         av_log(c->fc, AV_LOG_ERROR,
                "Duplicate stsd found in this track.\n");