mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-19 16:40:46 -09:00
package/util-linux: fix loopdev nofollow patch
eeb65cf0f6manually backported upstream util-linux security fix (util-linux: 5e390467b26a3cf3fecc04e1a0d482dff3162fc4) but didn't account for ul_canonicalize_path being named just canonicalize_path in 2.40.x. Use the upstream backported patch from the 2.40.x maintenance branch instead. Can be reproduced with the following defconfig: BR2_arm=y BR2_cortex_a7=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y BR2_INIT_NONE=y BR2_SYSTEM_BIN_SH_NONE=y BR2_PACKAGE_UTIL_LINUX_LOSETUP=y Fixes:eeb65cf0f6Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu> [thomas: added defconfig] Signed-off-by: Thomas Perale <thomas.perale@mind.be>
This commit is contained in:
committed by
Thomas Perale
parent
bb46c259f4
commit
dd20ff11b8
@@ -1,4 +1,4 @@
|
|||||||
From 5e390467b26a3cf3fecc04e1a0d482dff3162fc4 Mon Sep 17 00:00:00 2001
|
From 0000ca30646d03f9dfbab9f62a5ce21a939c1018 Mon Sep 17 00:00:00 2001
|
||||||
From: Karel Zak <kzak@redhat.com>
|
From: Karel Zak <kzak@redhat.com>
|
||||||
Date: Thu, 19 Feb 2026 13:59:46 +0100
|
Date: Thu, 19 Feb 2026 13:59:46 +0100
|
||||||
Subject: [PATCH] loopdev: add LOOPDEV_FL_NOFOLLOW to prevent symlink attacks
|
Subject: [PATCH] loopdev: add LOOPDEV_FL_NOFOLLOW to prevent symlink attacks
|
||||||
@@ -47,9 +47,8 @@ Addresses: https://github.com/util-linux/util-linux/security/advisories/GHSA-qq4
|
|||||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||||
|
|
||||||
CVE: CVE-2026-27456
|
CVE: CVE-2026-27456
|
||||||
Upstream: https://github.com/util-linux/util-linux/commit/5e390467b26a3cf3fecc04e1a0d482dff3162fc4
|
Upstream: https://github.com/util-linux/util-linux/commit/0000ca30646d03f9dfbab9f62a5ce21a939c1018
|
||||||
[Titouan: Adapt patch to apply cleanly onto util-linux 2.40]
|
Signed-off-by: Marcus Hoffmann <buildroot@bubu1.eu>
|
||||||
Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
|
|
||||||
---
|
---
|
||||||
include/loopdev.h | 3 ++-
|
include/loopdev.h | 3 ++-
|
||||||
lib/loopdev.c | 7 ++++++-
|
lib/loopdev.c | 7 ++++++-
|
||||||
@@ -57,7 +56,7 @@ Signed-off-by: Titouan Christophe <titouan.christophe@mind.be>
|
|||||||
3 files changed, 10 insertions(+), 3 deletions(-)
|
3 files changed, 10 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/include/loopdev.h b/include/loopdev.h
|
diff --git a/include/loopdev.h b/include/loopdev.h
|
||||||
index d10bf7f37..0f85dd254 100644
|
index d10bf7f3765..0f85dd25456 100644
|
||||||
--- a/include/loopdev.h
|
--- a/include/loopdev.h
|
||||||
+++ b/include/loopdev.h
|
+++ b/include/loopdev.h
|
||||||
@@ -139,7 +139,8 @@ enum {
|
@@ -139,7 +139,8 @@ enum {
|
||||||
@@ -71,7 +70,7 @@ index d10bf7f37..0f85dd254 100644
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
diff --git a/lib/loopdev.c b/lib/loopdev.c
|
diff --git a/lib/loopdev.c b/lib/loopdev.c
|
||||||
index c72fb2c40..3d2274693 100644
|
index c72fb2c404b..28fb489e402 100644
|
||||||
--- a/lib/loopdev.c
|
--- a/lib/loopdev.c
|
||||||
+++ b/lib/loopdev.c
|
+++ b/lib/loopdev.c
|
||||||
@@ -1267,7 +1267,10 @@ int loopcxt_set_backing_file(struct loopdev_cxt *lc, const char *filename)
|
@@ -1267,7 +1267,10 @@ int loopcxt_set_backing_file(struct loopdev_cxt *lc, const char *filename)
|
||||||
@@ -82,7 +81,7 @@ index c72fb2c40..3d2274693 100644
|
|||||||
+ if (lc->flags & LOOPDEV_FL_NOFOLLOW)
|
+ if (lc->flags & LOOPDEV_FL_NOFOLLOW)
|
||||||
+ lc->filename = strdup(filename);
|
+ lc->filename = strdup(filename);
|
||||||
+ else
|
+ else
|
||||||
+ lc->filename = ul_canonicalize_path(filename);
|
+ lc->filename = canonicalize_path(filename);
|
||||||
if (!lc->filename)
|
if (!lc->filename)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
@@ -96,7 +95,7 @@ index c72fb2c40..3d2274693 100644
|
|||||||
if ((file_fd = open(lc->filename, mode | flags)) < 0) {
|
if ((file_fd = open(lc->filename, mode | flags)) < 0) {
|
||||||
if (mode != O_RDONLY && (errno == EROFS || errno == EACCES))
|
if (mode != O_RDONLY && (errno == EROFS || errno == EACCES))
|
||||||
diff --git a/libmount/src/hook_loopdev.c b/libmount/src/hook_loopdev.c
|
diff --git a/libmount/src/hook_loopdev.c b/libmount/src/hook_loopdev.c
|
||||||
index 597b9339a..4df1915a6 100644
|
index 597b9339ac0..4df1915a619 100644
|
||||||
--- a/libmount/src/hook_loopdev.c
|
--- a/libmount/src/hook_loopdev.c
|
||||||
+++ b/libmount/src/hook_loopdev.c
|
+++ b/libmount/src/hook_loopdev.c
|
||||||
@@ -272,7 +272,8 @@ static int setup_loopdev(struct libmnt_context *cxt,
|
@@ -272,7 +272,8 @@ static int setup_loopdev(struct libmnt_context *cxt,
|
||||||
|
|||||||
Reference in New Issue
Block a user