diff --git a/libavformat/smacker.c b/libavformat/smacker.c
index b0ccd5387ad8a71cd20416c4f3a6a2563b000d84..b219153513d3386c08c7807090cb19828079505d 100644
--- a/libavformat/smacker.c
+++ b/libavformat/smacker.c
@@ -348,6 +348,8 @@ static int smacker_read_packet(AVFormatContext *s, AVPacket *pkt)
         smk->cur_frame++;
         smk->nextpos = avio_tell(s->pb);
     } else {
+        if (smk->stream_id[smk->curstream] < 0)
+            return AVERROR_INVALIDDATA;
         if (av_new_packet(pkt, smk->buf_sizes[smk->curstream]))
             return AVERROR(ENOMEM);
         memcpy(pkt->data, smk->bufs[smk->curstream], smk->buf_sizes[smk->curstream]);