mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
libarchive: patch regression of patch for CVE-2025-5918
Picked commit per [1]. [1] https://security-tracker.debian.org/tracker/CVE-2025-5918 (From OE-Core rev: d2b8d2f7d579779a9effcff677960dbc576b1cc8) Signed-off-by: Peter Marko <peter.marko@siemens.com> Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
committed by
Steve Sakoman
parent
bf7f8a0202
commit
5368900445
@@ -0,0 +1,51 @@
|
||||
From 51b4c35bb38b7df4af24de7f103863dd79129b01 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Stoeckmann <tobias@stoeckmann.org>
|
||||
Date: Tue, 27 May 2025 17:09:12 +0200
|
||||
Subject: [PATCH] Fix FILE_skip regression
|
||||
|
||||
The fseek* family of functions return 0 on success, not the new offset.
|
||||
This is only true for lseek.
|
||||
|
||||
Fixes https://github.com/libarchive/libarchive/issues/2641
|
||||
Fixes dcbf1e0ededa95849f098d154a25876ed5754bcf
|
||||
|
||||
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
|
||||
|
||||
CVE: CVE-2025-5918
|
||||
Upstream-Status: Backport [https://github.com/libarchive/libarchive/commit/51b4c35bb38b7df4af24de7f103863dd79129b01]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
libarchive/archive_read_open_file.c | 11 +++++++----
|
||||
1 file changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/libarchive/archive_read_open_file.c b/libarchive/archive_read_open_file.c
|
||||
index 6ed18a0c..742923ab 100644
|
||||
--- a/libarchive/archive_read_open_file.c
|
||||
+++ b/libarchive/archive_read_open_file.c
|
||||
@@ -132,7 +132,7 @@ FILE_skip(struct archive *a, void *client_data, int64_t request)
|
||||
#else
|
||||
long skip = (long)request;
|
||||
#endif
|
||||
- int64_t old_offset, new_offset;
|
||||
+ int64_t old_offset, new_offset = -1;
|
||||
int skip_bits = sizeof(skip) * 8 - 1;
|
||||
|
||||
(void)a; /* UNUSED */
|
||||
@@ -170,11 +170,14 @@ FILE_skip(struct archive *a, void *client_data, int64_t request)
|
||||
#ifdef __ANDROID__
|
||||
new_offset = lseek(fileno(mine->f), skip, SEEK_CUR);
|
||||
#elif HAVE__FSEEKI64
|
||||
- new_offset = _fseeki64(mine->f, skip, SEEK_CUR);
|
||||
+ if (_fseeki64(mine->f, skip, SEEK_CUR) == 0)
|
||||
+ new_offset = _ftelli64(mine->f);
|
||||
#elif HAVE_FSEEKO
|
||||
- new_offset = fseeko(mine->f, skip, SEEK_CUR);
|
||||
+ if (fseeko(mine->f, skip, SEEK_CUR) == 0)
|
||||
+ new_offset = ftello(mine->f);
|
||||
#else
|
||||
- new_offset = fseek(mine->f, skip, SEEK_CUR);
|
||||
+ if (fseek(mine->f, skip, SEEK_CUR) == 0)
|
||||
+ new_offset = ftell(mine->f);
|
||||
#endif
|
||||
if (new_offset >= 0)
|
||||
return (new_offset - old_offset);
|
||||
@@ -37,6 +37,7 @@ SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
|
||||
file://CVE-2025-5917.patch \
|
||||
file://CVE-2025-5918-0001.patch \
|
||||
file://CVE-2025-5918-0002.patch \
|
||||
file://CVE-2025-5918-0003.patch \
|
||||
"
|
||||
UPSTREAM_CHECK_URI = "http://libarchive.org/"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user