From 0025f130059dedea3dcae7bc38fdf46c40097f4c Mon Sep 17 00:00:00 2001 From: Lukasz Marek Date: Fri, 28 Feb 2014 00:04:29 +0100 Subject: [PATCH 1/2] lavf/libssh: fix seek to nagative position Signed-off-by: Lukasz Marek --- libavformat/libssh.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavformat/libssh.c b/libavformat/libssh.c index 418b100491..b20e93bbab 100644 --- a/libavformat/libssh.c +++ b/libavformat/libssh.c @@ -243,6 +243,11 @@ static int64_t libssh_seek(URLContext *h, int64_t pos, int whence) return AVERROR(EINVAL); } + if (newpos < 0) { + av_log(h, AV_LOG_ERROR, "Seeking to nagative position.\n"); + return AVERROR(EINVAL); + } + if (sftp_seek64(libssh->file, newpos)) { av_log(h, AV_LOG_ERROR, "Error during seeking.\n"); return AVERROR(EIO); From 9f4b55ef49c1525080507f5eaeef91091d243e16 Mon Sep 17 00:00:00 2001 From: Lukasz Marek Date: Fri, 28 Feb 2014 00:07:31 +0100 Subject: [PATCH 2/2] lavf/ftp: fix seek to nagative position Signed-off-by: Lukasz Marek --- libavformat/ftp.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavformat/ftp.c b/libavformat/ftp.c index 40a6a33c32..dae8aa086d 100644 --- a/libavformat/ftp.c +++ b/libavformat/ftp.c @@ -575,10 +575,12 @@ static int64_t ftp_seek(URLContext *h, int64_t pos, int whence) if (h->is_streamed) return AVERROR(EIO); - /* XXX: Simulate behaviour of lseek in file protocol, which could be treated as a reference */ - new_pos = FFMAX(0, new_pos); - fake_pos = s->filesize != -1 ? FFMIN(new_pos, s->filesize) : new_pos; + if (new_pos < 0) { + av_log(h, AV_LOG_ERROR, "Seeking to nagative position.\n"); + return AVERROR(EINVAL); + } + fake_pos = s->filesize != -1 ? FFMIN(new_pos, s->filesize) : new_pos; if (fake_pos != s->position) { if ((err = ftp_abort(h)) < 0) return err;