[FFmpeg-cvslog] lavf/http: return error on seeking to negative postion

Lukasz Marek git at videolan.org
Thu Mar 6 02:09:18 CET 2014


ffmpeg | branch: master | Lukasz Marek <lukasz.m.luki at gmail.com> | Fri Feb 28 00:36:06 2014 +0100| [4ba6a534dc94bd4ff44503de9c7985a456cfe503] | committer: Lukasz Marek

lavf/http: return error on seeking to negative postion

Signed-off-by: Lukasz Marek <lukasz.m.luki at gmail.com>

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

 libavformat/http.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/libavformat/http.c b/libavformat/http.c
index 69c4d6d..08832bd 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -955,16 +955,19 @@ static int64_t http_seek(URLContext *h, int64_t off, int whence)
     else if ((s->filesize == -1 && whence == SEEK_END) || h->is_streamed)
         return -1;
 
-    /* we save the old context in case the seek fails */
-    old_buf_size = s->buf_end - s->buf_ptr;
-    memcpy(old_buf, s->buf_ptr, old_buf_size);
-    s->hd = NULL;
     if (whence == SEEK_CUR)
         off += s->off;
     else if (whence == SEEK_END)
         off += s->filesize;
+    if (off < 0)
+        return AVERROR(EINVAL);
     s->off = off;
 
+    /* we save the old context in case the seek fails */
+    old_buf_size = s->buf_end - s->buf_ptr;
+    memcpy(old_buf, s->buf_ptr, old_buf_size);
+    s->hd = NULL;
+
     /* if it fails, continue on old connection */
     av_dict_copy(&options, s->chained_options, 0);
     if (http_open_cnx(h, &options) < 0) {



More information about the ffmpeg-cvslog mailing list