blob: 42fa68caeb2219e5ffa5140b892fa7f696b35cb9 [file] [log] [blame]
Brad Bishop220d5532018-08-14 00:59:39 +01001From 2c8c83b9731ff822fad6cc8c670ea5519c366a14 Mon Sep 17 00:00:00 2001
2From: Joerg Sonnenberger <joerg@bec.de>
3Date: Thu, 19 Jul 2018 21:14:53 +0200
4Subject: [PATCH] Reject LHA archive entries with negative size.
5
6CVE: CVE-2017-14503
7Upstream-Status: Backport [https://github.com/libarchive/libarchive/commit/2c8c83b9731ff822fad6cc8c670ea5519c366a14]
8
9Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
10---
11 libarchive/archive_read_support_format_lha.c | 6 ++++++
12 1 file changed, 6 insertions(+)
13
14diff --git a/libarchive/archive_read_support_format_lha.c b/libarchive/archive_read_support_format_lha.c
15index b8ef4ae1..95c99bb1 100644
16--- a/libarchive/archive_read_support_format_lha.c
17+++ b/libarchive/archive_read_support_format_lha.c
18@@ -701,6 +701,12 @@ archive_read_format_lha_read_header(struct archive_read *a,
19 * Prepare variables used to read a file content.
20 */
21 lha->entry_bytes_remaining = lha->compsize;
22+ if (lha->entry_bytes_remaining < 0) {
23+ archive_set_error(&a->archive,
24+ ARCHIVE_ERRNO_FILE_FORMAT,
25+ "Invalid LHa entry size");
26+ return (ARCHIVE_FATAL);
27+ }
28 lha->entry_offset = 0;
29 lha->entry_crc_calculated = 0;
30
31--
322.13.3
33