Skip to content

Commit ef72ad1

Browse files
committed
Merge branch '2.0' into fasttrack/2.0
2 parents 0ee2094 + e6b5ba9 commit ef72ad1

46 files changed

Lines changed: 4456 additions & 113 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

SPECS/atop/CVE-2025-31160.patch

Lines changed: 627 additions & 0 deletions
Large diffs are not rendered by default.

SPECS/atop/atop.spec

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Summary: An advanced interactive monitor to view the load on system and process level
33
Name: atop
44
Version: 2.6.0
5-
Release: 9%{?dist}
5+
Release: 10%{?dist}
66
License: GPLv2+
77
Vendor: Microsoft Corporation
88
Distribution: Mariner
@@ -13,6 +13,7 @@ Patch0: nvme_support.patch
1313
Patch1: atop-sysconfig.patch
1414
Patch2: atop-2.3.0-newer-gcc.patch
1515
Patch3: 9cb119713b5e6be43671fe1856fb4bd49ff91fa7.patch
16+
Patch4: CVE-2025-31160.patch
1617
BuildRequires: gcc
1718
BuildRequires: make
1819
BuildRequires: ncurses-devel
@@ -45,6 +46,7 @@ http://www.atcomputing.nl/Tools/atop/kernpatch.html
4546
%patch1 -b .sysconfig
4647
%patch2 -p1 -b .newer-gcc
4748
%patch3 -p1 -b .service
49+
%patch4 -p1
4850

4951
# Correct unit file path
5052
sed -i "s|%{_sysconfdir}/default/atop|%{_sysconfdir}/sysconfig/atop|g" atop.service
@@ -93,6 +95,9 @@ install -Dp -m 0644 atop-rotate.* %{buildroot}%{_unitdir}/
9395
%{_sbindir}/atopacctd
9496

9597
%changelog
98+
* Mon 10 Nov 2025 Aditya Singh <v-aditysing@microsoft.com> - 2.6.0-10
99+
- Added Patch for CVE-2025-31160
100+
96101
* Wed Sep 20 2023 Jon Slobodzian <joslobo@microsoft.com> - 2.6.0-9
97102
- Recompile with stack-protection fixed gcc version (CVE-2023-4039)
98103

SPECS/ceph/CVE-2024-47866.patch

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
From 9d2825f03bb094836052de8c35666e7a720c1f28 Mon Sep 17 00:00:00 2001
2+
From: Suyash Dongre <suyashd999@gmail.com>
3+
Date: Wed, 20 Aug 2025 23:22:41 +0530
4+
Subject: [PATCH] Check if `HTTP_X_AMZ_COPY_SOURCE` header is empty
5+
6+
The issue was that the `HTTP_X_AMZ_COPY_SOURCE` header could be present but empty (i.e., an empty string rather than NULL). The code only checked if the pointer was not NULL, but didn't verify that the string had content. When an empty string was passed to RGWCopyObj::parse_copy_location(), it would eventually try to access name_str[0] on an empty string, causing a crash.
7+
8+
Fixes: https://tracker.ceph.com/issues/72669
9+
10+
Signed-off-by: Suyash Dongre <suyashd999@gmail.com>
11+
Signed-off-by: Azure Linux Security Servicing Account <azurelinux-security@microsoft.com>
12+
Upstream-reference: https://patch-diff.githubusercontent.com/raw/ceph/ceph/pull/65159.patch
13+
---
14+
src/rgw/rgw_op.cc | 3 +++
15+
1 file changed, 3 insertions(+)
16+
17+
diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc
18+
index 655f057..0287e67 100644
19+
--- a/src/rgw/rgw_op.cc
20+
+++ b/src/rgw/rgw_op.cc
21+
@@ -4977,6 +4977,9 @@ bool RGWCopyObj::parse_copy_location(const std::string_view& url_src,
22+
params_str = url_src.substr(pos + 1);
23+
}
24+
25+
+ if (name_str.empty()) {
26+
+ return false;
27+
+ }
28+
if (name_str[0] == '/') // trim leading slash
29+
name_str.remove_prefix(1);
30+
31+
--
32+
2.45.4
33+

