mirror of
https://git.yoctoproject.org/poky
synced 2026-05-07 16:59:22 +00:00
libarchive: Fix CVE-2026-4111
Pick patch according to [1] [1] https://security-tracker.debian.org/tracker/CVE-2026-4111 [2] https://github.com/libarchive/libarchive/pull/2877 [3] https://access.redhat.com/errata/RHSA-2026:5063 (From OE-Core rev: c938ecea4304a57edb824f121e0ca8f79b45bb7e) Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> Signed-off-by: Yoann Congal <yoann.congal@smile.fr> Signed-off-by: Paul Barker <paul@pbarker.dev>
This commit is contained in:
committed by
Paul Barker
parent
01a93dd9d2
commit
291a21fbd8
@@ -0,0 +1,32 @@
|
||||
From 7273d04803a1e5a482f26d8d0fbaf2b204a72168 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Kientzle <kientzle@acm.org>
|
||||
Date: Sun, 1 Mar 2026 20:24:56 -0800
|
||||
Subject: [PATCH] Reject filters when the block length is nonsensical
|
||||
|
||||
Credit: Grzegorz Antoniak @antekone
|
||||
|
||||
Upstream-Status: Backport [https://github.com/libarchive/libarchive/commit/7273d04803a1e5a482f26d8d0fbaf2b204a72168]
|
||||
CVE: CVE-2026-4111
|
||||
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||
---
|
||||
libarchive/archive_read_support_format_rar5.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libarchive/archive_read_support_format_rar5.c b/libarchive/archive_read_support_format_rar5.c
|
||||
index 1dd0d88..736c95a 100644
|
||||
--- a/libarchive/archive_read_support_format_rar5.c
|
||||
+++ b/libarchive/archive_read_support_format_rar5.c
|
||||
@@ -2965,7 +2965,9 @@ static int parse_filter(struct archive_read* ar, const uint8_t* p) {
|
||||
if(block_length < 4 ||
|
||||
block_length > 0x400000 ||
|
||||
filter_type > FILTER_ARM ||
|
||||
- !is_valid_filter_block_start(rar, block_start))
|
||||
+ !is_valid_filter_block_start(rar, block_start) ||
|
||||
+ (rar->cstate.window_size > 0 &&
|
||||
+ (ssize_t)block_length > rar->cstate.window_size >> 1))
|
||||
{
|
||||
archive_set_error(&ar->archive, ARCHIVE_ERRNO_FILE_FORMAT,
|
||||
"Invalid filter encountered");
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@@ -0,0 +1,308 @@
|
||||
From ef53e2023d75a205cf7cbddb5d01c4cc592e9ce4 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Kientzle <kientzle@acm.org>
|
||||
Date: Sun, 1 Mar 2026 10:04:01 -0800
|
||||
Subject: [PATCH] Infinite loop in Rar5 decompression
|
||||
|
||||
Found by: Elhanan Haenel
|
||||
|
||||
Upstream-Status: Backport [https://github.com/libarchive/libarchive/commit/ef53e2023d75a205cf7cbddb5d01c4cc592e9ce4]
|
||||
CVE: CVE-2026-4111
|
||||
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||
---
|
||||
Makefile.am | 2 +
|
||||
libarchive/test/CMakeLists.txt | 1 +
|
||||
.../test/test_read_format_rar5_loop_bug.c | 53 +++++
|
||||
.../test_read_format_rar5_loop_bug.rar.uu | 189 ++++++++++++++++++
|
||||
4 files changed, 245 insertions(+)
|
||||
create mode 100644 libarchive/test/test_read_format_rar5_loop_bug.c
|
||||
create mode 100644 libarchive/test/test_read_format_rar5_loop_bug.rar.uu
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 7627ec5..e37312e 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -521,6 +521,7 @@ libarchive_test_SOURCES= \
|
||||
libarchive/test/test_read_format_rar_invalid1.c \
|
||||
libarchive/test/test_read_format_rar_overflow.c \
|
||||
libarchive/test/test_read_format_rar5.c \
|
||||
+ libarchive/test/test_read_format_rar5_loop_bug.c \
|
||||
libarchive/test/test_read_format_raw.c \
|
||||
libarchive/test/test_read_format_tar.c \
|
||||
libarchive/test/test_read_format_tar_concatenated.c \
|
||||
@@ -918,6 +919,7 @@ libarchive_test_EXTRA_DIST=\
|
||||
libarchive/test/test_read_format_rar5_invalid_dict_reference.rar.uu \
|
||||
libarchive/test/test_read_format_rar5_leftshift1.rar.uu \
|
||||
libarchive/test/test_read_format_rar5_leftshift2.rar.uu \
|
||||
+ libarchive/test/test_read_format_rar5_loop_bug.rar.uu \
|
||||
libarchive/test/test_read_format_rar5_multiarchive.part01.rar.uu \
|
||||
libarchive/test/test_read_format_rar5_multiarchive.part02.rar.uu \
|
||||
libarchive/test/test_read_format_rar5_multiarchive.part03.rar.uu \
|
||||
diff --git a/libarchive/test/CMakeLists.txt b/libarchive/test/CMakeLists.txt
|
||||
index 59c5f5d..d7ec64e 100644
|
||||
--- a/libarchive/test/CMakeLists.txt
|
||||
+++ b/libarchive/test/CMakeLists.txt
|
||||
@@ -165,6 +165,7 @@ IF(ENABLE_TEST)
|
||||
test_read_format_rar_filter.c
|
||||
test_read_format_rar_overflow.c
|
||||
test_read_format_rar5.c
|
||||
+ test_read_format_rar5_loop_bug.c
|
||||
test_read_format_raw.c
|
||||
test_read_format_tar.c
|
||||
test_read_format_tar_concatenated.c
|
||||
diff --git a/libarchive/test/test_read_format_rar5_loop_bug.c b/libarchive/test/test_read_format_rar5_loop_bug.c
|
||||
new file mode 100644
|
||||
index 0000000..77dd78c
|
||||
--- /dev/null
|
||||
+++ b/libarchive/test/test_read_format_rar5_loop_bug.c
|
||||
@@ -0,0 +1,53 @@
|
||||
+/*-
|
||||
+ * Copyright (c) 2026 Tim Kientzle
|
||||
+ * All rights reserved.
|
||||
+ *
|
||||
+ * Redistribution and use in source and binary forms, with or without
|
||||
+ * modification, are permitted provided that the following conditions
|
||||
+ * are met:
|
||||
+ * 1. Redistributions of source code must retain the above copyright
|
||||
+ * notice, this list of conditions and the following disclaimer.
|
||||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||||
+ * notice, this list of conditions and the following disclaimer in the
|
||||
+ * documentation and/or other materials provided with the distribution.
|
||||
+ *
|
||||
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
||||
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+ */
|
||||
+#include "test.h"
|
||||
+
|
||||
+DEFINE_TEST(test_read_format_rar5_loop_bug)
|
||||
+{
|
||||
+ const char *reffile = "test_read_format_rar5_loop_bug.rar";
|
||||
+ struct archive_entry *ae;
|
||||
+ struct archive *a;
|
||||
+ const void *buf;
|
||||
+ size_t size;
|
||||
+ la_int64_t offset;
|
||||
+
|
||||
+ extract_reference_file(reffile);
|
||||
+ assert((a = archive_read_new()) != NULL);
|
||||
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
|
||||
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
|
||||
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, reffile, 10240));
|
||||
+
|
||||
+ // This has just one entry
|
||||
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
|
||||
+
|
||||
+ // Read blocks until the end of the entry
|
||||
+ while (ARCHIVE_OK == archive_read_data_block(a, &buf, &size, &offset)) {
|
||||
+ }
|
||||
+
|
||||
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
|
||||
+
|
||||
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
|
||||
+ assertEqualInt(ARCHIVE_OK, archive_free(a));
|
||||
+}
|
||||
diff --git a/libarchive/test/test_read_format_rar5_loop_bug.rar.uu b/libarchive/test/test_read_format_rar5_loop_bug.rar.uu
|
||||
new file mode 100644
|
||||
index 0000000..3e47004
|
||||
--- /dev/null
|
||||
+++ b/libarchive/test/test_read_format_rar5_loop_bug.rar.uu
|
||||
@@ -0,0 +1,189 @@
|
||||
+begin 644 test_read_format_rar5_loop_bug.rar
|
||||
+M4F%R(1H'`0#%&C,R`P$``)T-9%L.`@+P0`"`@`P`@`,``6'(WFP@`?\7_U/^
|
||||
+M8@!.`B`H````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+M````````````````````````````````````````````````````````````
|
||||
+5```````````````````Y^;*!`@4`
|
||||
+`
|
||||
+end
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@@ -44,6 +44,8 @@ SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
|
||||
file://0001-Merge-pull-request-2768-from-Commandoss-master.patch \
|
||||
file://CVE-2025-60753-01.patch \
|
||||
file://CVE-2025-60753-02.patch \
|
||||
file://CVE-2026-4111-1.patch \
|
||||
file://CVE-2026-4111-2.patch \
|
||||
"
|
||||
UPSTREAM_CHECK_URI = "http://libarchive.org/"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user