From 0132ad8100e1d32667f3ae011a878d00f172ab80 Mon Sep 17 00:00:00 2001 From: Azure Linux Security Servicing Account Date: Mon, 7 Sep 2026 15:23:29 +0000 Subject: [PATCH] Patch util-linux for CVE-2026-78410, CVE-2026-78408, CVE-2026-76642 --- SPECS/util-linux/CVE-2026-76642.patch | 96 ++++++++ SPECS/util-linux/CVE-2026-78408.patch | 84 +++++++ SPECS/util-linux/CVE-2026-78410.patch | 218 ++++++++++++++++++ SPECS/util-linux/util-linux.spec | 8 +- .../manifests/package/pkggen_core_aarch64.txt | 6 +- .../manifests/package/pkggen_core_x86_64.txt | 6 +- .../manifests/package/toolchain_aarch64.txt | 12 +- .../manifests/package/toolchain_x86_64.txt | 12 +- 8 files changed, 423 insertions(+), 19 deletions(-) create mode 100644 SPECS/util-linux/CVE-2026-76642.patch create mode 100644 SPECS/util-linux/CVE-2026-78408.patch create mode 100644 SPECS/util-linux/CVE-2026-78410.patch diff --git a/SPECS/util-linux/CVE-2026-76642.patch b/SPECS/util-linux/CVE-2026-76642.patch new file mode 100644 index 00000000000..569cd253175 --- /dev/null +++ b/SPECS/util-linux/CVE-2026-76642.patch @@ -0,0 +1,96 @@ +From 56a7e403d2782f674937df89b1c1eff0981ecf42 Mon Sep 17 00:00:00 2001 +From: AllSpark +Date: Mon, 7 Sep 2026 15:16:10 +0000 +Subject: [PATCH] libmount: skip post-mount hooks after failed mount helper + [CVE-2026-76642] + +Signed-off-by: Azure Linux Security Servicing Account +Upstream-reference: AI Backport of https://github.com/util-linux/util-linux/commit/a15c00a9e545aa8b9cf6ec0f888ff6c7b3eaeedc.patch +--- + libmount/src/context_mount.c | 23 ++++++++++++++++++++--- + libmount/src/hook_loopdev.c | 13 +++++++++++-- + 2 files changed, 31 insertions(+), 5 deletions(-) + +diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c +index f9d610f..b5c7c94 100644 +--- a/libmount/src/context_mount.c ++++ b/libmount/src/context_mount.c +@@ -575,6 +575,22 @@ static int is_success_status(struct libmnt_context *cxt) + return 0; + } + ++/* Check if the mount stage explicitly failed (helper or syscall returned ++ * an error). Unlike is_success_status(), this treats "nothing happened" ++ * as not-failed -- the MOUNT stage may be a no-op for operations like ++ * bind/move with the new mount API where open_tree() runs in PREP and ++ * move_mount() is deferred to MOUNT_POST. */ ++static int is_mount_stage_failed(struct libmnt_context *cxt) ++{ ++ if (mnt_context_helper_executed(cxt)) ++ return mnt_context_get_helper_status(cxt) != 0; ++ ++ if (mnt_context_syscall_called(cxt)) ++ return mnt_context_get_status(cxt) != 1; ++ ++ return 0; ++} ++ + /* try mount(2) for all items in comma separated list of the filesystem @types */ + static int do_mount_by_types(struct libmnt_context *cxt, const char *types) + { +@@ -868,8 +884,9 @@ int mnt_context_do_mount(struct libmnt_context *cxt) + } else + res = do_mount_by_pattern(cxt, cxt->fstype_pattern); + +- /* after mount stage */ +- if (res == 0) { ++ /* after mount stage -- the post-mount hooks are commit-path only, ++ * skip them if the mount helper or syscall has failed */ ++ if (res == 0 && !is_mount_stage_failed(cxt)) { + rc = mnt_context_call_hooks(cxt, MNT_STAGE_MOUNT_POST); + if (rc) + return rc; +@@ -1052,7 +1069,7 @@ again: + } + } + +- if (rc == 0) ++ if (rc == 0 && !is_mount_stage_failed(cxt)) + rc = mnt_context_call_hooks(cxt, MNT_STAGE_POST); + + mnt_context_deinit_hooksets(cxt); +diff --git a/libmount/src/hook_loopdev.c b/libmount/src/hook_loopdev.c +index 4df1915..31d9861 100644 +--- a/libmount/src/hook_loopdev.c ++++ b/libmount/src/hook_loopdev.c +@@ -23,6 +23,8 @@ struct hook_data { + int loopdev_fd; + }; + ++static int delete_loopdev(struct libmnt_context *cxt, struct hook_data *hd); ++ + /* de-initiallize this module */ + static int hookset_deinit(struct libmnt_context *cxt, const struct libmnt_hookset *hs) + { +@@ -30,9 +32,16 @@ static int hookset_deinit(struct libmnt_context *cxt, const struct libmnt_hookse + + DBG(HOOK, ul_debugobj(hs, "deinit '%s'", hs->name)); + +- /* remove all our hooks */ ++ /* remove all our hooks and free hook data */ + while (mnt_context_remove_hook(cxt, hs, 0, &data) == 0) { +- free(data); ++ if (data) { ++ struct hook_data *hd = (struct hook_data *) data; ++ ++ /* cleanup after skipped MOUNT_POST hook */ ++ if (hd->loopdev_fd > -1) ++ delete_loopdev(cxt, hd); ++ free(hd); ++ } + data = NULL; + } + +-- +2.45.4 + diff --git a/SPECS/util-linux/CVE-2026-78408.patch b/SPECS/util-linux/CVE-2026-78408.patch new file mode 100644 index 00000000000..947ea370c55 --- /dev/null +++ b/SPECS/util-linux/CVE-2026-78408.patch @@ -0,0 +1,84 @@ +From 5bdc94402e00c398846be67143487dabe0329e9e Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Thu, 3 Sep 2026 12:17:14 +0200 +Subject: [PATCH] nsenter: close cgroup.procs fd after join to prevent + authority leak [CVE-2026-78408] + +The --join-cgroup option opens the target's cgroup.procs while running +as root and writes nsenter's own PID to migrate itself. The descriptor +was left open across subsequent namespace transitions, credential drops +(setgroups/setgid/setuid) and execve(). + +The kernel performs cgroup migration permission checks using the +credentials captured at open time (file->f_cred). An open cgroup.procs +descriptor therefore carries the opener's migration authority regardless +of later privilege changes. A program executed inside the target +namespace inherits root's cgroup migration capability even when running +as an unprivileged user with no capabilities. + +Fix this by: + + - closing the temporary /proc/PID/cgroup fd after reading the path + - adding O_CLOEXEC to the cgroup.procs open as defense in depth + - closing cgroup_procs_fd immediately after the self-migration write + - initializing the temporary cgroup fd to -1 instead of 0 to avoid + accidentally closing stdin via open_target_fd() + +The descriptor has no legitimate use after the single migration write. + +Introduced-by: b40650b71a74 ("nsenter: add option -c to join the cgroup of target process") +References: b0cf1cf0d255 ("nsenter: close cgroup.procs fd after join to prevent authority leak") +Signed-off-by: Karel Zak +Signed-off-by: Azure Linux Security Servicing Account +Upstream-reference: https://github.com/util-linux/util-linux/commit/afe067c979b9ba2cbe856f7c6411210120ea62aa.patch +--- + sys-utils/nsenter.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/sys-utils/nsenter.c b/sys-utils/nsenter.c +index 8f7bac9..c3c92b5 100644 +--- a/sys-utils/nsenter.c ++++ b/sys-utils/nsenter.c +@@ -202,7 +202,7 @@ static int get_ns_ino(const char *path, ino_t *ino) + static void open_cgroup_procs(void) + { + char *buf = NULL, *path = NULL, *p; +- int cgroup_fd = 0; ++ int cgroup_fd = -1; + char fdpath[PATH_MAX]; + + open_target_fd(&cgroup_fd, "cgroup", optarg); +@@ -210,6 +210,8 @@ static void open_cgroup_procs(void) + if (read_all_alloc(cgroup_fd, &buf) < 1) + err(EXIT_FAILURE, _("failed to get cgroup path")); + ++ close(cgroup_fd); ++ + p = strtok(buf, "\n"); + if (p) + path = strrchr(p, ':'); +@@ -219,7 +221,7 @@ static void open_cgroup_procs(void) + + snprintf(fdpath, sizeof(fdpath), _PATH_SYS_CGROUP "/%s/cgroup.procs", path); + +- if ((cgroup_procs_fd = open(fdpath, O_WRONLY | O_APPEND)) < 0) ++ if ((cgroup_procs_fd = open(fdpath, O_WRONLY | O_APPEND | O_CLOEXEC)) < 0) + err(EXIT_FAILURE, _("failed to open cgroup.procs")); + + free(buf); +@@ -654,8 +656,11 @@ int main(int argc, char *argv[]) + } + + // Join into the target cgroup +- if (cgroup_procs_fd >= 0) ++ if (cgroup_procs_fd >= 0) { + join_into_cgroup(); ++ close(cgroup_procs_fd); ++ cgroup_procs_fd = -1; ++ } + + if (uid_gid_fd >= 0) { + struct stat st; +-- +2.45.4 + diff --git a/SPECS/util-linux/CVE-2026-78410.patch b/SPECS/util-linux/CVE-2026-78410.patch new file mode 100644 index 00000000000..36fc65c0126 --- /dev/null +++ b/SPECS/util-linux/CVE-2026-78410.patch @@ -0,0 +1,218 @@ +From bf2418e925c5196e96d162d6c15753184555a920 Mon Sep 17 00:00:00 2001 +From: AllSpark +Date: Mon, 7 Sep 2026 15:16:58 +0000 +Subject: [PATCH] Backport mount/libmount openat2 and restricted + canonicalization fixes + +Signed-off-by: Azure Linux Security Servicing Account +Upstream-reference: AI Backport of https://github.com/util-linux/util-linux/commit/e554245ccc165fcdd4b8ba68bf2994ee14b98607.patch https://github.com/util-linux/util-linux/commit/b9e07ce6f5ad54c38cf3ebc7100101e487be91bd.patch https://github.com/util-linux/util-linux/commit/37afc15d9e5a0accea94eb067b151e21f8494880.patch https://github.com/util-linux/util-linux/commit/fb8e2653553ce2ecd077a294d53a1422d7c6dbc0.patch +--- + include/fileutils.h | 12 ++++++++ + lib/fileutils.c | 23 ++++++++++++++++ + libmount/src/context.c | 19 +++++++++++-- + libmount/src/hook_idmap.c | 6 ++-- + libmount/src/mountP.h | 2 ++ + libmount/src/utils.c | 58 +++++++++++++++++++++++++++++++++++++++ + 6 files changed, 116 insertions(+), 4 deletions(-) + +diff --git a/include/fileutils.h b/include/fileutils.h +index 6fc93d0..a4386b9 100644 +--- a/include/fileutils.h ++++ b/include/fileutils.h +@@ -61,6 +61,18 @@ static inline int is_same_inode(const int fd, const struct stat *st) + return 1; + } + ++extern int dup_fd_cloexec(int oldfd, int lowfd); ++extern int ul_open_no_symlinks(const char *path, int flags, mode_t mode); ++extern int ul_openat_resolve(int dirfd, const char *path, int flags, ++ mode_t mode, unsigned long long resolve); ++ ++#ifndef RESOLVE_NO_SYMLINKS ++# define RESOLVE_NO_SYMLINKS 0x02 ++#endif ++#ifndef RESOLVE_BENEATH ++# define RESOLVE_BENEATH 0x08 ++#endif ++ + extern int dup_fd_cloexec(int oldfd, int lowfd); + extern unsigned int get_fd_tabsize(void); + +diff --git a/lib/fileutils.c b/lib/fileutils.c +index 95ee516..04c00e4 100644 +--- a/lib/fileutils.c ++++ b/lib/fileutils.c +@@ -343,3 +343,26 @@ char *ul_basename(char *path) + + return p; + } ++ ++int ul_openat_resolve(int dirfd, const char *path, int flags, ++\t\t mode_t mode, unsigned long long resolve) ++{ ++#if defined(SYS_openat2) ++\tstruct open_how how = { ++\t\t.flags = (__u64) flags, ++\t\t.mode = (__u64) mode, ++\t\t.resolve = resolve, ++\t}; ++ ++\treturn syscall(SYS_openat2, dirfd, path, &how, sizeof(how)); ++#else ++\terrno = ENOSYS; ++\treturn -1; ++#endif ++} ++ ++int ul_open_no_symlinks(const char *path, int flags, mode_t mode) ++{ ++\treturn ul_openat_resolve(AT_FDCWD, path, flags, mode, ++\t\t\t\t RESOLVE_NO_SYMLINKS); ++} +diff --git a/libmount/src/context.c b/libmount/src/context.c +index 2e94d9f..7a52296 100644 +--- a/libmount/src/context.c ++++ b/libmount/src/context.c +@@ -1824,7 +1824,8 @@ int mnt_context_open_tree(struct libmnt_context *cxt, const char *path, unsigned + DBG(CXT, ul_debugobj(cxt, "open_tree(path=%s%s%s)", path, + oflg & OPEN_TREE_CLONE ? " clone" : "", + oflg & AT_RECURSIVE ? " recursive" : "")); +- fd = open_tree(AT_FDCWD, path, oflg); ++ fd = mnt_open_tree(AT_FDCWD, path, oflg, ++ mnt_context_is_restricted(cxt) ? RESOLVE_NO_SYMLINKS : 0); + set_syscall_status(cxt, "open_tree", fd >= 0); + + return fd; +@@ -1887,7 +1888,21 @@ int mnt_context_prepare_srcpath(struct libmnt_context *cxt) + /* + * Source is PATH (canonicalize) + */ +- path = mnt_resolve_path(src, cache); ++ if (mnt_context_is_restricted(cxt)) { ++ /* In restricted mode, only canonicalize /dev/ ++ * paths (e.g. /dev/cdrom -> /dev/sr0) and verify ++ * the result stays in /dev/. For non-/dev/ paths ++ * (e.g. disk images in user dirs), keep the ++ * original fstab path -- symlink protection is ++ * handled at open time by RESOLVE_NO_SYMLINKS. ++ */ ++ if (ul_startswith(src, "/dev/")) { ++ path = mnt_resolve_path(src, cache); ++ if (path && !ul_startswith(path, "/dev/")) ++ path = NULL; ++ } ++ } else ++ path = mnt_resolve_path(src, cache); + if (path && strcmp(path, src) != 0) + rc = mnt_fs_set_source(cxt->fs, path); + } +diff --git a/libmount/src/hook_idmap.c b/libmount/src/hook_idmap.c +index 9b2425a..da35e51 100644 +--- a/libmount/src/hook_idmap.c ++++ b/libmount/src/hook_idmap.c +@@ -330,9 +330,11 @@ static int hook_mount_post( + } + #endif + if (fd_tree < 0) +- fd_tree = open_tree(-1, target, ++ fd_tree = mnt_open_tree(AT_FDCWD, target, + OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC | +- (recursive ? AT_RECURSIVE : 0)); ++ (recursive ? AT_RECURSIVE : 0), ++ mnt_context_is_restricted(cxt) ? ++ RESOLVE_NO_SYMLINKS : 0); + if (fd_tree < 0) { + DBG(HOOK, ul_debugobj(hs, " failed to open tree")); + return -MNT_ERR_IDMAP; +diff --git a/libmount/src/mountP.h b/libmount/src/mountP.h +index f437816..9e00f7e 100644 +--- a/libmount/src/mountP.h ++++ b/libmount/src/mountP.h +@@ -694,6 +694,8 @@ static inline struct libmnt_sysapi *mnt_context_get_sysapi(struct libmnt_context + } + + int mnt_context_open_tree(struct libmnt_context *cxt, const char *path, unsigned long mflg); ++int mnt_open_tree(int dirfd, const char *path, unsigned long flags, ++ unsigned long long resolve); + + #endif + +diff --git a/libmount/src/utils.c b/libmount/src/utils.c +index 94a877c..543d697 100644 +--- a/libmount/src/utils.c ++++ b/libmount/src/utils.c +@@ -1140,6 +1140,35 @@ char *mnt_get_kernel_cmdline_option(const char *name) + if (!name || !name[0]) + return NULL; + ++ ++#ifdef USE_LIBMOUNT_MOUNTFD_SUPPORT ++/* ++ * Open a mount tree, optionally pinning the path with openat2() first. ++ * ++ * When @resolve is non-zero, the path is resolved with openat2() using the ++ * given resolve flags, then the tree is opened with open_tree(AT_EMPTY_PATH). ++ * When @resolve is zero, open_tree() is called directly with the path. ++ */ ++int mnt_open_tree(int dirfd, const char *path, unsigned long flags, ++ unsigned long long resolve) ++{ ++ if (resolve) { ++ int pin_fd, fd; ++ ++ pin_fd = ul_openat_resolve(dirfd, path, ++ O_PATH | O_CLOEXEC, 0, resolve); ++ if (pin_fd < 0) ++ return pin_fd; ++ ++ fd = open_tree(pin_fd, "", flags | AT_EMPTY_PATH); ++ close(pin_fd); ++ return fd; ++ } ++ ++ return open_tree(dirfd, path, flags); ++} ++#endif /* USE_LIBMOUNT_MOUNTFD_SUPPORT */ ++ + #ifdef TEST_PROGRAM + path = getenv("LIBMOUNT_KERNEL_CMDLINE"); + if (!path) +@@ -1289,6 +1318,35 @@ done: + return 1; + } + ++ ++#ifdef USE_LIBMOUNT_MOUNTFD_SUPPORT ++/* ++ * Open a mount tree, optionally pinning the path with openat2() first. ++ * ++ * When @resolve is non-zero, the path is resolved with openat2() using the ++ * given resolve flags, then the tree is opened with open_tree(AT_EMPTY_PATH). ++ * When @resolve is zero, open_tree() is called directly with the path. ++ */ ++int mnt_open_tree(int dirfd, const char *path, unsigned long flags, ++ unsigned long long resolve) ++{ ++ if (resolve) { ++ int pin_fd, fd; ++ ++ pin_fd = ul_openat_resolve(dirfd, path, ++ O_PATH | O_CLOEXEC, 0, resolve); ++ if (pin_fd < 0) ++ return pin_fd; ++ ++ fd = open_tree(pin_fd, "", flags | AT_EMPTY_PATH); ++ close(pin_fd); ++ return fd; ++ } ++ ++ return open_tree(dirfd, path, flags); ++} ++#endif /* USE_LIBMOUNT_MOUNTFD_SUPPORT */ ++ + #ifdef TEST_PROGRAM + static int test_match_fstype(struct libmnt_test *ts __attribute__((unused)), + int argc, char *argv[]) +-- +2.45.4 + diff --git a/SPECS/util-linux/util-linux.spec b/SPECS/util-linux/util-linux.spec index 186c6331e66..6b461df59b4 100644 --- a/SPECS/util-linux/util-linux.spec +++ b/SPECS/util-linux/util-linux.spec @@ -5,7 +5,7 @@ Summary: Utilities for file systems, consoles, partitions, and messages Name: util-linux Version: 2.40.2 -Release: 5%{?dist} +Release: 6%{?dist} License: GPLv2+ Vendor: Microsoft Corporation Distribution: Azure Linux @@ -20,6 +20,9 @@ Patch0: CVE-2025-14104.patch Patch1: CVE-2026-27456.patch Patch2: CVE-2026-3184.patch Patch3: CVE-2026-13595.patch +Patch4: CVE-2026-76642.patch +Patch5: CVE-2026-78408.patch +Patch6: CVE-2026-78410.patch BuildRequires: audit-devel BuildRequires: libcap-ng-devel BuildRequires: libselinux-devel @@ -175,6 +178,9 @@ rm -rf %{buildroot}/lib/systemd/system %{_mandir}/man3/* %changelog +* Mon Sep 07 2026 Azure Linux Security Servicing Account - 2.40.2-6 +- Patch for CVE-2026-78410, CVE-2026-78408, CVE-2026-76642 + * Wed Jul 01 2026 Azure Linux Security Servicing Account - 2.40.2-5 - Patch for CVE-2026-13595 diff --git a/toolkit/resources/manifests/package/pkggen_core_aarch64.txt b/toolkit/resources/manifests/package/pkggen_core_aarch64.txt index 1349a92959d..67b47b3fbaf 100644 --- a/toolkit/resources/manifests/package/pkggen_core_aarch64.txt +++ b/toolkit/resources/manifests/package/pkggen_core_aarch64.txt @@ -70,9 +70,9 @@ make-4.4.1-2.azl3.aarch64.rpm patch-2.7.6-10.azl3.aarch64.rpm libcap-ng-0.8.4-1.azl3.aarch64.rpm libcap-ng-devel-0.8.4-1.azl3.aarch64.rpm -util-linux-2.40.2-5.azl3.aarch64.rpm -util-linux-devel-2.40.2-5.azl3.aarch64.rpm -util-linux-libs-2.40.2-5.azl3.aarch64.rpm +util-linux-2.40.2-6.azl3.aarch64.rpm +util-linux-devel-2.40.2-6.azl3.aarch64.rpm +util-linux-libs-2.40.2-6.azl3.aarch64.rpm tar-1.35-2.azl3.aarch64.rpm xz-5.4.4-3.azl3.aarch64.rpm xz-devel-5.4.4-3.azl3.aarch64.rpm diff --git a/toolkit/resources/manifests/package/pkggen_core_x86_64.txt b/toolkit/resources/manifests/package/pkggen_core_x86_64.txt index 92a56a6eace..b36257196c0 100644 --- a/toolkit/resources/manifests/package/pkggen_core_x86_64.txt +++ b/toolkit/resources/manifests/package/pkggen_core_x86_64.txt @@ -70,9 +70,9 @@ make-4.4.1-2.azl3.x86_64.rpm patch-2.7.6-10.azl3.x86_64.rpm libcap-ng-0.8.4-1.azl3.x86_64.rpm libcap-ng-devel-0.8.4-1.azl3.x86_64.rpm -util-linux-2.40.2-5.azl3.x86_64.rpm -util-linux-devel-2.40.2-5.azl3.x86_64.rpm -util-linux-libs-2.40.2-5.azl3.x86_64.rpm +util-linux-2.40.2-6.azl3.x86_64.rpm +util-linux-devel-2.40.2-6.azl3.x86_64.rpm +util-linux-libs-2.40.2-6.azl3.x86_64.rpm tar-1.35-2.azl3.x86_64.rpm xz-5.4.4-3.azl3.x86_64.rpm xz-devel-5.4.4-3.azl3.x86_64.rpm diff --git a/toolkit/resources/manifests/package/toolchain_aarch64.txt b/toolkit/resources/manifests/package/toolchain_aarch64.txt index a2afd9b623b..ee11155b3df 100644 --- a/toolkit/resources/manifests/package/toolchain_aarch64.txt +++ b/toolkit/resources/manifests/package/toolchain_aarch64.txt @@ -542,7 +542,7 @@ python3-flit-core-3.9.0-1.azl3.noarch.rpm python3-gpg-1.23.2-2.azl3.aarch64.rpm python3-jinja2-3.1.2-3.azl3.noarch.rpm python3-libcap-ng-0.8.4-1.azl3.aarch64.rpm -python3-libmount-2.40.2-5.azl3.aarch64.rpm +python3-libmount-2.40.2-6.azl3.aarch64.rpm python3-libs-3.12.14-1.azl3.aarch64.rpm python3-libxml2-2.11.5-10.azl3.aarch64.rpm python3-lxml-4.9.3-3.azl3.aarch64.rpm @@ -599,11 +599,11 @@ texinfo-7.0.3-1.azl3.aarch64.rpm texinfo-debuginfo-7.0.3-1.azl3.aarch64.rpm unzip-6.0-22.azl3.aarch64.rpm unzip-debuginfo-6.0-22.azl3.aarch64.rpm -util-linux-2.40.2-5.azl3.aarch64.rpm -util-linux-debuginfo-2.40.2-5.azl3.aarch64.rpm -util-linux-devel-2.40.2-5.azl3.aarch64.rpm -util-linux-lang-2.40.2-5.azl3.aarch64.rpm -util-linux-libs-2.40.2-5.azl3.aarch64.rpm +util-linux-2.40.2-6.azl3.aarch64.rpm +util-linux-debuginfo-2.40.2-6.azl3.aarch64.rpm +util-linux-devel-2.40.2-6.azl3.aarch64.rpm +util-linux-lang-2.40.2-6.azl3.aarch64.rpm +util-linux-libs-2.40.2-6.azl3.aarch64.rpm which-2.21-8.azl3.aarch64.rpm which-debuginfo-2.21-8.azl3.aarch64.rpm xz-5.4.4-3.azl3.aarch64.rpm diff --git a/toolkit/resources/manifests/package/toolchain_x86_64.txt b/toolkit/resources/manifests/package/toolchain_x86_64.txt index 4d6fd92ab2c..07e5fae2412 100644 --- a/toolkit/resources/manifests/package/toolchain_x86_64.txt +++ b/toolkit/resources/manifests/package/toolchain_x86_64.txt @@ -550,7 +550,7 @@ python3-flit-core-3.9.0-1.azl3.noarch.rpm python3-gpg-1.23.2-2.azl3.x86_64.rpm python3-jinja2-3.1.2-3.azl3.noarch.rpm python3-libcap-ng-0.8.4-1.azl3.x86_64.rpm -python3-libmount-2.40.2-5.azl3.x86_64.rpm +python3-libmount-2.40.2-6.azl3.x86_64.rpm python3-libs-3.12.14-1.azl3.x86_64.rpm python3-libxml2-2.11.5-10.azl3.x86_64.rpm python3-lxml-4.9.3-3.azl3.x86_64.rpm @@ -607,11 +607,11 @@ texinfo-7.0.3-1.azl3.x86_64.rpm texinfo-debuginfo-7.0.3-1.azl3.x86_64.rpm unzip-6.0-22.azl3.x86_64.rpm unzip-debuginfo-6.0-22.azl3.x86_64.rpm -util-linux-2.40.2-5.azl3.x86_64.rpm -util-linux-debuginfo-2.40.2-5.azl3.x86_64.rpm -util-linux-devel-2.40.2-5.azl3.x86_64.rpm -util-linux-lang-2.40.2-5.azl3.x86_64.rpm -util-linux-libs-2.40.2-5.azl3.x86_64.rpm +util-linux-2.40.2-6.azl3.x86_64.rpm +util-linux-debuginfo-2.40.2-6.azl3.x86_64.rpm +util-linux-devel-2.40.2-6.azl3.x86_64.rpm +util-linux-lang-2.40.2-6.azl3.x86_64.rpm +util-linux-libs-2.40.2-6.azl3.x86_64.rpm which-2.21-8.azl3.x86_64.rpm which-debuginfo-2.21-8.azl3.x86_64.rpm xz-5.4.4-3.azl3.x86_64.rpm