diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index ceda383209a63ab2755188ebb91391d30d6a0095..f8b398ffde0f634d30484fa2cf62f2269a7dedb7 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -542,6 +542,11 @@ static int decode_ihdr_chunk(AVCodecContext *avctx, PNGDecContext *s,
         return AVERROR_INVALIDDATA;
     }
 
+    if (s->state & PNG_IHDR) {
+        av_log(avctx, AV_LOG_ERROR, "Multiple IHDR\n");
+        return AVERROR_INVALIDDATA;
+    }
+
     s->width  = bytestream2_get_be32(&s->gb);
     s->height = bytestream2_get_be32(&s->gb);
     if (av_image_check_size(s->width, s->height, 0, avctx)) {