SPECS/ceph/ceph.spec

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
Summary: User space components of the Ceph file system
66
Name: ceph
77
Version: 16.2.10
8-
Release: 10%{?dist}
8+
Release: 11%{?dist}
99
License: LGPLv2 and LGPLv3 and CC-BY-SA and GPLv2 and Boost and BSD and MIT and Public Domain and GPLv3 and ASL-2.0
1010
URL: https://ceph.io/
1111
Vendor: Microsoft Corporation
@@ -21,6 +21,7 @@ Patch6: CVE-2025-1744.patch
2121
Patch7: CVE-2025-52939.patch
2222
Patch8: CVE-2024-48916.patch
2323
Patch9: CVE-2025-9648.patch
24+
Patch10: CVE-2024-47866.patch
2425
#
2526
# Copyright (C) 2004-2019 The Ceph Project Developers. See COPYING file
2627
# at the top-level directory of this distribution and at
@@ -1814,6 +1815,9 @@ exit 0
18141815
%config %{_sysconfdir}/prometheus/ceph/ceph_default_alerts.yml
18151816

18161817
%changelog
1818+
* Fri Nov 14 2025 Azure Linux Security Servicing Account <azurelinux-security@microsoft.com> - 16.2.10-11
1819+
- Patch for CVE-2024-47866
1820+
18171821
* Fri Oct 03 2025 Azure Linux Security Servicing Account <azurelinux-security@microsoft.com> - 16.2.10-10
18181822
- Patch for CVE-2025-9648
18191823

