diff --git a/libavformat/isom.c b/libavformat/isom.c
index 48fd8e14524b1fe7d54012c6fb23ba4114c41f2d..896730c5a61f16ddef1aefb7dd4aea92b4c75b12 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -418,7 +418,7 @@ int ff_mp4_read_dec_config_descr(AVFormatContext *fc, AVStream *st, AVIOContext
     len = ff_mp4_read_descr(fc, pb, &tag);
     if (tag == MP4DecSpecificDescrTag) {
         av_dlog(fc, "Specific MPEG4 header len=%d\n", len);
-        if((uint64_t)len > (1<<30))
+        if (!len || (uint64_t)len > (1<<30))
             return -1;
         av_free(st->codec->extradata);
         st->codec->extradata = av_mallocz(len + FF_INPUT_BUFFER_PADDING_SIZE);