diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-03-07 03:52:15 +0000 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-03-07 03:52:15 +0000 |
commit | d44823e5676f0edd0e259c7c33d5640a043748ac (patch) | |
tree | a861b18b863dacb947ba2b8e9cbcb47ef80a03ef /core/libarchive/0001-Limit-write-requests-to-at-most-INT_MAX.patch | |
parent | c183da9d3df5445f5021cd6563012ba2abfc393e (diff) |
Fri Mar 7 03:48:12 UTC 2014
Diffstat (limited to 'core/libarchive/0001-Limit-write-requests-to-at-most-INT_MAX.patch')
-rw-r--r-- | core/libarchive/0001-Limit-write-requests-to-at-most-INT_MAX.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/core/libarchive/0001-Limit-write-requests-to-at-most-INT_MAX.patch b/core/libarchive/0001-Limit-write-requests-to-at-most-INT_MAX.patch new file mode 100644 index 000000000..c805ce199 --- /dev/null +++ b/core/libarchive/0001-Limit-write-requests-to-at-most-INT_MAX.patch @@ -0,0 +1,32 @@ +From 22531545514043e04633e1c015c7540b9de9dbe4 Mon Sep 17 00:00:00 2001 +From: Tim Kientzle <kientzle@acm.org> +Date: Fri, 22 Mar 2013 23:48:41 -0700 +Subject: [PATCH] Limit write requests to at most INT_MAX. This prevents a + certain common programming error (passing -1 to write) from leading to other + problems deeper in the library. + +--- + libarchive/archive_write.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/libarchive/archive_write.c b/libarchive/archive_write.c +index eede5e0..be85621 100644 +--- a/libarchive/archive_write.c ++++ b/libarchive/archive_write.c +@@ -673,8 +673,13 @@ static ssize_t + _archive_write_data(struct archive *_a, const void *buff, size_t s) + { + struct archive_write *a = (struct archive_write *)_a; ++ const size_t max_write = INT_MAX; ++ + archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC, + ARCHIVE_STATE_DATA, "archive_write_data"); ++ /* In particular, this catches attempts to pass negative values. */ ++ if (s > max_write) ++ s = max_write; + archive_clear_error(&a->archive); + return ((a->format_write_data)(a, buff, s)); + } +-- +1.9.0 + |