From de9ee708b8e100858960749b153c3cecf1910eb4 Mon Sep 17 00:00:00 2001 From: Tim Kientzle Date: Thu, 26 Dec 2013 13:59:00 -0800 Subject: [PATCH] Out-of-range seeks should fail, not truncate the seek. --- libarchive/archive_read.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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; -- 2.47.2