[FFmpeg-cvslog] [cafdec] Check return value of avio_seek and avoid modifying state if it fails

Joakim Plate git at videolan.org
Wed Sep 14 20:05:35 CEST 2011


ffmpeg | branch: master | Joakim Plate <elupus at ecce.se> | Wed Sep 14 19:24:07 2011 +0200| [75f418064ecf5c2713151cbe6b3a716d2c047f1d] | committer: Joakim Plate

[cafdec] Check return value of avio_seek and avoid modifying state if it fails

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

 libavformat/cafdec.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c
index 8b0dadd..0938e1a 100644
--- a/libavformat/cafdec.c
+++ b/libavformat/cafdec.c
@@ -366,6 +366,7 @@ static int read_seek(AVFormatContext *s, int stream_index,
 {
     AVStream *st = s->streams[0];
     CaffContext *caf = s->priv_data;
+    CaffContext caf2 = *caf;
     int64_t pos;
 
     timestamp = FFMAX(timestamp, 0);
@@ -385,7 +386,10 @@ static int read_seek(AVFormatContext *s, int stream_index,
         return -1;
     }
 
-    avio_seek(s->pb, pos + caf->data_start, SEEK_SET);
+    if (avio_seek(s->pb, pos + caf->data_start, SEEK_SET) < 0) {
+        *caf = caf2;
+        return -1;
+    }
     return 0;
 }
 



More information about the ffmpeg-cvslog mailing list