lavf/au: check bits per coded sample.
authorNicolas George <nicolas.george@normalesup.org>
Sat, 18 Aug 2012 12:12:41 +0000 (14:12 +0200)
committerNicolas George <nicolas.george@normalesup.org>
Sat, 18 Aug 2012 15:45:58 +0000 (17:45 +0200)
Without that, it would repeatedly produce empty packets
if the codec if forced to something invalid.

Fix trac ticket #1652.

libavformat/au.c

index b7654a4..788e261 100644 (file)
@@ -181,10 +181,13 @@ static int au_read_packet(AVFormatContext *s,
                           AVPacket *pkt)
 {
     int ret;
+    int bpcs = av_get_bits_per_sample(s->streams[0]->codec->codec_id);
 
+    if (!bpcs)
+        return AVERROR(EINVAL);
     ret= av_get_packet(s->pb, pkt, BLOCK_SIZE *
                        s->streams[0]->codec->channels *
-                       av_get_bits_per_sample(s->streams[0]->codec->codec_id) >> 3);
+                       bpcs >> 3);
     if (ret < 0)
         return ret;
     pkt->flags &= ~AV_PKT_FLAG_CORRUPT;