aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Plate <elupus@ecce.se>2011-09-12 04:06:55 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-09-21 18:03:05 +0200
commitf0869d3721a21c022f564251f93eb095843490f1 (patch)
tree8b0f94463cb62b20d25441029e11beef4cc539e4
parentbe82df9e129995321917f47416ac755551915cb0 (diff)
downloadffmpeg-f0869d3721a21c022f564251f93eb095843490f1.tar.gz
asf: Check return value of more avio_seek calls
This reduces problems when underlying protocol is not seekable even if marked as such or if the file has been cut short. Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit ac1d489320f476c18d6a8125f73389aecb73f3d3)
-rw-r--r--libavformat/asfdec.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c
index db00964c8a..033bdede13 100644
--- a/libavformat/asfdec.c
+++ b/libavformat/asfdec.c
@@ -1158,7 +1158,8 @@ static int64_t asf_read_pts(AVFormatContext *s, int stream_index, int64_t *ppos,
if (s->packet_size > 0)
pos= (pos+s->packet_size-1-s->data_offset)/s->packet_size*s->packet_size+ s->data_offset;
*ppos= pos;
- avio_seek(s->pb, pos, SEEK_SET);
+ if (avio_seek(s->pb, pos, SEEK_SET) < 0)
+ return AV_NOPTS_VALUE;
//printf("asf_read_pts\n");
asf_reset_header(s);
@@ -1200,7 +1201,9 @@ static void asf_build_simple_index(AVFormatContext *s, int stream_index)
int64_t current_pos= avio_tell(s->pb);
int i;
- avio_seek(s->pb, asf->data_object_offset + asf->data_object_size, SEEK_SET);
+ if(avio_seek(s->pb, asf->data_object_offset + asf->data_object_size, SEEK_SET) < 0)
+ return;
+
ff_get_guid(s->pb, &g);
/* the data object can be followed by other top-level objects,
@@ -1272,7 +1275,8 @@ static int asf_read_seek(AVFormatContext *s, int stream_index, int64_t pts, int
/* do the seek */
av_log(s, AV_LOG_DEBUG, "SEEKTO: %"PRId64"\n", pos);
- avio_seek(s->pb, pos, SEEK_SET);
+ if(avio_seek(s->pb, pos, SEEK_SET) < 0)
+ return -1;
asf_reset_header(s);
return 0;
}