diff --git a/libavformat/smacker.c b/libavformat/smacker.c
index 274946696c94d0c8be7b9bcbb674d6eb19736200..cff1af6eee00400b26efee81929df5d50253d6f1 100644
--- a/libavformat/smacker.c
+++ b/libavformat/smacker.c
@@ -304,6 +304,8 @@ static int smacker_read_packet(AVFormatContext *s, AVPacket *pkt)
             }
             flags >>= 1;
         }
+        if (frame_size < 0)
+            return AVERROR_INVALIDDATA;
         if (av_new_packet(pkt, frame_size + 768))
             return AVERROR(ENOMEM);
         if(smk->frm_size[smk->cur_frame] & 1)