Brad Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 1 | From 5562545b5562f6d12a4ef991fae158bf4ccf92b6 Mon Sep 17 00:00:00 2001 |
| 2 | From: Joerg Sonnenberger <joerg@bec.de> |
| 3 | Date: Sat, 9 Sep 2017 17:47:32 +0200 |
| 4 | Subject: [PATCH] Avoid a read off-by-one error for UTF16 names in RAR |
| 5 | archives. |
| 6 | |
| 7 | Reported-By: OSS-Fuzz issue 573 |
| 8 | |
| 9 | CVE: CVE-2017-14502 |
| 10 | |
| 11 | Upstream-Status: Backport |
| 12 | |
| 13 | Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com> |
| 14 | --- |
| 15 | libarchive/archive_read_support_format_rar.c | 6 +++++- |
| 16 | 1 file changed, 5 insertions(+), 1 deletion(-) |
| 17 | |
| 18 | diff --git a/libarchive/archive_read_support_format_rar.c b/libarchive/archive_read_support_format_rar.c |
| 19 | index cbb14c3..751de69 100644 |
| 20 | --- a/libarchive/archive_read_support_format_rar.c |
| 21 | +++ b/libarchive/archive_read_support_format_rar.c |
| 22 | @@ -1496,7 +1496,11 @@ read_header(struct archive_read *a, struct archive_entry *entry, |
| 23 | return (ARCHIVE_FATAL); |
| 24 | } |
| 25 | filename[filename_size++] = '\0'; |
| 26 | - filename[filename_size++] = '\0'; |
| 27 | + /* |
| 28 | + * Do not increment filename_size here as the computations below |
| 29 | + * add the space for the terminating NUL explicitly. |
| 30 | + */ |
| 31 | + filename[filename_size] = '\0'; |
| 32 | |
| 33 | /* Decoded unicode form is UTF-16BE, so we have to update a string |
| 34 | * conversion object for it. */ |
| 35 | -- |
| 36 | 1.9.1 |
| 37 | |