SPECS/cmake/CVE-2025-5916.patch

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
From cb083a8451e8bb463512d7cd18d4698bf27c6fcf Mon Sep 17 00:00:00 2001
2+
From: dj_palli <v-dpalli@microsoft.com>
3+
Date: Thu, 19 Jun 2025 12:55:15 +0000
4+
Subject: [PATCH] Address CVE-2025-5916
5+
6+
Upstream patch reference:https://github.com/libarchive/libarchive/pull/2568
7+
8+
---
9+
Utilities/cmlibarchive/libarchive/archive_read_support_format_warc.c | 7 +++++--
10+
1 file changed, 5 insertions(+), 2 deletions(-)
11+
12+
diff --git a/Utilities/cmlibarchive/libarchive/archive_read_support_format_warc.c b/Utilities/cmlibarchive/libarchive/archive_read_support_format_warc.c
13+
index 72977b8e..0f3ee8d1 100644
14+
--- a/Utilities/cmlibarchive/libarchive/archive_read_support_format_warc.c
15+
+++ b/Utilities/cmlibarchive/libarchive/archive_read_support_format_warc.c
16+
@@ -363,7 +363,8 @@ start_over:
17+
/* FALLTHROUGH */
18+
default:
19+
/* consume the content and start over */
20+
- _warc_skip(a);
21+
+ if (_warc_skip(a) < 0)
22+
+ return (ARCHIVE_FATAL);
23+
goto start_over;
24+
}
25+
return (ARCHIVE_OK);
26+
@@ -416,7 +417,9 @@ _warc_skip(struct archive_read *a)
27+
{
28+
struct warc_s *w = a->format->data;
29+
30+
- __archive_read_consume(a, w->cntlen + 4U/*\r\n\r\n separator*/);
31+
+ if (__archive_read_consume(a, w->cntlen) < 0 ||
32+
+ __archive_read_consume(a, 4U/*\r\n\r\n separator*/) < 0)
33+
+ return (ARCHIVE_FATAL);
34+
w->cntlen = 0U;
35+
w->cntoff = 0U;
36+
return (ARCHIVE_OK);
37+
--
38+
2.45.2
39+

SPECS/cmake/CVE-2025-5917.patch

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
From b211326905f20a8c9611911ebfef8a40c84757eb Mon Sep 17 00:00:00 2001
2+
From: dj_palli <v-dpalli@microsoft.com>
3+
Date: Thu, 19 Jun 2025 13:36:28 +0000
4+
Subject: [PATCH] Address CVE-2025-5917
5+
6+
Upstream patch reference:https://github.com/libarchive/libarchive/pull/2588
7+
8+
---
9+
Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c | 4 ++--
10+
1 file changed, 2 insertions(+), 2 deletions(-)
11+
12+
diff --git a/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c b/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c
13+
index a2b27107..0e0c71eb 100644
14+
--- a/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c
15+
+++ b/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c
16+
@@ -1542,7 +1542,7 @@ build_ustar_entry_name(char *dest, const char *src, size_t src_length,
17+
const char *filename, *filename_end;
18+
char *p;
19+
int need_slash = 0; /* Was there a trailing slash? */
20+
- size_t suffix_length = 99;
21+
+ size_t suffix_length = 98; /* 99 - 1 for trailing slash */
22+
size_t insert_length;
23+
24+
/* Length of additional dir element to be added. */
25+
@@ -1594,7 +1594,7 @@ build_ustar_entry_name(char *dest, const char *src, size_t src_length,
26+
/* Step 2: Locate the "prefix" section of the dirname, including
27+
* trailing '/'. */
28+
prefix = src;
29+
- prefix_end = prefix + 155;
30+
+ prefix_end = prefix + 154 /* 155 - 1 for trailing / */;
31+
if (prefix_end > filename)
32+
prefix_end = filename;
33+
while (prefix_end > prefix && *prefix_end != '/')
34+
--
35+
2.45.2
36+

SPECS/cmake/CVE-2025-5918.patch

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
From 8a0cc2ca12fc939ac7390776ae12de627372650d Mon Sep 17 00:00:00 2001
2+
From: Durga Jagadeesh Palli <v-dpalli@microsoft.com>
3+
Date: Tue, 9 Sep 2025 00:32:16 +0000
4+
Subject: [PATCH] Address CVE-2025-5918 and fix the FILE skip regression.
5+
6+
Upstream Patch Reference: https://github.com/libarchive/libarchive/pull/2584
7+
Upstream Patch Reference for fix FILE_skip regression: https://github.com/libarchive/libarchive/pull/2642
8+
9+
---
10+
Utilities/cmlibarchive/libarchive/archive_read_open_fd.c | 13 +++++--
11+
Utilities/cmlibarchive/libarchive/archive_read_open_file.c | 36 ++++++++++++++-----
12+
Utilities/cmlibarchive/libarchive/archive_read_open_filename.c | 30 ++++++++++++----
13+
3 files changed, 62 insertions(+), 17 deletions(-)
14+
15+
diff --git a/Utilities/cmlibarchive/libarchive/archive_read_open_fd.c b/Utilities/cmlibarchive/libarchive/archive_read_open_fd.c
16+
index f59cd07f..f8c5d0a1 100644
17+
--- a/Utilities/cmlibarchive/libarchive/archive_read_open_fd.c
18+
+++ b/Utilities/cmlibarchive/libarchive/archive_read_open_fd.c
19+
@@ -53,6 +53,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_open_fd.c 201103 2009-12-28
20+
struct read_fd_data {
21+
int fd;
22+
size_t block_size;
23+
+ int64_t size;
24+
char use_lseek;
25+
void *buffer;
26+
};
27+
@@ -96,6 +97,7 @@ archive_read_open_fd(struct archive *a, int fd, size_t block_size)
28+
if (S_ISREG(st.st_mode)) {
29+
archive_read_extract_set_skip_file(a, st.st_dev, st.st_ino);
30+
mine->use_lseek = 1;
31+
+ mine->size = st.st_size;
32+
}
33+
#if defined(__CYGWIN__) || defined(_WIN32)
34+
setmode(mine->fd, O_BINARY);
35+
@@ -152,9 +154,14 @@ file_skip(struct archive *a, void *client_data, int64_t request)
36+
if (request == 0)
37+
return (0);
38+
39+
- if (((old_offset = lseek(mine->fd, 0, SEEK_CUR)) >= 0) &&
40+
- ((new_offset = lseek(mine->fd, skip, SEEK_CUR)) >= 0))
41+
- return (new_offset - old_offset);
42+
+ if ((old_offset = lseek(mine->fd, 0, SEEK_CUR)) >= 0) {
43+
+ if (old_offset >= mine->size ||
44+
+ skip > mine->size - old_offset) {
45+
+ /* Do not seek past end of file. */
46+
+ errno = ESPIPE;
47+
+ } else if ((new_offset = lseek(mine->fd, skip, SEEK_CUR)) >= 0)
48+
+ return (new_offset - old_offset);
49+
+ }
50+
51+
/* If seek failed once, it will probably fail again. */
52+
mine->use_lseek = 0;
53+
diff --git a/Utilities/cmlibarchive/libarchive/archive_read_open_file.c b/Utilities/cmlibarchive/libarchive/archive_read_open_file.c
54+
index 101dae6c..de77e74f 100644
55+
--- a/Utilities/cmlibarchive/libarchive/archive_read_open_file.c
56+
+++ b/Utilities/cmlibarchive/libarchive/archive_read_open_file.c
57+
@@ -53,6 +53,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_open_file.c 201093 2009-12-
58+
struct read_FILE_data {
59+
FILE *f;
60+
size_t block_size;
61+
+ int64_t size;
62+
void *buffer;
63+
char can_skip;
64+
};
65+
@@ -91,6 +92,7 @@ archive_read_open_FILE(struct archive *a, FILE *f)
66+
archive_read_extract_set_skip_file(a, st.st_dev, st.st_ino);
67+
/* Enable the seek optimization only for regular files. */
68+
mine->can_skip = 1;
69+
+ mine->size = st.st_size;
70+
} else
71+
mine->can_skip = 0;
72+
73+
@@ -130,6 +132,7 @@ file_skip(struct archive *a, void *client_data, int64_t request)
74+
#else
75+
long skip = (long)request;
76+
#endif
77+
+ int64_t old_offset, new_offset = -1;
78+
int skip_bits = sizeof(skip) * 8 - 1;
79+
80+
(void)a; /* UNUSED */
81+
@@ -153,19 +156,36 @@ file_skip(struct archive *a, void *client_data, int64_t request)
82+
83+
#ifdef __ANDROID__
84+
/* fileno() isn't safe on all platforms ... see above. */
85+
- if (lseek(fileno(mine->f), skip, SEEK_CUR) < 0)
86+
+ old_offset = lseek(fileno(mine->f), 0, SEEK_CUR);
87+
#elif HAVE_FSEEKO
88+
- if (fseeko(mine->f, skip, SEEK_CUR) != 0)
89+
+ old_offset = ftello(mine->f);
90+
#elif HAVE__FSEEKI64
91+
- if (_fseeki64(mine->f, skip, SEEK_CUR) != 0)
92+
+ old_offset = _ftelli64(mine->f);
93+
#else
94+
- if (fseek(mine->f, skip, SEEK_CUR) != 0)
95+
+ old_offset = ftell(mine->f);
96+
#endif
97+
- {
98+
- mine->can_skip = 0;
99+
- return (0);
100+
+ if (old_offset >= 0) {
101+
+ if (old_offset < mine->size &&
102+
+ skip <= mine->size - old_offset) {
103+
+#ifdef __ANDROID__
104+
+ new_offset = lseek(fileno(mine->f), skip, SEEK_CUR);
105+
+#elif HAVE__FSEEKI64
106+
+ if (_fseeki64(mine->f, skip, SEEK_CUR) == 0)
107+
+ new_offset = _ftelli64(mine->f);
108+
+#elif HAVE_FSEEKO
109+
+ if (fseeko(mine->f, skip, SEEK_CUR) == 0)
110+
+ new_offset = ftello(mine->f);
111+
+#else
112+
+ if (fseek(mine->f, skip, SEEK_CUR) == 0)
113+
+ new_offset = ftell(mine->f);
114+
+#endif
115+
+ if (new_offset >= 0)
116+
+ return (new_offset - old_offset);
117+
+ }
118+
}
119+
- return (request);
120+
+
121+
+ mine->can_skip = 0;
122+
+ return (0);
123+
}
124+
125+
static int
126+
diff --git a/Utilities/cmlibarchive/libarchive/archive_read_open_filename.c b/Utilities/cmlibarchive/libarchive/archive_read_open_filename.c
127+
index 86635e21..84556a15 100644
128+
--- a/Utilities/cmlibarchive/libarchive/archive_read_open_filename.c
129+
+++ b/Utilities/cmlibarchive/libarchive/archive_read_open_filename.c
130+
@@ -75,6 +75,7 @@ struct read_file_data {
131+
size_t block_size;
132+
void *buffer;
133+
mode_t st_mode; /* Mode bits for opened file. */
134+
+ int64_t size;
135+
char use_lseek;
136+
enum fnt_e { FNT_STDIN, FNT_MBS, FNT_WCS } filename_type;
137+
union {
138+
@@ -366,8 +367,10 @@ file_open(struct archive *a, void *client_data)
139+
mine->st_mode = st.st_mode;
140+
141+
/* Disk-like inputs can use lseek(). */
142+
- if (is_disk_like)
143+
+ if (is_disk_like) {
144+
mine->use_lseek = 1;
145+
+ mine->size = st.st_size;
146+
+ }
147+
148+
return (ARCHIVE_OK);
149+
fail:
150+
@@ -445,21 +448,36 @@ file_skip_lseek(struct archive *a, void *client_data, int64_t request)
151+
struct read_file_data *mine = (struct read_file_data *)client_data;
152+
#if defined(_WIN32) && !defined(__CYGWIN__)
153+
/* We use _lseeki64() on Windows. */
154+
- int64_t old_offset, new_offset;
155+
+ int64_t old_offset, new_offset, skip = request;;
156+
#else
157+
- off_t old_offset, new_offset;
158+
+ off_t old_offset, new_offset, skip = (off_t)request;
159+
#endif
160+
+ int skip_bits = sizeof(skip) * 8 - 1;
161+
162+
/* We use off_t here because lseek() is declared that way. */
163+
164+
+ /* Reduce a request that would overflow the 'skip' variable. */
165+
+ if (sizeof(request) > sizeof(skip)) {
166+
+ const int64_t max_skip =
167+
+ (((int64_t)1 << (skip_bits - 1)) - 1) * 2 + 1;
168+
+ if (request > max_skip)
169+
+ skip = max_skip;
170+
+ }
171+
+
172+
/* TODO: Deal with case where off_t isn't 64 bits.
173+
* This shouldn't be a problem on Linux or other POSIX
174+
* systems, since the configuration logic for libarchive
175+
* tries to obtain a 64-bit off_t.
176+
*/
177+
- if ((old_offset = lseek(mine->fd, 0, SEEK_CUR)) >= 0 &&
178+
- (new_offset = lseek(mine->fd, request, SEEK_CUR)) >= 0)
179+
- return (new_offset - old_offset);
180+
+
181+
+ if ((old_offset = lseek(mine->fd, 0, SEEK_CUR)) >= 0) {
182+
+ if (old_offset >= mine->size ||
183+
+ skip > mine->size - old_offset) {
184+
+ /* Do not seek past end of file. */
185+
+ errno = ESPIPE;
186+
+ } else if ((new_offset = lseek(mine->fd, skip, SEEK_CUR)) >= 0)
187+
+ return (new_offset - old_offset);
188+
+ }
189+
190+
/* If lseek() fails, don't bother trying again. */
191+
mine->use_lseek = 0;
192+
--
193+
2.45.4
194+

0 commit comments

Comments
 (0)