From: Tim Kientzle Date: Thu, 26 Dec 2013 21:59:00 +0000 (-0800) Subject: Out-of-range seeks should fail, not truncate the seek. X-Git-Tag: v3.1.900a~327^2~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de9ee708b8e100858960749b153c3cecf1910eb4;p=thirdparty%2Flibarchive.git Out-of-range seeks should fail, not truncate the seek. --- diff --git a/libarchive/archive_read.c b/libarchive/archive_read.c index cc05588b6..c9f28b869 100644 --- a/libarchive/archive_read.c +++ b/libarchive/archive_read.c @@ -1614,10 +1614,9 @@ __archive_read_filter_seek(struct archive_read_filter *filter, int64_t offset, client->dataset[++cursor].begin_position = r; } offset -= client->dataset[cursor].begin_position; - if (offset < 0) - offset = 0; - else if (offset > client->dataset[cursor].total_size - 1) - offset = client->dataset[cursor].total_size - 1; + if (offset < 0 + || offset > client->dataset[cursor].total_size) + return ARCHIVE_FATAL; if ((r = client_seek_proxy(filter, offset, SEEK_SET)) < 0) return r; break;