diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c
index 3b02d2b5b45393a77379c8f45e5b53ae8e144da5..216d4a2e5729c871df5c3041e21dca67aea10789 100644
--- a/libavformat/id3v2.c
+++ b/libavformat/id3v2.c
@@ -488,7 +488,7 @@ static void read_apic(AVFormatContext *s, AVIOContext *pb, int taglen, char *tag
 
     apic->len   = taglen;
     apic->data  = av_malloc(taglen);
-    if (!apic->data || avio_read(pb, apic->data, taglen) != taglen)
+    if (!apic->data || !apic->len || avio_read(pb, apic->data, taglen) != taglen)
         goto fail;
 
     new_extra->tag    = "APIC";