diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c
index 8442957400bb7cc42d8cf4cd4ed728f5a7672c48..9db09e1ed97eb5f39ee86c6aab5bfe585727628a 100644
--- a/libavformat/rmdec.c
+++ b/libavformat/rmdec.c
@@ -138,6 +138,11 @@ static int rm_read_audio_stream_info(AVFormatContext *s, AVStream *st,
                 return -1;
             }
 
+            if(sub_packet_size <= 0){
+                av_log(s, AV_LOG_ERROR, "sub_packet_size is invalid\n");
+                return -1;
+            }
+
             if (!strcmp(buf, "cook")) st->codec->codec_id = CODEC_ID_COOK;
             else if (!strcmp(buf, "sipr")) st->codec->codec_id = CODEC_ID_SIPR;
             else st->codec->codec_id = CODEC_ID_ATRAC3;