[FFmpeg-cvslog] commit: Check 4xm headers for validity. This should avoid 1/0. ( Michael Niedermayer )

git at videolan.org git
Sun Jan 16 19:24:29 CET 2011


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sun Jan 16 18:22:29 2011 +0000| [8bb7d97be0cda3c944956c79c50d0cf6f1efb7b9] | committer: Michael Niedermayer 

Check 4xm headers for validity. This should avoid 1/0.

Originally committed as revision 26392 to svn://svn.ffmpeg.org/ffmpeg/trunk

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8bb7d97be0cda3c944956c79c50d0cf6f1efb7b9
---

 libavformat/4xm.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/libavformat/4xm.c b/libavformat/4xm.c
index a697f8d..dfbf032 100644
--- a/libavformat/4xm.c
+++ b/libavformat/4xm.c
@@ -185,6 +185,13 @@ static int fourxm_read_header(AVFormatContext *s,
             fourxm->tracks[current_track].sample_rate = AV_RL32(&header[i + 40]);
             fourxm->tracks[current_track].bits        = AV_RL32(&header[i + 44]);
             fourxm->tracks[current_track].audio_pts   = 0;
+            if(   fourxm->tracks[current_track].channels    <= 0
+               || fourxm->tracks[current_track].sample_rate <= 0
+               || fourxm->tracks[current_track].bits        <  0){
+                av_log(s, AV_LOG_ERROR, "audio header invalid\n");
+                ret= -1;
+                goto fail;
+            }
             i += 8 + size;
 
             /* allocate a new AVStream */
@@ -291,7 +298,7 @@ static int fourxm_read_packet(AVFormatContext *s,
             out_size= get_le32(pb);
             size-=8;
 
-            if (track_number < fourxm->track_count) {
+            if (track_number < fourxm->track_count && fourxm->tracks[track_number].channels>0) {
                 ret= av_get_packet(s->pb, pkt, size);
                 if(ret<0)
                     return AVERROR(EIO);




More information about the ffmpeg-cvslog mailing list