* [OE-core][scarthgap 00/48] Patch review
@ 2026-09-23 9:10 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 01/48] wireless-regdb: upgrade 2026.05.30 -> 2026.09.03 Yoann Congal
` (47 more replies)
0 siblings, 48 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
Hello,
Some notable changes in this series:
* ptest-runner upgrade to try to decrease ptest AB-INT failures
* pseudo upgrade to maximize host distro compatibility
* GCC stable upgrade to 13.5
Please review this set of changes for scarthgap and have comments back by
end of day Friday, September 25.
Passed a-full on autobuilder:
https://autobuilder.yoctoproject.org/valkyrie/?#/builders/29/builds/4792
oe-selftest-fedora failed with 16206 – [scarthgap] AB-INT: runtime_test.SystemTap.test_crosstap_* failures
retried in https://autobuilder.yoctoproject.org/valkyrie/?#/builders/48/builds/4720
The following changes since commit 04f18f976b3809e195433b6b31a6121014bdc37c:
u-boot, u-boot-tools: Fix CVE-2026-46728 (2026-09-17 16:32:11 +0200)
are available in the Git repository at:
https://git.openembedded.org/openembedded-core-contrib stable/scarthgap-nut
https://git.openembedded.org/openembedded-core-contrib/log/?h=stable/scarthgap-nut
for you to fetch changes up to 70778df2c2882f1abbdd4dd2f8d229ade720d8a4:
time64: enable 64-bit time/file-offset flags for 32-bit nativesdk (2026-09-23 01:10:36 +0200)
----------------------------------------------------------------
Adarsh Jagadish Kamini (1):
gnutls: fix CVE-2026-33845
Daniel Turull (1):
improve_kernel_cve_report: validate that cve details field exists
Darsh Kelaiya (1):
python3-git: fix CVE-2026-42215
Devansh Patel (3):
python3-mako: correct CVE_PRODUCT mapping
curl: set CVE_STATUS for CVE-2026-8458
vim: Fix CVE-2026-52858 regression
Hemanth Kumar M D (1):
gcc: Upgrade to GCC 13.5
Hetvi Thakar (4):
python3-pip: set CVE_STATUS for CVE-2018-20225
python3-ply: set status for CVE-2025-56005
python3-pip: Fix CVE-2026-13346
wget: Fix CVE-2026-58470
Hiago De Franco (1):
improve_kernel_cve_report: fix backported-patch check
Hitendra Prajapati (5):
vim: Fix for CVE-2026-73072
vim: Fix for CVE-2026-73073
vim: Fix for CVE-2026-73074
vim: Fix for CVE-2026-73077
vim: Fix for CVE-2026-73078
Jaipaul Cheernam (2):
ca-certificates: upgrade 20260601 -> 20260816
perl: Fix CVE-2026-19487
Jakub Szczudlo (Nokia) (1):
gnutls: fix CVE-2026-5419
Kyungjik Min (1):
rootfs.py: fix run-postinsts removal on multilib images
Peter Marko (5):
cpio: patch CVE-2026-66485
cpio: patch CVE-2026-66484
golang: fix homepage
python3-certifi: fix homepage
libslirp: patch CVE-2026-9539
Peter Tatrai (2):
testimage: avoid symlinking missing qemu boot log
time64: enable 64-bit time/file-offset flags for 32-bit nativesdk
Richard Purdie (5):
wireless-regdb: upgrade 2026.05.30 -> 2026.09.03
ptest-runner: Upgrade 2.5.0 -> 2.5.1
pseudo: Add in openat2, exec and linkat fixes
pseudo: Update to 1.9.10
pseudo: 1.9.10 -> 1.9.11
Siddharth Doshi (3):
curl: Security Fix for CVE-2026-13608
curl: Security Fix for CVE-2026-18924
curl: set CVE_STATUS for CVE-2026-82209
Stefano Tondo (1):
spdx30_tasks: Fix SPDX_CUSTOM_ANNOTATION_VARS implementation
Vijay Anusuri (7):
kbd: Fix CVE-2026-72693
libxfont: Fix CVE-2026-56001
libxfont: Fix CVE-2026-56002
libxfont: Fix CVE-2026-56003
python3-cryptography: Fix CVE-2026-34073
python3-cryptography: Fix CVE-2026-69248
python3-cryptography: Fix CVE-2026-69249
Wang Mingyu (1):
ptest-runner: upgrade 2.4.5 -> 2.4.5.1
Yoann Congal (3):
scripts/install-buildtools: Update to 5.0.20
python3: skip ptest incompatible with ptest-runner >= 2.5.0
ptest-runner: Upgrade 2.4.5.1 -> 2.5.0
meta/classes-recipe/testimage.bbclass | 5 +-
meta/conf/distro/include/maintainers.inc | 2 +-
meta/conf/distro/include/time64.inc | 17 +
meta/lib/oe/rootfs.py | 3 +-
meta/lib/oe/spdx30_tasks.py | 4 +-
meta/lib/oeqa/selftest/cases/spdx.py | 74 ++++
.../slirp/libslirp/CVE-2026-9539.patch | 122 ++++++
.../slirp/libslirp_git.bb | 5 +-
.../recipes-core/kbd/kbd/CVE-2026-72693.patch | 155 ++++++++
meta/recipes-core/kbd/kbd_2.6.4.bb | 1 +
.../gcc/{gcc-13.4.inc => gcc-13.5.inc} | 9 +-
...ian_13.4.bb => gcc-cross-canadian_13.5.bb} | 0
.../{gcc-cross_13.4.bb => gcc-cross_13.5.bb} | 0
...-crosssdk_13.4.bb => gcc-crosssdk_13.5.bb} | 0
...cc-runtime_13.4.bb => gcc-runtime_13.5.bb} | 0
...itizers_13.4.bb => gcc-sanitizers_13.5.bb} | 0
...{gcc-source_13.4.bb => gcc-source_13.5.bb} | 0
...dy-Make-it-buildable-by-C-11-to-C-26.patch | 257 -------------
...build-Remove-INCLUDE_MEMORY-PR117737.patch | 46 ---
...am-include-above-safe-ctype.h-PR1177.patch | 54 ---
.../gcc/{gcc_13.4.bb => gcc_13.5.bb} | 0
...initial_13.4.bb => libgcc-initial_13.5.bb} | 0
.../gcc/{libgcc_13.4.bb => libgcc_13.5.bb} | 0
...ibgfortran_13.4.bb => libgfortran_13.5.bb} | 0
.../go/go-binary-native_1.22.12.bb | 2 +-
meta/recipes-devtools/go/go-common.inc | 2 +-
.../perl/files/CVE-2026-19487.patch | 66 ++++
meta/recipes-devtools/perl/perl_5.38.4.bb | 1 +
meta/recipes-devtools/pseudo/pseudo_git.bb | 4 +-
.../python/python3-certifi_2024.2.2.bb | 2 +-
.../python3-cryptography/CVE-2026-34073.patch | 167 +++++++++
.../python3-cryptography/CVE-2026-69248.patch | 299 +++++++++++++++
.../python3-cryptography/CVE-2026-69249.patch | 354 ++++++++++++++++++
.../python/python3-cryptography_42.0.5.bb | 3 +
.../python3-git/CVE-2026-42215_p1.patch | 61 +++
.../python3-git/CVE-2026-42215_p2.patch | 47 +++
.../python/python3-git_3.1.42.bb | 2 +
.../python/python3-mako_1.3.2.bb | 2 +
.../python/python3-pip/CVE-2026-13346.patch | 223 +++++++++++
.../python/python3-pip_24.0.bb | 2 +
.../python/python3-ply_3.11.bb | 1 +
.../python/python3_3.12.14.bb | 6 +
meta/recipes-extended/cpio/cpio_2.15.bb | 2 +
.../cpio/files/CVE-2026-66484.patch | 28 ++
.../cpio/files/CVE-2026-66485.patch | 210 +++++++++++
.../wget/wget/CVE-2026-58470-regression.patch | 48 +++
.../wget/wget/CVE-2026-58470.patch | 79 ++++
meta/recipes-extended/wget/wget_1.21.4.bb | 2 +
.../xorg-lib/libxfont/CVE-2026-56001.patch | 87 +++++
.../xorg-lib/libxfont/CVE-2026-56002.patch | 150 ++++++++
.../xorg-lib/libxfont/CVE-2026-56003.patch | 114 ++++++
.../xorg-lib/libxfont_1.5.4.bb | 5 +
....05.30.bb => wireless-regdb_2026.09.03.bb} | 2 +-
...ertdata2pem.py-print-a-warning-for-e.patch | 6 +-
...icates-don-t-use-Debianisms-in-run-p.patch | 2 +-
...icates-use-relative-symlinks-from-ET.patch | 2 +-
...0260601.bb => ca-certificates_20260816.bb} | 2 +-
.../curl/curl/CVE-2026-13608.patch | 48 +++
.../curl/curl/CVE-2026-18924.patch | 39 ++
meta/recipes-support/curl/curl_8.7.1.bb | 5 +-
.../gnutls/gnutls/CVE-2026-33845.patch | 190 ++++++++++
.../gnutls/gnutls/CVE-2026-5419.patch | 247 ++++++++++++
meta/recipes-support/gnutls/gnutls_3.8.4.bb | 2 +
...-runner_2.4.5.bb => ptest-runner_2.5.1.bb} | 3 +-
.../vim/files/CVE-2026-52858-regression.patch | 94 +++++
.../vim/files/CVE-2026-73072.patch | 64 ++++
.../vim/files/CVE-2026-73073.patch | 89 +++++
.../vim/files/CVE-2026-73074.patch | 101 +++++
.../vim/files/CVE-2026-73077.patch | 96 +++++
.../vim/files/CVE-2026-73078.patch | 94 +++++
meta/recipes-support/vim/vim.inc | 6 +
scripts/contrib/improve_kernel_cve_report.py | 4 +-
scripts/install-buildtools | 4 +-
73 files changed, 3434 insertions(+), 389 deletions(-)
create mode 100644 meta/recipes-connectivity/slirp/libslirp/CVE-2026-9539.patch
create mode 100644 meta/recipes-core/kbd/kbd/CVE-2026-72693.patch
rename meta/recipes-devtools/gcc/{gcc-13.4.inc => gcc-13.5.inc} (93%)
rename meta/recipes-devtools/gcc/{gcc-cross-canadian_13.4.bb => gcc-cross-canadian_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-cross_13.4.bb => gcc-cross_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-crosssdk_13.4.bb => gcc-crosssdk_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-runtime_13.4.bb => gcc-runtime_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-sanitizers_13.4.bb => gcc-sanitizers_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-source_13.4.bb => gcc-source_13.5.bb} (100%)
delete mode 100644 meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
delete mode 100644 meta/recipes-devtools/gcc/gcc/0029-build-Remove-INCLUDE_MEMORY-PR117737.patch
delete mode 100644 meta/recipes-devtools/gcc/gcc/0030-build-Move-sstream-include-above-safe-ctype.h-PR1177.patch
rename meta/recipes-devtools/gcc/{gcc_13.4.bb => gcc_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{libgcc-initial_13.4.bb => libgcc-initial_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{libgcc_13.4.bb => libgcc_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{libgfortran_13.4.bb => libgfortran_13.5.bb} (100%)
create mode 100644 meta/recipes-devtools/perl/files/CVE-2026-19487.patch
create mode 100644 meta/recipes-devtools/python/python3-cryptography/CVE-2026-34073.patch
create mode 100644 meta/recipes-devtools/python/python3-cryptography/CVE-2026-69248.patch
create mode 100644 meta/recipes-devtools/python/python3-cryptography/CVE-2026-69249.patch
create mode 100644 meta/recipes-devtools/python/python3-git/CVE-2026-42215_p1.patch
create mode 100644 meta/recipes-devtools/python/python3-git/CVE-2026-42215_p2.patch
create mode 100644 meta/recipes-devtools/python/python3-pip/CVE-2026-13346.patch
create mode 100644 meta/recipes-extended/cpio/files/CVE-2026-66484.patch
create mode 100644 meta/recipes-extended/cpio/files/CVE-2026-66485.patch
create mode 100644 meta/recipes-extended/wget/wget/CVE-2026-58470-regression.patch
create mode 100644 meta/recipes-extended/wget/wget/CVE-2026-58470.patch
create mode 100644 meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56001.patch
create mode 100644 meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56002.patch
create mode 100644 meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56003.patch
rename meta/recipes-kernel/wireless-regdb/{wireless-regdb_2026.05.30.bb => wireless-regdb_2026.09.03.bb} (94%)
rename meta/recipes-support/ca-certificates/{ca-certificates_20260601.bb => ca-certificates_20260816.bb} (97%)
create mode 100644 meta/recipes-support/curl/curl/CVE-2026-13608.patch
create mode 100644 meta/recipes-support/curl/curl/CVE-2026-18924.patch
create mode 100644 meta/recipes-support/gnutls/gnutls/CVE-2026-33845.patch
create mode 100644 meta/recipes-support/gnutls/gnutls/CVE-2026-5419.patch
rename meta/recipes-support/ptest-runner/{ptest-runner_2.4.5.bb => ptest-runner_2.5.1.bb} (94%)
create mode 100644 meta/recipes-support/vim/files/CVE-2026-52858-regression.patch
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73072.patch
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73073.patch
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73074.patch
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73077.patch
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73078.patch
^ permalink raw reply [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 01/48] wireless-regdb: upgrade 2026.05.30 -> 2026.09.03
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 02/48] ca-certificates: upgrade 20260601 -> 20260816 Yoann Congal
` (46 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 7e92e1fe36a5767a7b31d96b9897357e0aa28cec)
Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
...ireless-regdb_2026.05.30.bb => wireless-regdb_2026.09.03.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-kernel/wireless-regdb/{wireless-regdb_2026.05.30.bb => wireless-regdb_2026.09.03.bb} (94%)
diff --git a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2026.05.30.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2026.09.03.bb
similarity index 94%
rename from meta/recipes-kernel/wireless-regdb/wireless-regdb_2026.05.30.bb
rename to meta/recipes-kernel/wireless-regdb/wireless-regdb_2026.09.03.bb
index e544b729656..ad84208f6e9 100644
--- a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2026.05.30.bb
+++ b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2026.09.03.bb
@@ -5,7 +5,7 @@ LICENSE = "ISC"
LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c"
SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz"
-SRC_URI[sha256sum] = "8a27bfc081bafed8c24dd70fab0d96f098e5a0bfcd08d3da672595f225ab8993"
+SRC_URI[sha256sum] = "b22e0901227b820cd1c280abe681a15b773a5103a5e10dc442e94ebb34cbf58d"
inherit bin_package allarch
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 02/48] ca-certificates: upgrade 20260601 -> 20260816
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 01/48] wireless-regdb: upgrade 2026.05.30 -> 2026.09.03 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 03/48] testimage: avoid symlinking missing qemu boot log Yoann Congal
` (45 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
Source: debian/changelog
ca-certificates (20260816) unstable; urgency=medium
* Update Mozilla certificate authority bundle to version 2.90
The following certificate authorities were added (+):
+ "SECOM TLS ECC Root CA 2024"
+ "SECOM TLS RSA Root CA 2024"
+ "Telia EC TLS Root CA v3"
+ "Telia RSA TLS Root CA v3"
The following certificate authorities were removed (-):
- "Atos TrustedRoot 2011"
- "Entrust Root Certification Authority"
- "SecureSign Root CA12"
- "ePKI Root Certification Authority"
-- Julien Cristau <jcristau@debian.org> Sun, 16 Aug 2026 23:04:36 +0200
Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e639396818e7152896e75364cff5fb97ae19cb32)
Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
...vert-mozilla-certdata2pem.py-print-a-warning-for-e.patch | 6 +++---
...date-ca-certificates-don-t-use-Debianisms-in-run-p.patch | 2 +-
...date-ca-certificates-use-relative-symlinks-from-ET.patch | 2 +-
...certificates_20260601.bb => ca-certificates_20260816.bb} | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
rename meta/recipes-support/ca-certificates/{ca-certificates_20260601.bb => ca-certificates_20260816.bb} (97%)
diff --git a/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch b/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch
index 1226508c983..001b4686246 100644
--- a/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch
+++ b/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch
@@ -1,4 +1,4 @@
-From 743774cd53ed1c45bb660eddacf6dadb5ee3e145 Mon Sep 17 00:00:00 2001
+From 8ea56b7d5eadb04309dc3cf1e6b0d94d1d053d80 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex@linutronix.de>
Date: Mon, 18 Oct 2021 12:05:49 +0200
Subject: [PATCH] Revert "mozilla/certdata2pem.py: print a warning for expired
@@ -16,10 +16,10 @@ Signed-off-by: Alexander Kanavin <alex@linutronix.de>
3 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/debian/changelog b/debian/changelog
-index dbe3e9c..496e05d 100644
+index 7ad495f..058ef5e 100644
--- a/debian/changelog
+++ b/debian/changelog
-@@ -156,7 +156,6 @@ ca-certificates (20211004) unstable; urgency=low
+@@ -234,7 +234,6 @@ ca-certificates (20211004) unstable; urgency=low
- "Trustis FPS Root CA"
- "Staat der Nederlanden Root CA - G3"
* Blacklist expired root certificate "DST Root CA X3" (closes: #995432)
diff --git a/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch b/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch
index 1a29da756fc..dcfa3554117 100644
--- a/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch
+++ b/meta/recipes-support/ca-certificates/ca-certificates/0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch
@@ -1,4 +1,4 @@
-From 63086d41f76b1c3357e23c6509df72d3f75af20c Mon Sep 17 00:00:00 2001
+From bab2e13b69af12c1864cccf371ebc4ef57a6fec2 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Mon, 6 Jul 2015 15:19:41 +0100
Subject: [PATCH] ca-certificates: remove Debianism in run-parts invocation
diff --git a/meta/recipes-support/ca-certificates/ca-certificates/0003-update-ca-certificates-use-relative-symlinks-from-ET.patch b/meta/recipes-support/ca-certificates/ca-certificates/0003-update-ca-certificates-use-relative-symlinks-from-ET.patch
index 929945b56f9..4d97c81b0d7 100644
--- a/meta/recipes-support/ca-certificates/ca-certificates/0003-update-ca-certificates-use-relative-symlinks-from-ET.patch
+++ b/meta/recipes-support/ca-certificates/ca-certificates/0003-update-ca-certificates-use-relative-symlinks-from-ET.patch
@@ -1,4 +1,4 @@
-From a69933f96a8675369de702bdb55e57dc21f65e7f Mon Sep 17 00:00:00 2001
+From 8a5b4e2dd1479de0338db7a7234d037ef0f71c2f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@jci.com>
Date: Wed, 28 Mar 2018 16:45:05 +0100
Subject: [PATCH] update-ca-certificates: use relative symlinks from
diff --git a/meta/recipes-support/ca-certificates/ca-certificates_20260601.bb b/meta/recipes-support/ca-certificates/ca-certificates_20260816.bb
similarity index 97%
rename from meta/recipes-support/ca-certificates/ca-certificates_20260601.bb
rename to meta/recipes-support/ca-certificates/ca-certificates_20260816.bb
index b23f20a7828..33ca9291f4d 100644
--- a/meta/recipes-support/ca-certificates/ca-certificates_20260601.bb
+++ b/meta/recipes-support/ca-certificates/ca-certificates_20260816.bb
@@ -14,7 +14,7 @@ DEPENDS:class-nativesdk = "openssl-native"
# Need rehash from openssl and run-parts from debianutils
PACKAGE_WRITE_DEPS += "openssl-native debianutils-native"
-SRC_URI[sha256sum] = "7ab6301f7f34eef90a4d278647c260bc0762e0e14561f4649854cf4b0d4bea21"
+SRC_URI[sha256sum] = "d939bcdd0cb058712cf4175bac76997676eb8b68fe9473765e1b40fb3d5b186a"
SRC_URI = "${DEBIAN_MIRROR}/main/c/ca-certificates/${BPN}_${PV}.tar.xz \
file://0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch \
file://0003-update-ca-certificates-use-relative-symlinks-from-ET.patch \
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 03/48] testimage: avoid symlinking missing qemu boot log
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 01/48] wireless-regdb: upgrade 2026.05.30 -> 2026.09.03 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 02/48] ca-certificates: upgrade 20260601 -> 20260816 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 04/48] python3-pip: set CVE_STATUS for CVE-2018-20225 Yoann Congal
` (44 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Peter Tatrai <peter.tatrai.ext@siemens.com>
When qemu test runs only produce suffixed bootlog variants, the base
bootlog path may not exist. os.symlink() creates a dangling symlink
in the oeqa result log directory.
Avoid advertising a boot log in the collected test results when that
path does not exist. Guard the symlink creation and log a note instead.
This is a partial backport of master commit
7a6596925cb0eb8dd48a0362a51875cdd60152bc. Only the symlink guard is
picked here; the bootlog variant globbing from master is not applicable
to scarthgap.
Signed-off-by: Peter Tatrai <peter.tatrai.ext@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/classes-recipe/testimage.bbclass | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass
index 33b1c13f9dd..744de5d7de7 100644
--- a/meta/classes-recipe/testimage.bbclass
+++ b/meta/classes-recipe/testimage.bbclass
@@ -395,7 +395,10 @@ def testimage_main(d):
# Copy additional logs to tmp/log/oeqa so it's easier to find them
targetdir = os.path.join(get_json_result_dir(d), d.getVar("PN"))
os.makedirs(targetdir, exist_ok=True)
- os.symlink(bootlog, os.path.join(targetdir, os.path.basename(bootlog)))
+ if os.path.exists(bootlog):
+ os.symlink(bootlog, os.path.join(targetdir, os.path.basename(bootlog)))
+ else:
+ bb.note("testimage: boot log not found at %s" % bootlog)
os.symlink(d.getVar("BB_LOGFILE"), os.path.join(targetdir, os.path.basename(d.getVar("BB_LOGFILE") + "." + d.getVar('DATETIME'))))
if not results or not complete:
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 04/48] python3-pip: set CVE_STATUS for CVE-2018-20225
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (2 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 03/48] testimage: avoid symlinking missing qemu boot log Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 05/48] python3-ply: set status for CVE-2025-56005 Yoann Congal
` (43 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hetvi Thakar <hthakar@cisco.com>
Analysis:
- NVD marks CVE-2018-20225 as disputed. [1]
- pip searches all configured package indexes without priority and selects
the highest matching version. --extra-index-url adds an equal-priority
package source. [2]
- Exploitation requires use of --extra-index-url and an attacker-published,
higher-version package with the name of a private package. [1]
- Upstream closed the related report as not planned, and Red Hat classified
the issue as WONTFIX because this behavior is intentional. [3][4]
- Record the disputed status; no source patch is available.
Reference:
[1] https://nvd.nist.gov/vuln/detail/CVE-2018-20225
[2] https://pip.pypa.io/en/stable/cli/pip_install/
[3] https://github.com/pypa/pip/issues/12874
[4] https://bugzilla.redhat.com/show_bug.cgi?id=1835736
Signed-off-by: Hetvi Thakar <hthakar@cisco.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-devtools/python/python3-pip_24.0.bb | 1 +
1 file changed, 1 insertion(+)
diff --git a/meta/recipes-devtools/python/python3-pip_24.0.bb b/meta/recipes-devtools/python/python3-pip_24.0.bb
index d535e1f53d7..709ec9f2b6c 100644
--- a/meta/recipes-devtools/python/python3-pip_24.0.bb
+++ b/meta/recipes-devtools/python/python3-pip_24.0.bb
@@ -45,6 +45,7 @@ do_install:append() {
}
CVE_PRODUCT = "pypa:pip"
+CVE_STATUS[CVE-2018-20225] = "disputed: Exploitation requires use of --extra-index-url with a private package not present on the primary public index; pip intentionally selects the highest version across configured indexes"
do_install:append(){
# pip vendors distlib which ships Windows launcher templates (*.exe).
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 05/48] python3-ply: set status for CVE-2025-56005
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (3 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 04/48] python3-pip: set CVE_STATUS for CVE-2018-20225 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 06/48] kbd: Fix CVE-2026-72693 Yoann Congal
` (42 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hetvi Thakar <hthakar@cisco.com>
PLY 3.11 contains the picklefile parameter described by
CVE-2025-56005, but exploitation requires an application to
explicitly pass an attacker-controlled pickle file to yacc().
No OE-Core consumer uses this parameter. Ubuntu ignores the issue for
the same reason [1], and NVD records the CVE as disputed [2].
[1] https://ubuntu.com/security/CVE-2025-56005
[2] https://nvd.nist.gov/vuln/detail/CVE-2025-56005
Signed-off-by: Hetvi Thakar <hthakar@cisco.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-devtools/python/python3-ply_3.11.bb | 1 +
1 file changed, 1 insertion(+)
diff --git a/meta/recipes-devtools/python/python3-ply_3.11.bb b/meta/recipes-devtools/python/python3-ply_3.11.bb
index 0855c871cf6..5bed977158b 100644
--- a/meta/recipes-devtools/python/python3-ply_3.11.bb
+++ b/meta/recipes-devtools/python/python3-ply_3.11.bb
@@ -16,5 +16,6 @@ RDEPENDS:${PN}:class-target += "\
"
CVE_PRODUCT = "dabeaz:ply"
+CVE_STATUS[CVE-2025-56005] = "disputed: Exploitation requires application-specific use of PLY's picklefile parameter with attacker-controlled pickle data"
BBCLASSEXTEND = "native nativesdk"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 06/48] kbd: Fix CVE-2026-72693
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (4 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 05/48] python3-ply: set status for CVE-2025-56005 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 07/48] gnutls: fix CVE-2026-33845 Yoann Congal
` (41 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Vijay Anusuri <vanusuri@mvista.com>
Pick patch according to [1]
[1] https://security-tracker.debian.org/tracker/CVE-2026-72693
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-72693
[3] https://access.redhat.com/security/cve/cve-2026-72693
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../recipes-core/kbd/kbd/CVE-2026-72693.patch | 155 ++++++++++++++++++
meta/recipes-core/kbd/kbd_2.6.4.bb | 1 +
2 files changed, 156 insertions(+)
create mode 100644 meta/recipes-core/kbd/kbd/CVE-2026-72693.patch
diff --git a/meta/recipes-core/kbd/kbd/CVE-2026-72693.patch b/meta/recipes-core/kbd/kbd/CVE-2026-72693.patch
new file mode 100644
index 00000000000..71cef126a6e
--- /dev/null
+++ b/meta/recipes-core/kbd/kbd/CVE-2026-72693.patch
@@ -0,0 +1,155 @@
+From 78d5ae119742e87baa7dbe0f5c4107e7533fd698 Mon Sep 17 00:00:00 2001
+From: Alexey Gladkov <legion@kernel.org>
+Date: Tue, 12 May 2026 10:20:50 +0200
+Subject: [PATCH] openvt: make -u process matching more conservative
+
+The -u mode relies on the current VT owner to decide which user should
+be used for the new login session. Make that check stricter by requiring
+a matching process owner and controlling terminal instead of relying on
+the ownership of an inherited file descriptor.
+
+Also reject root as a pre-authenticated target and document the tighter
+behavior in the man page.
+
+Signed-off-by: Alexey Gladkov <legion@kernel.org>
+
+Upstream-Status: Backport [https://github.com/legionus/kbd/commit/78d5ae119742e87baa7dbe0f5c4107e7533fd698]
+CVE: CVE-2026-72693
+Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
+---
+ docs/man/man1/openvt.1 | 10 +++++++
+ src/openvt.c | 64 +++++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 67 insertions(+), 7 deletions(-)
+
+diff --git a/docs/man/man1/openvt.1 b/docs/man/man1/openvt.1
+index 79bfe3f..074de96 100644
+--- a/docs/man/man1/openvt.1
++++ b/docs/man/man1/openvt.1
+@@ -36,6 +36,8 @@ will be made the new current VT.
+ .I "\-u, \-\-user"
+ Figure out the owner of the current VT, and run login as that user.
+ Suitable to be called by init. Shouldn't be used with \fI\-c\fR or \fI\-l\fR.
++This option refuses to pre-authenticate root and requires a process owned by
++the VT owner whose controlling terminal is the current VT.
+ .TP
+ .I "\-l, \-\-login"
+ Make the command a login shell. A \- is prepended to the name of the command
+@@ -64,6 +66,14 @@ If
+ is compiled with a getopt_long() and you wish to set
+ options to the command to be run, then you must supply
+ the end of options \-\- flag before the command.
++.PP
++The
++.B \-u
++option uses
++.BR "login -f"
++and therefore bypasses normal password authentication for the detected user.
++It is intended only for controlled init or keyboard-request configurations.
++Use a normal authenticated login command when authentication is required.
+ .SH EXAMPLES
+ .B openvt
+ can be used to start a shell on the next free VT, by using the command:
+diff --git a/src/openvt.c b/src/openvt.c
+index 5980361..b8436fe 100644
+--- a/src/openvt.c
++++ b/src/openvt.c
+@@ -78,6 +78,51 @@ usage(int rc, const struct kbd_help *options)
+ exit(rc);
+ }
+
++static int
++proc_pid_stat(const char *pid, uid_t *uid, dev_t *tty)
++{
++ char filename[NAME_MAX + 12];
++ char line[BUFSIZ];
++ char *lp, *rp;
++ FILE *fp;
++ struct stat st;
++ long tty_nr;
++
++ snprintf(filename, sizeof(filename), "/proc/%s/stat", pid);
++ fp = fopen(filename, "r");
++ if (!fp)
++ return -1;
++
++ if (fstat(fileno(fp), &st)) {
++ fclose(fp);
++ return -1;
++ }
++
++ if (!fgets(line, sizeof(line), fp)) {
++ fclose(fp);
++ return -1;
++ }
++ fclose(fp);
++
++ rp = strrchr(line, ')');
++ if (!rp)
++ return -1;
++
++ /*
++ * /proc/<pid>/stat fields after comm are:
++ * state ppid pgrp session tty_nr ...
++ */
++ if (!rp || sscanf(rp + 1, " %*c %*d %*d %*d %ld", &tty_nr) != 1)
++ return -1;
++
++ if (tty_nr <= 0)
++ return -1;
++
++ *uid = st.st_uid;
++ *tty = (dev_t) tty_nr;
++ return 0;
++}
++
+ /*
+ * Support for Spawn_Console: openvt running from init
+ * added by Joshua Spoerri, Thu Jul 18 21:13:16 EDT 1996
+@@ -109,8 +154,7 @@ authenticate_user(int curvt)
+ DIR *dp;
+ struct dirent *dentp;
+ struct stat buf;
+- dev_t console_dev;
+- ino_t console_ino;
++ dev_t console_rdev;
+ uid_t console_uid;
+ char filename[NAME_MAX + 12];
+ struct passwd *pwnam;
+@@ -130,10 +174,12 @@ authenticate_user(int curvt)
+ kbd_error(EXIT_FAILURE, errsv, "%s", filename);
+ }
+ }
+- console_dev = buf.st_dev;
+- console_ino = buf.st_ino;
++ console_rdev = buf.st_rdev;
+ console_uid = buf.st_uid;
+
++ if (console_uid == 0)
++ kbd_error(EXIT_FAILURE, 0, _("Refusing to pre-authenticate root on current tty."));
++
+ /* get the owner of current tty */
+ if (!(pwnam = getpwuid(console_uid)))
+ kbd_error(EXIT_FAILURE, errno, "getpwuid");
+@@ -141,12 +187,16 @@ authenticate_user(int curvt)
+ /* check to make sure that user has a process on that tty */
+ /* this will fail for example when X is running on the tty */
+ while ((dentp = readdir(dp))) {
+- sprintf(filename, "/proc/%s/fd/0", dentp->d_name);
++ uid_t proc_uid;
++ dev_t proc_tty;
++
++ if (dentp->d_name[0] < '0' || dentp->d_name[0] > '9')
++ continue;
+
+- if (stat(filename, &buf))
++ if (proc_pid_stat(dentp->d_name, &proc_uid, &proc_tty) < 0)
+ continue;
+
+- if (buf.st_dev == console_dev && buf.st_ino == console_ino && buf.st_uid == console_uid)
++ if (proc_uid == console_uid && proc_tty == console_rdev)
+ goto got_a_process;
+ }
+
+--
+2.43.0
+
diff --git a/meta/recipes-core/kbd/kbd_2.6.4.bb b/meta/recipes-core/kbd/kbd_2.6.4.bb
index 2331b51e595..489218a4029 100644
--- a/meta/recipes-core/kbd/kbd_2.6.4.bb
+++ b/meta/recipes-core/kbd/kbd_2.6.4.bb
@@ -25,6 +25,7 @@ RCONFLICTS:${PN} = "console-tools"
SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz \
file://0001-Remove-non-free-Agafari-fonts.patch \
+ file://CVE-2026-72693.patch \
"
SRC_URI[sha256sum] = "519f8d087aecca7e0a33cd084bef92c066eb19731666653dcc70c9d71aa40926"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 07/48] gnutls: fix CVE-2026-33845
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (5 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 06/48] kbd: Fix CVE-2026-72693 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 08/48] python3-mako: correct CVE_PRODUCT mapping Yoann Congal
` (40 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
Backport patch to fix CVE-2026-33845.
References:
https://nvd.nist.gov/vuln/detail/CVE-2026-33845
Upstream fix:
https://gitlab.com/gnutls/gnutls/-/commit/e5b72c53c7d789d19d1d1cd10b275e87d0415413
Signed-off-by: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../gnutls/gnutls/CVE-2026-33845.patch | 190 ++++++++++++++++++
meta/recipes-support/gnutls/gnutls_3.8.4.bb | 1 +
2 files changed, 191 insertions(+)
create mode 100644 meta/recipes-support/gnutls/gnutls/CVE-2026-33845.patch
diff --git a/meta/recipes-support/gnutls/gnutls/CVE-2026-33845.patch b/meta/recipes-support/gnutls/gnutls/CVE-2026-33845.patch
new file mode 100644
index 00000000000..13d1d9bf821
--- /dev/null
+++ b/meta/recipes-support/gnutls/gnutls/CVE-2026-33845.patch
@@ -0,0 +1,190 @@
+From d217d233d3eb5566a911dad11b639552d63acfac Mon Sep 17 00:00:00 2001
+From: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
+Date: Wed, 29 Jul 2026 08:54:58 +0000
+Subject: [PATCH] buffers: switch from end_offset over to frag_length
+
+Instead of maintaining an inclusive [start_offset, end_offset] range
+when reassembling DTLS handshake,
+track start_offset and a relative frag_length instead.
+
+You'd think it'd be a no-op, but it fixes:
+
+* 0-length fragments triggering completion if message was 1 byte long
+* a remotely triggerable underflow and an ensuing heap overrun
+
+Reported-by: Joshua Rogers of AISLE Research Team <joshua@joshua.hu>
+Fixes: #1811
+Fixes: CVE-2026-33845
+Fixes: GNUTLS-SA-2026-04-29-3
+CVSS: 7.5 High CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
+Signed-off-by: Alexander Sosedkin <asosedkin@redhat.com>
+
+CVE: CVE-2026-33845
+Upstream-Status: Backport [https://gitlab.com/gnutls/gnutls/-/commit/e5b72c53c7d789d19d1d1cd10b275e87d0415413]
+
+Backport notes: adapted to the stable branch, no logic changes.
+- lib/buffers.c: the local fragment-size variable is named frag_size here,
+ not frag_length as upstream; renamed accordingly.
+- lib/buffers.c: merge_handshake_packet() has no recv_buf alias in this
+ branch, so recv_buf[pos] was expanded to
+ session->internals.handshake_recv_buffer[pos], which changes line wrapping.
+- lib/gnutls_int.h: applies cleanly
+
+Assisted-by: kiro:claude-sonnet-4.6
+Signed-off-by: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
+---
+ lib/buffers.c | 59 ++++++++++++++++++++++++++----------------------
+ lib/gnutls_int.h | 4 ++--
+ 2 files changed, 34 insertions(+), 29 deletions(-)
+
+diff --git a/lib/buffers.c b/lib/buffers.c
+index 672380b05..ad59e4f14 100644
+--- a/lib/buffers.c
++++ b/lib/buffers.c
+@@ -923,10 +923,7 @@ static int parse_handshake_header(gnutls_session_t session, mbuffer_st *bufel,
+ }
+ data_size = _mbuffer_get_udata_size(bufel) - handshake_header_size;
+
+- if (frag_size > 0)
+- hsk->end_offset = hsk->start_offset + frag_size - 1;
+- else
+- hsk->end_offset = 0;
++ hsk->frag_length = frag_size;
+
+ _gnutls_handshake_log(
+ "HSK[%p]: %s (%u) was received. Length %d[%d], frag offset %d, frag length: %d, sequence: %d\n",
+@@ -940,9 +937,11 @@ static int parse_handshake_header(gnutls_session_t session, mbuffer_st *bufel,
+
+ if (hsk->length > 0 &&
+ (frag_size > data_size ||
+- (frag_size > 0 && hsk->end_offset >= hsk->length))) {
++ (frag_size > 0 &&
++ hsk->start_offset + frag_size > hsk->length))) {
+ return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
+- } else if (hsk->length == 0 && hsk->end_offset != 0 &&
++ } else if (hsk->length == 0 &&
++ hsk->start_offset + frag_size != hsk->start_offset &&
+ hsk->start_offset != 0)
+ return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
+
+@@ -991,11 +990,10 @@ static int merge_handshake_packet(gnutls_session_t session,
+ hsk->data.length = hsk->length;
+ }
+
+- if (hsk->length > 0 && hsk->end_offset > 0 &&
+- hsk->end_offset - hsk->start_offset + 1 != hsk->length) {
++ if (hsk->length > 0 && hsk->frag_length > 0 &&
++ hsk->frag_length != hsk->length) {
+ memmove(&hsk->data.data[hsk->start_offset],
+- hsk->data.data,
+- hsk->end_offset - hsk->start_offset + 1);
++ hsk->data.data, hsk->frag_length);
+ }
+
+ session->internals.handshake_recv_buffer_size++;
+@@ -1012,7 +1010,7 @@ static int merge_handshake_packet(gnutls_session_t session,
+ if (hsk->start_offset <
+ session->internals.handshake_recv_buffer[pos]
+ .start_offset &&
+- hsk->end_offset + 1 >=
++ hsk->start_offset + hsk->frag_length >=
+ session->internals.handshake_recv_buffer[pos]
+ .start_offset) {
+ memcpy(&session->internals.handshake_recv_buffer[pos]
+@@ -1021,28 +1019,36 @@ static int merge_handshake_packet(gnutls_session_t session,
+ session->internals.handshake_recv_buffer[pos]
+ .start_offset = hsk->start_offset;
+ session->internals.handshake_recv_buffer[pos]
+- .end_offset = MIN(
+- hsk->end_offset,
++ .frag_length = MIN(
++ hsk->frag_length,
+ session->internals.handshake_recv_buffer[pos]
+- .end_offset);
+- } else if (hsk->end_offset >
++ .frag_length);
++ } else if (hsk->start_offset + hsk->frag_length >
+ session->internals.handshake_recv_buffer[pos]
+- .end_offset &&
++ .start_offset +
++ session->internals
++ .handshake_recv_buffer[pos]
++ .frag_length &&
+ hsk->start_offset <=
+ session->internals.handshake_recv_buffer[pos]
+- .end_offset +
+- 1) {
++ .start_offset +
++ session->internals
++ .handshake_recv_buffer[pos]
++ .frag_length) {
+ memcpy(&session->internals.handshake_recv_buffer[pos]
+ .data.data[hsk->start_offset],
+ hsk->data.data, hsk->data.length);
+
+- session->internals.handshake_recv_buffer[pos]
+- .end_offset = hsk->end_offset;
+ session->internals.handshake_recv_buffer[pos]
+ .start_offset = MIN(
+ hsk->start_offset,
+ session->internals.handshake_recv_buffer[pos]
+ .start_offset);
++ session->internals.handshake_recv_buffer[pos]
++ .frag_length =
++ hsk->start_offset + hsk->frag_length -
++ session->internals.handshake_recv_buffer[pos]
++ .start_offset;
+ }
+ _gnutls_handshake_buffer_clear(hsk);
+ }
+@@ -1102,8 +1108,8 @@ static int get_last_packet(gnutls_session_t session,
+ }
+
+ else if ((recv_buf[LAST_ELEMENT].start_offset == 0 &&
+- recv_buf[LAST_ELEMENT].end_offset ==
+- recv_buf[LAST_ELEMENT].length - 1) ||
++ recv_buf[LAST_ELEMENT].frag_length ==
++ recv_buf[LAST_ELEMENT].length) ||
+ recv_buf[LAST_ELEMENT].length == 0) {
+ session->internals.dtls.hsk_read_seq++;
+ _gnutls_handshake_buffer_move(hsk,
+@@ -1114,8 +1120,9 @@ static int get_last_packet(gnutls_session_t session,
+ /* if we don't have a complete handshake message, but we
+ * have queued data waiting, try again to reconstruct the
+ * handshake packet, using the queued */
+- if (recv_buf[LAST_ELEMENT].end_offset !=
+- recv_buf[LAST_ELEMENT].length - 1 &&
++ if ((recv_buf[LAST_ELEMENT].start_offset +
++ recv_buf[LAST_ELEMENT].frag_length) !=
++ recv_buf[LAST_ELEMENT].length &&
+ record_check_unprocessed(session) > 0)
+ return gnutls_assert_val(
+ GNUTLS_E_INT_CHECK_AGAIN);
+@@ -1302,9 +1309,7 @@ int _gnutls_parse_record_buffered_msgs(gnutls_session_t session)
+ &session->internals.record_buffer,
+ bufel, ret);
+
+- data_size = MIN(tmp.length,
+- tmp.end_offset -
+- tmp.start_offset + 1);
++ data_size = MIN(tmp.length, tmp.frag_length);
+
+ ret = _gnutls_buffer_append_data(
+ &tmp.data,
+diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h
+index 8cf9a8715..689dcdc41 100644
+--- a/lib/gnutls_int.h
++++ b/lib/gnutls_int.h
+@@ -479,10 +479,10 @@ typedef struct {
+ uint16_t sequence;
+
+ /* indicate whether that message is complete.
+- * complete means start_offset == 0 and end_offset == length
++ * complete means start_offset == 0 and frag_length == length
+ */
+ uint32_t start_offset;
+- uint32_t end_offset;
++ uint32_t frag_length; /* used exclusively in DTLS reassembly */
+
+ uint8_t header[MAX_HANDSHAKE_HEADER_SIZE];
+ int header_size;
diff --git a/meta/recipes-support/gnutls/gnutls_3.8.4.bb b/meta/recipes-support/gnutls/gnutls_3.8.4.bb
index 0aa1eef513f..6dbd11abaff 100644
--- a/meta/recipes-support/gnutls/gnutls_3.8.4.bb
+++ b/meta/recipes-support/gnutls/gnutls_3.8.4.bb
@@ -50,6 +50,7 @@ SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar
file://CVE-2026-42011_p1.patch \
file://CVE-2026-42011_p2.patch \
file://CVE-2026-33846.patch \
+ file://CVE-2026-33845.patch \
"
SRC_URI[sha256sum] = "2bea4e154794f3f00180fa2a5c51fe8b005ac7a31cd58bd44cdfa7f36ebc3a9b"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 08/48] python3-mako: correct CVE_PRODUCT mapping
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (6 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 07/48] gnutls: fix CVE-2026-33845 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 09/48] python3-pip: Fix CVE-2026-13346 Yoann Congal
` (39 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Devansh Patel <devanshp@cisco.com>
The inherited "python:Mako" mapping is not used for the packaged Mako
source and causes its vulnerability records to be missed.
Use "makotemplates:mako" for its historical NVD configuration identity
and "sqlalchemy:mako" for the current NVD dictionary CPE, NVD
configuration, and CNA affected-data identity.
Backport note: this applies the metadata to Scarthgap Mako 1.3.2 rather
than master 1.4.1; the older release exposes applicable unpatched records.
Signed-off-by: Devansh Patel <devanshp@cisco.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 76fc2046d3f251af34dd04f8fdcfc0c1d6016380)
Signed-off-by: Devansh Patel <devanshp@cisco.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-devtools/python/python3-mako_1.3.2.bb | 2 ++
1 file changed, 2 insertions(+)
diff --git a/meta/recipes-devtools/python/python3-mako_1.3.2.bb b/meta/recipes-devtools/python/python3-mako_1.3.2.bb
index 617bf33443c..21d37eab4eb 100644
--- a/meta/recipes-devtools/python/python3-mako_1.3.2.bb
+++ b/meta/recipes-devtools/python/python3-mako_1.3.2.bb
@@ -12,6 +12,8 @@ SRC_URI += "file://CVE-2026-41205.patch \
"
SRC_URI[sha256sum] = "2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e"
+CVE_PRODUCT = "makotemplates:mako sqlalchemy:mako"
+
RDEPENDS:${PN} = "python3-html \
python3-markupsafe \
python3-netclient \
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 09/48] python3-pip: Fix CVE-2026-13346
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (7 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 08/48] python3-mako: correct CVE_PRODUCT mapping Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 10/48] perl: Fix CVE-2026-19487 Yoann Congal
` (38 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hetvi Thakar <hthakar@cisco.com>
This patch applies the upstream fix as referenced in
[2], using the commit shown in [1].
[1] https://github.com/pypa/pip/commit/10dfb6b90054
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-13346
Signed-off-by: Hetvi Thakar <hthakar@cisco.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../python/python3-pip/CVE-2026-13346.patch | 223 ++++++++++++++++++
.../python/python3-pip_24.0.bb | 1 +
2 files changed, 224 insertions(+)
create mode 100644 meta/recipes-devtools/python/python3-pip/CVE-2026-13346.patch
diff --git a/meta/recipes-devtools/python/python3-pip/CVE-2026-13346.patch b/meta/recipes-devtools/python/python3-pip/CVE-2026-13346.patch
new file mode 100644
index 00000000000..246f587a149
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip/CVE-2026-13346.patch
@@ -0,0 +1,223 @@
+From e743e63ca083402fe0a344c4837cc6acf3081987 Mon Sep 17 00:00:00 2001
+From: Damian Shaw <damian.peter.shaw@gmail.com>
+Date: Tue, 30 Jun 2026 21:52:39 -0400
+Subject: [PATCH] Fix Link.filename decoding URL path twice (#14110)
+
+Link already percent-decodes the URL path into `self._path`, but
+`Link.filename` decoded the basename again, so a doubly-encoded
+separator was decoded twice: `%252F` became `%2F` in `__init__`, then
+`/` in `filename`, turning the single component `a%2Fb.whl` into
+`a/b.whl`.
+
+Drop the second decode, and add a `join_within_directory` helper so the
+download-path joins treat the name as a single path component.
+
+CVE: CVE-2026-13346
+Upstream-Status: Backport [https://github.com/pypa/pip/commit/10dfb6b9005484578b386f64b9f36982e3dc6679]
+
+Backport Changes:
+- Adapted imports and download call sites to pip 24.0.
+- Secured pip 24.0 separate BatchDownloader path.
+- Omitted tests absent from the pip 24.0 source archive.
+
+(cherry picked from commit 10dfb6b9005484578b386f64b9f36982e3dc6679)
+Signed-off-by: Hetvi Thakar <hthakar@cisco.com>
+---
+ news/14110.bugfix.rst | 1 +
+ src/pip/_internal/models/link.py | 63 ++++++++++++++++++++-----
+ src/pip/_internal/network/download.py | 20 +++++---
+ src/pip/_internal/operations/prepare.py | 6 +--
+ 4 files changed, 69 insertions(+), 21 deletions(-)
+ create mode 100644 news/14110.bugfix.rst
+
+diff --git a/news/14110.bugfix.rst b/news/14110.bugfix.rst
+new file mode 100644
+index 000000000..f7d4f7888
+--- /dev/null
++++ b/news/14110.bugfix.rst
+@@ -0,0 +1 @@
++Fix ``Link.filename`` decoding the URL path twice.
+diff --git a/src/pip/_internal/models/link.py b/src/pip/_internal/models/link.py
+index 73041b864..e4bd559bf 100644
+--- a/src/pip/_internal/models/link.py
++++ b/src/pip/_internal/models/link.py
+@@ -13,6 +13,7 @@ from typing import (
+ List,
+ Mapping,
+ NamedTuple,
++ NewType,
+ Optional,
+ Tuple,
+ Union,
+@@ -36,6 +37,49 @@ if TYPE_CHECKING:
+ logger = logging.getLogger(__name__)
+
+
++# A single path component: percent-decoded once and reduced to a basename, so it
++# contains no path separator and is not a ``.`` or ``..`` reference. The empty
++# string means "no component".
++PathComponent = NewType("PathComponent", str)
++
++
++def _to_path_component(name: str) -> PathComponent:
++ """Reduce ``name`` to a single path component, or ``""`` if it has none.
++
++ ``os.path.basename`` drops any directory part, drive letter, or separator;
++ a ``.``, ``..``, or empty result is not a component and becomes ``""``.
++ """
++ name = os.path.basename(name)
++ if name in ("", os.curdir, os.pardir):
++ return PathComponent("")
++
++ return PathComponent(name)
++
++
++def as_path_component(name: str) -> PathComponent:
++ """Like ``_to_path_component`` but reject the empty result.
++
++ Use where a file is about to be written, so a missing name is an error
++ rather than a silent fallback to the directory itself.
++ """
++ component = _to_path_component(name)
++ if not component:
++ raise ValueError(f"Unexpected file name derived from URL: {name!r}")
++
++ return component
++
++
++def join_within_directory(directory: str, component: PathComponent) -> str:
++ """Join a single path ``component`` onto ``directory``.
++
++ ``component`` is a :data:`PathComponent`, so by type it has no separator and
++ is not a ``.`` or ``..`` reference; the result can never escape ``directory``.
++ Requiring ``PathComponent`` rather than ``str`` lets the type checker enforce
++ at the call site that the name was reduced to a safe component beforehand.
++ """
++ return os.path.join(directory, component)
++
++
+ # Order matters, earlier hashes have a precedence over later hashes for what
+ # we will pick to use.
+ _SUPPORTED_HASHES = ("sha512", "sha384", "sha256", "sha224", "sha1", "md5")
+@@ -380,18 +424,13 @@ class Link(KeyBasedCompareMixin):
+ return self._url
+
+ @property
+- def filename(self) -> str:
+- path = self.path.rstrip("/")
+- name = posixpath.basename(path)
+- if not name:
+- # Make sure we don't leak auth information if the netloc
+- # includes a username and password.
+- netloc, user_pass = split_auth_from_netloc(self.netloc)
+- return netloc
+-
+- name = urllib.parse.unquote(name)
+- assert name, f"URL {self._url!r} produced no filename"
+- return name
++ def filename(self) -> PathComponent:
++ name = _to_path_component(posixpath.basename(self.path.rstrip("/")))
++ if name:
++ return name
++
++ # No component in the path; fall back to the netloc, dropping any auth.
++ return _to_path_component(split_auth_from_netloc(self.netloc)[0])
+
+ @property
+ def file_path(self) -> str:
+diff --git a/src/pip/_internal/network/download.py b/src/pip/_internal/network/download.py
+index d1d43541e..3aec97e84 100644
+--- a/src/pip/_internal/network/download.py
++++ b/src/pip/_internal/network/download.py
+@@ -11,7 +11,12 @@ from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response
+ from pip._internal.cli.progress_bars import get_download_progress_renderer
+ from pip._internal.exceptions import NetworkConnectionError
+ from pip._internal.models.index import PyPI
+-from pip._internal.models.link import Link
++from pip._internal.models.link import (
++ Link,
++ PathComponent,
++ as_path_component,
++ join_within_directory,
++)
+ from pip._internal.network.cache import is_from_cache
+ from pip._internal.network.session import PipSession
+ from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks
+@@ -91,11 +96,14 @@ def parse_content_disposition(content_disposition: str, default_filename: str) -
+ return filename or default_filename
+
+
+-def _get_http_response_filename(resp: Response, link: Link) -> str:
++def _get_http_response_filename(resp: Response, link: Link) -> PathComponent:
+ """Get an ideal filename from the given HTTP response, falling back to
+ the link filename if not provided.
++
++ The result is validated as a single path component, so it can be joined onto
++ a download directory without escaping it.
+ """
+- filename = link.filename # fallback
++ filename: str = link.filename # fallback
+ # Have a look at the Content-Disposition header for a better guess
+ content_disposition = resp.headers.get("content-disposition")
+ if content_disposition:
+@@ -109,7 +117,7 @@ def _get_http_response_filename(resp: Response, link: Link) -> str:
+ ext = os.path.splitext(resp.url)[1]
+ if ext:
+ filename += ext
+- return filename
++ return as_path_component(filename)
+
+
+ def _http_get_download(session: PipSession, link: Link) -> Response:
+@@ -140,7 +148,7 @@ class Downloader:
+ raise
+
+ filename = _get_http_response_filename(resp, link)
+- filepath = os.path.join(location, filename)
++ filepath = join_within_directory(location, filename)
+
+ chunks = _prepare_download(resp, link, self._progress_bar)
+ with open(filepath, "wb") as content_file:
+@@ -176,7 +184,7 @@ class BatchDownloader:
+ raise
+
+ filename = _get_http_response_filename(resp, link)
+- filepath = os.path.join(location, filename)
++ filepath = join_within_directory(location, filename)
+
+ chunks = _prepare_download(resp, link, self._progress_bar)
+ with open(filepath, "wb") as content_file:
+diff --git a/src/pip/_internal/operations/prepare.py b/src/pip/_internal/operations/prepare.py
+index 956717d1e..0a9b39332 100644
+--- a/src/pip/_internal/operations/prepare.py
++++ b/src/pip/_internal/operations/prepare.py
+@@ -26,7 +26,7 @@ from pip._internal.exceptions import (
+ from pip._internal.index.package_finder import PackageFinder
+ from pip._internal.metadata import BaseDistribution, get_metadata_distribution
+ from pip._internal.models.direct_url import ArchiveInfo
+-from pip._internal.models.link import Link
++from pip._internal.models.link import Link, join_within_directory
+ from pip._internal.models.wheel import Wheel
+ from pip._internal.network.download import BatchDownloader, Downloader
+ from pip._internal.network.lazy_wheel import (
+@@ -189,7 +189,7 @@ def _check_download_dir(
+ """Check download_dir for previously downloaded file with correct hash
+ If a correct file is found return its path else None
+ """
+- download_path = os.path.join(download_dir, link.filename)
++ download_path = join_within_directory(download_dir, link.filename)
+
+ if not os.path.exists(download_path):
+ return None
+@@ -666,7 +666,7 @@ class RequirementPreparer:
+ # No distribution was downloaded for this requirement.
+ return
+
+- download_location = os.path.join(self.download_dir, link.filename)
++ download_location = join_within_directory(self.download_dir, link.filename)
+ if not os.path.exists(download_location):
+ shutil.copy(req.local_file_path, download_location)
+ download_path = display_path(download_location)
+--
+2.35.6
+
diff --git a/meta/recipes-devtools/python/python3-pip_24.0.bb b/meta/recipes-devtools/python/python3-pip_24.0.bb
index 709ec9f2b6c..818c92d8cd2 100644
--- a/meta/recipes-devtools/python/python3-pip_24.0.bb
+++ b/meta/recipes-devtools/python/python3-pip_24.0.bb
@@ -36,6 +36,7 @@ SRC_URI += "file://no_shebang_mangling.patch \
file://CVE-2026-8643.patch \
file://CVE-2026-8643-regression_p1.patch \
file://CVE-2026-8643-regression_p2.patch \
+ file://CVE-2026-13346.patch \
"
SRC_URI[sha256sum] = "ea9bd1a847e8c5774a5777bb398c19e80bcd4e2aa16a4b301b718fe6f593aba2"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 10/48] perl: Fix CVE-2026-19487
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (8 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 09/48] python3-pip: Fix CVE-2026-13346 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 11/48] vim: Fix for CVE-2026-73072 Yoann Congal
` (37 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
Backport fix for CVE-2026-19487 - AHO-CORASICK regex engine bug
Includes 5 regression test cases in t/re/re_tests.
Tested by running re/pat.t on qemux86-64 target:
1267/1267 tests passed (only pre-existing TODOs as expected failures).
NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-19487
Upstream-commit: https://github.com/Perl/perl5/commit/1a21abacaf6f684928bae8baaa153733c8c238eb
Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../perl/files/CVE-2026-19487.patch | 66 +++++++++++++++++++
meta/recipes-devtools/perl/perl_5.38.4.bb | 1 +
2 files changed, 67 insertions(+)
create mode 100644 meta/recipes-devtools/perl/files/CVE-2026-19487.patch
diff --git a/meta/recipes-devtools/perl/files/CVE-2026-19487.patch b/meta/recipes-devtools/perl/files/CVE-2026-19487.patch
new file mode 100644
index 00000000000..86feedcda46
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/CVE-2026-19487.patch
@@ -0,0 +1,66 @@
+From 46014ec220989897d7ea53ccc780cea767cc0862 Mon Sep 17 00:00:00 2001
+From: Yves Orton <demerphq@gmail.com>
+Date: Fri, 7 Feb 2025 10:06:10 +0100
+Subject: [PATCH] regexec.c - Fix GH 22892 - AHO-CORASICK edge case issue
+
+In some circumstances the AHO-CORASICK logic wasn't matching properly
+when there were two possibilities whose proper prefix matches a proper
+suffix of a third possibilty, and one of those possibilities was shorter
+than the other.
+
+This was because we were NOT resetting the 'failed' flag properly.
+This bug must be rare because it took more than a decade for anyone
+to notice.
+
+This patch fixes the problem by resetting the failed flag after a
+successful transition.
+
+A good example of this problem is as follows:
+
+ "ABCDE" =~ m/ABCF|BCDE|C/
+
+This should match 'BCDE' and not 'C'. Because of the flag issue we were
+matching 'C' instead.
+
+This fixes https://github.com/Perl/perl5/issues/22892
+
+Note: t/re/re_tests hunk adjusted for 5.38.4 context (line numbers and
+surrounding test data differ from upstream which targets a newer perl).
+
+Upstream-Status: Backport [https://github.com/Perl/perl5/commit/1a21abacaf6f684928bae8baaa153733c8c238eb]
+CVE: CVE-2026-19487
+Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
+---
+ regexec.c | 1 +
+ t/re/re_tests | 6 ++++++
+ 2 files changed, 7 insertions(+)
+
+diff --git a/regexec.c b/regexec.c
+index e96b622..1eb59bb 100644
+--- a/regexec.c
++++ b/regexec.c
+@@ -3406,6 +3406,7 @@ S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s,
+ {
+ DEBUG_TRIE_EXECUTE_r(
+ Perl_re_printf( aTHX_ " - legal\n"));
++ failed = 0;
+ state = tmp;
+ break;
+ }
+diff --git a/t/re/re_tests b/t/re/re_tests
+index 10da625..eefa579 100644
+--- a/t/re/re_tests
++++ b/t/re/re_tests
+@@ -2157,6 +2157,12 @@ AB\s+\x{100} AB \x{100}X y - -
+ /^(xa|(?:[Z=])*\1a){2}$/ xa=xaaa n - - # GH 10073 - RT72020
+ /^(xa|(?:[Z=]|zzzz)*\1a){2}$/ xa=xaaa n - - # GH 10073 - RT72020
+
++ABCF|BCDE|C ABCDEX y $& BCDE - # GH 22892 - AHO-CORASICK bug
++ABCF|BCDE|C ABCDX y $& C - # GH 22892 - AHO-CORASICK bug
++ABCF|BCDE|C(G) ABCDE y $& BCDE - # GH 22892 - AHO-CORASICK bug
++ABCF|BCDE|C[Gg] ABCDE y $& BCDE - # GH 22892 - AHO-CORASICK bug
++ABCF|BCD[Ee]|C[Gg] ABCDE y $& BCDE - # GH 22892 - AHO-CORASICK bug
++
+ # Keep these lines at the end of the file
+ # pat string y/n/etc expr expected-expr skip-reason comment
+ # vim: softtabstop=0 noexpandtab
diff --git a/meta/recipes-devtools/perl/perl_5.38.4.bb b/meta/recipes-devtools/perl/perl_5.38.4.bb
index b86c58f5402..8ce5d3f5d00 100644
--- a/meta/recipes-devtools/perl/perl_5.38.4.bb
+++ b/meta/recipes-devtools/perl/perl_5.38.4.bb
@@ -24,6 +24,7 @@ SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
file://CVE-2026-57432-01.patch \
file://CVE-2026-57432-02.patch \
file://CVE-2025-40909.patch \
+ file://CVE-2026-19487.patch \
"
SRC_URI:append:class-native = " \
file://perl-configpm-switch.patch \
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 11/48] vim: Fix for CVE-2026-73072
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (9 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 10/48] perl: Fix CVE-2026-19487 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 12/48] vim: Fix for CVE-2026-73073 Yoann Congal
` (36 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hitendra Prajapati <hprajapati@mvista.com>
Pick the patch from [1], also referenced in the NVD report [2].
[1] https://github.com/vim/vim/commit/05c41c922309c7a11b6ec2f124be66551c90d66a
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-73072
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../vim/files/CVE-2026-73072.patch | 64 +++++++++++++++++++
meta/recipes-support/vim/vim.inc | 1 +
2 files changed, 65 insertions(+)
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73072.patch
diff --git a/meta/recipes-support/vim/files/CVE-2026-73072.patch b/meta/recipes-support/vim/files/CVE-2026-73072.patch
new file mode 100644
index 00000000000..0ae3b2b49e6
--- /dev/null
+++ b/meta/recipes-support/vim/files/CVE-2026-73072.patch
@@ -0,0 +1,64 @@
+From 05c41c922309c7a11b6ec2f124be66551c90d66a Mon Sep 17 00:00:00 2001
+From: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Date: Fri, 24 Jul 2026 00:58:37 +0900
+Subject: [PATCH] patch 9.2.0846: [security]: heap buffer overflow in
+ set_sofo()
+
+Problem: [security]: heap buffer overflow in set_sofo()
+ (Yazan Balawneh)
+Solution: Reset sl_sal_first (Yasuhiro Matsumoto).
+
+A crafted spell file with an empty SN_SAL section before an SN_SOFO
+section reaches set_sofo() with sl_sal_first[] already set to -1 by
+set_sal_first(). The counting loop then under-counts colliding
+multi-byte "from" characters, allocates an undersized list and writes
+past its end.
+
+Github Security Advisory:
+https://github.com/vim/vim/security/advisories/GHSA-9jqx-hgpr-6v64
+
+Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Signed-off-by: Christian Brabandt <cb@256bit.org>
+
+CVE: CVE-2026-73072
+Upstream-Status: Backport [https://github.com/vim/vim/commit/05c41c922309c7a11b6ec2f124be66551c90d66a]
+Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
+---
+ src/spellfile.c | 4 +++-
+ src/testdir/test_spellfile.vim | 5 +++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/spellfile.c b/src/spellfile.c
+index b3ee9c0d63..a9f7e83752 100644
+--- a/src/spellfile.c
++++ b/src/spellfile.c
+@@ -1433,7 +1433,9 @@ set_sofo(slang_T *lp, char_u *from, char_u *to)
+ gap->ga_len = 256;
+
+ // First count the number of items for each list. Temporarily use
+- // sl_sal_first[] for this.
++ // sl_sal_first[] for this. Reset it first: a preceding SN_SAL section
++ // may have set the entries to -1 via set_sal_first().
++ vim_memset(lp->sl_sal_first, 0, sizeof(salfirst_T) * 256);
+ for (p = from, s = to; *p != NUL && *s != NUL; )
+ {
+ c = mb_cptr2char_adv(&p);
+diff --git a/src/testdir/test_spellfile.vim b/src/testdir/test_spellfile.vim
+index 3a93883b4d..0b0cf42066 100644
+--- a/src/testdir/test_spellfile.vim
++++ b/src/testdir/test_spellfile.vim
+@@ -319,6 +319,11 @@ func Test_spellfile_format_error()
+ " SN_SOFO: multi-byte characters in sofofrom and sofoto
+ call Spellfile_Test(0z0600000000080002CF810002CF82FF000000000000000000000000, '')
+
++ " SN_SAL (empty) followed by SN_SOFO with two multi-byte 'from' characters
++ " sharing the same low byte. A preceding SN_SAL poisons sl_sal_first[], so
++ " without a reset set_sofo() under-counts and writes out of bounds.
++ call Spellfile_Test(0z05000000000300000006000000000A0004CAABCEAB00024142FF000000000000000000000000, '')
++
+ " SN_COMPOUND: compmax is less than 2
+ call Spellfile_Test(0z08000000000101, 'E759:')
+
+--
+2.34.1
+
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index a4f8162d31c..10f4ce15999 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -50,6 +50,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://CVE-2026-59857.patch \
file://CVE-2026-59858.patch \
file://CVE-2026-57456.patch \
+ file://CVE-2026-73072.patch \
"
PV .= ".1683"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 12/48] vim: Fix for CVE-2026-73073
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (10 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 11/48] vim: Fix for CVE-2026-73072 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 13/48] vim: Fix for CVE-2026-73074 Yoann Congal
` (35 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hitendra Prajapati <hprajapati@mvista.com>
Pick the patch from [1], also referenced in the NVD report [2].
[1] https://github.com/vim/vim/commit/2f628d8104958fa7421664f792ca6d4f7a39a10f
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-73073
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../vim/files/CVE-2026-73073.patch | 89 +++++++++++++++++++
meta/recipes-support/vim/vim.inc | 1 +
2 files changed, 90 insertions(+)
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73073.patch
diff --git a/meta/recipes-support/vim/files/CVE-2026-73073.patch b/meta/recipes-support/vim/files/CVE-2026-73073.patch
new file mode 100644
index 00000000000..932580d3a10
--- /dev/null
+++ b/meta/recipes-support/vim/files/CVE-2026-73073.patch
@@ -0,0 +1,89 @@
+From 2f628d8104958fa7421664f792ca6d4f7a39a10f Mon Sep 17 00:00:00 2001
+From: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Date: Fri, 17 Jul 2026 09:11:42 +0900
+Subject: [PATCH] patch 9.2.0845: [security]: arbitrary Ex command execution
+ during C omni-completion
+
+Problem: [security]: arbitrary Ex command execution during C
+ omni-completion (Threonine)
+Solution: Match tags typeref literally to block Ex command injection
+ (Yasuhiro Matsumoto).
+
+Escaping only "/" and "\" left the typeref able to break out of the
+:vimgrep pattern without a "/": an unclosed "[" makes vimgrep's pattern
+skipping fail, and the parser then treats a following "|" as a command
+separator, so the tag value runs as Ex commands during C omni-completion.
+Match the field literally with \V so no regex metacharacter can affect
+pattern parsing.
+
+Github Security Advisory:
+https://github.com/vim/vim/security/advisories/GHSA-cx73-phcg-3j5g
+
+Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Signed-off-by: Christian Brabandt <cb@256bit.org>
+
+CVE: CVE-2026-73073
+Upstream-Status: Backport [https://github.com/vim/vim/commit/2f628d8104958fa7421664f792ca6d4f7a39a10f]
+Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
+---
+ runtime/autoload/ccomplete.vim | 5 ++++-
+ src/testdir/test_plugin_ccomplete.vim | 26 ++++++++++++++++++++++++++
+ 2 files changed, 30 insertions(+), 1 deletion(-)
+
+diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim
+index 248d6f2e60..5a48581dcf 100644
+--- a/runtime/autoload/ccomplete.vim
++++ b/runtime/autoload/ccomplete.vim
+@@ -592,8 +592,11 @@ def StructMembers( # {{{1
+ if complete_check()
+ return []
+ endif
++ # Match "typename" literally (\V): escaping alone is not enough, as e.g.
++ # an unclosed "[" makes vimgrep's pattern skipping fail and the rest of
++ # the tag value is then parsed as Ex commands.
+ execute 'silent! keepjumps noautocmd '
+- .. n .. 'vimgrep ' .. '/\t' .. escape(typename, '/\') .. '\(\t\|$\)/j '
++ .. n .. 'vimgrep ' .. '/\t\V' .. escape(typename, '/\') .. '\m\(\t\|$\)/j '
+ .. fnames
+
+ qflist = getqflist()
+diff --git a/src/testdir/test_plugin_ccomplete.vim b/src/testdir/test_plugin_ccomplete.vim
+index a635bd50bd..c1754d17c1 100644
+--- a/src/testdir/test_plugin_ccomplete.vim
++++ b/src/testdir/test_plugin_ccomplete.vim
+@@ -31,6 +31,32 @@ func Test_ccomplete_no_exec_via_typeref()
+ unlet! g:ccomplete_injected
+ endfunc
+
++" Escaping "/" and "\" is not enough: with no "/" in the payload, an unclosed
++" "[" makes vimgrep's pattern skipping fail, and the command parser then treats
++" the first "|" as a command separator. The typeref must be matched literally.
++func Test_ccomplete_no_exec_via_typeref_bracket()
++ CheckUnix
++ let sentinel = tempname()
++ call delete(sentinel)
++ let tagsfile = s:WriteTags([
++ \ "myvar\tmain.c\t/^x$/;\"\tv\ttyperef:struct:[|call system('touch " .. sentinel .. "')|####",
++ \ ])
++
++ let save_tags = &tags
++ let &tags = tagsfile
++
++ new
++ call ccomplete#Complete(1, '')
++ call ccomplete#Complete(0, 'myvar.x')
++
++ call assert_false(filereadable(sentinel),
++ \ 'typeref field was executed as an Ex command during omni-completion')
++
++ bwipe!
++ let &tags = save_tags
++ call delete(sentinel)
++endfunc
++
+ " A legitimate typeref must still drive struct-member completion: escaping the
+ " field value must not break the normal path.
+ func Test_ccomplete_typeref_completion_still_works()
+--
+2.50.1
+
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 10f4ce15999..3e90908264a 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -51,6 +51,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://CVE-2026-59858.patch \
file://CVE-2026-57456.patch \
file://CVE-2026-73072.patch \
+ file://CVE-2026-73073.patch \
"
PV .= ".1683"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 13/48] vim: Fix for CVE-2026-73074
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (11 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 12/48] vim: Fix for CVE-2026-73073 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 14/48] vim: Fix for CVE-2026-73077 Yoann Congal
` (34 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hitendra Prajapati <hprajapati@mvista.com>
Pick the patch from [1], also referenced in the NVD report [2].
[1] https://github.com/vim/vim/commit/a9336b476fd1a182e3f79b5f83c0ffb04f8a922b
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-73074
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../vim/files/CVE-2026-73074.patch | 101 ++++++++++++++++++
meta/recipes-support/vim/vim.inc | 1 +
2 files changed, 102 insertions(+)
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73074.patch
diff --git a/meta/recipes-support/vim/files/CVE-2026-73074.patch b/meta/recipes-support/vim/files/CVE-2026-73074.patch
new file mode 100644
index 00000000000..3402b72bd27
--- /dev/null
+++ b/meta/recipes-support/vim/files/CVE-2026-73074.patch
@@ -0,0 +1,101 @@
+From a9336b476fd1a182e3f79b5f83c0ffb04f8a922b Mon Sep 17 00:00:00 2001
+From: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Date: Thu, 23 Jul 2026 20:14:13 +0000
+Subject: [PATCH] patch 9.2.0841: [security]: heap overflow when adding > 65535
+ text properties
+
+Problem: [security]: heap overflow when adding > 65535 text properties
+ (Wang1rrr).
+Solution: Verify that the number of text properties falls within the
+ limit (Yasuhiro Matsumoto).
+
+Github Security Advisory:
+https://github.com/vim/vim/security/advisories/GHSA-hm4g-pjfx-m27j
+
+Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Signed-off-by: Christian Brabandt <cb@256bit.org>
+
+CVE: CVE-2026-73074
+Upstream-Status: Backport [https://github.com/vim/vim/commit/a9336b476fd1a182e3f79b5f83c0ffb04f8a922b]
+Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
+---
+ src/errors.h | 4 ++++
+ src/po/vim.pot | 3 +++
+ src/testdir/test_textprop.vim | 18 ++++++++++++++++++
+ src/textprop.c | 7 +++++++
+ 4 files changed, 32 insertions(+)
+
+diff --git a/src/errors.h b/src/errors.h
+index 01ed16a035..5354e85f25 100644
+--- a/src/errors.h
++++ b/src/errors.h
+@@ -3795,3 +3795,7 @@ EXTERN char e_socket_server_failed_connecting[]
+ EXTERN char e_socket_server_unavailable[]
+ INIT(= N_("E1567: Cannot start socket server, socket path is unavailable"));
+ #endif
++#ifdef FEAT_PROP_POPUP
++EXTERN char e_too_many_text_properties_on_a_single_line[]
++ INIT(= N_("E1580: Too many text properties on a single line"));
++#endif
+diff --git a/src/po/vim.pot b/src/po/vim.pot
+index be79cf0dab..100344e270 100644
+--- a/src/po/vim.pot
++++ b/src/po/vim.pot
+@@ -8838,6 +8838,9 @@ msgstr ""
+ msgid "E1567: Cannot start socket server, socket path is unavailable"
+ msgstr ""
+
++msgid "E1580: Too many text properties on a single line"
++msgstr ""
++
+ #. type of cmdline window or 0
+ #. result of cmdline window or 0
+ #. buffer of cmdline window or NULL
+diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
+index b5c9f63f65..5a69ca75e7 100644
+--- a/src/testdir/test_textprop.vim
++++ b/src/testdir/test_textprop.vim
+@@ -4781,4 +4781,22 @@ func Test_textprop_materialize_list()
+ call assert_equal([], prop_list(1, #{ids: 3->range()}))
+ endfunc
+
++" Adding more than 65535 text properties to one line must be rejected instead
++" of wrapping the uint16_t property count and overflowing the allocation.
++func Test_prop_add_over_uint16_max()
++ CheckNotAsan
++ CheckNotValgrind
++ new
++ call setline(1, 'x')
++ call prop_type_add('overflow', {})
++ for _ in range(0xffff)
++ call prop_add(1, 1, {'type': 'overflow', 'length': 0})
++ endfor
++ call assert_equal(0xffff, prop_list(1)->len())
++ call assert_fails("call prop_add(1, 1, {'type': 'overflow', 'length': 0})", 'E1580:')
++ call assert_equal(0xffff, prop_list(1)->len())
++ call prop_type_delete('overflow')
++ bwipe!
++endfunc
++
+ " vim: shiftwidth=2 sts=2 expandtab
+diff --git a/src/textprop.c b/src/textprop.c
+index a06605d3dd..1f06615dbc 100644
+--- a/src/textprop.c
++++ b/src/textprop.c
+@@ -240,6 +240,13 @@ prop_add_one(
+ proplen = get_text_props(buf, lnum, &props, TRUE);
+ textlen = buf->b_ml.ml_line_len - proplen * sizeof(textprop_T);
+
++ // prop_count is a uint16_t; stop before proplen + 1 wraps to zero.
++ if (proplen >= 0xffff)
++ {
++ emsg(_(e_too_many_text_properties_on_a_single_line));
++ goto theend;
++ }
++
+ if (lnum == start_lnum)
+ col = start_col;
+ else
+--
+2.50.1
+
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 3e90908264a..9ea050650f3 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -52,6 +52,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://CVE-2026-57456.patch \
file://CVE-2026-73072.patch \
file://CVE-2026-73073.patch \
+ file://CVE-2026-73074.patch \
"
PV .= ".1683"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 14/48] vim: Fix for CVE-2026-73077
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (12 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 13/48] vim: Fix for CVE-2026-73074 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 15/48] vim: Fix for CVE-2026-73078 Yoann Congal
` (33 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hitendra Prajapati <hprajapati@mvista.com>
Pick the patch from [1], also referenced in the NVD report [2].
[1] https://github.com/vim/vim/commit/c5a82fe013e73c98004ad7cd4f906b1ad1ed610e
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-73077
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../vim/files/CVE-2026-73077.patch | 96 +++++++++++++++++++
meta/recipes-support/vim/vim.inc | 1 +
2 files changed, 97 insertions(+)
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73077.patch
diff --git a/meta/recipes-support/vim/files/CVE-2026-73077.patch b/meta/recipes-support/vim/files/CVE-2026-73077.patch
new file mode 100644
index 00000000000..6bf157a8083
--- /dev/null
+++ b/meta/recipes-support/vim/files/CVE-2026-73077.patch
@@ -0,0 +1,96 @@
+From c5a82fe013e73c98004ad7cd4f906b1ad1ed610e Mon Sep 17 00:00:00 2001
+From: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Date: Thu, 23 Jul 2026 19:13:15 +0000
+Subject: [PATCH] patch 9.2.0839: [security]: arbitrary code execution via
+ keyword lookup
+
+Problem: [security]: arbitrary code execution via keyword lookup in
+ sh.vim, zsh.vim and ps1.vim filetype plugin
+ (manus-use)
+Solution: For powershell, quote the commands using single quotes, for
+ sh/zsh pass the argument as a separate list item to term_start()/system()
+ (Yasuhiro Matsumoto).
+
+Github Security Advisory:
+https://github.com/vim/vim/security/advisories/GHSA-r5v6-q6j8-8qw2
+
+Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Signed-off-by: Christian Brabandt <cb@256bit.org>
+
+CVE: CVE-2026-73077
+Upstream-Status: Backport [https://github.com/vim/vim/commit/c5a82fe013e73c98004ad7cd4f906b1ad1ed610e]
+Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
+---
+ runtime/ftplugin/ps1.vim | 5 +++--
+ runtime/ftplugin/sh.vim | 5 +++--
+ runtime/ftplugin/zsh.vim | 6 +++---
+ 3 files changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/runtime/ftplugin/ps1.vim b/runtime/ftplugin/ps1.vim
+index f1fe78df4c..9ff764a282 100644
+--- a/runtime/ftplugin/ps1.vim
++++ b/runtime/ftplugin/ps1.vim
+@@ -6,6 +6,7 @@
+ " 2024 May 23 by Riley Bruins <ribru17@gmail.com> ('commentstring')
+ " 2024 Sep 19 by Konfekt (simplify keywordprg #15696)
+ " 2025 Jul 22 by phanium (use :hor term #17822)
++" 2026 Jul 10 by Vim Project (quote K argument, prevent command injection)
+
+ " Only do this when not done yet for this buffer
+ if exists("b:did_ftplugin") | finish | endif
+@@ -52,9 +53,9 @@ endif
+
+ if exists('s:pwsh_cmd')
+ if exists(':terminal') == 2
+- command! -buffer -nargs=1 GetHelp silent exe 'hor term ' . s:pwsh_cmd . ' -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command Get-Help -Full "<args>"' . (executable('less') ? ' | less' : '')
++ command! -buffer -nargs=1 GetHelp call term_start([s:pwsh_cmd, '-NoLogo', '-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'RemoteSigned', '-Command', "Get-Help -Full '" . substitute(<q-args>, "'", "''", 'g') . "'" . (executable('less') ? ' | less' : '')])
+ else
+- command! -buffer -nargs=1 GetHelp echo system(s:pwsh_cmd . ' -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command Get-Help -Full <args>')
++ command! -buffer -nargs=1 GetHelp echo system([s:pwsh_cmd, '-NoLogo', '-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'RemoteSigned', '-Command', "Get-Help -Full '" . substitute(<q-args>, "'", "''", 'g') . "'"])
+ endif
+ setlocal keywordprg=:GetHelp
+ let b:undo_ftplugin ..= " | setl kp< | sil! delc -buffer GetHelp"
+diff --git a/runtime/ftplugin/sh.vim b/runtime/ftplugin/sh.vim
+index 18cd219cdc..45e6f44fcf 100644
+--- a/runtime/ftplugin/sh.vim
++++ b/runtime/ftplugin/sh.vim
+@@ -8,6 +8,7 @@
+ " 2024 Dec 29 by Vim Project (improve setting shellcheck compiler)
+ " 2025 Mar 09 by Vim Project (set b:match_skip)
+ " 2025 Jul 22 by phanium (use :hor term #17822)
++" 2026 Jul 10 by Vim Project (pass K argument as a list, prevent shell injection)
+
+ if exists("b:did_ftplugin")
+ finish
+@@ -54,9 +55,9 @@ let s:is_kornshell = get(b:, "is_kornshell", get(g:, "is_kornshell", 0))
+
+ if s:is_bash
+ if exists(':terminal') == 2
+- command! -buffer -nargs=1 ShKeywordPrg silent exe ':hor term bash -c "help "<args>" 2>/dev/null || man "<args>""'
++ command! -buffer -nargs=1 ShKeywordPrg call term_start(['bash', '-c', 'help "$1" 2>/dev/null || man "$1"', '--', <q-args>])
+ else
+- command! -buffer -nargs=1 ShKeywordPrg echo system('bash -c "help <args>" 2>/dev/null || MANPAGER= man "<args>"')
++ command! -buffer -nargs=1 ShKeywordPrg echo system(['bash', '-c', 'help "$1" 2>/dev/null || MANPAGER= man "$1"', '--', <q-args>])
+ endif
+ setlocal keywordprg=:ShKeywordPrg
+ let b:undo_ftplugin ..= " | setl kp< | sil! delc -buffer ShKeywordPrg"
+diff --git a/runtime/ftplugin/zsh.vim b/runtime/ftplugin/zsh.vim
+index 65e9f377bf..8ee71c4e17 100644
+--- a/runtime/ftplugin/zsh.vim
++++ b/runtime/ftplugin/zsh.vim
+@@ -22,9 +22,9 @@ let b:undo_ftplugin = "setl com< cms< fo< "
+
+ if executable('zsh') && &shell !~# '/\%(nologin\|false\)$'
+ if exists(':terminal') == 2
+- command! -buffer -nargs=1 ZshKeywordPrg silent exe ':hor term zsh -c "autoload -Uz run-help; run-help <args>"'
+- else
+- command! -buffer -nargs=1 ZshKeywordPrg echo system('MANPAGER= zsh -c "autoload -Uz run-help; run-help <args> 2>/dev/null"')
++ command! -buffer -nargs=1 ZshKeywordPrg call term_start(['zsh', '-c', 'autoload -Uz run-help; run-help "$1"', '--', <q-args>])
++ elseif has("patch-9.2.0250")
++ command! -buffer -nargs=1 ZshKeywordPrg echo system(['zsh', '-c', 'autoload -Uz run-help; MANPAGER= run-help "$1" 2>/dev/null', '--', <q-args>])
+ endif
+ setlocal keywordprg=:ZshKeywordPrg
+ let b:undo_ftplugin .= '| setl keywordprg< | sil! delc -buffer ZshKeywordPrg'
+--
+2.50.1
+
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 9ea050650f3..91250ddc68a 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -53,6 +53,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://CVE-2026-73072.patch \
file://CVE-2026-73073.patch \
file://CVE-2026-73074.patch \
+ file://CVE-2026-73077.patch \
"
PV .= ".1683"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 15/48] vim: Fix for CVE-2026-73078
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (13 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 14/48] vim: Fix for CVE-2026-73077 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 16/48] cpio: patch CVE-2026-66485 Yoann Congal
` (32 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hitendra Prajapati <hprajapati@mvista.com>
Pick the patch from [1], also referenced in the NVD report [2].
[1] https://github.com/vim/vim/commit/29c6fd090d4520592f8be7d9ec81190edf25ef69
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-73078
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../vim/files/CVE-2026-73078.patch | 94 +++++++++++++++++++
meta/recipes-support/vim/vim.inc | 1 +
2 files changed, 95 insertions(+)
create mode 100644 meta/recipes-support/vim/files/CVE-2026-73078.patch
diff --git a/meta/recipes-support/vim/files/CVE-2026-73078.patch b/meta/recipes-support/vim/files/CVE-2026-73078.patch
new file mode 100644
index 00000000000..48b561d9e74
--- /dev/null
+++ b/meta/recipes-support/vim/files/CVE-2026-73078.patch
@@ -0,0 +1,94 @@
+From 29c6fd090d4520592f8be7d9ec81190edf25ef69 Mon Sep 17 00:00:00 2001
+From: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Date: Mon, 6 Jul 2026 13:54:03 +0900
+Subject: [PATCH] patch 9.2.0840: [security]: code injection in netrw via
+ bookmarks
+
+Problem: [security]: code injection in netrw via bookmarks and history
+ (David Carliez)
+Solution: Escape the '|' explicitly (Yasuhiro Matsumoto)
+
+The bookmark and history menu builders interpolate paths into :execute'd
+:menu commands using g:netrw_menu_escape, which did not escape the Ex
+command separator '|'. A crafted path could break out of the :menu command
+and run arbitrary Ex/shell commands when the menu was built or triggered.
+
+Add '|' to g:netrw_menu_escape for the menu names, escape the :e right-hand
+side with fnameescape(), and quote the netrw#MakeTgt() argument with
+string() instead of raw single-quote interpolation.
+
+Github Security Advisory:
+https://github.com/vim/vim/security/advisories/GHSA-rcr7-f3wr-22r2
+
+Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
+Signed-off-by: Christian Brabandt <cb@256bit.org>
+
+CVE: CVE-2026-73078
+Upstream-Status: Backport [https://github.com/vim/vim/commit/29c6fd090d4520592f8be7d9ec81190edf25ef69]
+Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
+---
+ runtime/pack/dist/opt/netrw/autoload/netrw.vim | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw.vim b/runtime/pack/dist/opt/netrw/autoload/netrw.vim
+index 49ccebc07a..a3198dc689 100644
+--- a/runtime/pack/dist/opt/netrw/autoload/netrw.vim
++++ b/runtime/pack/dist/opt/netrw/autoload/netrw.vim
+@@ -380,7 +380,7 @@ if has("win32")
+ else
+ call s:NetrwInit("g:netrw_glob_escape",'*[]?`{~$\')
+ endif
+-call s:NetrwInit("g:netrw_menu_escape",'.&? \')
++call s:NetrwInit("g:netrw_menu_escape",'.&? \|')
+ call s:NetrwInit("s:netrw_map_escape","<|\n\r\\\<C-V>\"")
+ if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4')
+ let s:treedepthstring= "│ "
+@@ -3734,13 +3734,14 @@ function s:NetrwBookmarkMenu()
+ if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != [] && g:netrw_dirhistmax > 0
+ let cnt= 1
+ for bmd in g:netrw_bookmarklist
+- let bmd= escape(bmd,g:netrw_menu_escape)
++ let ebmd= escape(bmd,g:netrw_menu_escape)
++ let fbmd= escape(fnameescape(bmd),'|')
+
+ " show bookmarks for goto menu
+- exe 'sil! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.bmd.' :e '.bmd."\<cr>"
++ exe 'sil! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks.'.ebmd.' :e '.fbmd."\<cr>"
+
+ " show bookmarks for deletion menu
+- exe 'sil! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.bmd.' '.cnt."mB"
++ exe 'sil! menu '.g:NetrwMenuPriority.".8.2.".cnt." ".g:NetrwTopLvlMenu.'Bookmarks\ and\ History.Bookmark\ Delete.'.ebmd.' '.cnt."mB"
+ let cnt= cnt + 1
+ endfor
+
+@@ -3756,7 +3757,8 @@ function s:NetrwBookmarkMenu()
+ let priority = g:netrw_dirhistcnt + histcnt
+ if exists("g:netrw_dirhist_{cnt}")
+ let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape)
+- exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.histdir."\<cr>"
++ let ehistdir= escape(fnameescape(g:netrw_dirhist_{cnt}),'|')
++ exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.' :e '.ehistdir."\<cr>"
+ endif
+ let first = 0
+ let cnt = ( cnt - 1 ) % g:netrw_dirhistmax
+@@ -7104,7 +7106,7 @@ function s:NetrwTgtMenu()
+ let tgtdict[bmd]= cnt
+ let ebmd= escape(bmd,g:netrw_menu_escape)
+ " show bookmarks for goto menu
+- exe 'sil! menu <silent> '.g:NetrwMenuPriority.".19.1.".cnt." ".g:NetrwTopLvlMenu.'Targets.'.ebmd." :call netrw#MakeTgt('".bmd."')\<cr>"
++ exe 'sil! menu <silent> '.g:NetrwMenuPriority.".19.1.".cnt." ".g:NetrwTopLvlMenu.'Targets.'.ebmd." :call netrw#MakeTgt(".escape(string(bmd),'|').")\<cr>"
+ let cnt= cnt + 1
+ endfor
+ endif
+@@ -7122,7 +7124,7 @@ function s:NetrwTgtMenu()
+ endif
+ let tgtdict[histentry] = histcnt
+ let ehistentry = escape(histentry,g:netrw_menu_escape)
+- exe 'sil! menu <silent> '.g:NetrwMenuPriority.".19.2.".priority." ".g:NetrwTopLvlMenu.'Targets.'.ehistentry." :call netrw#MakeTgt('".histentry."')\<cr>"
++ exe 'sil! menu <silent> '.g:NetrwMenuPriority.".19.2.".priority." ".g:NetrwTopLvlMenu.'Targets.'.ehistentry." :call netrw#MakeTgt(".escape(string(histentry),'|').")\<cr>"
+ endif
+ let histcnt = histcnt + 1
+ endwhile
+--
+2.50.1
+
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 91250ddc68a..0acf8247b72 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -54,6 +54,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://CVE-2026-73073.patch \
file://CVE-2026-73074.patch \
file://CVE-2026-73077.patch \
+ file://CVE-2026-73078.patch \
"
PV .= ".1683"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 16/48] cpio: patch CVE-2026-66485
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (14 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 15/48] vim: Fix for CVE-2026-73078 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 17/48] cpio: patch CVE-2026-66484 Yoann Congal
` (31 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Peter Marko <peter.marko@siemens.com>
Pick patch mentioned in NVD CVE description.
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(From OE-Core rev: c105fbf82e2f50b05dc680e0601bf0ea3198e58c)
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-extended/cpio/cpio_2.15.bb | 1 +
.../cpio/files/CVE-2026-66485.patch | 210 ++++++++++++++++++
2 files changed, 211 insertions(+)
create mode 100644 meta/recipes-extended/cpio/files/CVE-2026-66485.patch
diff --git a/meta/recipes-extended/cpio/cpio_2.15.bb b/meta/recipes-extended/cpio/cpio_2.15.bb
index a5c9b76da20..f4b562fdc2c 100644
--- a/meta/recipes-extended/cpio/cpio_2.15.bb
+++ b/meta/recipes-extended/cpio/cpio_2.15.bb
@@ -9,6 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
SRC_URI = "${GNU_MIRROR}/cpio/cpio-${PV}.tar.gz \
file://run-ptest \
file://test.sh \
+ file://CVE-2026-66485.patch \
"
SRC_URI[sha256sum] = "efa50ef983137eefc0a02fdb51509d624b5e3295c980aa127ceee4183455499e"
diff --git a/meta/recipes-extended/cpio/files/CVE-2026-66485.patch b/meta/recipes-extended/cpio/files/CVE-2026-66485.patch
new file mode 100644
index 00000000000..f9c0f48281f
--- /dev/null
+++ b/meta/recipes-extended/cpio/files/CVE-2026-66485.patch
@@ -0,0 +1,210 @@
+From 3cd514031371d8aeeaf2048aa10103e02831aaa9 Mon Sep 17 00:00:00 2001
+From: Sergey Poznyakoff <gray@gnu.org>
+Date: Fri, 1 May 2026 08:19:41 +0300
+Subject: [PATCH] Minor fixes
+
+* src/makepath.c: Don't use alloca.
+* src/userspec.c: Likewise.
+
+CVE: CVE-2026-66485
+Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/cpio.git/commit/?id=3cd514031371d8aeeaf2048aa10103e02831aaa9]
+Signed-off-by: Peter Marko <peter.marko@siemens.com>
+---
+ src/makepath.c | 31 ++++++++++++++---------
+ src/userspec.c | 67 +++++++++++++++++++++++++-------------------------
+ 2 files changed, 53 insertions(+), 45 deletions(-)
+
+diff --git a/src/makepath.c b/src/makepath.c
+index 35dbc73..c6329bf 100644
+--- a/src/makepath.c
++++ b/src/makepath.c
+@@ -47,24 +47,19 @@
+ Return 0 if ARGPATH exists as a directory with the proper
+ ownership and permissions when done, otherwise 1. */
+
+-int
+-make_path (char const *argpath,
+- uid_t owner,
+- gid_t group,
+- const char *verbose_fmt_string)
++static int
++make_path0 (char *dirpath,
++ uid_t owner,
++ gid_t group,
++ const char *verbose_fmt_string)
+ {
+- char *dirpath; /* A copy we can scribble NULs on. */
+ struct stat stats;
+- int retval = 0;
+ mode_t tmpmode;
+ mode_t invert_permissions;
+ int we_are_root = getuid () == 0;
+- dirpath = alloca (strlen (argpath) + 1);
+-
+- strcpy (dirpath, argpath);
+
+ if (stat (dirpath, &stats))
+- {
++ {
+ tmpmode = MODE_RWX & ~ newdir_umask;
+ invert_permissions = we_are_root ? 0 : MODE_WXUSR & ~ tmpmode;
+
+@@ -157,5 +152,19 @@ make_path (char const *argpath,
+
+ }
+
++ return 0;
++}
++
++int
++make_path (char const *argpath,
++ uid_t owner,
++ gid_t group,
++ const char *verbose_fmt_string)
++{
++ char *dirpath = xstrdup (argpath);
++ int retval = make_path0 (dirpath, owner, group, verbose_fmt_string);
++ free (dirpath);
+ return retval;
+ }
++
++
+diff --git a/src/userspec.c b/src/userspec.c
+index 2a2b324..1a2bfa0 100644
+--- a/src/userspec.c
++++ b/src/userspec.c
+@@ -19,7 +19,6 @@
+ /* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+ \f
+ #include <system.h>
+-#include <alloca.h>
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <sys/types.h>
+@@ -33,18 +32,6 @@
+ # define endgrent()
+ #endif
+
+-/* Perform the equivalent of the statement `dest = strdup (src);',
+- but obtaining storage via alloca instead of from the heap. */
+-
+-#define V_STRDUP(dest, src) \
+- do \
+- { \
+- int _len = strlen ((src)); \
+- (dest) = (char *) alloca (_len + 1); \
+- strcpy (dest, src); \
+- } \
+- while (0)
+-
+ /* Return nonzero if STR represents an unsigned decimal integer,
+ otherwise return 0. */
+
+@@ -57,6 +44,18 @@ isnumber_p (const char *str)
+ return 1;
+ }
+
++static void
++store_string (char **bufptr, size_t *buflen, char *str)
++{
++ size_t len = strlen (str) + 1;
++ if (len > *buflen)
++ {
++ *bufptr = xrealloc (*bufptr, len);
++ *buflen = len;
++ }
++ strcpy (*bufptr, str);
++}
++
+ /* Extract from NAME, which has the form "[user][:.][group]",
+ a USERNAME, UID U, GROUPNAME, and GID G.
+ Either user or group, or both, must be present.
+@@ -70,23 +69,21 @@ isnumber_p (const char *str)
+ Return NULL if successful, a static error message string if not. */
+
+ const char *
+-parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
+- char **username_arg, char **groupname_arg)
++parse_user_spec0 (char *spec, uid_t *uid, gid_t *gid,
++ char **username_arg, char **groupname_arg)
+ {
+ static const char *tired = "virtual memory exhausted";
+ const char *error_msg;
+- char *spec; /* A copy we can write on. */
+ struct passwd *pwd;
+ struct group *grp;
+ char *g, *u, *separator;
+- char *groupname;
++ char *groupname = NULL;
++ size_t grouplen = 0;
+
+ error_msg = NULL;
+ *username_arg = *groupname_arg = NULL;
+ groupname = NULL;
+
+- V_STRDUP (spec, spec_arg);
+-
+ /* Find the separator if there is one. */
+ separator = strchr (spec, ':');
+ if (separator == NULL)
+@@ -143,11 +140,12 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
+ if (grp == NULL)
+ {
+ char nbuf[UINTMAX_STRSIZE_BOUND];
+- V_STRDUP (groupname, umaxtostr (pwd->pw_gid, nbuf));
++ store_string (&groupname, &grouplen,
++ umaxtostr (pwd->pw_gid, nbuf));
+ }
+ else
+ {
+- V_STRDUP (groupname, grp->gr_name);
++ store_string (&groupname, &grouplen, grp->gr_name);
+ }
+ endgrent ();
+ }
+@@ -178,7 +176,7 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
+ endgrent (); /* Save a file descriptor. */
+
+ if (error_msg == NULL)
+- V_STRDUP (groupname, g);
++ store_string (&groupname, &grouplen, g);
+ }
+
+ if (error_msg == NULL)
+@@ -191,23 +189,24 @@ parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
+ }
+
+ if (groupname != NULL && error_msg == NULL)
+- {
+- *groupname_arg = strdup (groupname);
+- if (*groupname_arg == NULL)
+- {
+- if (*username_arg != NULL)
+- {
+- free (*username_arg);
+- *username_arg = NULL;
+- }
+- error_msg = tired;
+- }
+- }
++ *groupname_arg = groupname;
+ }
++ else
++ free (groupname);
+
+ return error_msg;
+ }
+
++const char *
++parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
++ char **username, char **groupname)
++{
++ char *spec = xstrdup (spec_arg);
++ const char *retval = parse_user_spec0 (spec, uid, gid, username, groupname);
++ free (spec);
++ return retval;
++}
++
+ #ifdef TEST
+
+ #define NULL_CHECK(s) ((s) == NULL ? "(null)" : (s))
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 17/48] cpio: patch CVE-2026-66484
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (15 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 16/48] cpio: patch CVE-2026-66485 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 18/48] wget: Fix CVE-2026-58470 Yoann Congal
` (30 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Peter Marko <peter.marko@siemens.com>
Pick patch mentioned in NVD CVE description.
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(From OE-Core rev: a49025d54fe7723df999710e7a385aaeb42303a2)
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
[YC: fixed the CVE: tag]
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-extended/cpio/cpio_2.15.bb | 1 +
.../cpio/files/CVE-2026-66484.patch | 28 +++++++++++++++++++
2 files changed, 29 insertions(+)
create mode 100644 meta/recipes-extended/cpio/files/CVE-2026-66484.patch
diff --git a/meta/recipes-extended/cpio/cpio_2.15.bb b/meta/recipes-extended/cpio/cpio_2.15.bb
index f4b562fdc2c..62dcd444d5e 100644
--- a/meta/recipes-extended/cpio/cpio_2.15.bb
+++ b/meta/recipes-extended/cpio/cpio_2.15.bb
@@ -10,6 +10,7 @@ SRC_URI = "${GNU_MIRROR}/cpio/cpio-${PV}.tar.gz \
file://run-ptest \
file://test.sh \
file://CVE-2026-66485.patch \
+ file://CVE-2026-66484.patch \
"
SRC_URI[sha256sum] = "efa50ef983137eefc0a02fdb51509d624b5e3295c980aa127ceee4183455499e"
diff --git a/meta/recipes-extended/cpio/files/CVE-2026-66484.patch b/meta/recipes-extended/cpio/files/CVE-2026-66484.patch
new file mode 100644
index 00000000000..538f80daf9b
--- /dev/null
+++ b/meta/recipes-extended/cpio/files/CVE-2026-66484.patch
@@ -0,0 +1,28 @@
+From e2b9cbdd3354d2b1569b7390d1bc15c1930559ad Mon Sep 17 00:00:00 2001
+From: Sergey Poznyakoff <gray@gnu.org>
+Date: Thu, 23 Jul 2026 15:55:46 +0300
+Subject: [PATCH] The --no-absolute-filenames option affects hard link targets
+ too.
+
+* src/tar.c (stash_tar_linkname): Apply cpio_safer_name_suffix.
+
+CVE: CVE-2026-66484
+Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/cpio.git/commit/?id=e2b9cbdd3354d2b1569b7390d1bc15c1930559ad]
+Signed-off-by: Peter Marko <peter.marko@siemens.com>
+---
+ src/tar.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/tar.c b/src/tar.c
+index 493f299..a1fc60a 100644
+--- a/src/tar.c
++++ b/src/tar.c
+@@ -37,6 +37,8 @@ stash_tar_linkname (char *linkname)
+
+ strncpy (hold_tar_linkname, linkname, TARLINKNAMESIZE);
+ hold_tar_linkname[TARLINKNAMESIZE] = '\0';
++ cpio_safer_name_suffix (hold_tar_linkname, true, !no_abs_paths_flag,
++ false);
+ return hold_tar_linkname;
+ }
+
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 18/48] wget: Fix CVE-2026-58470
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (16 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 17/48] cpio: patch CVE-2026-66484 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 19/48] gnutls: fix CVE-2026-5419 Yoann Congal
` (29 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hetvi Thakar <hthakar@cisco.com>
This patch applies the upstream fix as referenced in [2],
using the commit shown in [1].
It also includes the upstream regression patch from commit
shown in [3] which changes all three Content-Range conversions to strtoll().
[1] https://gitlab.com/gnuwget/wget/-/commit/43d3ba9336bc94937e6fae2365c6ffd30c34ffcf
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-58470
[3] https://gitlab.com/gnuwget/wget/-/commit/01ff771caac1958662ca8665eed2021ec386a7af
Signed-off-by: Hetvi Thakar <hthakar@cisco.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../wget/wget/CVE-2026-58470-regression.patch | 48 +++++++++++
.../wget/wget/CVE-2026-58470.patch | 79 +++++++++++++++++++
meta/recipes-extended/wget/wget_1.21.4.bb | 2 +
3 files changed, 129 insertions(+)
create mode 100644 meta/recipes-extended/wget/wget/CVE-2026-58470-regression.patch
create mode 100644 meta/recipes-extended/wget/wget/CVE-2026-58470.patch
diff --git a/meta/recipes-extended/wget/wget/CVE-2026-58470-regression.patch b/meta/recipes-extended/wget/wget/CVE-2026-58470-regression.patch
new file mode 100644
index 00000000000..c452261a9ac
--- /dev/null
+++ b/meta/recipes-extended/wget/wget/CVE-2026-58470-regression.patch
@@ -0,0 +1,48 @@
+From 01ff771caac1958662ca8665eed2021ec386a7af Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
+Date: Wed, 12 Aug 2026 19:45:21 +0200
+Subject: [PATCH] * src/http.c (parse_content_range): Use strtoll instead of
+ strtol.
+
+CVE: CVE-2026-58470
+Upstream-Status: Backport [https://gitlab.com/gnuwget/wget/-/commit/01ff771caac1958662ca8665eed2021ec386a7af]
+
+(cherry picked from commit 01ff771caac1958662ca8665eed2021ec386a7af)
+Signed-off-by: Hetvi Thakar <hthakar@cisco.com>
+---
+ src/http.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/http.c b/src/http.c
+index e5e75ee695..8170a43c27 100644
+--- a/src/http.c
++++ b/src/http.c
+@@ -949,7 +949,7 @@ parse_content_range (const char *hdr, wgint *first_byte_ptr,
+ return false;
+
+ errno = 0;
+- num = strtol(hdr, &end, 10);
++ num = strtoll(hdr, &end, 10);
+ if (errno == ERANGE)
+ return false;
+ hdr = end;
+@@ -959,7 +959,7 @@ parse_content_range (const char *hdr, wgint *first_byte_ptr,
+ *first_byte_ptr = num;
+
+ errno = 0;
+- num = strtol(hdr, &end, 10);
++ num = strtoll(hdr, &end, 10);
+ if (errno == ERANGE)
+ return false;
+ hdr = end;
+@@ -976,7 +976,7 @@ parse_content_range (const char *hdr, wgint *first_byte_ptr,
+ else
+ {
+ errno = 0;
+- num = strtol(hdr, NULL, 10);
++ num = strtoll(hdr, NULL, 10);
+ if (errno == ERANGE)
+ return false;
+ }
+--
+2.35.6
diff --git a/meta/recipes-extended/wget/wget/CVE-2026-58470.patch b/meta/recipes-extended/wget/wget/CVE-2026-58470.patch
new file mode 100644
index 00000000000..7ee4e87344e
--- /dev/null
+++ b/meta/recipes-extended/wget/wget/CVE-2026-58470.patch
@@ -0,0 +1,79 @@
+From bfbab29e0a94160b283a8101e122d07684104955 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
+Date: Mon, 29 Jun 2026 18:57:54 +0200
+Subject: [PATCH] * src/http.c (parse_content_range): Fix integer overflow
+
+Reported-by: TristanInSec@gmail.com
+
+CVE: CVE-2026-58470
+Upstream-Status: Backport [https://gitlab.com/gnuwget/wget/-/commit/43d3ba9336bc94937e6fae2365c6ffd30c34ffcf]
+
+(cherry picked from commit 43d3ba9336bc94937e6fae2365c6ffd30c34ffcf)
+Signed-off-by: Hetvi Thakar <hthakar@cisco.com>
+---
+ src/http.c | 35 ++++++++++++++++++++++++-----------
+ 1 file changed, 24 insertions(+), 11 deletions(-)
+
+diff --git a/src/http.c b/src/http.c
+index 116a93a3..4dc6b70f 100644
+--- a/src/http.c
++++ b/src/http.c
+@@ -914,6 +914,7 @@ parse_content_range (const char *hdr, wgint *first_byte_ptr,
+ wgint *last_byte_ptr, wgint *entity_length_ptr)
+ {
+ wgint num;
++ char *end;
+
+ /* Ancient versions of Netscape proxy server, presumably predating
+ rfc2068, sent out `Content-Range' without the "bytes"
+@@ -932,27 +933,39 @@ parse_content_range (const char *hdr, wgint *first_byte_ptr,
+ }
+ if (!c_isdigit (*hdr))
+ return false;
+- for (num = 0; c_isdigit (*hdr); hdr++)
+- num = 10 * num + (*hdr - '0');
+- if (*hdr != '-' || !c_isdigit (*(hdr + 1)))
++
++ errno = 0;
++ num = strtol(hdr, &end, 10);
++ if (errno == ERANGE)
++ return false;
++ hdr = end;
++
++ if (*hdr++ != '-' || !c_isdigit (*hdr))
+ return false;
+ *first_byte_ptr = num;
+- ++hdr;
+- for (num = 0; c_isdigit (*hdr); hdr++)
+- num = 10 * num + (*hdr - '0');
+- if (*hdr != '/')
++
++ errno = 0;
++ num = strtol(hdr, &end, 10);
++ if (errno == ERANGE)
++ return false;
++ hdr = end;
++
++ if (*hdr++ != '/')
+ return false;
+ *last_byte_ptr = num;
+- if (!(c_isdigit (*(hdr + 1)) || *(hdr + 1) == '*'))
++ if (!(c_isdigit (*hdr) || *hdr == '*'))
+ return false;
+ if (*last_byte_ptr < *first_byte_ptr)
+ return false;
+- ++hdr;
+ if (*hdr == '*')
+ num = -1;
+ else
+- for (num = 0; c_isdigit (*hdr); hdr++)
+- num = 10 * num + (*hdr - '0');
++ {
++ errno = 0;
++ num = strtol(hdr, NULL, 10);
++ if (errno == ERANGE)
++ return false;
++ }
+ *entity_length_ptr = num;
+ if ((*entity_length_ptr <= *last_byte_ptr) && *entity_length_ptr != -1)
+ return false;
diff --git a/meta/recipes-extended/wget/wget_1.21.4.bb b/meta/recipes-extended/wget/wget_1.21.4.bb
index 8ae0bcf1f05..6ae0fc75b17 100644
--- a/meta/recipes-extended/wget/wget_1.21.4.bb
+++ b/meta/recipes-extended/wget/wget_1.21.4.bb
@@ -8,6 +8,8 @@ SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
file://CVE-2026-58471.patch \
file://CVE-2026-58472.patch \
file://CVE-2026-58472-regression.patch \
+ file://CVE-2026-58470.patch \
+ file://CVE-2026-58470-regression.patch \
"
SRC_URI[sha256sum] = "81542f5cefb8faacc39bbbc6c82ded80e3e4a88505ae72ea51df27525bcde04c"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 19/48] gnutls: fix CVE-2026-5419
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (17 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 18/48] wget: Fix CVE-2026-58470 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 20/48] curl: set CVE_STATUS for CVE-2026-8458 Yoann Congal
` (28 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Jakub Szczudlo (Nokia) <jakub.szczudlo@nokia.com>
Backport patch to fix CVE-2026-5419.
References:
https://nvd.nist.gov/vuln/detail/CVE-2026-5419
Upstream fix:
https://gitlab.com/gnutls/gnutls/-/commit/1e627aa5ad95c6dc0518d94e9a009997b081a1ab
Tested with ptest
Signed-off-by: Jakub Szczudlo <jakub.szczudlo@nokia.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../gnutls/gnutls/CVE-2026-5419.patch | 247 ++++++++++++++++++
meta/recipes-support/gnutls/gnutls_3.8.4.bb | 1 +
2 files changed, 248 insertions(+)
create mode 100644 meta/recipes-support/gnutls/gnutls/CVE-2026-5419.patch
diff --git a/meta/recipes-support/gnutls/gnutls/CVE-2026-5419.patch b/meta/recipes-support/gnutls/gnutls/CVE-2026-5419.patch
new file mode 100644
index 00000000000..7a7f4469dd8
--- /dev/null
+++ b/meta/recipes-support/gnutls/gnutls/CVE-2026-5419.patch
@@ -0,0 +1,247 @@
+From 0ff1cf201404afc6b227f9ddfea376866770a9d3 Mon Sep 17 00:00:00 2001
+From: Daiki Ueno <ueno@gnu.org>
+Date: Fri, 4 Sep 2026 09:16:30 +0000
+Subject: [PATCH] gnutls_cipher_decrypt3: make PKCS#7 unpadding branch free
+
+This tries to make the logic of PKCS#7 padding removal constant-time,
+by removing potential branching operations.
+
+CVE: CVE-2026-5419
+Upstream-Status: Backport [https://gitlab.com/gnutls/gnutls/-/commit/1e627aa5ad95c6dc0518d94e9a009997b081a1ab]
+
+Backport Changes:
+- Adjusted the upstream hunk to match the GnuTLS 3.8.4 code layout.
+- Drop .gitignore from the backport.
+
+Reported-by: Doria Tang of Stony Brook University
+Fixes: #1815
+Fixes: CVE-2026-5419
+Fixes: GNUTLS-SA-2026-04-29-13
+CVSS: 3.7 Low CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
+Signed-off-by: Daiki Ueno <ueno@gnu.org>
+Signed-off-by: Jakub Szczudlo <jakub.szczudlo@nokia.com>
+
+---
+ lib/crypto-api.c | 53 ++++++++++++++++------
+ lib/libgnutls.map | 2 +
+ tests/Makefile.am | 2 +-
+ tests/pkcs7-pad.c | 109 ++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 152 insertions(+), 14 deletions(-)
+ create mode 100644 tests/pkcs7-pad.c
+
+diff --git a/lib/crypto-api.c b/lib/crypto-api.c
+index bb5c3ec..7ae0ef2 100644
+--- a/lib/crypto-api.c
++++ b/lib/crypto-api.c
+@@ -497,6 +497,38 @@ error:
+ }
+ return ret;
+ }
++/* If succeeds, returns the number of padding bytes to be removed;
++ * zero otherwise.
++ */
++unsigned int _gnutls_pkcs7_unpad(const uint8_t *block, unsigned int block_size)
++{
++ uint8_t padding = block[block_size - 1];
++ volatile unsigned int mask = ~0;
++ volatile unsigned int count = 0;
++
++ /* Count consecutive PADDING bytes from the end, in a
++ * constant-time manner.
++ */
++ for (size_t i = block_size; i > 0; i--) {
++ volatile unsigned int mask2;
++
++ mask2 = -(unsigned int)(block[i - 1] == padding);
++ mask2 &= -(unsigned int)(count < padding);
++
++ /* MASK is initially ~0 and will be flipped to 0 upon first
++ * non-padding bytes.
++ */
++ mask &= mask2;
++ count += 1 & mask;
++ }
++
++ /* PADDING == 0 is effectively excluded here, given COUNT
++ * will never be 0.
++ */
++ mask = -(unsigned int)(count <= block_size);
++ mask &= -(unsigned int)(count == padding);
++ return count & mask;
++}
+
+ /**
+ * gnutls_cipher_decrypt3:
+@@ -532,22 +564,17 @@ int gnutls_cipher_decrypt3(gnutls_cipher_hd_t handle, const void *ctext,
+ if (_gnutls_cipher_type(h->ctx_enc.e) == CIPHER_BLOCK &&
+ (flags & GNUTLS_CIPHER_PADDING_PKCS7)) {
+ uint8_t *p = ptext;
+- uint8_t padding = p[*ptext_len - 1];
+- if (!padding ||
+- padding > _gnutls_cipher_get_block_size(h->ctx_enc.e)) {
+- return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED);
+- }
+- /* Check that the prior bytes are all PADDING */
+- for (size_t i = *ptext_len - padding; i < *ptext_len; i++) {
+- if (padding != p[*ptext_len - 1]) {
+- return gnutls_assert_val(
+- GNUTLS_E_DECRYPTION_FAILED);
+- }
+- }
++ size_t block_size = _gnutls_cipher_get_block_size(h->ctx_enc.e);
++ uint8_t *block = &p[*ptext_len - block_size];
++ unsigned int padding = _gnutls_pkcs7_unpad(block, block_size);
++ volatile unsigned int mask;
++
++ mask = -(unsigned int)(padding == 0);
++ ret = GNUTLS_E_DECRYPTION_FAILED & mask;
+ *ptext_len -= padding;
+ }
+
+- return 0;
++ return ret;
+ }
+
+ /**
+diff --git a/lib/libgnutls.map b/lib/libgnutls.map
+index b02babf..f269ff2 100644
+--- a/lib/libgnutls.map
++++ b/lib/libgnutls.map
+@@ -1551,4 +1551,6 @@ GNUTLS_PRIVATE_3_4 {
+ _gnutls_pathbuf_append;
+ _gnutls_pathbuf_truncate;
+ _gnutls_pathbuf_deinit;
++ # needed by tests/pkcs7-pad
++ _gnutls_pkcs7_unpad;
+ } GNUTLS_3_4;
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index f227e92..32c5335 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -238,7 +238,7 @@ ctests += mini-record-2 simple gnutls_hmac_fast set_pkcs12_cred cert certuniquei
+ x509cert-dntypes id-on-xmppAddr tls13-compat-mode ciphersuite-name \
+ x509-upnconstraint xts-key-check cipher-padding pkcs7-verify-double-free \
+ fips-rsa-sizes tls12-rehandshake-ticket pathbuf tls-force-ems \
+- psk-importer privkey-derive dh-compute2 ecdh-compute2
++ psk-importer privkey-derive dh-compute2 ecdh-compute2 pkcs7-pad
+
+ ctests += tls-channel-binding
+
+diff --git a/tests/pkcs7-pad.c b/tests/pkcs7-pad.c
+new file mode 100644
+index 0000000..d4c3798
+--- /dev/null
++++ b/tests/pkcs7-pad.c
+@@ -0,0 +1,109 @@
++/*
++ * Copyright (C) 2026 Red Hat, Inc.
++ *
++ * This file is part of GnuTLS.
++ *
++ * GnuTLS is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or
++ * (at your option) any later version.
++ *
++ * GnuTLS is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with GnuTLS. If not, see <https://www.gnu.org/licenses/>.
++ */
++
++/* Test that _gnutls_pkcs7_unpad is branch-free, using valgrind */
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include <stdint.h>
++#include <string.h>
++
++#ifdef HAVE_VALGRIND_MEMCHECK_H
++#include <valgrind/memcheck.h>
++#endif
++
++#include "utils.h"
++
++static inline void _gnutls_memory_mark_undefined(void *addr, size_t size)
++{
++#ifdef HAVE_VALGRIND_MEMCHECK_H
++ if (RUNNING_ON_VALGRIND)
++ VALGRIND_MAKE_MEM_UNDEFINED(addr, size);
++#endif
++}
++
++static inline void _gnutls_memory_mark_defined(void *addr, size_t size)
++{
++#ifdef HAVE_VALGRIND_MEMCHECK_H
++ if (RUNNING_ON_VALGRIND)
++ VALGRIND_MAKE_MEM_DEFINED(addr, size);
++#endif
++}
++
++extern unsigned int _gnutls_pkcs7_unpad(const uint8_t *block,
++ unsigned int block_size);
++
++static unsigned int wrap_pkcs7_unpad(uint8_t *block, unsigned int block_size)
++{
++ unsigned int padding;
++
++ _gnutls_memory_mark_undefined(block, block_size);
++
++ padding = _gnutls_pkcs7_unpad(block, block_size);
++
++ _gnutls_memory_mark_defined(block, block_size);
++ _gnutls_memory_mark_defined(&padding, sizeof(padding));
++
++ return padding;
++}
++
++#define PAD 5
++
++void doit(void)
++{
++ uint8_t block[16];
++ unsigned int padding;
++
++ memset(block, 0xFF, sizeof(block));
++ memset(&block[sizeof(block) - PAD], PAD, PAD);
++
++ padding = wrap_pkcs7_unpad(block, sizeof(block));
++ if (padding != PAD)
++ fail("padding should be %d\n", PAD);
++
++ /* The last padding byte exceeds the block size */
++ block[sizeof(block) - 1] = sizeof(block) + 1;
++ padding = wrap_pkcs7_unpad(block, sizeof(block));
++ if (padding != 0)
++ fail("padding should be 0\n");
++ block[sizeof(block) - 1] = PAD;
++
++ /* The last padding byte is zero */
++ block[sizeof(block) - 1] = 0;
++ padding = wrap_pkcs7_unpad(block, sizeof(block));
++ if (padding != 0)
++ fail("padding should be 0\n");
++ block[sizeof(block) - 1] = PAD;
++
++ /* The first padding byte is invalid */
++ block[sizeof(block) - PAD] = PAD + 1;
++ padding = wrap_pkcs7_unpad(block, sizeof(block));
++ if (padding != 0)
++ fail("padding should be 0\n");
++ block[sizeof(block) - PAD] = PAD;
++
++ /* The byte before the first padding equals to PAD */
++ block[sizeof(block) - PAD - 1] = PAD;
++ padding = wrap_pkcs7_unpad(block, sizeof(block));
++ if (padding != PAD)
++ fail("padding should be %d\n", PAD);
++ block[sizeof(block) - PAD - 1] = 0xFF;
++}
+--
+2.43.0
+
diff --git a/meta/recipes-support/gnutls/gnutls_3.8.4.bb b/meta/recipes-support/gnutls/gnutls_3.8.4.bb
index 6dbd11abaff..641289be134 100644
--- a/meta/recipes-support/gnutls/gnutls_3.8.4.bb
+++ b/meta/recipes-support/gnutls/gnutls_3.8.4.bb
@@ -51,6 +51,7 @@ SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar
file://CVE-2026-42011_p2.patch \
file://CVE-2026-33846.patch \
file://CVE-2026-33845.patch \
+ file://CVE-2026-5419.patch \
"
SRC_URI[sha256sum] = "2bea4e154794f3f00180fa2a5c51fe8b005ac7a31cd58bd44cdfa7f36ebc3a9b"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 20/48] curl: set CVE_STATUS for CVE-2026-8458
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (18 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 19/48] gnutls: fix CVE-2026-5419 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 21/48] vim: Fix CVE-2026-52858 regression Yoann Congal
` (27 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Devansh Patel <devanshp@cisco.com>
CVE-2026-8458 allows a Negotiate-authenticated connection to be
incorrectly reused for a request using a different SASL service name.
Scarthgap uses curl 8.7.1, which is within the affected version range.
The vulnerable code path on Linux requires both Negotiate authentication
and GSSAPI support, represented by the negotiate-auth and krb5
PACKAGECONFIG options.
The upstream fix [1] stores the SASL service name in struct Curl_creds
and includes it in connection-reuse comparisons. However, struct
Curl_creds was introduced by the credential-management rework in [2],
after curl 8.7.1. Therefore, the security fix cannot be cleanly
backported without introducing a substantial credential-management
refactor.
Use a conditional CVE_STATUS as the least invasive solution. Report the
CVE as unpatched when both krb5 and negotiate-auth are enabled. Otherwise,
mark it not-applicable-config because the vulnerable GSSAPI-backed
Negotiate implementation is not built. The default Scarthgap
configuration enables negotiate-auth but does not enable krb5.
References:
[1] https://github.com/curl/curl/commit/5e99b73cf441d9c369768b9cd48b5389b9a2503d
[2] https://github.com/curl/curl/commit/8f71d0fde515aa4c68002477356c35bd79927729
[3] https://curl.se/docs/CVE-2026-8458.html
Signed-off-by: Devansh Patel <devanshp@cisco.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-support/curl/curl_8.7.1.bb | 1 +
1 file changed, 1 insertion(+)
diff --git a/meta/recipes-support/curl/curl_8.7.1.bb b/meta/recipes-support/curl/curl_8.7.1.bb
index 365f02ad596..f2479a33643 100644
--- a/meta/recipes-support/curl/curl_8.7.1.bb
+++ b/meta/recipes-support/curl/curl_8.7.1.bb
@@ -57,6 +57,7 @@ CVE_STATUS[CVE-2025-0725] = "not-applicable-config: gzip decompression of conten
CVE_STATUS[CVE-2025-5025] = "${@bb.utils.contains('PACKAGECONFIG', 'openssl', 'not-applicable-config: applicable only with wolfssl','unpatched',d)}"
CVE_STATUS[CVE-2025-10966] = "${@bb.utils.contains('PACKAGECONFIG', 'openssl', 'not-applicable-config: applicable only with wolfssl','unpatched',d)}"
CVE_STATUS[CVE-2026-10536] = "${@bb.utils.contains('PACKAGECONFIG', 'nghttp2', 'unpatched', 'not-applicable-config: applicable only with HTTP/2', d)}"
+CVE_STATUS[CVE-2026-8458] = "${@bb.utils.contains('PACKAGECONFIG', 'krb5 negotiate-auth', 'unpatched', 'not-applicable-config: applicable only with GSS-API-backed Negotiate authentication', d)}"
inherit autotools pkgconfig binconfig multilib_header ptest
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 21/48] vim: Fix CVE-2026-52858 regression
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (19 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 20/48] curl: set CVE_STATUS for CVE-2026-8458 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 22/48] improve_kernel_cve_report: validate that cve details field exists Yoann Congal
` (26 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Devansh Patel <devanshp@cisco.com>
This patch fixes a regression introduced by the CVE-2026-52858 fix
already carried by OE-Core in commit [1]. The original security fix
added the g:pythoncomplete_allow_import opt-in, but the documented
behavior was broken because vim was not imported in the completion
class scope. This patch applies upstream Vim patch 9.2.0568 to restore
that behavior.
[1] https://github.com/openembedded/openembedded-core/commit/1c08fa48b6765ace24a261ecf43f871e850cee88
[2] https://github.com/vim/vim/commit/4b850457e12e1a678dd209f2868154f7553cbf8d
[3] https://github.com/vim/vim/commit/868ad62cb8bf8038322eab2badd31bd98b02b9df
[4] https://github.com/vim/vim/security/advisories/GHSA-52mc-rq6p-rc7c
Signed-off-by: Devansh Patel <devanshp@cisco.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../vim/files/CVE-2026-52858-regression.patch | 94 +++++++++++++++++++
meta/recipes-support/vim/vim.inc | 1 +
2 files changed, 95 insertions(+)
create mode 100644 meta/recipes-support/vim/files/CVE-2026-52858-regression.patch
diff --git a/meta/recipes-support/vim/files/CVE-2026-52858-regression.patch b/meta/recipes-support/vim/files/CVE-2026-52858-regression.patch
new file mode 100644
index 00000000000..d3b11a62629
--- /dev/null
+++ b/meta/recipes-support/vim/files/CVE-2026-52858-regression.patch
@@ -0,0 +1,94 @@
+From 8075209bb1e721ca89c2e7fd5d216d7fe2bd3ea6 Mon Sep 17 00:00:00 2001
+From: thinca <thinca@gmail.com>
+Date: Sun, 31 May 2026 12:33:07 +0000
+Subject: [PATCH] patch 9.2.0568: pythoncomplete: g:pythoncomplete_allow_import
+ had no effect
+
+Problem: The security patch 9.2.0561 added a vim.eval() call inside
+ Completer.evalsource() to honor g:pythoncomplete_allow_import.
+ But the 'vim' module is only imported inside the outer
+ vimcomplete() / vimpy3complete() function, not at the script's
+ top level, so referring to it from a Completer method raises
+ NameError. The surrounding bare 'except' silently swallows
+ the error and leaves allow_imports at 0, meaning the opt-in
+ never takes effect -- 'import os' (and any other
+ buffer-level import) is always skipped, no candidates are
+ produced for 'os.<...>' and
+ Test_popup_and_preview_autocommand() fails on the Windows
+ CI matrix (Linux skips the test because Python 2 is absent).
+Solution: Re-import 'vim' at the top of evalsource() in both
+ pythoncomplete.vim and python3complete.vim so the eval reads
+ the global, and set g:pythoncomplete_allow_import = 1 in the
+ test (it is the opt-in intended for callers that trust the
+ buffer contents) (thinca).
+
+closes: #20386
+
+CVE: CVE-2026-52858
+Upstream-Status: Backport [https://github.com/vim/vim/commit/868ad62cb8bf8038322eab2badd31bd98b02b9df]
+
+Backport Changes:
+- Omitted src/version.c because the Scarthgap recipe remains at Vim 9.1.1683;
+ the upstream version-table hunk targets Vim 9.2 and conflicted during
+ cherry-pick, while the runtime and test changes applied unchanged.
+
+Signed-off-by: thinca <thinca@gmail.com>
+Signed-off-by: Christian Brabandt <cb@256bit.org>
+(cherry picked from commit 868ad62cb8bf8038322eab2badd31bd98b02b9df)
+Signed-off-by: Devansh Patel <devanshp@cisco.com>
+---
+ runtime/autoload/python3complete.vim | 3 +++
+ runtime/autoload/pythoncomplete.vim | 3 +++
+ src/testdir/test_popup.vim | 4 ++++
+ 3 files changed, 10 insertions(+)
+
+diff --git a/runtime/autoload/python3complete.vim b/runtime/autoload/python3complete.vim
+index a0314242b..bdabf62c8 100644
+--- a/runtime/autoload/python3complete.vim
++++ b/runtime/autoload/python3complete.vim
+@@ -158,6 +158,9 @@ class Completer(object):
+ self.parser = PyParser()
+
+ def evalsource(self,text,line=0):
++ # vim is imported locally in vimpy3complete(); re-import here so the
++ # vim.eval() below works (otherwise NameError, silently caught).
++ import vim
+ sc = self.parser.parse(text,line)
+ try: allow_imports = int(
+ vim.eval("get(g:, 'pythoncomplete_allow_import', 0)"))
+diff --git a/runtime/autoload/pythoncomplete.vim b/runtime/autoload/pythoncomplete.vim
+index 39b1efd29..761488244 100644
+--- a/runtime/autoload/pythoncomplete.vim
++++ b/runtime/autoload/pythoncomplete.vim
+@@ -172,6 +172,9 @@ class Completer(object):
+ self.parser = PyParser()
+
+ def evalsource(self,text,line=0):
++ # vim is imported locally in vimcomplete(); re-import here so the
++ # vim.eval() below works (otherwise NameError, silently caught).
++ import vim
+ sc = self.parser.parse(text,line)
+ try: allow_imports = int(
+ vim.eval("get(g:, 'pythoncomplete_allow_import', 0)"))
+diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
+index fac2a7592..55c2f232d 100644
+--- a/src/testdir/test_popup.vim
++++ b/src/testdir/test_popup.vim
+@@ -723,6 +723,9 @@ func Test_popup_and_preview_autocommand()
+ au!
+ au BufAdd * nested tab sball
+ augroup END
++ " Let pythoncomplete follow the buffer's 'import os' (off by default
++ " since v9.2.0561) so 'os.' can be completed.
++ let g:pythoncomplete_allow_import = 1
+ set omnifunc=pythoncomplete#Complete
+ call setline(1, 'import os')
+ " make the line long
+@@ -745,6 +748,7 @@ func Test_popup_and_preview_autocommand()
+ augroup END
+ augroup! MyBufAdd
+ bw!
++ unlet g:pythoncomplete_allow_import
+ endfunc
+
+ func s:run_popup_and_previewwindow_dump(lines, dumpfile)
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 0acf8247b72..5a34c1fa35f 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -34,6 +34,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://CVE-2026-46483.patch \
file://CVE-2026-28420.patch \
file://CVE-2026-52858.patch \
+ file://CVE-2026-52858-regression.patch \
file://CVE-2026-52859.patch \
file://CVE-2026-52860.patch \
file://CVE-2026-28422.patch \
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 22/48] improve_kernel_cve_report: validate that cve details field exists
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (20 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 21/48] vim: Fix CVE-2026-52858 regression Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 23/48] improve_kernel_cve_report: fix backported-patch check Yoann Congal
` (25 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Daniel Turull <daniel.turull@ericsson.com>
Check if the cve information has the details field to avoid crashing
Signed-off-by: Daniel Turull <daniel.turull@ericsson.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 80ff4903ea1b839f9cd9393b314c3adfbb80b765)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
scripts/contrib/improve_kernel_cve_report.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/contrib/improve_kernel_cve_report.py b/scripts/contrib/improve_kernel_cve_report.py
index 3a15b1ed26e..dc961d59389 100755
--- a/scripts/contrib/improve_kernel_cve_report.py
+++ b/scripts/contrib/improve_kernel_cve_report.py
@@ -362,7 +362,7 @@ def cve_update(cve_data, cve, entry):
if entry['status'] == "Unpatched" and cve_data[cve]['status'] == "Patched":
# Backported-patch (e.g. vendor kernel repo with cherry-picked CVE patch)
# has priority over unpatch from CNA
- if cve_data[cve]['detail'] == "backported-patch":
+ if "detail" in cve_data and cve_data[cve]['detail'] == "backported-patch":
return
logging.warning("CVE entry %s update from Patched to Unpatched from the scan result", cve)
cve_data[cve] = copy_data(cve_data[cve], entry)
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 23/48] improve_kernel_cve_report: fix backported-patch check
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (21 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 22/48] improve_kernel_cve_report: validate that cve details field exists Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 24/48] libxfont: Fix CVE-2026-56001 Yoann Congal
` (24 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hiago De Franco <hfranco@baylibre.com>
The guard added in 80ff4903ea tests "detail" in cve_data, but cve_data is
keyed by CVE id, so it asks whether a CVE literally named "detail" was
scanned. That is never true, the condition short-circuits, and the guard
never runs: a CVE_STATUS[CVE-...] = "backported-patch" set for a vendor
cherry-picked patch is silently overwritten to Unpatched by the CNA.
Use .get() on the entry instead. Guard the fallthrough warning the same
way, it makes the same assumption.
Tested against a qemuarm64 linux-yocto report (6.6.142+git, 16221 entries,
4313 of them with no detail). Current master and this version produce
identical output, 18773 entries with no difference. Adding
CVE_STATUS[CVE-2024-42067] = "backported-patch" to that report then makes
the only difference between them: master overwrites it to Unpatched, this
version keeps it Patched. The pre-80ff4903ea code aborts on the same
report with "KeyError: 'detail'".
AI-Generated: Uses Claude (claude-opus-5)
Fixes: 80ff4903ea1b ("improve_kernel_cve_report: validate that cve details field exists")
Signed-off-by: Hiago De Franco <hfranco@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit f5da16b0d3c8f889dab061ba1d8808aba95d4c67)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
scripts/contrib/improve_kernel_cve_report.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/contrib/improve_kernel_cve_report.py b/scripts/contrib/improve_kernel_cve_report.py
index dc961d59389..dd59d93146f 100755
--- a/scripts/contrib/improve_kernel_cve_report.py
+++ b/scripts/contrib/improve_kernel_cve_report.py
@@ -362,7 +362,7 @@ def cve_update(cve_data, cve, entry):
if entry['status'] == "Unpatched" and cve_data[cve]['status'] == "Patched":
# Backported-patch (e.g. vendor kernel repo with cherry-picked CVE patch)
# has priority over unpatch from CNA
- if "detail" in cve_data and cve_data[cve]['detail'] == "backported-patch":
+ if cve_data[cve].get('detail') == "backported-patch":
return
logging.warning("CVE entry %s update from Patched to Unpatched from the scan result", cve)
cve_data[cve] = copy_data(cve_data[cve], entry)
@@ -381,7 +381,7 @@ def cve_update(cve_data, cve, entry):
logging.debug("CVE entry %s updated from Unpatched to Ignored", cve)
return
logging.warning("Unhandled CVE entry update for %s %s from %s %s to %s",
- cve, cve_data[cve]['status'], cve_data[cve]['detail'], entry['status'], entry['detail'])
+ cve, cve_data[cve]['status'], cve_data[cve].get('detail'), entry['status'], entry['detail'])
def main():
parser = argparse.ArgumentParser(
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 24/48] libxfont: Fix CVE-2026-56001
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (22 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 23/48] improve_kernel_cve_report: fix backported-patch check Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 25/48] libxfont: Fix CVE-2026-56002 Yoann Congal
` (23 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Vijay Anusuri <vanusuri@mvista.com>
Pick patch according to [2]
[1] https://nvd.nist.gov/vuln/detail/CVE-2026-56001
[2] https://security-tracker.debian.org/tracker/CVE-2026-56001
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../xorg-lib/libxfont/CVE-2026-56001.patch | 87 +++++++++++++++++++
.../xorg-lib/libxfont_1.5.4.bb | 3 +
2 files changed, 90 insertions(+)
create mode 100644 meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56001.patch
diff --git a/meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56001.patch b/meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56001.patch
new file mode 100644
index 00000000000..1de7f3e0372
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56001.patch
@@ -0,0 +1,87 @@
+From be0b08e2d354138d3222b4490e2a77c6ee42f778 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon, 1 Jun 2026 16:46:10 +1000
+Subject: [PATCH] bitscale: fix integer overflow in BitmapScaleBitmaps
+ bytestoalloc
+
+bytestoalloc is declared as unsigned int (32-bit). When the sum of
+per-glyph byte counts exceeds 2^32, the value wraps around and calloc()
+allocates a buffer that is too small. The subsequent ScaleBitmap loop
+then writes past the end of the allocated buffer.
+
+Change bytestoalloc from unsigned int to size_t to match the actual
+allocation size type, and add an explicit overflow check in the
+accumulation loop to bail out if the total would exceed SIZE_MAX.
+
+This vulnerability was discovered by:
+Anonymous working with TrendAI Zero Day Initiative
+
+CVE-2026-56001/ZDI-CAN-30558
+
+Assisted-by: Claude:claude-opus-4-6
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxfont/-/merge_requests/34>
+
+Note: 'SIZE_MAX' is defined in header '<stdint.h>'. Add '#include
+<stdint.h>' to fix build failure.
+
+Upstream-Status: Backport [import from debian libxfont1 1.5.2-4+deb9u1
+Upstream commit https://gitlab.freedesktop.org/xorg/lib/libxfont/-/commit/be0b08e2d354138d3222b4490e2a77c6ee42f778]
+CVE: CVE-2026-56001
+Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
+---
+ src/bitmap/bitscale.c | 24 +++++++++++++++++++++---
+ 1 file changed, 21 insertions(+), 3 deletions(-)
+
+diff --git a/src/bitmap/bitscale.c b/src/bitmap/bitscale.c
+index 13ed924..32144d6 100644
+--- a/src/bitmap/bitscale.c
++++ b/src/bitmap/bitscale.c
+@@ -38,6 +38,7 @@ from The Open Group.
+ #include <X11/fonts/bitmap.h>
+ #include <X11/fonts/fontutil.h>
+ #include <math.h>
++#include <stdint.h>
+
+ #ifndef MAX
+ #define MAX(a,b) (((a)>(b)) ? a : b)
+@@ -1459,7 +1460,7 @@ BitmapScaleBitmaps(FontPtr pf, /* scaled font */
+ opci;
+ FontInfoPtr pfi;
+ int glyph;
+- unsigned bytestoalloc = 0;
++ size_t bytestoalloc = 0;
+ int firstCol, lastCol, firstRow, lastRow;
+
+ double xform[4], inv_xform[4];
+@@ -1486,8 +1487,25 @@ BitmapScaleBitmaps(FontPtr pf, /* scaled font */
+ glyph = pf->glyph;
+ for (i = 0; i < nchars; i++)
+ {
+- if ((pci = ACCESSENCODING(bitmapFont->encoding, i)))
+- bytestoalloc += BYTES_FOR_GLYPH(pci, glyph);
++ if ((pci = ACCESSENCODING(bitmapFont->encoding, i))) {
++ size_t glyphsize = BYTES_FOR_GLYPH(pci, glyph);
++ if (bytestoalloc > SIZE_MAX - glyphsize) {
++ fprintf(stderr,
++ "Error: bitmap allocation overflow for scaled font\n");
++ goto bail;
++ }
++ bytestoalloc += glyphsize;
++ }
++ }
++
++ /* Reject unreasonably large bitmap allocations that could result
++ * from malicious fonts with extreme scale factors. 256 MiB is
++ * far beyond any legitimate scaled bitmap font. */
++#define BITMAP_SCALE_MAX_ALLOC (256 * 1024 * 1024)
++ if (bytestoalloc > BITMAP_SCALE_MAX_ALLOC) {
++ fprintf(stderr,
++ "Error: scaled bitmap size %zu exceeds limit\n", bytestoalloc);
++ goto bail;
+ }
+
+ /* Do we add the font malloc stuff for VALUE ADDED ? */
+--
+2.43.0
+
diff --git a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
index fa6585d6dce..1173794f8d6 100644
--- a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
@@ -19,6 +19,9 @@ XORG_EXT = "tar.bz2"
BBCLASSEXTEND = "native"
+SRC_URI += "file://CVE-2026-56001.patch \
+ "
+
SRC_URI[md5sum] = "16eaf156edd79b68038b6a7c44aa9e9b"
SRC_URI[sha256sum] = "1a7f7490774c87f2052d146d1e0e64518d32e6848184a18654e8d0bb57883242"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 25/48] libxfont: Fix CVE-2026-56002
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (23 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 24/48] libxfont: Fix CVE-2026-56001 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 26/48] libxfont: Fix CVE-2026-56003 Yoann Congal
` (22 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Vijay Anusuri <vanusuri@mvista.com>
Pick patch according to [2]
[1] https://nvd.nist.gov/vuln/detail/CVE-2026-56002
[2] https://security-tracker.debian.org/tracker/CVE-2026-56002
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../xorg-lib/libxfont/CVE-2026-56002.patch | 150 ++++++++++++++++++
.../xorg-lib/libxfont_1.5.4.bb | 1 +
2 files changed, 151 insertions(+)
create mode 100644 meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56002.patch
diff --git a/meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56002.patch b/meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56002.patch
new file mode 100644
index 00000000000..cef8a06a686
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56002.patch
@@ -0,0 +1,150 @@
+From b4389e0b1d84a690b819bb27b1439968811a3674 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon, 1 Jun 2026 16:48:40 +1000
+Subject: [PATCH] pcfread: validate bitmap sizes and offsets against per-glyph
+ metrics
+
+pcfReadFont() uses bitmapSizes[] read directly from the PCF file to
+allocate the repadded bitmap buffer. However, per-glyph metrics (also
+from the file) control how much data RepadBitmap() writes. A malicious
+PCF font can declare a small bitmapSizes[] value while having per-glyph
+metrics that require more space, causing a heap buffer overflow.
+
+A similar issue happens with the encoding offsets: pcfReadFont reads
+encoding offsets from the PCF file and uses them to index into the
+metrics array without bounds checking. A crafted font can set an
+encoding offset larger than nmetrics, causing an out-of-bounds pointer
+that is later dereferenced when glyphs are accessed through the encoding
+table.
+
+And the no-repad bitmap path (when PCF_GLYPH_PAD matches the requested
+glyph pad) only validated that each glyph's offset was within the bitmap
+buffer, but did not check that the full glyph extent (offset +
+BYTES_PER_ROW * height) fits within the buffer. A crafted font with a
+glyph offset near the end of a small bitmap buffer but large glyph
+metrics causes a heap buffer over-read when the glyph is later rendered.
+
+This vulnerability was discovered by:
+ Anonymous working with TrendAI Zero Day Initiative
+
+CVE-2026-56002/ZDI-CAN-30559
+
+Assisted-by: Claude:claude-opus-4-6
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxfont/-/merge_requests/34>
+
+Note: 'INT_MAX' is defined in header '<limits.h>'. Add '#include
+<limits.h>' to fix build failure.
+
+Upstream-Status: Backport [import from debian libxfont1 1.5.2-4+deb9u1
+Upstream commit https://gitlab.freedesktop.org/xorg/lib/libxfont/-/commit/b4389e0b1d84a690b819bb27b1439968811a3674]
+CVE: CVE-2026-56002
+Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
+---
+ src/bitmap/pcfread.c | 60 +++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 57 insertions(+), 3 deletions(-)
+
+diff --git a/src/bitmap/pcfread.c b/src/bitmap/pcfread.c
+index 4a372c5..0cc9777 100644
+--- a/src/bitmap/pcfread.c
++++ b/src/bitmap/pcfread.c
+@@ -45,6 +45,7 @@ from The Open Group.
+ #include <stdarg.h>
+ #include <stdint.h>
+ #include <string.h>
++#include <limits.h>
+
+ void
+ pcfError(const char* message, ...)
+@@ -529,25 +530,74 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
+ int old,
+ new;
+ xCharInfo *metric;
++ int srcPad = PCF_GLYPH_PAD(format);
+
+- sizepadbitmaps = bitmapSizes[PCF_SIZE_TO_INDEX(glyph)];
+- padbitmaps = malloc(sizepadbitmaps);
++ /* Compute the actual required size from per-glyph metrics instead
++ * of trusting the file's bitmapSizes[] value, which may be smaller
++ * than the actual data written by RepadBitmap. */
++ sizepadbitmaps = 0;
++ for (i = 0; i < nbitmaps; i++) {
++ int w, h, glyphBytes;
++ metric = &metrics[i].metrics;
++ w = metric->rightSideBearing - metric->leftSideBearing;
++ h = metric->ascent + metric->descent;
++ glyphBytes = BYTES_PER_ROW(w, glyph) * h;
++ if (glyphBytes < 0 || (glyphBytes > 0 && sizepadbitmaps > INT_MAX - glyphBytes)) {
++ pcfError("pcfReadFont(): bitmap size overflow\n");
++ goto Bail;
++ }
++ sizepadbitmaps += glyphBytes;
++ }
++ padbitmaps = malloc(sizepadbitmaps ? sizepadbitmaps : 1);
+ if (!padbitmaps) {
+ pcfError("pcfReadFont(): Couldn't allocate padbitmaps (%d)\n", sizepadbitmaps);
+ goto Bail;
+ }
+ new = 0;
+ for (i = 0; i < nbitmaps; i++) {
++ int srcGlyphBytes;
++
+ old = offsets[i];
+ metric = &metrics[i].metrics;
++
++ /* Validate source offset and source glyph size against the
++ * source bitmap buffer to prevent out-of-bounds reads. */
++ srcGlyphBytes = BYTES_PER_ROW(
++ metric->rightSideBearing - metric->leftSideBearing,
++ srcPad) * (metric->ascent + metric->descent);
++ if (old < 0 || old > sizebitmaps ||
++ srcGlyphBytes < 0 || srcGlyphBytes > sizebitmaps - old) {
++ pcfError("pcfReadFont(): bitmap offset/size out of bounds\n");
++ free(padbitmaps);
++ goto Bail;
++ }
++
+ offsets[i] = new;
+ new += RepadBitmap(bitmaps + old, padbitmaps + new,
+- PCF_GLYPH_PAD(format), glyph,
++ srcPad, glyph,
+ metric->rightSideBearing - metric->leftSideBearing,
+ metric->ascent + metric->descent);
+ }
+ free(bitmaps);
+ bitmaps = padbitmaps;
++ } else {
++ /* Validate offsets and full glyph extents against bitmap buffer */
++ for (i = 0; i < nbitmaps; i++) {
++ int glyphBytes;
++ xCharInfo *metric = &metrics[i].metrics;
++
++ glyphBytes = BYTES_PER_ROW(
++ metric->rightSideBearing - metric->leftSideBearing,
++ glyph) * (metric->ascent + metric->descent);
++ if (offsets[i] >= (CARD32)sizebitmaps ||
++ glyphBytes < 0 ||
++ glyphBytes > sizebitmaps - (int)offsets[i]) {
++ pcfError("pcfReadFont(): bitmap offset/size out of bounds "
++ "(offset %u, size %d, total %d)\n",
++ offsets[i], glyphBytes, sizebitmaps);
++ goto Bail;
++ }
++ }
+ }
+ for (i = 0; i < nbitmaps; i++)
+ metrics[i].bits = bitmaps + offsets[i];
+@@ -622,6 +672,10 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
+ if (IS_EOF(file)) goto Bail;
+ if (encodingOffset == 0xFFFF) {
+ pFont->info.allExist = FALSE;
++ } else if (encodingOffset >= nmetrics) {
++ pcfError("pcfReadFont(): encoding offset %d out of range (nmetrics=%d)\n",
++ encodingOffset, nmetrics);
++ goto Bail;
+ } else {
+ if(!encoding[SEGMENT_MAJOR(i)]) {
+ encoding[SEGMENT_MAJOR(i)]=
+--
+2.43.0
+
diff --git a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
index 1173794f8d6..e7a426c32a9 100644
--- a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
@@ -20,6 +20,7 @@ XORG_EXT = "tar.bz2"
BBCLASSEXTEND = "native"
SRC_URI += "file://CVE-2026-56001.patch \
+ file://CVE-2026-56002.patch \
"
SRC_URI[md5sum] = "16eaf156edd79b68038b6a7c44aa9e9b"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 26/48] libxfont: Fix CVE-2026-56003
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (24 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 25/48] libxfont: Fix CVE-2026-56002 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 27/48] golang: fix homepage Yoann Congal
` (21 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Vijay Anusuri <vanusuri@mvista.com>
Pick patch according to [2]
[1] https://nvd.nist.gov/vuln/detail/CVE-2026-56003
[2] https://security-tracker.debian.org/tracker/CVE-2026-56003
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../xorg-lib/libxfont/CVE-2026-56003.patch | 114 ++++++++++++++++++
.../xorg-lib/libxfont_1.5.4.bb | 1 +
2 files changed, 115 insertions(+)
create mode 100644 meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56003.patch
diff --git a/meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56003.patch b/meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56003.patch
new file mode 100644
index 00000000000..0092c712d44
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxfont/CVE-2026-56003.patch
@@ -0,0 +1,114 @@
+From dff957a5158da038a282a59a31fe736702732939 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon, 1 Jun 2026 16:49:55 +1000
+Subject: [PATCH] bitscale: add bounds check to computeProps for property
+ buffer
+
+ComputeScaledProperties allocates a fixed-size property buffer of 70
+slots. computeProps iterates the source font's properties and writes 1
+slot for unscaled properties or 2 slots for scaledX/scaledY properties,
+with no bounds check. A malicious font with many duplicate properties
+matching fontPropTable entries can overflow the allocated buffer.
+
+Fix this by passing the remaining buffer capacity to computeProps and
+checking it before each write. Properties that would exceed the buffer
+are silently skipped.
+
+The function is also restructured to handle the buffer writes for
+scaledX/scaledY inside the switch cases directly, rather than in a
+separate block after the switch. This makes the control flow clearer and
+ensures the bounds check covers all writes.
+
+This vulnerability was discovered by:
+Anonymous working with TrendAI Zero Day Initiative
+
+CVE-2026-56003/ZDI-CAN-30560
+
+Assisted-by: Claude:claude-opus-4-6
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxfont/-/merge_requests/34>
+
+Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/lib/libxfont/-/commit/dff957a5158da038a282a59a31fe736702732939]
+CVE: CVE-2026-56003
+Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
+---
+ src/bitmap/bitscale.c | 39 ++++++++++++++++++++-------------------
+ 1 file changed, 20 insertions(+), 19 deletions(-)
+
+diff --git a/src/bitmap/bitscale.c b/src/bitmap/bitscale.c
+index 32144d6..2affc11 100644
+--- a/src/bitmap/bitscale.c
++++ b/src/bitmap/bitscale.c
+@@ -513,7 +513,8 @@ static int
+ computeProps(FontPropPtr pf, char *wasStringProp,
+ FontPropPtr npf, char *isStringProp,
+ unsigned int nprops, double xfactor, double yfactor,
+- double sXfactor, double sYfactor)
++ double sXfactor, double sYfactor,
++ int maxprops)
+ {
+ int n;
+ int count;
+@@ -528,14 +529,26 @@ computeProps(FontPropPtr pf, char *wasStringProp,
+
+ switch (t->type) {
+ case scaledX:
+- npf->value = doround(xfactor * (double)pf->value);
+- rawfactor = sXfactor;
+- break;
+ case scaledY:
+- npf->value = doround(yfactor * (double)pf->value);
+- rawfactor = sYfactor;
++ if (count + 2 > maxprops)
++ continue;
++ npf->value = (t->type == scaledX)
++ ? doround(xfactor * (double)pf->value)
++ : doround(yfactor * (double)pf->value);
++ rawfactor = (t->type == scaledX) ? sXfactor : sYfactor;
++ npf->name = pf->name;
++ npf++;
++ count++;
++ npf->value = doround(rawfactor * (double)pf->value);
++ npf->name = rawFontPropTable[t - fontPropTable].atom;
++ npf++;
++ count++;
++ *isStringProp++ = *wasStringProp;
++ *isStringProp++ = *wasStringProp;
+ break;
+ case unscaled:
++ if (count + 1 > maxprops)
++ continue;
+ npf->value = pf->value;
+ npf->name = pf->name;
+ npf++;
+@@ -545,18 +558,6 @@ computeProps(FontPropPtr pf, char *wasStringProp,
+ default:
+ break;
+ }
+- if (t->type != unscaled)
+- {
+- npf->name = pf->name;
+- npf++;
+- count++;
+- npf->value = doround(rawfactor * (double)pf->value);
+- npf->name = rawFontPropTable[t - fontPropTable].atom;
+- npf++;
+- count++;
+- *isStringProp++ = *wasStringProp;
+- *isStringProp++ = *wasStringProp;
+- }
+ }
+ return count;
+ }
+@@ -671,7 +672,7 @@ ComputeScaledProperties(FontInfoPtr sourceFontInfo, /* the font to be scaled */
+ n = NPROPS;
+ n += computeProps(sourceFontInfo->props, sourceFontInfo->isStringProp,
+ fp, isStringProp, sourceFontInfo->nprops, dx, dy,
+- sdx, sdy);
++ sdx, sdy, nProps - NPROPS);
+ return n;
+ }
+
+--
+2.43.0
+
diff --git a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
index e7a426c32a9..5f1af82ac4b 100644
--- a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
@@ -21,6 +21,7 @@ BBCLASSEXTEND = "native"
SRC_URI += "file://CVE-2026-56001.patch \
file://CVE-2026-56002.patch \
+ file://CVE-2026-56003.patch \
"
SRC_URI[md5sum] = "16eaf156edd79b68038b6a7c44aa9e9b"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 27/48] golang: fix homepage
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (25 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 26/48] libxfont: Fix CVE-2026-56003 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 28/48] python3-certifi: " Yoann Congal
` (20 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Peter Marko <peter.marko@siemens.com>
Leading space leads to SPDX document validation errors in some tools.
Example:
SchemaError: \" http://golang.org/\" is not valid under any of the
schemas listed in the 'anyOf' keyword
(components -> ... -> externalReferences -> 0 -> url)
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(From OE-Core rev: cbf36f436b477d81b58ff605846a2482308aefa)
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-devtools/go/go-binary-native_1.22.12.bb | 2 +-
meta/recipes-devtools/go/go-common.inc | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/recipes-devtools/go/go-binary-native_1.22.12.bb b/meta/recipes-devtools/go/go-binary-native_1.22.12.bb
index dd84021cc9e..5dfb3133f6b 100644
--- a/meta/recipes-devtools/go/go-binary-native_1.22.12.bb
+++ b/meta/recipes-devtools/go/go-binary-native_1.22.12.bb
@@ -1,7 +1,7 @@
# This recipe is for bootstrapping our go-cross from a prebuilt binary of Go from golang.org.
SUMMARY = "Go programming language compiler (upstream binary for bootstrap)"
-HOMEPAGE = " http://golang.org/"
+HOMEPAGE = "http://golang.org/"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
diff --git a/meta/recipes-devtools/go/go-common.inc b/meta/recipes-devtools/go/go-common.inc
index a39dea6c1cb..62b31f1762f 100644
--- a/meta/recipes-devtools/go/go-common.inc
+++ b/meta/recipes-devtools/go/go-common.inc
@@ -9,7 +9,7 @@ DESCRIPTION = " The Go programming language is an open source project to make \
fast, statically typed, compiled language that feels like a\
dynamically typed, interpreted language."
-HOMEPAGE = " http://golang.org/"
+HOMEPAGE = "http://golang.org/"
LICENSE = "BSD-3-Clause"
inherit goarch
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 28/48] python3-certifi: fix homepage
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (26 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 27/48] golang: fix homepage Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 29/48] gcc: Upgrade to GCC 13.5 Yoann Congal
` (19 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Peter Marko <peter.marko@siemens.com>
Leading space leads to SPDX document validation errors in some tools.
Example:
SchemaError: \" http://certifi.io/\" is not valid under any of the
schemas listed in the 'anyOf' keyword
(components -> ... -> externalReferences -> 0 -> url)
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(From OE-Core rev: ee556d1e1cc16327e0a11207e90ac61d9f1577f3)
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-devtools/python/python3-certifi_2024.2.2.bb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/python/python3-certifi_2024.2.2.bb b/meta/recipes-devtools/python/python3-certifi_2024.2.2.bb
index b3d6cf080cc..617b597a40e 100644
--- a/meta/recipes-devtools/python/python3-certifi_2024.2.2.bb
+++ b/meta/recipes-devtools/python/python3-certifi_2024.2.2.bb
@@ -2,7 +2,7 @@ SUMMARY = "Python package for providing Mozilla's CA Bundle."
DESCRIPTION = "This installable Python package contains a CA Bundle that you can reference in your \
Python code. This is useful for verifying HTTP requests, for example. This is the same CA Bundle \
which ships with the Requests codebase, and is derived from Mozilla Firefox's canonical set."
-HOMEPAGE = " http://certifi.io/"
+HOMEPAGE = "http://certifi.io/"
LICENSE = "ISC"
LIC_FILES_CHKSUM = "file://LICENSE;md5=11618cb6a975948679286b1211bd573c"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 29/48] gcc: Upgrade to GCC 13.5
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (27 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 28/48] python3-certifi: " Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 30/48] python3-git: fix CVE-2026-42215 Yoann Congal
` (18 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Hemanth Kumar M D <Hemanth.KumarMD@windriver.com>
This is a bugfix release in GCC-13 release series with 266 bugfixes
https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=13.5
Docs: https://gcc.gnu.org/onlinedocs/13.5.0/
Dropped the following patches:
0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
https://github.com/gcc-mirror/gcc/commit/51b9a0f7dfd2441a30e0ebfd4b30f18f86b4ea54
0029-build-Remove-INCLUDE_MEMORY-PR117737.patch
https://github.com/gcc-mirror/gcc/commit/9239757a9c6e3a6e8d94d56803329d556ec914d7
0030-build-Move-sstream-include-above-safe-ctype.h-PR1177.patch
https://github.com/gcc-mirror/gcc/commit/9239757a9c6e3a6e8d94d56803329d556ec914d7
GCC 13.4 GCC 13.5 Diff
No. of expected passes 179388 179928 +540
No. of unexpected failures 26 27 +1
No. of expected failures 1416 1416 0
No. of unsupported tests 2230 2241 +11
Signed-off-by: Hemanth Kumar M D <Hemanth.KumarMD@windriver.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/conf/distro/include/maintainers.inc | 2 +-
.../gcc/{gcc-13.4.inc => gcc-13.5.inc} | 9 +-
...ian_13.4.bb => gcc-cross-canadian_13.5.bb} | 0
.../{gcc-cross_13.4.bb => gcc-cross_13.5.bb} | 0
...-crosssdk_13.4.bb => gcc-crosssdk_13.5.bb} | 0
...cc-runtime_13.4.bb => gcc-runtime_13.5.bb} | 0
...itizers_13.4.bb => gcc-sanitizers_13.5.bb} | 0
...{gcc-source_13.4.bb => gcc-source_13.5.bb} | 0
...dy-Make-it-buildable-by-C-11-to-C-26.patch | 257 ------------------
...build-Remove-INCLUDE_MEMORY-PR117737.patch | 46 ----
...am-include-above-safe-ctype.h-PR1177.patch | 54 ----
.../gcc/{gcc_13.4.bb => gcc_13.5.bb} | 0
...initial_13.4.bb => libgcc-initial_13.5.bb} | 0
.../gcc/{libgcc_13.4.bb => libgcc_13.5.bb} | 0
...ibgfortran_13.4.bb => libgfortran_13.5.bb} | 0
15 files changed, 4 insertions(+), 364 deletions(-)
rename meta/recipes-devtools/gcc/{gcc-13.4.inc => gcc-13.5.inc} (93%)
rename meta/recipes-devtools/gcc/{gcc-cross-canadian_13.4.bb => gcc-cross-canadian_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-cross_13.4.bb => gcc-cross_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-crosssdk_13.4.bb => gcc-crosssdk_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-runtime_13.4.bb => gcc-runtime_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-sanitizers_13.4.bb => gcc-sanitizers_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{gcc-source_13.4.bb => gcc-source_13.5.bb} (100%)
delete mode 100644 meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
delete mode 100644 meta/recipes-devtools/gcc/gcc/0029-build-Remove-INCLUDE_MEMORY-PR117737.patch
delete mode 100644 meta/recipes-devtools/gcc/gcc/0030-build-Move-sstream-include-above-safe-ctype.h-PR1177.patch
rename meta/recipes-devtools/gcc/{gcc_13.4.bb => gcc_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{libgcc-initial_13.4.bb => libgcc-initial_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{libgcc_13.4.bb => libgcc_13.5.bb} (100%)
rename meta/recipes-devtools/gcc/{libgfortran_13.4.bb => libgfortran_13.5.bb} (100%)
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 3a51ad2139c..a9b7be3bf75 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -190,7 +190,7 @@ RECIPE_MAINTAINER:pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <r
RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER:pn-gcc-source-13.4.0 = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-source-13.5.0 = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>"
RECIPE_MAINTAINER:pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>"
RECIPE_MAINTAINER:pn-gdb = "Khem Raj <raj.khem@gmail.com>"
diff --git a/meta/recipes-devtools/gcc/gcc-13.4.inc b/meta/recipes-devtools/gcc/gcc-13.5.inc
similarity index 93%
rename from meta/recipes-devtools/gcc/gcc-13.4.inc
rename to meta/recipes-devtools/gcc/gcc-13.5.inc
index 2017c444986..13fbfa5a980 100644
--- a/meta/recipes-devtools/gcc/gcc-13.4.inc
+++ b/meta/recipes-devtools/gcc/gcc-13.5.inc
@@ -2,11 +2,11 @@ require gcc-common.inc
# Third digit in PV should be incremented after a minor release
-PV = "13.4.0"
+PV = "13.5.0"
# BINV should be incremented to a revision after a minor gcc release
-BINV = "13.4.0"
+BINV = "13.5.0"
FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:"
@@ -66,11 +66,8 @@ SRC_URI = "${BASEURI} \
file://0024-Avoid-hardcoded-build-paths-into-ppc-libgcc.patch \
file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \
file://0027-Fix-gcc-vect-module-testcases.patch \
- file://0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch \
- file://0029-build-Remove-INCLUDE_MEMORY-PR117737.patch \
- file://0030-build-Move-sstream-include-above-safe-ctype.h-PR1177.patch \
"
-SRC_URI[sha256sum] = "9c4ce6dbb040568fdc545588ac03c5cbc95a8dbf0c7aa490170843afb59ca8f5"
+SRC_URI[sha256sum] = "ec3df0015ed01411f91f9a9cd5b4da3070eb1222b02fadf4133c30c090399855"
S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${SOURCEDIR}"
B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_13.4.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-cross-canadian_13.4.bb
rename to meta/recipes-devtools/gcc/gcc-cross-canadian_13.5.bb
diff --git a/meta/recipes-devtools/gcc/gcc-cross_13.4.bb b/meta/recipes-devtools/gcc/gcc-cross_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-cross_13.4.bb
rename to meta/recipes-devtools/gcc/gcc-cross_13.5.bb
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_13.4.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-crosssdk_13.4.bb
rename to meta/recipes-devtools/gcc/gcc-crosssdk_13.5.bb
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_13.4.bb b/meta/recipes-devtools/gcc/gcc-runtime_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-runtime_13.4.bb
rename to meta/recipes-devtools/gcc/gcc-runtime_13.5.bb
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_13.4.bb b/meta/recipes-devtools/gcc/gcc-sanitizers_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-sanitizers_13.4.bb
rename to meta/recipes-devtools/gcc/gcc-sanitizers_13.5.bb
diff --git a/meta/recipes-devtools/gcc/gcc-source_13.4.bb b/meta/recipes-devtools/gcc/gcc-source_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-source_13.4.bb
rename to meta/recipes-devtools/gcc/gcc-source_13.5.bb
diff --git a/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch b/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
deleted file mode 100644
index 431facb0110..00000000000
--- a/meta/recipes-devtools/gcc/gcc/0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch
+++ /dev/null
@@ -1,257 +0,0 @@
-From 0ffe3c9af4e5d5468df742512b6e930fe7039230 Mon Sep 17 00:00:00 2001
-From: Jakub Jelinek <jakub@redhat.com>
-Date: Fri, 21 Nov 2025 16:25:58 +0100
-Subject: [PATCH] libcody: Make it buildable by C++11 to C++26
-
-The following builds with -std=c++11 and c++14 and c++17 and c++20 and c++23
-and c++26.
-
-I see the u8 string literals are mixed e.g. with strerror, so in
--fexec-charset=IBM1047 there will still be garbage, so am not 100% sure if
-the u8 literals everywhere are worth it either.
-
-2025-11-21 Jakub Jelinek <jakub@redhat.com>
-
- * cody.hh (S2C): For __cpp_char8_t >= 201811 use char8_t instead of
- char in argument type.
- (MessageBuffer::Space): Revert 2025-11-15 change.
- (MessageBuffer::Append): For __cpp_char8_t >= 201811 add overload
- with char8_t const * type of first argument.
- (Packet::Packet): Similarly for first argument.
- * client.cc (CommunicationError, Client::ProcessResponse,
- Client::Connect, ConnectResponse, PathnameResponse, OKResponse,
- IncludeTranslateResponse): Cast u8 string literals to (const char *)
- where needed.
- * server.cc (Server::ProcessRequests, ConnectRequest): Likewise.
-
-Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
-Upstream-Status: Backport [07a767c7a50d1daae8ef7d4aba73fe53ad40c0b7]
----
- libcody/client.cc | 36 +++++++++++++++++++-----------------
- libcody/cody.hh | 22 ++++++++++++++++++++++
- libcody/server.cc | 28 ++++++++++++++--------------
- 3 files changed, 55 insertions(+), 31 deletions(-)
-
-diff --git a/libcody/client.cc b/libcody/client.cc
-index ae69d190cb77..147fecdbe500 100644
---- a/libcody/client.cc
-+++ b/libcody/client.cc
-@@ -97,7 +97,7 @@ int Client::CommunicateWithServer ()
-
- static Packet CommunicationError (int err)
- {
-- std::string e {u8"communication error:"};
-+ std::string e {(const char *) u8"communication error:"};
- e.append (strerror (err));
-
- return Packet (Client::PC_ERROR, std::move (e));
-@@ -110,33 +110,34 @@ Packet Client::ProcessResponse (std::vector<std::string> &words,
- {
- if (e == EINVAL)
- {
-- std::string msg (u8"malformed string '");
-+ std::string msg ((const char *) u8"malformed string '");
- msg.append (words[0]);
-- msg.append (u8"'");
-+ msg.append ((const char *) u8"'");
- return Packet (Client::PC_ERROR, std::move (msg));
- }
- else
-- return Packet (Client::PC_ERROR, u8"missing response");
-+ return Packet (Client::PC_ERROR, (const char *) u8"missing response");
- }
-
- Assert (!words.empty ());
-- if (words[0] == u8"ERROR")
-+ if (words[0] == (const char *) u8"ERROR")
- return Packet (Client::PC_ERROR,
-- words.size () == 2 ? words[1]: u8"malformed error response");
-+ words.size () == 2 ? words[1]
-+ : (const char *) u8"malformed error response");
-
- if (isLast && !read.IsAtEnd ())
- return Packet (Client::PC_ERROR,
-- std::string (u8"unexpected extra response"));
-+ std::string ((const char *) u8"unexpected extra response"));
-
- Assert (code < Detail::RC_HWM);
- Packet result (responseTable[code] (words));
- result.SetRequest (code);
- if (result.GetCode () == Client::PC_ERROR && result.GetString ().empty ())
- {
-- std::string msg {u8"malformed response '"};
-+ std::string msg {(const char *) u8"malformed response '"};
-
- read.LexedLine (msg);
-- msg.append (u8"'");
-+ msg.append ((const char *) u8"'");
- result.GetString () = std::move (msg);
- }
- else if (result.GetCode () == Client::PC_CONNECT)
-@@ -199,7 +200,7 @@ Packet Client::Connect (char const *agent, char const *ident,
- size_t alen, size_t ilen)
- {
- write.BeginLine ();
-- write.AppendWord (u8"HELLO");
-+ write.AppendWord ((const char *) u8"HELLO");
- write.AppendInteger (Version);
- write.AppendWord (agent, true, alen);
- write.AppendWord (ident, true, ilen);
-@@ -211,7 +212,8 @@ Packet Client::Connect (char const *agent, char const *ident,
- // HELLO $version $agent [$flags]
- Packet ConnectResponse (std::vector<std::string> &words)
- {
-- if (words[0] == u8"HELLO" && (words.size () == 3 || words.size () == 4))
-+ if (words[0] == (const char *) u8"HELLO"
-+ && (words.size () == 3 || words.size () == 4))
- {
- char *eptr;
- unsigned long val = strtoul (words[1].c_str (), &eptr, 10);
-@@ -247,7 +249,7 @@ Packet Client::ModuleRepo ()
- // PATHNAME $dir | ERROR
- Packet PathnameResponse (std::vector<std::string> &words)
- {
-- if (words[0] == u8"PATHNAME" && words.size () == 2)
-+ if (words[0] == (const char *) u8"PATHNAME" && words.size () == 2)
- return Packet (Client::PC_PATHNAME, std::move (words[1]));
-
- return Packet (Client::PC_ERROR, u8"");
-@@ -256,7 +258,7 @@ Packet PathnameResponse (std::vector<std::string> &words)
- // OK or ERROR
- Packet OKResponse (std::vector<std::string> &words)
- {
-- if (words[0] == u8"OK")
-+ if (words[0] == (const char *) u8"OK")
- return Packet (Client::PC_OK);
- else
- return Packet (Client::PC_ERROR,
-@@ -319,11 +321,11 @@ Packet Client::IncludeTranslate (char const *include, Flags flags, size_t ilen)
- // PATHNAME $cmifile
- Packet IncludeTranslateResponse (std::vector<std::string> &words)
- {
-- if (words[0] == u8"BOOL" && words.size () == 2)
-+ if (words[0] == (const char *) u8"BOOL" && words.size () == 2)
- {
-- if (words[1] == u8"FALSE")
-- return Packet (Client::PC_BOOL, 0);
-- else if (words[1] == u8"TRUE")
-+ if (words[1] == (const char *) u8"FALSE")
-+ return Packet (Client::PC_BOOL);
-+ else if (words[1] == (const char *) u8"TRUE")
- return Packet (Client::PC_BOOL, 1);
- else
- return Packet (Client::PC_ERROR, u8"");
-diff --git a/libcody/cody.hh b/libcody/cody.hh
-index 789ce9e70b75..93bce93aa94d 100644
---- a/libcody/cody.hh
-+++ b/libcody/cody.hh
-@@ -47,12 +47,21 @@ namespace Detail {
-
- // C++11 doesn't have utf8 character literals :(
-
-+#if __cpp_char8_t >= 201811
-+template<unsigned I>
-+constexpr char S2C (char8_t const (&s)[I])
-+{
-+ static_assert (I == 2, "only single octet strings may be converted");
-+ return s[0];
-+}
-+#else
- template<unsigned I>
- constexpr char S2C (char const (&s)[I])
- {
- static_assert (I == 2, "only single octet strings may be converted");
- return s[0];
- }
-+#endif
-
- /// Internal buffering class. Used to concatenate outgoing messages
- /// and Lex incoming ones.
-@@ -123,6 +132,13 @@ public:
- Space ();
- Append (str, maybe_quote, len);
- }
-+#if __cpp_char8_t >= 201811
-+ void AppendWord (char8_t const *str, bool maybe_quote = false,
-+ size_t len = ~size_t (0))
-+ {
-+ AppendWord ((const char *) str, maybe_quote, len);
-+ }
-+#endif
- /// Add a word as with AppendWord
- /// @param str the string to append
- /// @param maybe_quote string might need quoting, as for Append
-@@ -264,6 +280,12 @@ public:
- : string (s), cat (STRING), code (c)
- {
- }
-+#if __cpp_char8_t >= 201811
-+ Packet (unsigned c, const char8_t *s)
-+ : string ((const char *) s), cat (STRING), code (c)
-+ {
-+ }
-+#endif
- Packet (unsigned c, std::vector<std::string> &&v)
- : vector (std::move (v)), cat (VECTOR), code (c)
- {
-diff --git a/libcody/server.cc b/libcody/server.cc
-index e2fa069bb933..c18469fae843 100644
---- a/libcody/server.cc
-+++ b/libcody/server.cc
-@@ -36,12 +36,12 @@ static RequestPair
- const requestTable[Detail::RC_HWM] =
- {
- // Same order as enum RequestCode
-- RequestPair {u8"HELLO", nullptr},
-- RequestPair {u8"MODULE-REPO", ModuleRepoRequest},
-- RequestPair {u8"MODULE-EXPORT", ModuleExportRequest},
-- RequestPair {u8"MODULE-IMPORT", ModuleImportRequest},
-- RequestPair {u8"MODULE-COMPILED", ModuleCompiledRequest},
-- RequestPair {u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
-+ RequestPair {(const char *) u8"HELLO", nullptr},
-+ RequestPair {(const char *) u8"MODULE-REPO", ModuleRepoRequest},
-+ RequestPair {(const char *) u8"MODULE-EXPORT", ModuleExportRequest},
-+ RequestPair {(const char *) u8"MODULE-IMPORT", ModuleImportRequest},
-+ RequestPair {(const char *) u8"MODULE-COMPILED", ModuleCompiledRequest},
-+ RequestPair {(const char *) u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
- };
- }
-
-@@ -135,21 +135,21 @@ void Server::ProcessRequests (void)
- std::string msg;
-
- if (err > 0)
-- msg = u8"error processing '";
-+ msg = (const char *) u8"error processing '";
- else if (ix >= Detail::RC_HWM)
-- msg = u8"unrecognized '";
-+ msg = (const char *) u8"unrecognized '";
- else if (IsConnected () && ix == Detail::RC_CONNECT)
-- msg = u8"already connected '";
-+ msg = (const char *) u8"already connected '";
- else if (!IsConnected () && ix != Detail::RC_CONNECT)
-- msg = u8"not connected '";
-+ msg = (const char *) u8"not connected '";
- else
-- msg = u8"malformed '";
-+ msg = (const char *) u8"malformed '";
-
- read.LexedLine (msg);
-- msg.append (u8"'");
-+ msg.append ((const char *) u8"'");
- if (err > 0)
- {
-- msg.append (u8" ");
-+ msg.append ((const char *) u8" ");
- msg.append (strerror (err));
- }
- resolver->ErrorResponse (this, std::move (msg));
-@@ -176,7 +176,7 @@ Resolver *ConnectRequest (Server *s, Resolver *r,
- return nullptr;
-
- if (words.size () == 3)
-- words.emplace_back (u8"");
-+ words.emplace_back ((const char *) u8"");
- unsigned version = ParseUnsigned (words[1]);
- if (version == ~0u)
- return nullptr;
diff --git a/meta/recipes-devtools/gcc/gcc/0029-build-Remove-INCLUDE_MEMORY-PR117737.patch b/meta/recipes-devtools/gcc/gcc/0029-build-Remove-INCLUDE_MEMORY-PR117737.patch
deleted file mode 100644
index d784edefd76..00000000000
--- a/meta/recipes-devtools/gcc/gcc/0029-build-Remove-INCLUDE_MEMORY-PR117737.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From b3f1b9e2aa079f8ec73e3cb48143a16645c49566 Mon Sep 17 00:00:00 2001
-From: Andrew Pinski <quic_apinski@quicinc.com>
-Date: Fri, 22 Nov 2024 09:31:44 -0800
-Subject: [PATCH] build: Remove INCLUDE_MEMORY [PR117737]
-
-Since diagnostic.h is included in over half of the sources, requiring to `#define INCLUDE_MEMORY`
-does not make sense. Instead lets unconditionally include memory in system.h.
-
-The majority of this patch is just removing `#define INCLUDE_MEMORY` from the sources which currently
-have it.
-
-This should also fix the mingw build issue but I have not tried it.
-
-Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
-Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
-Upstream-Status: Backport [gcc-15.1.0 b3f1b9e2aa07 partial, only the gcc/system.h change]
----
- gcc/system.h | 8 +-------
- 1 file changed, 1 insertion(+), 7 deletions(-)
-
-diff --git a/gcc/system.h b/gcc/system.h
-index c18c7c5ec58d..c209871df72d 100644
---- a/gcc/system.h
-+++ b/gcc/system.h
-@@ -222,6 +222,7 @@ extern int fprintf_unlocked (FILE *, const char *, ...);
- #ifdef INCLUDE_FUNCTIONAL
- # include <functional>
- #endif
-+# include <memory>
- # include <cstring>
- # include <initializer_list>
- # include <new>
-@@ -758,13 +759,6 @@ private:
- #define LIKELY(x) (__builtin_expect ((x), 1))
- #define UNLIKELY(x) (__builtin_expect ((x), 0))
-
--/* Some of the headers included by <memory> can use "abort" within a
-- namespace, e.g. "_VSTD::abort();", which fails after we use the
-- preprocessor to redefine "abort" as "fancy_abort" below. */
--
--#ifdef INCLUDE_MEMORY
--# include <memory>
--#endif
-
- #ifdef INCLUDE_MUTEX
- # include <mutex>
diff --git a/meta/recipes-devtools/gcc/gcc/0030-build-Move-sstream-include-above-safe-ctype.h-PR1177.patch b/meta/recipes-devtools/gcc/gcc/0030-build-Move-sstream-include-above-safe-ctype.h-PR1177.patch
deleted file mode 100644
index 270c91c345b..00000000000
--- a/meta/recipes-devtools/gcc/gcc/0030-build-Move-sstream-include-above-safe-ctype.h-PR1177.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From ac90b5c413c1565fb37cf79b92f6859b3852254a Mon Sep 17 00:00:00 2001
-From: Andrew Pinski <quic_apinski@quicinc.com>
-Date: Mon, 25 Nov 2024 14:03:27 -0800
-Subject: [PATCH] build: Move sstream include above safe-ctype.h {PR117771]
-
-sstream in some versions of libstdc++ include locale which might not have been
-included yet. safe-ctype.h defines the toupper, tolower, etc. as macros so the
-c++ header files needed to be included before hand as comment in system.h says:
-/* Include C++ standard headers before "safe-ctype.h" to avoid GCC
- poisoning the ctype macros through safe-ctype.h */
-
-I don't understand how it was working before when memory was included after
-safe-ctype.h rather than before. But this makes sstream consistent with the
-other C++ headers.
-
-Pushed as obvious after a build for riscv64-elf.
-
-gcc/ChangeLog:
-
- PR target/117771
- * system.h: Move the include of sstream above safe-ctype.h.
-
-Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
-Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
-Upstream-Status: Backport [gcc-15.1.0 f6e00226a4ca63e76e3e0b3a09a4ce6223980981]
----
- gcc/system.h | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/gcc/system.h b/gcc/system.h
-index 33245e76a986..ff983986153c 100644
---- a/gcc/system.h
-+++ b/gcc/system.h
-@@ -222,6 +222,9 @@ extern int fprintf_unlocked (FILE *, const char *, ...);
- #ifdef INCLUDE_FUNCTIONAL
- # include <functional>
- #endif
-+#ifdef INCLUDE_SSTREAM
-+# include <sstream>
-+#endif
- # include <memory>
- # include <cstring>
- # include <initializer_list>
-@@ -742,10 +745,6 @@ extern int vsnprintf (char *, size_t, const char *, va_list);
- # include <mutex>
- #endif
-
--#ifdef INCLUDE_SSTREAM
--# include <sstream>
--#endif
--
- #ifdef INCLUDE_MALLOC_H
- #if defined(HAVE_MALLINFO) || defined(HAVE_MALLINFO2)
- #include <malloc.h>
diff --git a/meta/recipes-devtools/gcc/gcc_13.4.bb b/meta/recipes-devtools/gcc/gcc_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc_13.4.bb
rename to meta/recipes-devtools/gcc/gcc_13.5.bb
diff --git a/meta/recipes-devtools/gcc/libgcc-initial_13.4.bb b/meta/recipes-devtools/gcc/libgcc-initial_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgcc-initial_13.4.bb
rename to meta/recipes-devtools/gcc/libgcc-initial_13.5.bb
diff --git a/meta/recipes-devtools/gcc/libgcc_13.4.bb b/meta/recipes-devtools/gcc/libgcc_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgcc_13.4.bb
rename to meta/recipes-devtools/gcc/libgcc_13.5.bb
diff --git a/meta/recipes-devtools/gcc/libgfortran_13.4.bb b/meta/recipes-devtools/gcc/libgfortran_13.5.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgfortran_13.4.bb
rename to meta/recipes-devtools/gcc/libgfortran_13.5.bb
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 30/48] python3-git: fix CVE-2026-42215
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (28 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 29/48] gcc: Upgrade to GCC 13.5 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 31/48] scripts/install-buildtools: Update to 5.0.20 Yoann Congal
` (17 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Darsh Kelaiya <dkelaiya@cisco.com>
This patch applies the upstream 3.1.47 backport for
CVE-2026-42215. The upstream fix merge is referenced in [1],
and the public CVE advisory is referenced in [2]. The individual
backported commits are referenced in [3] and [4].
[1] https://github.com/gitpython-developers/GitPython/commit/0f68db0710f9125762fca5dbc2328593537ae923
[2] https://nvd.nist.gov/vuln/detail/CVE-2026-42215
[3] https://github.com/gitpython-developers/GitPython/commit/142195888e713542189533a52cdfc333f05c3af6
[4] https://github.com/gitpython-developers/GitPython/commit/43d92dec4683568d11495956dd556161f17c3ea8
Signed-off-by: Darsh Kelaiya <dkelaiya@cisco.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../python3-git/CVE-2026-42215_p1.patch | 61 +++++++++++++++++++
.../python3-git/CVE-2026-42215_p2.patch | 47 ++++++++++++++
.../python/python3-git_3.1.42.bb | 2 +
3 files changed, 110 insertions(+)
create mode 100644 meta/recipes-devtools/python/python3-git/CVE-2026-42215_p1.patch
create mode 100644 meta/recipes-devtools/python/python3-git/CVE-2026-42215_p2.patch
diff --git a/meta/recipes-devtools/python/python3-git/CVE-2026-42215_p1.patch b/meta/recipes-devtools/python/python3-git/CVE-2026-42215_p1.patch
new file mode 100644
index 00000000000..9d5f10c6943
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-git/CVE-2026-42215_p1.patch
@@ -0,0 +1,61 @@
+From 341a49149a37762e12b10eb70605b54f4abfb54d Mon Sep 17 00:00:00 2001
+From: w <w@mac.lan>
+Date: Mon, 20 Apr 2026 23:29:50 -0400
+Subject: [PATCH] Block unsafe underscored git kwargs / Fix for
+ GHSA-rpm5-65cw-6hj4
+
+CVE: CVE-2026-42215
+Upstream-Status: Backport [https://github.com/gitpython-developers/GitPython/commit/142195888e713542189533a52cdfc333f05c3af6]
+
+Backport Changes:
+- Omit regression tests because the Scarthgap PyPI source
+ archive does not include the upstream test suite.
+
+(cherry picked from commit 142195888e713542189533a52cdfc333f05c3af6)
+Signed-off-by: Darsh Kelaiya <dkelaiya@cisco.com>
+---
+ git/cmd.py | 21 +++++++++++++--------
+ 1 file changed, 13 insertions(+), 8 deletions(-)
+
+diff --git a/git/cmd.py b/git/cmd.py
+index f58e6df5..874acb43 100644
+--- a/git/cmd.py
++++ b/git/cmd.py
+@@ -540,6 +540,12 @@ class Git(LazyMixin):
+ f"The `{protocol}::` protocol looks suspicious, use `allow_unsafe_protocols=True` to allow it."
+ )
+
++ @classmethod
++ def _canonicalize_option_name(cls, option: str) -> str:
++ """Normalize an option or kwarg name for unsafe-option checks."""
++ option_name = option.lstrip("-").split("=", 1)[0].split(None, 1)[0]
++ return dashify(option_name)
++
+ @classmethod
+ def check_unsafe_options(cls, options: List[str], unsafe_options: List[str]) -> None:
+ """Check for unsafe options.
+@@ -547,15 +553,14 @@ class Git(LazyMixin):
+ Some options that are passed to `git <command>` can be used to execute
+ arbitrary commands, this are blocked by default.
+ """
+- # Options can be of the form `foo` or `--foo bar` `--foo=bar`,
+- # so we need to check if they start with "--foo" or if they are equal to "foo".
+- bare_unsafe_options = [option.lstrip("-") for option in unsafe_options]
++ # Options can be of the form `foo`, `--foo`, `--foo bar`, or `--foo=bar`.
++ canonical_unsafe_options = {cls._canonicalize_option_name(option): option for option in unsafe_options}
+ for option in options:
+- for unsafe_option, bare_option in zip(unsafe_options, bare_unsafe_options):
+- if option.startswith(unsafe_option) or option == bare_option:
+- raise UnsafeOptionError(
+- f"{unsafe_option} is not allowed, use `allow_unsafe_options=True` to allow it."
+- )
++ unsafe_option = canonical_unsafe_options.get(cls._canonicalize_option_name(option))
++ if unsafe_option is not None:
++ raise UnsafeOptionError(
++ f"{unsafe_option} is not allowed, use `allow_unsafe_options=True` to allow it."
++ )
+
+ class AutoInterrupt:
+ """Process wrapper that terminates the wrapped process on finalization.
+--
+2.35.6
diff --git a/meta/recipes-devtools/python/python3-git/CVE-2026-42215_p2.patch b/meta/recipes-devtools/python/python3-git/CVE-2026-42215_p2.patch
new file mode 100644
index 00000000000..cef3fe6b015
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-git/CVE-2026-42215_p2.patch
@@ -0,0 +1,47 @@
+From 3385ff27397b58288d922838e8d2eae87d7534fd Mon Sep 17 00:00:00 2001
+From: w <w@mac.lan>
+Date: Tue, 21 Apr 2026 12:03:20 -0400
+Subject: [PATCH] git.cmd: harden unsafe option canonicalization and isolate
+ push test cases
+
+CVE: CVE-2026-42215
+Upstream-Status: Backport [https://github.com/gitpython-developers/GitPython/commit/43d92dec4683568d11495956dd556161f17c3ea8]
+
+Backport Changes:
+- Omit regression test updates because the Scarthgap PyPI
+ source archive does not include the upstream test suite.
+
+(cherry picked from commit 43d92dec4683568d11495956dd556161f17c3ea8)
+Signed-off-by: Darsh Kelaiya <dkelaiya@cisco.com>
+---
+ git/cmd.py | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/git/cmd.py b/git/cmd.py
+index 69756216..73b4c052 100644
+--- a/git/cmd.py
++++ b/git/cmd.py
+@@ -542,9 +542,18 @@ class Git(LazyMixin):
+
+ @classmethod
+ def _canonicalize_option_name(cls, option: str) -> str:
+- """Normalize an option or kwarg name for unsafe-option checks."""
+- option_name = option.lstrip("-").split("=", 1)[0].split(None, 1)[0]
+- return dashify(option_name)
++ """Return the option name used for unsafe-option checks.
++
++ Examples:
++ ``"--upload-pack=/tmp/helper"`` -> ``"upload-pack"``
++ ``"upload_pack"`` -> ``"upload-pack"``
++ ``"--config core.filemode=false"`` -> ``"config"``
++ """
++ option_name = option.lstrip("-").split("=", 1)[0]
++ option_tokens = option_name.split(None, 1)
++ if not option_tokens:
++ return ""
++ return dashify(option_tokens[0])
+
+ @classmethod
+ def check_unsafe_options(cls, options: List[str], unsafe_options: List[str]) -> None:
+--
+2.35.6
diff --git a/meta/recipes-devtools/python/python3-git_3.1.42.bb b/meta/recipes-devtools/python/python3-git_3.1.42.bb
index 8c130cf63b4..38fbd8a078b 100644
--- a/meta/recipes-devtools/python/python3-git_3.1.42.bb
+++ b/meta/recipes-devtools/python/python3-git_3.1.42.bb
@@ -19,6 +19,8 @@ SRC_URI += "file://CVE-2026-42284.patch \
file://CVE-2026-44243_p2.patch \
file://CVE-2026-44244_p1.patch \
file://CVE-2026-44244_p2.patch \
+ file://CVE-2026-42215_p1.patch \
+ file://CVE-2026-42215_p2.patch \
"
SRC_URI[sha256sum] = "2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 31/48] scripts/install-buildtools: Update to 5.0.20
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (29 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 30/48] python3-git: fix CVE-2026-42215 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 32/48] spdx30_tasks: Fix SPDX_CUSTOM_ANNOTATION_VARS implementation Yoann Congal
` (16 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Yoann Congal <yoann.congal@smile.fr>
Update to the 5.0.20 release of the 5.0 series for buildtools
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
scripts/install-buildtools | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/install-buildtools b/scripts/install-buildtools
index 65200e0cf49..f33f192e468 100755
--- a/scripts/install-buildtools
+++ b/scripts/install-buildtools
@@ -57,8 +57,8 @@ logger = scriptutils.logger_create(PROGNAME, stream=sys.stdout)
DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools')
DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto'
-DEFAULT_RELEASE = 'yocto-5.0.19'
-DEFAULT_INSTALLER_VERSION = '5.0.19'
+DEFAULT_RELEASE = 'yocto-5.0.20'
+DEFAULT_INSTALLER_VERSION = '5.0.20'
DEFAULT_BUILDDATE = '202110XX'
# Python version sanity check
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 32/48] spdx30_tasks: Fix SPDX_CUSTOM_ANNOTATION_VARS implementation
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (30 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 31/48] scripts/install-buildtools: Update to 5.0.20 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 33/48] python3: skip ptest incompatible with ptest-runner >= 2.5.0 Yoann Congal
` (15 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Stefano Tondo <stefano.tondo.ext@siemens.com>
Fix incorrect function call when processing SPDX_CUSTOM_ANNOTATION_VARS.
The code was calling new_annotation() as a standalone function, but it
should be called as a method on the build_objset object.
Error:
new_annotation(d, build_objset, build, ...)
Corrected to:
build_objset.new_annotation(d, build_objset, build, ...)
This bug would cause a NameError at runtime if SPDX_CUSTOM_ANNOTATION_VARS
was set to a non-empty value, preventing SPDX document generation.
The fix aligns with how new_annotation() is called elsewhere in the
codebase and matches the SBOMObjset class method signature.
Signed-off-by: Stefano Tondo <stefano.tondo.ext@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
(cherry picked from commit 52ab3b640c6bb7ece34cb4ea6026fd6375f17af4)
Cc: Joshua Watt <jpewhacker@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
[YC:
Link: https://lore.kernel.org/all/CAJdd5GaqcWujQae-GXQpcgAGtosHe7_X0T%2B8LyOfrr8-mOgzLA@mail.gmail.com/
]
---
meta/lib/oe/spdx30_tasks.py | 4 +-
meta/lib/oeqa/selftest/cases/spdx.py | 74 ++++++++++++++++++++++++++++
2 files changed, 75 insertions(+), 3 deletions(-)
diff --git a/meta/lib/oe/spdx30_tasks.py b/meta/lib/oe/spdx30_tasks.py
index b43d626df36..0e9c6faf5cc 100644
--- a/meta/lib/oe/spdx30_tasks.py
+++ b/meta/lib/oe/spdx30_tasks.py
@@ -517,9 +517,7 @@ def create_spdx(d):
build_objset.set_is_native(is_native)
for var in (d.getVar("SPDX_CUSTOM_ANNOTATION_VARS") or "").split():
- new_annotation(
- d,
- build_objset,
+ build_objset.new_annotation(
build,
"%s=%s" % (var, d.getVar(var)),
oe.spdx30.AnnotationType.other,
diff --git a/meta/lib/oeqa/selftest/cases/spdx.py b/meta/lib/oeqa/selftest/cases/spdx.py
index 3373988ca40..5f75b077252 100644
--- a/meta/lib/oeqa/selftest/cases/spdx.py
+++ b/meta/lib/oeqa/selftest/cases/spdx.py
@@ -343,3 +343,77 @@ class SPDX30Check(SPDX3CheckBase, OESelftestTestCase):
value, ["enabled", "disabled"],
f"Unexpected PACKAGECONFIG value '{value}' for {key}"
)
+
+ def test_custom_annotation_vars(self):
+ """
+ Test that SPDX_CUSTOM_ANNOTATION_VARS properly creates annotations
+ without runtime errors. This is a regression test for the bug where
+ new_annotation() was called as a standalone function instead of as
+ a method on build_objset, causing a NameError.
+
+ The test verifies:
+ 1. The build completes successfully (no NameError)
+ 2. Each configured annotation variable appears exactly once
+ 3. The annotation values match the configured variables
+
+ We check for exact equality (not >=) to prevent regressions where
+ one annotation might appear multiple times while another is missing.
+ """
+ ANNOTATION_VAR1 = "TestAnnotation1"
+ ANNOTATION_VAR2 = "TestAnnotation2"
+
+ # This will fail with NameError if new_annotation() is called incorrectly
+ objset = self.check_recipe_spdx(
+ "base-files",
+ "{DEPLOY_DIR_SPDX}/{MACHINE_ARCH}/recipes/recipe-base-files.spdx.json",
+ extraconf=textwrap.dedent(
+ f"""\
+ ANNOTATION1 = "{ANNOTATION_VAR1}"
+ ANNOTATION2 = "{ANNOTATION_VAR2}"
+ SPDX_CUSTOM_ANNOTATION_VARS = "ANNOTATION1 ANNOTATION2"
+ """
+ ),
+ )
+
+ # If we got here, the build succeeded (no NameError)
+ # Now verify the annotations were actually created
+
+ # Find the build element
+ build = None
+ for o in objset.foreach_type(oe.spdx30.build_Build):
+ build = o
+ break
+
+ self.assertIsNotNone(build, "Unable to find Build element")
+
+ # Find annotation objects that reference our build
+ found_annotations = []
+ for obj in objset.objects: # <-- Remove parentheses
+ if isinstance(obj, oe.spdx30.Annotation):
+ if hasattr(obj, "subject") and build._id == obj.subject._id:
+ found_annotations.append(obj)
+
+ # Check each annotation separately to ensure exactly one occurrence of each
+ annotation1_count = 0
+ annotation2_count = 0
+
+ for annotation in found_annotations:
+ if hasattr(annotation, "statement"):
+ if f"ANNOTATION1={ANNOTATION_VAR1}" in annotation.statement:
+ annotation1_count += 1
+ self.logger.info(f"Found ANNOTATION1: {annotation.statement}")
+ if f"ANNOTATION2={ANNOTATION_VAR2}" in annotation.statement:
+ annotation2_count += 1
+ self.logger.info(f"Found ANNOTATION2: {annotation.statement}")
+
+ # Each annotation should appear exactly once
+ self.assertEqual(
+ annotation1_count,
+ 1,
+ f"Expected exactly 1 occurrence of ANNOTATION1, found {annotation1_count}",
+ )
+ self.assertEqual(
+ annotation2_count,
+ 1,
+ f"Expected exactly 1 occurrence of ANNOTATION2, found {annotation2_count}",
+ )
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 33/48] python3: skip ptest incompatible with ptest-runner >= 2.5.0
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (31 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 32/48] spdx30_tasks: Fix SPDX_CUSTOM_ANNOTATION_VARS implementation Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 34/48] ptest-runner: upgrade 2.4.5 -> 2.4.5.1 Yoann Congal
` (14 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Yoann Congal <yoann.congal@smile.fr>
With ptest-runner >= 2.5.0, ptests run with PYTHONUNBUFFERED="1" envvar
to unbuffer the python output (to fix AB-INT timeout issues).
A python3 test, "test_cmd_line.test_non_interactive_output_buffering",
expects buffered output and fails on unbuffered output, skip it.
See https://github.com/python/cpython/issues/128377.
Note: upstream fix also skip it on PYTHONUNBUFFERED!=0:
https://github.com/python/cpython/commit/30268b5d2fbb1a5e6c876f0cdc4cbdb5d93315e6
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-devtools/python/python3_3.12.14.bb | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/meta/recipes-devtools/python/python3_3.12.14.bb b/meta/recipes-devtools/python/python3_3.12.14.bb
index 7ee32601cd3..14be125180b 100644
--- a/meta/recipes-devtools/python/python3_3.12.14.bb
+++ b/meta/recipes-devtools/python/python3_3.12.14.bb
@@ -260,6 +260,12 @@ SKIPPED_TESTS = " \
--ignore test.test_tracemalloc.TestCAPI.test_tracemalloc_track_race \
"
+# With ptest-runner >= 2.5.0, ptests run with PYTHONUNBUFFERED="1" envvar.
+# test_cmd_line.test_non_interactive_output_buffering expects buffered ouput,
+# skip it.
+# See: https://github.com/python/cpython/issues/128377
+SKIPPED_TESTS += "--ignore test.test_cmd_line.CmdLineTest.test_non_interactive_output_buffering"
+
SKIPPED_TESTS:append:class-target:libc-musl = " \
-x test__locale \
-x test_c_locale_coercion \
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 34/48] ptest-runner: upgrade 2.4.5 -> 2.4.5.1
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (32 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 33/48] python3: skip ptest incompatible with ptest-runner >= 2.5.0 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 35/48] ptest-runner: Upgrade 2.4.5.1 -> 2.5.0 Yoann Congal
` (13 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Wang Mingyu <wangmy@fujitsu.com>
This is 2 commits squashed:
| ptest-runner: upgrade 2.4.5 -> 2.5.1
|
| Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
| Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
| Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| (cherry picked from commit d4497ba3fed93807f59c00925056aa21e72c2189)
|ptest-runner: correct PV from 2.5.1 to 2.4.5.1
|
|2.4.5.1 is an actual version, 2.5.1 was a typo mistake.
|That merged less than an hour ago, so no one should
|trip over version going backwards hopefully.
|
|Signed-off-by: Alexander Kanavin <alex@linutronix.de>
|Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|(cherry picked from commit d5e0f51bccae7410b10c98a93fa5853155c2f59e)
Changelog: https://git.yoctoproject.org/ptest-runner2/log/?h=v2.4.5.1
* Makefile: use pkg-config to obtain libcheck flags
* Makefile: remove redundant rule
* README.md: Add my cc to be aware of patches
* README: Update mailing list address for patches + add git command
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../{ptest-runner_2.4.5.bb => ptest-runner_2.4.5.1.bb} | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
rename meta/recipes-support/ptest-runner/{ptest-runner_2.4.5.bb => ptest-runner_2.4.5.1.bb} (94%)
diff --git a/meta/recipes-support/ptest-runner/ptest-runner_2.4.5.bb b/meta/recipes-support/ptest-runner/ptest-runner_2.4.5.1.bb
similarity index 94%
rename from meta/recipes-support/ptest-runner/ptest-runner_2.4.5.bb
rename to meta/recipes-support/ptest-runner/ptest-runner_2.4.5.1.bb
index d28ae7ca91b..9f6bb399b40 100644
--- a/meta/recipes-support/ptest-runner/ptest-runner_2.4.5.bb
+++ b/meta/recipes-support/ptest-runner/ptest-runner_2.4.5.1.bb
@@ -7,8 +7,7 @@ HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/ptest-runner2/about/"
LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
-SRCREV = "aea9f42f87f2a78a973ae22cade8e45259f754e1"
-PV .= "+git"
+SRCREV = "c99e8c2737ff802f110612cc2d90c60233c33255"
SRC_URI = "git://git.yoctoproject.org/ptest-runner2;branch=master;protocol=https \
"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 35/48] ptest-runner: Upgrade 2.4.5.1 -> 2.5.0
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (33 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 34/48] ptest-runner: upgrade 2.4.5 -> 2.4.5.1 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 36/48] ptest-runner: Upgrade 2.5.0 -> 2.5.1 Yoann Congal
` (12 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Yoann Congal <yoann.congal@smile.fr>
Changelog:
- utils.c: Fix dirname() handling in run_ptests()
- ptest-runner-collect-system-data: add info to logs
- main.c: Set PYTHONUNBUFFERED in the environment
- utils.c: print a message when a timeout occurs
- main.c: Add print_helptext() for detailed help
- main.print_usage: Remove unused argument list of -l
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 869d70d46c8e31cfc380b5143059cab3713cae26)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../{ptest-runner_2.4.5.1.bb => ptest-runner_2.5.0.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-support/ptest-runner/{ptest-runner_2.4.5.1.bb => ptest-runner_2.5.0.bb} (95%)
diff --git a/meta/recipes-support/ptest-runner/ptest-runner_2.4.5.1.bb b/meta/recipes-support/ptest-runner/ptest-runner_2.5.0.bb
similarity index 95%
rename from meta/recipes-support/ptest-runner/ptest-runner_2.4.5.1.bb
rename to meta/recipes-support/ptest-runner/ptest-runner_2.5.0.bb
index 9f6bb399b40..b52f327af97 100644
--- a/meta/recipes-support/ptest-runner/ptest-runner_2.4.5.1.bb
+++ b/meta/recipes-support/ptest-runner/ptest-runner_2.5.0.bb
@@ -7,7 +7,7 @@ HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/ptest-runner2/about/"
LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
-SRCREV = "c99e8c2737ff802f110612cc2d90c60233c33255"
+SRCREV = "7429fdd52abb5b08a9e8acef14b1bc4604f09c8f"
SRC_URI = "git://git.yoctoproject.org/ptest-runner2;branch=master;protocol=https \
"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 36/48] ptest-runner: Upgrade 2.5.0 -> 2.5.1
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (34 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 35/48] ptest-runner: Upgrade 2.4.5.1 -> 2.5.0 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 37/48] pseudo: Add in openat2, exec and linkat fixes Yoann Congal
` (11 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Pull in buffering fix:
"""
When running slow ptests, we can see an issue where the tests are writing output
but it doesn't make it to the process (e.g. ssh connection) running ptest-runner.
The issue is that the standard buffering for non-interactive terminals is 8kb and
some ptests don't output enough data to trigger a write. This can lead to
the controlling connection timing out.
This change forces the output streams to be line buffered in all cases. Most
ptest output would contain newlines so this should work well. stderr can be
unbuffered by default but making it consistent here seems the best approach.
Testing with this change on slow ptest runs (e.g. qemu emulated) showed much
more consistent data with this change.
"""
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit b57105311f1c5fd879dd58fa1de8862ebad989c1)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../{ptest-runner_2.5.0.bb => ptest-runner_2.5.1.bb} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename meta/recipes-support/ptest-runner/{ptest-runner_2.5.0.bb => ptest-runner_2.5.1.bb} (95%)
diff --git a/meta/recipes-support/ptest-runner/ptest-runner_2.5.0.bb b/meta/recipes-support/ptest-runner/ptest-runner_2.5.1.bb
similarity index 95%
rename from meta/recipes-support/ptest-runner/ptest-runner_2.5.0.bb
rename to meta/recipes-support/ptest-runner/ptest-runner_2.5.1.bb
index b52f327af97..4bf4827bb89 100644
--- a/meta/recipes-support/ptest-runner/ptest-runner_2.5.0.bb
+++ b/meta/recipes-support/ptest-runner/ptest-runner_2.5.1.bb
@@ -7,7 +7,7 @@ HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/ptest-runner2/about/"
LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
-SRCREV = "7429fdd52abb5b08a9e8acef14b1bc4604f09c8f"
+SRCREV = "afe64efbb3f028e898fa9a5efcdc3010ebdf283c"
SRC_URI = "git://git.yoctoproject.org/ptest-runner2;branch=master;protocol=https \
"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 37/48] pseudo: Add in openat2, exec and linkat fixes
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (35 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 36/48] ptest-runner: Upgrade 2.5.0 -> 2.5.1 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 38/48] pseudo: Update to 1.9.10 Yoann Congal
` (10 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Pull in:
* linkat: Fix AT_EMPTY_PATH handling
* makewrappers/openat2: Add noignore_path option
* pseudo_util: Correctly free memory allocated by pseudo_setupenvp
* exec*: Replace bash workaround to avoid memory corruption
* pseudo_util: Clean up memory handling for setupenvp results
* pseudo_util: Avoid a memory leak in pseudo_dropenv()
* pseudo_util: Ensure pseudo_setupenvp handles memory consistently
* pseudo_util: Avoid accidental free calls for without_libpseudo()
* pseudo.h: Avoid accessing unallocated memory
[YOCTO #16316]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 90f823defa32477c9dbd91d264f581fdf0ee4068)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-devtools/pseudo/pseudo_git.bb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb
index 3d7dd62448f..7b1177f7970 100644
--- a/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -12,9 +12,9 @@ SRC_URI:append:class-nativesdk = " \
file://older-glibc-symbols.patch"
SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
-SRCREV = "823895ba708c63f6ae4dcbfc266210f26c02c698"
+SRCREV = "ca47829825f297d7bf83665c0541a9de4aa78009"
S = "${WORKDIR}/git"
-PV = "1.9.8"
+PV = "1.9.8+git"
# largefile and 64bit time_t support adds these macros via compiler flags globally
# remove them for pseudo since pseudo intercepts some of the functions which will be
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 38/48] pseudo: Update to 1.9.10
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (36 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 37/48] pseudo: Add in openat2, exec and linkat fixes Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 39/48] pseudo: 1.9.10 -> 1.9.11 Yoann Congal
` (9 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Pulls in various important fixes:
Makefile.in: Bump to 1.9.10
test: various: Move to makefile compilation
test-bash-exec-env: Add bash env test case
test/test-openat2-func.c: Remove unusuaed saved_errno
pseudo_util.c: strchr now returns const char
pseudo_client: remove the unused pseudo_prefix_dir_fd
pseudo_client: step around all of pseudo's own fds in closefrom
pseudo_client: step fully past pseudo's own fds when computing startfd
makewrappers: Avoid efault workaround if using AT_EMPTY_PATH
ports/linux/guts: Add __open64_2 wrapper
Makefile.in: Bump to 1.9.9
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 4232a7cc5fa28828fdf3223b3c0a6432c8c1e670)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-devtools/pseudo/pseudo_git.bb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb
index 7b1177f7970..22d9006f797 100644
--- a/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -12,9 +12,9 @@ SRC_URI:append:class-nativesdk = " \
file://older-glibc-symbols.patch"
SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
-SRCREV = "ca47829825f297d7bf83665c0541a9de4aa78009"
+SRCREV = "2a5521e9573049864e07907415f1fee28232d90c"
S = "${WORKDIR}/git"
-PV = "1.9.8+git"
+PV = "1.9.10"
# largefile and 64bit time_t support adds these macros via compiler flags globally
# remove them for pseudo since pseudo intercepts some of the functions which will be
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 39/48] pseudo: 1.9.10 -> 1.9.11
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (37 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 38/48] pseudo: Update to 1.9.10 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 40/48] libslirp: patch CVE-2026-9539 Yoann Congal
` (8 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Adds suport for a working close_range() intercept.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 9a68d3f4bd0e80ea7e1ea745b6a10acd341dc7d8)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-devtools/pseudo/pseudo_git.bb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb
index 22d9006f797..1320d19ad49 100644
--- a/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -12,9 +12,9 @@ SRC_URI:append:class-nativesdk = " \
file://older-glibc-symbols.patch"
SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
-SRCREV = "2a5521e9573049864e07907415f1fee28232d90c"
+SRCREV = "ba8887e5f1e922f866681ec7dec1a00b602a9328"
S = "${WORKDIR}/git"
-PV = "1.9.10"
+PV = "1.9.11"
# largefile and 64bit time_t support adds these macros via compiler flags globally
# remove them for pseudo since pseudo intercepts some of the functions which will be
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 40/48] libslirp: patch CVE-2026-9539
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (38 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 39/48] pseudo: 1.9.10 -> 1.9.11 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 41/48] rootfs.py: fix run-postinsts removal on multilib images Yoann Congal
` (7 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Peter Marko <peter.marko@siemens.com>
Pick patch from NVD report.
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../slirp/libslirp/CVE-2026-9539.patch | 122 ++++++++++++++++++
.../slirp/libslirp_git.bb | 5 +-
2 files changed, 126 insertions(+), 1 deletion(-)
create mode 100644 meta/recipes-connectivity/slirp/libslirp/CVE-2026-9539.patch
diff --git a/meta/recipes-connectivity/slirp/libslirp/CVE-2026-9539.patch b/meta/recipes-connectivity/slirp/libslirp/CVE-2026-9539.patch
new file mode 100644
index 00000000000..192d2b4b26f
--- /dev/null
+++ b/meta/recipes-connectivity/slirp/libslirp/CVE-2026-9539.patch
@@ -0,0 +1,122 @@
+From 927bca7344e31fd58e2f7afaca784aad4400eb84 Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Sat, 23 May 2026 22:06:59 +0200
+Subject: [PATCH] oob: cap urgent data count to what is actually available
+
+so_urgc is provided by the guest sender, so can arbitrary and beyond
+what we actually have. Worse, this can lead to an sb_cc integer
+underflow leading to leaking gigabytes of data.
+
+Fixes #93
+
+Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+CVE: CVE-2026-9539
+Upstream-Status: Backport [https://gitlab.freedesktop.org/slirp/libslirp/-/commit/927bca7344e31fd58e2f7afaca784aad4400eb84]
+Signed-off-by: Peter Marko <peter.marko@siemens.com>
+---
+ src/socket.c | 40 +++++++++++++++++++++++-----------------
+ 1 file changed, 23 insertions(+), 17 deletions(-)
+
+diff --git a/src/socket.c b/src/socket.c
+index 77c5cf6..c491d0f 100644
+--- a/src/socket.c
++++ b/src/socket.c
+@@ -337,7 +337,8 @@ int sorecvoob(struct socket *so)
+ int sosendoob(struct socket *so)
+ {
+ struct sbuf *sb = &so->so_rcv;
+- char buff[2048]; /* XXX Shouldn't be sending more oob data than this */
++ uint32_t urgc = so->so_urgc;
++ char buff[2048];
+
+ int n;
+
+@@ -345,12 +346,15 @@ int sosendoob(struct socket *so)
+ DEBUG_ARG("so = %p", so);
+ DEBUG_ARG("sb->sb_cc = %d", sb->sb_cc);
+
+- if (so->so_urgc > sizeof(buff))
+- so->so_urgc = sizeof(buff); /* XXXX */
++ if (urgc > sizeof(buff))
++ urgc = sizeof(buff);
++
++ if (urgc > sb->sb_cc)
++ urgc = sb->sb_cc;
+
+ if (sb->sb_rptr < sb->sb_wptr) {
+ /* We can send it directly */
+- n = slirp_send(so, sb->sb_rptr, so->so_urgc,
++ n = slirp_send(so, sb->sb_rptr, urgc,
+ (MSG_OOB)); /* |MSG_DONTWAIT)); */
+ } else {
+ /*
+@@ -358,7 +362,6 @@ int sosendoob(struct socket *so)
+ * we must copy all data to a linear buffer then
+ * send it all
+ */
+- uint32_t urgc = so->so_urgc; /* Amount of room left in buff */
+ int len = (sb->sb_data + sb->sb_datalen) - sb->sb_rptr;
+ if (len > urgc) {
+ len = urgc;
+@@ -403,7 +406,7 @@ int sosendoob(struct socket *so)
+ */
+ int sowrite(struct socket *so)
+ {
+- int n, nn;
++ int n, nn, noob = 0;
+ struct sbuf *sb = &so->so_rcv;
+ int len = sb->sb_cc;
+ struct iovec iov[2];
+@@ -413,16 +416,20 @@ int sowrite(struct socket *so)
+
+ if (so->so_urgc) {
+ uint32_t expected = so->so_urgc;
+- if (sosendoob(so) < expected) {
+- /* Treat a short write as a fatal error too,
+- * rather than continuing on and sending the urgent
+- * data as if it were non-urgent and leaving the
+- * so_urgc count wrong.
+- */
++ int noob = sosendoob(so);
++
++ if (noob <= 0)
+ goto err_disconnected;
+- }
++
++ if (noob < expected)
++ /* Short write: either we have not yet received all
++ * urgent data, or the socket buffers are full. Leave
++ * it for later when we have data or have room. */
++ return noob;
++
+ if (sb->sb_cc == 0)
+- return 0;
++ /* Nothing left to write actually */
++ return noob;
+ }
+
+ /*
+@@ -453,12 +460,11 @@ int sowrite(struct socket *so)
+ } else
+ n = 1;
+ }
+- /* Check if there's urgent data to send, and if so, send it */
+
+ nn = slirp_send(so, iov[0].iov_base, iov[0].iov_len, 0);
+ /* This should never happen, but people tell me it does *shrug* */
+ if (nn < 0 && (errno == EAGAIN || errno == EINTR))
+- return 0;
++ return noob;
+
+ if (nn <= 0) {
+ goto err_disconnected;
+@@ -485,7 +491,7 @@ int sowrite(struct socket *so)
+ if ((so->so_state & SS_FWDRAIN) && sb->sb_cc == 0)
+ sofcantsendmore(so);
+
+- return nn;
++ return noob + nn;
+
+ err_disconnected:
+ DEBUG_MISC(" --- sowrite disconnected, so->so_state = %x, errno = %d",
diff --git a/meta/recipes-connectivity/slirp/libslirp_git.bb b/meta/recipes-connectivity/slirp/libslirp_git.bb
index 334b786b9b7..820cd6e4f0c 100644
--- a/meta/recipes-connectivity/slirp/libslirp_git.bb
+++ b/meta/recipes-connectivity/slirp/libslirp_git.bb
@@ -4,7 +4,10 @@ HOMEPAGE = "https://gitlab.freedesktop.org/slirp/libslirp"
LICENSE = "BSD-3-Clause & MIT"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=bca0186b14e6b05e338e729f106db727"
-SRC_URI = "git://gitlab.freedesktop.org/slirp/libslirp.git;protocol=https;branch=master"
+SRC_URI = "\
+ git://gitlab.freedesktop.org/slirp/libslirp.git;protocol=https;branch=master \
+ file://CVE-2026-9539.patch \
+"
SRCREV = "3ad1710a96678fe79066b1469cead4058713a1d9"
PV = "4.7.0"
S = "${WORKDIR}/git"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 41/48] rootfs.py: fix run-postinsts removal on multilib images
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (39 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 40/48] libslirp: patch CVE-2026-9539 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 42/48] python3-cryptography: Fix CVE-2026-34073 Yoann Congal
` (6 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Kyungjik Min <dpmin7@gmail.com>
ROOTFS_BOOTSTRAP_INSTALL in image.bbclass unconditionally stages
run-postinsts into every image. When no delayed postinsts remain,
_uninstall_unneeded() is supposed to remove it again, but the removal
call used the bare "run-postinsts" package name without applying
MLPREFIX.
On a multilib image (e.g. lib32-core-image-minimal), the package that
is actually installed is lib32-run-postinsts, so the unprefixed
removal silently matches nothing and run-postinsts leaks into the
final image manifest, along with its now-pointless init script /
systemd unit.
Expand MLPREFIX before removing the package, matching the pattern
already used elsewhere in oe-core (e.g. oe/package.py) for
package-name lookups that need to work across multilib variants.
Signed-off-by: Kyungjik Min <dp.min@lge.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit dfa5673907bdc5211671ecdfce8ab1fb332eae48)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/lib/oe/rootfs.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index 5abce4ad7d5..e8e6841113e 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -266,7 +266,8 @@ class Rootfs(object, metaclass=ABCMeta):
delayed_postinsts = self._get_delayed_postinsts()
if delayed_postinsts is None:
if os.path.exists(self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts")) or os.path.exists(self.d.expand("${IMAGE_ROOTFS}${systemd_system_unitdir}/run-postinsts.service")):
- self.pm.remove(["run-postinsts"])
+ mlprefix = self.d.getVar('MLPREFIX') or ""
+ self.pm.remove([mlprefix + "run-postinsts"])
image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
True, False, self.d) and \
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 42/48] python3-cryptography: Fix CVE-2026-34073
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (40 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 41/48] rootfs.py: fix run-postinsts removal on multilib images Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 43/48] python3-cryptography: Fix CVE-2026-69248 Yoann Congal
` (5 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Vijay Anusuri <vanusuri@mvista.com>
Pick patch according to [2]
[1] https://nvd.nist.gov/vuln/detail/cve-2026-34073
[2] https://bugzilla.suse.com/show_bug.cgi?id=CVE-2026-34073
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../python3-cryptography/CVE-2026-34073.patch | 167 ++++++++++++++++++
.../python/python3-cryptography_42.0.5.bb | 1 +
2 files changed, 168 insertions(+)
create mode 100644 meta/recipes-devtools/python/python3-cryptography/CVE-2026-34073.patch
diff --git a/meta/recipes-devtools/python/python3-cryptography/CVE-2026-34073.patch b/meta/recipes-devtools/python/python3-cryptography/CVE-2026-34073.patch
new file mode 100644
index 00000000000..9f144fa7094
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/CVE-2026-34073.patch
@@ -0,0 +1,167 @@
+From 6d97887956a05b3aaed262793710f07568026b72 Mon Sep 17 00:00:00 2001
+From: William Woodruff <william@yossarian.net>
+Date: Wed, 25 Mar 2026 18:52:17 -0400
+Subject: [PATCH] Further restrict DNS wildcards in name constraint matching
+ (#14542)
+
+* Further restruct DNS wildcards in name constraint matching
+
+Signed-off-by: William Woodruff <william@yossarian.net>
+
+* Bump limbo
+
+Signed-off-by: William Woodruff <william@yossarian.net>
+
+Upstream-Status: Backport [import from suse https://download.opensuse.org/distribution/leap-micro/6.1/product/repo/openSUSE-Leap-Micro-6.1-x86_64-Source/src/python-cryptography-42.0.4-slfo.1.1_6.1.src.rpm
+Upstream commit https://github.com/pyca/cryptography/commit/6d97887956a05b3aaed262793710f07568026b72]
+CVE: CVE-2026-34073
+Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
+---
+ .../cryptography-x509-verification/src/lib.rs | 5 +-
+ .../src/types.rs | 89 ++++++++++++-------
+ 2 files changed, 62 insertions(+), 32 deletions(-)
+
+diff --git a/src/rust/cryptography-x509-verification/src/lib.rs b/src/rust/cryptography-x509-verification/src/lib.rs
+index 5ded892..f49f618 100644
+--- a/src/rust/cryptography-x509-verification/src/lib.rs
++++ b/src/rust/cryptography-x509-verification/src/lib.rs
+@@ -20,11 +20,12 @@ use cryptography_x509::{
+ oid::{NAME_CONSTRAINTS_OID, SUBJECT_ALTERNATIVE_NAME_OID},
+ };
+
++use types::{DNSPattern};
++
+ use crate::certificate::cert_is_self_issued;
+ use crate::ops::{CryptoOps, VerificationCertificate};
+ use crate::policy::Policy;
+ use crate::trust_store::Store;
+-use crate::types::DNSName;
+ use crate::types::{DNSConstraint, IPAddress, IPConstraint};
+ use crate::ApplyNameConstraintStatus::{Applied, Skipped};
+
+@@ -108,7 +109,7 @@ impl<'a, 'chain> NameChain<'a, 'chain> {
+
+ match (constraint, san) {
+ (GeneralName::DNSName(pattern), GeneralName::DNSName(name)) => {
+- match (DNSConstraint::new(pattern.0), DNSName::new(name.0)) {
++ match (DNSConstraint::new(pattern.0), DNSPattern::new(name.0)) {
+ (Some(pattern), Some(name)) => Ok(Applied(pattern.matches(&name))),
+ (_, None) => Err(ValidationError::Other(format!(
+ "unsatisfiable DNS name constraint: malformed SAN {}",
+diff --git a/src/rust/cryptography-x509-verification/src/types.rs b/src/rust/cryptography-x509-verification/src/types.rs
+index f564715..d82936e 100644
+--- a/src/rust/cryptography-x509-verification/src/types.rs
++++ b/src/rust/cryptography-x509-verification/src/types.rs
+@@ -129,35 +129,45 @@ impl<'a> DNSConstraint<'a> {
+ DNSName::new(pattern).map(Self)
+ }
+
+- /// Returns true if this `DNSConstraint` matches the given name.
++ /// Returns true if this `DNSConstraint` matches the given `DNSPattern`.
+ ///
+ /// Constraint matching is defined by RFC 5280: any DNS name that can
+ /// be constructed by simply adding zero or more labels to the left-hand
+ /// side of the name satisfies the name constraint.
+ ///
+- /// ```rust
+- /// # use cryptography_x509_verification::types::{DNSConstraint, DNSName};
+- /// let example_com = DNSName::new("example.com").unwrap();
+- /// let badexample_com = DNSName::new("badexample.com").unwrap();
+- /// let foo_example_com = DNSName::new("foo.example.com").unwrap();
+- /// assert!(DNSConstraint::new(example_com.as_str()).unwrap().matches(&example_com));
+- /// assert!(DNSConstraint::new(example_com.as_str()).unwrap().matches(&foo_example_com));
+- /// assert!(!DNSConstraint::new(example_com.as_str()).unwrap().matches(&badexample_com));
+- /// ```
+- pub fn matches(&self, name: &DNSName<'_>) -> bool {
+- // NOTE: This may seem like an obtuse way to perform label matching,
+- // but it saves us a few allocations: doing a substring check instead
+- // would require us to clone each string and do case normalization.
+- // Note also that we check the length in advance: Rust's zip
+- // implementation terminates with the shorter iterator, so we need
+- // to first check that the candidate name is at least as long as
+- // the constraint it's matching against.
+- name.as_str().len() >= self.0.as_str().len()
+- && self
+- .0
+- .rlabels()
+- .zip(name.rlabels())
+- .all(|(a, o)| a.eq_ignore_ascii_case(o))
++ /// On top of what RFC 5280 specifies, we define behavior for wildcard
++ /// patterns (which are not covered by RFC 5280): a wildcard pattern
++ /// matches a constraint if the pattern matches the constraint's inner name,
++ /// _or_ if the pattern's inner name matches the constraint.
++ /// This allows us to reject DNS names like `*.example.com` when
++ /// the constraint is `example.com` or `bar.example.com`.
++ pub fn matches(&self, name: &DNSPattern<'_>) -> bool {
++ match name {
++ DNSPattern::Exact(name) => {
++ // NOTE: This may seem like an obtuse way to perform label matching,
++ // but it saves us a few allocations: doing a substring check instead
++ // would require us to clone each string and do case normalization.
++ // Note also that we check the length in advance: Rust's zip
++ // implementation terminates with the shorter iterator, so we need
++ // to first check that the candidate name is at least as long as
++ // the constraint it's matching against.
++ name.as_str().len() >= self.0.as_str().len()
++ && self
++ .0
++ .rlabels()
++ .zip(name.rlabels())
++ .all(|(a, o)| a.eq_ignore_ascii_case(o))
++ }
++ DNSPattern::Wildcard(inner) => {
++ // NOTE: This check is not as simple as a single pattern match,
++ // since we need two subtly distinct cases here:
++ // 1. Constraint `bar.example.com` on `*.example.com`
++ // 2. Constraint `example.com` on `*.example.com`
++ // The first cases is handled by `DNSPattern::matches`, and the second is handled
++ // by `DNSConstraint::matches`.
++ name.matches(&self.0) || self.matches(&DNSPattern::Exact(inner.clone()))
++ }
++ }
+ }
+ }
+
+@@ -456,14 +466,33 @@ mod tests {
+ let example_com = DNSConstraint::new("example.com").unwrap();
+
+ // Exact domain and arbitrary subdomains match.
+- assert!(example_com.matches(&DNSName::new("example.com").unwrap()));
+- assert!(example_com.matches(&DNSName::new("foo.example.com").unwrap()));
+- assert!(example_com.matches(&DNSName::new("foo.bar.baz.quux.example.com").unwrap()));
++ assert!(example_com.matches(&DNSPattern::new("example.com").unwrap()));
++ assert!(example_com.matches(&DNSPattern::new("foo.example.com").unwrap()));
++ assert!(example_com.matches(&DNSPattern::new("foo.bar.baz.quux.example.com").unwrap()));
+
+ // Parent domains, distinct domains, and substring domains do not match.
+- assert!(!example_com.matches(&DNSName::new("com").unwrap()));
+- assert!(!example_com.matches(&DNSName::new("badexample.com").unwrap()));
+- assert!(!example_com.matches(&DNSName::new("wrong.com").unwrap()));
++ assert!(!example_com.matches(&DNSPattern::new("com").unwrap()));
++ assert!(!example_com.matches(&DNSPattern::new("badexample.com").unwrap()));
++ assert!(!example_com.matches(&DNSPattern::new("wrong.com").unwrap()));
++ }
++
++ #[test]
++ fn test_dnsconstraint_matches_wildcard() {
++ let com = DNSConstraint::new("com").unwrap();
++ let example_com = DNSConstraint::new("example.com").unwrap();
++ let bar_example_com = DNSConstraint::new("bar.example.com").unwrap();
++ let baz_bar_example_com = DNSConstraint::new("baz.bar.example.com").unwrap();
++ let any_example_com = DNSPattern::new("*.example.com").unwrap();
++
++ assert!(com.matches(&any_example_com));
++ assert!(example_com.matches(&any_example_com));
++ assert!(bar_example_com.matches(&any_example_com));
++
++ // A constraint on `baz.bar.example.com` doesn't match `*.example.com`,
++ // since `baz.bar.example.com` matches zero or more sublabels of
++ // `baz.bar.example.com` while `*.example.com` matches exactly one
++ // sublabel of `example.com`.
++ assert!(!baz_bar_example_com.matches(&any_example_com));
+ }
+
+ #[test]
+--
+2.43.0
+
diff --git a/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb b/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
index 10ce753eac3..01382219fa8 100644
--- a/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
+++ b/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
@@ -12,6 +12,7 @@ SRC_URI[sha256sum] = "6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da6
SRC_URI += "file://0001-pyproject.toml-remove-benchmark-disable-option.patch \
file://CVE-2026-26007.patch \
+ file://CVE-2026-34073.patch \
file://check-memfree.py \
file://run-ptest \
"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 43/48] python3-cryptography: Fix CVE-2026-69248
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (41 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 42/48] python3-cryptography: Fix CVE-2026-34073 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 44/48] python3-cryptography: Fix CVE-2026-69249 Yoann Congal
` (4 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Vijay Anusuri <vanusuri@mvista.com>
Pick patch according to [2]
[1] https://nvd.nist.gov/vuln/detail/cve-2026-69248
[2] https://security-tracker.debian.org/tracker/CVE-2026-69248
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../python3-cryptography/CVE-2026-69248.patch | 299 ++++++++++++++++++
.../python/python3-cryptography_42.0.5.bb | 1 +
2 files changed, 300 insertions(+)
create mode 100644 meta/recipes-devtools/python/python3-cryptography/CVE-2026-69248.patch
diff --git a/meta/recipes-devtools/python/python3-cryptography/CVE-2026-69248.patch b/meta/recipes-devtools/python/python3-cryptography/CVE-2026-69248.patch
new file mode 100644
index 00000000000..659d1bf72ae
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/CVE-2026-69248.patch
@@ -0,0 +1,299 @@
+From 4d035a4225965edeffd312079a510ef25fcfdcb2 Mon Sep 17 00:00:00 2001
+From: William Woodruff <william@yossarian.net>
+Date: Thu, 21 May 2026 20:44:05 -0400
+Subject: [PATCH] x509: distinguish NC kinds when evaluating wildcard DNS SANs
+ (#14888)
+
+* x509: distinguish NC kinds when evaluating wildcard DNS SANs
+
+* Bump x509-limbo
+
+Note: SUSE patch CVE-2026-69248-distingush-nc-kinds-wildcard-sans.patch was adapted to our version where required.
+
+Upstream-Status: Backport [import from suse https://download.opensuse.org/distribution/leap-micro/6.1/product/repo/openSUSE-Leap-Micro-6.1-x86_64-Source/src/python-cryptography-42.0.4-slfo.1.1_6.1.src.rpm
+Upstream commit https://github.com/pyca/cryptography/commit/4d035a4225965edeffd312079a510ef25fcfdcb2]
+CVE: CVE-2026-69248
+Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
+---
+ .../cryptography-x509-verification/src/lib.rs | 37 +++-
+ .../src/types.rs | 165 ++++++++++++------
+ 2 files changed, 145 insertions(+), 57 deletions(-)
+
+diff --git a/src/rust/cryptography-x509-verification/src/lib.rs b/src/rust/cryptography-x509-verification/src/lib.rs
+index f49f618..a505349 100644
+--- a/src/rust/cryptography-x509-verification/src/lib.rs
++++ b/src/rust/cryptography-x509-verification/src/lib.rs
+@@ -101,6 +101,7 @@ impl<'a, 'chain> NameChain<'a, 'chain> {
+
+ fn evaluate_single_constraint(
+ &self,
++ kind: SubtreeKind,
+ constraint: &GeneralName<'chain>,
+ san: &GeneralName<'chain>,
+ budget: &mut Budget,
+@@ -109,8 +110,18 @@ impl<'a, 'chain> NameChain<'a, 'chain> {
+
+ match (constraint, san) {
+ (GeneralName::DNSName(pattern), GeneralName::DNSName(name)) => {
++ // NOTE: A DNS SAN can be a wildcard pattern (e.g. `*.foo.com`)
++ // rather than an ordinary DNS name. A wildcard represents a
++ // *set* of names, so the check depends on which subtree we're
++ // evaluating: a `permittedSubtrees` constraint must contain
++ // *every* name the wildcard can expand to, whereas an
++ // `excludedSubtrees` constraint matches if it overlaps the
++ // wildcard at all. We dispatch on `kind` accordingly.
+ match (DNSConstraint::new(pattern.0), DNSPattern::new(name.0)) {
+- (Some(pattern), Some(name)) => Ok(Applied(pattern.matches(&name))),
++ (Some(pattern), Some(name)) => Ok(Applied(match kind {
++ SubtreeKind::Permitted => pattern.permits(&name),
++ SubtreeKind::Excluded => pattern.excludes(&name),
++ })),
+ (_, None) => Err(ValidationError::Other(format!(
+ "unsatisfiable DNS name constraint: malformed SAN {}",
+ name.0
+@@ -155,7 +166,12 @@ impl<'a, 'chain> NameChain<'a, 'chain> {
+ let mut permit = true;
+ if let Some(permitted_subtrees) = &constraints.permitted_subtrees {
+ for p in permitted_subtrees.unwrap_read().clone() {
+- let status = self.evaluate_single_constraint(&p.base, &san, budget)?;
++ let status = self.evaluate_single_constraint(
++ SubtreeKind::Permitted,
++ &p.base,
++ &san,
++ budget,
++ )?;
+ if status.is_applied() {
+ permit = status.is_match();
+ if permit {
+@@ -173,7 +189,12 @@ impl<'a, 'chain> NameChain<'a, 'chain> {
+
+ if let Some(excluded_subtrees) = &constraints.excluded_subtrees {
+ for e in excluded_subtrees.unwrap_read().clone() {
+- let status = self.evaluate_single_constraint(&e.base, &san, budget)?;
++ let status = self.evaluate_single_constraint(
++ SubtreeKind::Excluded,
++ &e.base,
++ &san,
++ budget,
++ )?;
+ if status.is_match() {
+ return Err(ValidationError::Other(
+ "excluded name constraint matched SAN".into(),
+@@ -207,6 +228,16 @@ struct ChainBuilder<'a, 'chain, B: CryptoOps> {
+ store: &'a Store<'chain, B>,
+ }
+
++/// Identifies which kind of name constraint subtree a SAN is being evaluated
++/// against. The two subtree kinds use different matching semantics for
++/// wildcard DNS SANs (containment vs. overlap); see [`DNSConstraint::permits`]
++/// and [`DNSConstraint::excludes`].
++#[derive(Clone, Copy)]
++enum SubtreeKind {
++ Permitted,
++ Excluded,
++}
++
+ // When applying a name constraint, we need to distinguish between a few different scenarios:
+ // * `Applied(true)`: The name constraint is the same type as the SAN and matches.
+ // * `Applied(false)`: The name constraint is the same type as the SAN and does not match.
+diff --git a/src/rust/cryptography-x509-verification/src/types.rs b/src/rust/cryptography-x509-verification/src/types.rs
+index d82936e..c0b72e3 100644
+--- a/src/rust/cryptography-x509-verification/src/types.rs
++++ b/src/rust/cryptography-x509-verification/src/types.rs
+@@ -129,44 +129,69 @@ impl<'a> DNSConstraint<'a> {
+ DNSName::new(pattern).map(Self)
+ }
+
+- /// Returns true if this `DNSConstraint` matches the given `DNSPattern`.
++ /// Returns true if the given exact `DNSName` falls within this
++ /// constraint's subtree.
+ ///
+- /// Constraint matching is defined by RFC 5280: any DNS name that can
+- /// be constructed by simply adding zero or more labels to the left-hand
+- /// side of the name satisfies the name constraint.
++ /// Per RFC 5280, a name satisfies the constraint if it can be constructed
++ /// by adding zero or more labels to the left-hand side of the constraint's
++ /// name (i.e. it is the constraint's name, or a subdomain of it).
++ fn contains(&self, name: &DNSName<'_>) -> bool {
++ // NOTE: This may seem like an obtuse way to perform label matching,
++ // but it saves us a few allocations: doing a substring check instead
++ // would require us to clone each string and do case normalization.
++ // Note also that we check the length in advance: Rust's zip
++ // implementation terminates with the shorter iterator, so we need
++ // to first check that the candidate name is at least as long as
++ // the constraint it's matching against.
++ name.as_str().len() >= self.0.as_str().len()
++ && self
++ .0
++ .rlabels()
++ .zip(name.rlabels())
++ .all(|(a, o)| a.eq_ignore_ascii_case(o))
++ }
++
++ /// Returns true if the given `DNSPattern` is permitted by this constraint,
++ /// for use with a `permittedSubtrees` name constraint.
+ ///
+- /// On top of what RFC 5280 specifies, we define behavior for wildcard
+- /// patterns (which are not covered by RFC 5280): a wildcard pattern
+- /// matches a constraint if the pattern matches the constraint's inner name,
+- /// _or_ if the pattern's inner name matches the constraint.
+- /// This allows us to reject DNS names like `*.example.com` when
+- /// the constraint is `example.com` or `bar.example.com`.
+- pub fn matches(&self, name: &DNSPattern<'_>) -> bool {
+- match name {
+- DNSPattern::Exact(name) => {
+- // NOTE: This may seem like an obtuse way to perform label matching,
+- // but it saves us a few allocations: doing a substring check instead
+- // would require us to clone each string and do case normalization.
+- // Note also that we check the length in advance: Rust's zip
+- // implementation terminates with the shorter iterator, so we need
+- // to first check that the candidate name is at least as long as
+- // the constraint it's matching against.
+- name.as_str().len() >= self.0.as_str().len()
+- && self
+- .0
+- .rlabels()
+- .zip(name.rlabels())
+- .all(|(a, o)| a.eq_ignore_ascii_case(o))
+- }
+- DNSPattern::Wildcard(inner) => {
+- // NOTE: This check is not as simple as a single pattern match,
+- // since we need two subtly distinct cases here:
+- // 1. Constraint `bar.example.com` on `*.example.com`
+- // 2. Constraint `example.com` on `*.example.com`
+- // The first cases is handled by `DNSPattern::matches`, and the second is handled
+- // by `DNSConstraint::matches`.
+- name.matches(&self.0) || self.matches(&DNSPattern::Exact(inner.clone()))
+- }
++ /// A pattern is permitted only if *every* name it can represent falls
++ /// within the constraint's subtree. An exact name is permitted by ordinary
++ /// subtree containment (per RFC 5280).
++ ///
++ /// Wildcard patterns are not covered by RFC 5280; we define their behavior
++ /// here. A wildcard pattern `*.X` is permitted only if its base name `X`
++ /// itself falls within the constraint's subtree. This is stricter than
++ /// mere overlap: `*.example.com` is *not* permitted by `foo.example.com`,
++ /// since it can also expand to a sibling such as `bar.example.com` that
++ /// lies outside the permitted subtree.
++ pub fn permits(&self, pattern: &DNSPattern<'_>) -> bool {
++ match pattern {
++ DNSPattern::Exact(name) => self.contains(name),
++ DNSPattern::Wildcard(base) => self.contains(base),
++ }
++ }
++
++ /// Returns true if the given `DNSPattern` is excluded by this constraint,
++ /// for use with an `excludedSubtrees` name constraint.
++ ///
++ /// A pattern is excluded if *any* name it can represent falls within the
++ /// constraint's subtree. An exact name is excluded by ordinary subtree
++ /// containment (per RFC 5280).
++ ///
++ /// Wildcard patterns are not covered by RFC 5280; we define their behavior
++ /// here. A wildcard pattern `*.X` is excluded if it overlaps the subtree
++ /// at all, which happens in two subtly distinct cases:
++ ///
++ /// 1. The constraint is more specific than the wildcard, e.g. constraint
++ /// `bar.example.com` and pattern `*.example.com` (which can expand to
++ /// `bar.example.com`). This is handled by `DNSPattern::matches`.
++ /// 2. The wildcard's base name falls within the subtree, e.g. constraint
++ /// `example.com` and pattern `*.example.com`. This is handled by
++ /// `DNSConstraint::contains`.
++ pub fn excludes(&self, pattern: &DNSPattern<'_>) -> bool {
++ match pattern {
++ DNSPattern::Exact(name) => self.contains(name),
++ DNSPattern::Wildcard(base) => pattern.matches(&self.0) || self.contains(base),
+ }
+ }
+ }
+@@ -462,37 +487,69 @@ mod tests {
+ }
+
+ #[test]
+- fn test_dnsconstraint_matches() {
++ fn test_dnsconstraint_exact() {
+ let example_com = DNSConstraint::new("example.com").unwrap();
+
+- // Exact domain and arbitrary subdomains match.
+- assert!(example_com.matches(&DNSPattern::new("example.com").unwrap()));
+- assert!(example_com.matches(&DNSPattern::new("foo.example.com").unwrap()));
+- assert!(example_com.matches(&DNSPattern::new("foo.bar.baz.quux.example.com").unwrap()));
++ // For exact patterns, `permits` and `excludes` behave identically:
++ // the pattern must fall within the constraint's subtree.
++ for permitted in [
++ "example.com",
++ "foo.example.com",
++ "foo.bar.baz.quux.example.com",
++ ] {
++ let pattern = DNSPattern::new(permitted).unwrap();
++ assert!(example_com.permits(&pattern));
++ assert!(example_com.excludes(&pattern));
++ }
+
+ // Parent domains, distinct domains, and substring domains do not match.
+- assert!(!example_com.matches(&DNSPattern::new("com").unwrap()));
+- assert!(!example_com.matches(&DNSPattern::new("badexample.com").unwrap()));
+- assert!(!example_com.matches(&DNSPattern::new("wrong.com").unwrap()));
++ for rejected in ["com", "badexample.com", "wrong.com"] {
++ let pattern = DNSPattern::new(rejected).unwrap();
++ assert!(!example_com.permits(&pattern));
++ assert!(!example_com.excludes(&pattern));
++ }
++ }
++
++ #[test]
++ fn test_dnsconstraint_permits_wildcard() {
++ let com = DNSConstraint::new("com").unwrap();
++ let example_com = DNSConstraint::new("example.com").unwrap();
++ let foo_example_com = DNSConstraint::new("foo.example.com").unwrap();
++ let any_example_com = DNSPattern::new("*.example.com").unwrap();
++
++ // A wildcard `*.example.com` is permitted only by constraints whose
++ // subtree contains *every* name the wildcard can expand to, i.e. those
++ // that contain `example.com` itself.
++ assert!(com.permits(&any_example_com));
++ assert!(example_com.permits(&any_example_com));
++
++ // A constraint more specific than the wildcard's base does *not*
++ // permit it: the wildcard can expand to siblings outside the subtree
++ // (e.g. `*.example.com` can be `bar.example.com`, which lies outside
++ // `foo.example.com`).
++ assert!(!foo_example_com.permits(&any_example_com));
+ }
+
+ #[test]
+- fn test_dnsconstraint_matches_wildcard() {
++ fn test_dnsconstraint_excludes_wildcard() {
+ let com = DNSConstraint::new("com").unwrap();
+ let example_com = DNSConstraint::new("example.com").unwrap();
+ let bar_example_com = DNSConstraint::new("bar.example.com").unwrap();
+ let baz_bar_example_com = DNSConstraint::new("baz.bar.example.com").unwrap();
+ let any_example_com = DNSPattern::new("*.example.com").unwrap();
+
+- assert!(com.matches(&any_example_com));
+- assert!(example_com.matches(&any_example_com));
+- assert!(bar_example_com.matches(&any_example_com));
+-
+- // A constraint on `baz.bar.example.com` doesn't match `*.example.com`,
+- // since `baz.bar.example.com` matches zero or more sublabels of
+- // `baz.bar.example.com` while `*.example.com` matches exactly one
+- // sublabel of `example.com`.
+- assert!(!baz_bar_example_com.matches(&any_example_com));
++ // A wildcard `*.example.com` is excluded by any constraint whose
++ // subtree it overlaps, including constraints more specific than the
++ // wildcard's base.
++ assert!(com.excludes(&any_example_com));
++ assert!(example_com.excludes(&any_example_com));
++ assert!(bar_example_com.excludes(&any_example_com));
++
++ // A constraint on `baz.bar.example.com` doesn't overlap
++ // `*.example.com`, since `baz.bar.example.com` matches zero or more
++ // sublabels of `baz.bar.example.com` while `*.example.com` matches
++ // exactly one sublabel of `example.com`.
++ assert!(!baz_bar_example_com.excludes(&any_example_com));
+ }
+
+ #[test]
+--
+2.43.0
+
diff --git a/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb b/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
index 01382219fa8..8148ec0ba56 100644
--- a/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
+++ b/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
@@ -13,6 +13,7 @@ SRC_URI[sha256sum] = "6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da6
SRC_URI += "file://0001-pyproject.toml-remove-benchmark-disable-option.patch \
file://CVE-2026-26007.patch \
file://CVE-2026-34073.patch \
+ file://CVE-2026-69248.patch \
file://check-memfree.py \
file://run-ptest \
"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 44/48] python3-cryptography: Fix CVE-2026-69249
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (42 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 43/48] python3-cryptography: Fix CVE-2026-69248 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 45/48] curl: Security Fix for CVE-2026-13608 Yoann Congal
` (3 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Vijay Anusuri <vanusuri@mvista.com>
Pick patch according to [2]
[1] https://nvd.nist.gov/vuln/detail/cve-2026-69249
[2] https://security-tracker.debian.org/tracker/CVE-2026-69249
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../python3-cryptography/CVE-2026-69249.patch | 354 ++++++++++++++++++
.../python/python3-cryptography_42.0.5.bb | 1 +
2 files changed, 355 insertions(+)
create mode 100644 meta/recipes-devtools/python/python3-cryptography/CVE-2026-69249.patch
diff --git a/meta/recipes-devtools/python/python3-cryptography/CVE-2026-69249.patch b/meta/recipes-devtools/python/python3-cryptography/CVE-2026-69249.patch
new file mode 100644
index 00000000000..db4f06067c7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/CVE-2026-69249.patch
@@ -0,0 +1,354 @@
+From 4a12cf49675a184e47f912b00b04f3a629283582 Mon Sep 17 00:00:00 2001
+From: William Woodruff <william@yossarian.net>
+Date: Sat, 6 Jun 2026 23:30:03 -0400
+Subject: [PATCH] Add a signature validation budget during path construction
+ (#14960)
+
+* Add a signature validation budget during path construction
+
+This extends our existing NC budget check to include a budget
+for signature validations. If a path construction exceeds the
+budget by performing more than the allowed number of signature
+validation steps, the entire construction fails.
+
+For now, our budget is 128 signature validations. This is
+consistent with (higher than) Go and rustls-webpki, which
+both set a limit of 100. Like Go, we attempt to make the "best"
+use of our signature budget by ordering by likelihood, using
+AKI/SKI match as the strongest signal of fitness.
+
+* Bump limbo
+
+* Temporary commit
+
+* Revert "Temporary commit"
+
+This reverts commit bcdb6808562a8b8f484f85d21cb201cfdb2bbbd7.
+
+* Fudge a coverage test into place
+
+* Coverage for the coverage god
+
+Note: SUSE patch CVE-2026-69249-signature-validation-budget.patch was adapted to our codebase where required. The budget-handling hunks that are not present in the backported patch are already available in our existing codebase, so those changes were not applied again.
+
+Additionally, add tests for the ValidationError Display implementation
+to align with corresponding upstream commit.
+
+Upstream-Status: Backport [import from suse https://download.opensuse.org/distribution/leap-micro/6.1/product/repo/openSUSE-Leap-Micro-6.1-x86_64-Source/src/python-cryptography-42.0.4-slfo.1.1_6.1.src.rpm
+Upstream commit https://github.com/pyca/cryptography/commit/4a12cf49675a184e47f912b00b04f3a629283582]
+CVE: CVE-2026-69249
+Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
+---
+ .../cryptography-x509-verification/src/lib.rs | 209 +++++++++++++++++-
+ .../src/policy/mod.rs | 8 +-
+ 2 files changed, 208 insertions(+), 9 deletions(-)
+
+diff --git a/src/rust/cryptography-x509-verification/src/lib.rs b/src/rust/cryptography-x509-verification/src/lib.rs
+index a505349..334eed4 100644
+--- a/src/rust/cryptography-x509-verification/src/lib.rs
++++ b/src/rust/cryptography-x509-verification/src/lib.rs
+@@ -15,9 +15,12 @@ use std::vec;
+
+ use cryptography_x509::extensions::{DuplicateExtensionsError, Extensions};
+ use cryptography_x509::{
+- extensions::{NameConstraints, SubjectAlternativeName},
++ extensions::{AuthorityKeyIdentifier, NameConstraints, SubjectAlternativeName},
+ name::GeneralName,
+- oid::{NAME_CONSTRAINTS_OID, SUBJECT_ALTERNATIVE_NAME_OID},
++};
++use cryptography_x509::oid::{
++ AUTHORITY_KEY_IDENTIFIER_OID, NAME_CONSTRAINTS_OID, SUBJECT_ALTERNATIVE_NAME_OID,
++ SUBJECT_KEY_IDENTIFIER_OID,
+ };
+
+ use types::{DNSPattern};
+@@ -40,15 +43,23 @@ pub enum ValidationError {
+
+ struct Budget {
+ name_constraint_checks: usize,
++ signature_checks: usize,
+ }
+
+ impl Budget {
+- // Same limit as other validators
++ // The maximum number of name constraint checks performed when attempting
++ // path construction. This is the same limit as other validators.
+ const DEFAULT_NAME_CONSTRAINT_CHECK_LIMIT: usize = 1 << 20;
+
++ // The maximum number of signature verifications performed when attempting
++ // path construction. The is similar to other validators:
++ // both Go and rustls-webpki pick 100.
++ const DEFAULT_SIGNATURE_CHECK_LIMIT: usize = 1 << 7;
++
+ fn new() -> Budget {
+ Budget {
+ name_constraint_checks: Self::DEFAULT_NAME_CONSTRAINT_CHECK_LIMIT,
++ signature_checks: Self::DEFAULT_SIGNATURE_CHECK_LIMIT,
+ }
+ }
+
+@@ -61,6 +72,15 @@ impl Budget {
+ ))?;
+ Ok(())
+ }
++
++ fn signature_check(&mut self) -> Result<(), ValidationError> {
++ self.signature_checks = self.signature_checks.checked_sub(1).ok_or_else(|| {
++ ValidationError::FatalError(
++ "Exceeded maximum signature check limit",
++ )
++ })?;
++ Ok(())
++ }
+ }
+
+ impl From<asn1::ParseError> for ValidationError {
+@@ -270,18 +290,57 @@ impl<'a, 'chain, B: CryptoOps> ChainBuilder<'a, 'chain, B> {
+ }
+ }
+
++ /// Identify and return potential issuers for `cert`, considering
++ /// candidates from both the trusted store and untrusted intermediate set.
++ /// Trusted candidates are returned before untrusted intermediate
++ /// candidates, and both groups are opportunisitically ordered by
++ /// "likeliness" in terms of AKI/SKI match.
+ fn potential_issuers(
+ &'a self,
+ cert: &'a VerificationCertificate<'chain, B>,
+- ) -> impl Iterator<Item = &'a VerificationCertificate<'chain, B>> + '_ {
+- // TODO: Optimizations:
+- // * Search by AKI and other identifiers?
+- self.store
++ cert_extensions: &Extensions<'chain>,
++ ) -> Vec<&'a VerificationCertificate<'chain, B>> {
++ let mut candidates: Vec<&'a VerificationCertificate<'chain, B>> = self
++ .store
+ .get_by_subject(&cert.certificate().tbs_cert.issuer)
+ .iter()
+ .chain(self.intermediates.iter().filter(|&candidate| {
+ candidate.certificate().subject() == cert.certificate().issuer()
+ }))
++ .collect();
++
++ let want_kid: Option<&[u8]> = cert_extensions
++ .get_extension(&AUTHORITY_KEY_IDENTIFIER_OID)
++ .and_then(|ext| ext.value::<AuthorityKeyIdentifier<'_>>().ok())
++ .and_then(|aki| aki.key_identifier);
++
++ // This mirrors Go's `findPotentialParents`: we have a global
++ // signature budget, so we want to bucket candidates by likeliness
++ // to avoid wasting budget on (potentially adversarial) name collisions.
++ //
++ // Observe that we use a stable sort to preserve trusted candidates
++ // before untrusted candidates in each likeliness bucket. In other
++ // words, we always try a likely trusted candidate over an equally
++ // likely untrusted one.
++ //
++ // See: <https://github.com/golang/go/blob/d00c67f297e/src/crypto/x509/cert_pool.go#L136>
++ candidates.sort_by_key(|candidate| {
++ let have_kid: Option<&[u8]> =
++ candidate.certificate().extensions().ok().and_then(|exts| {
++ exts.get_extension(&SUBJECT_KEY_IDENTIFIER_OID)
++ .and_then(|ext| ext.value::<&[u8]>().ok())
++ });
++
++ match (want_kid, have_kid) {
++ // cert AKID matches candidate SKID, highest likelihood.
++ (Some(want), Some(have)) if want == have => 0,
++ // cert AKID and candidate SKID don't match, lowest likelihood.
++ (Some(_), Some(_)) => 2,
++ // cert AKID and/or candidate SKID is not present, medium likelihood.
++ _ => 1u8,
++ }
++ });
++ candidates
+ }
+
+ fn build_chain_inner(
+@@ -314,7 +373,8 @@ impl<'a, 'chain, B: CryptoOps> ChainBuilder<'a, 'chain, B> {
+ // Otherwise, we collect a list of potential issuers for this cert,
+ // and continue with the first that verifies.
+ let mut last_err: Option<ValidationError> = None;
+- for issuing_cert_candidate in self.potential_issuers(working_cert) {
++ for issuing_cert_candidate in self.potential_issuers(working_cert, working_cert_extensions)
++ {
+ // A candidate issuer is said to verify if it both
+ // signs for the working certificate and conforms to the
+ // policy.
+@@ -324,6 +384,7 @@ impl<'a, 'chain, B: CryptoOps> ChainBuilder<'a, 'chain, B> {
+ working_cert.certificate(),
+ current_depth,
+ &issuer_extensions,
++ budget,
+ ) {
+ Ok(_) => {
+ match self.build_chain_inner(
+@@ -417,3 +478,135 @@ impl<'a, 'chain, B: CryptoOps> ChainBuilder<'a, 'chain, B> {
+ Ok(chain)
+ }
+ }
++
++#[cfg(test)]
++mod tests {
++ use asn1::ParseError;
++ use cryptography_x509::certificate::Certificate;
++ use cryptography_x509::oid::SUBJECT_ALTERNATIVE_NAME_OID;
++
++ use crate::certificate::tests::PublicKeyErrorOps;
++ use crate::ops::{CryptoOps, VerificationCertificate};
++ use crate::policy::{Policy, PolicyDefinition, Subject};
++ use crate::trust_store::Store;
++ use crate::types::DNSName;
++ use crate::{Budget, ChainBuilder, NameChain, ValidationError};
++
++ #[test]
++ fn test_validationerror_display() {
++ let err = ValidationError::Malformed(
++ ParseError::new(asn1::ParseErrorKind::InvalidLength),
++ );
++ assert_eq!(err.to_string(), "ASN.1 parsing error: invalid length");
++
++ let err = ValidationError::ExtensionError{
++ oid: SUBJECT_ALTERNATIVE_NAME_OID,
++ reason: "duplicate extension",
++ };
++ assert_eq!(
++ err.to_string(),
++ "invalid extension: 2.5.29.17: duplicate extension"
++ );
++
++ let err = ValidationError::FatalError("oops");
++ assert_eq!(err.to_string(), "fatal error: oops");
++ }
++
++ /// A `CryptoOps` whose public key extraction and signature verification
++ /// always succeed, so that `valid_issuer` can be driven to completion
++ /// without real cryptographic material.
++ struct NullOps;
++
++ impl CryptoOps for NullOps {
++ type Key = ();
++ type Err = ();
++ type CertificateExtra = ();
++ type PolicyExtra = ();
++
++ fn public_key(&self, _cert: &Certificate<'_>) -> Result<Self::Key, Self::Err> {
++ Ok(())
++ }
++
++ fn verify_signed_by(
++ &self,
++ _cert: &Certificate<'_>,
++ _key: &Self::Key,
++ ) -> Result<(), Self::Err> {
++ Ok(())
++ }
++
++ fn clone_public_key(_key: &Self::Key) -> Self::Key {}
++
++ fn clone_extra(_extra: &Self::CertificateExtra) -> Self::CertificateExtra {}
++ }
++
++ #[test]
++ fn test_clone() {
++ assert_eq!(NullOps::clone_public_key(&()), ());
++ assert_eq!(NullOps::clone_extra(&()), ());
++ }
++
++ // A self-issued ("looping") CA certificate that is its own issuer.
++ fn looping_ca_pem() -> pem::Pem {
++ pem::parse(
++ "-----BEGIN CERTIFICATE-----
++MIIBcjCCARmgAwIBAgIBATAKBggqhkjOPQQDAjAhMR8wHQYDVQQDDBZsb29waW5n
++IHNlbGYtc2lnbmVkIENBMB4XDTIzMTIzMTAwMDAwMFoXDTI0MDEzMTAwMDAwMFow
++ITEfMB0GA1UEAwwWbG9vcGluZyBzZWxmLXNpZ25lZCBDQTBZMBMGByqGSM49AgEG
++CCqGSM49AwEHA0IABKAoXUGnHdfXJbSXjRjeW+PCVHmlo4KEki69N5pJUA0QyQMR
++v9ySOMnWf3Ea7TR4g3zdguwTP7LdpSku3uR1QkmjQjBAMA8GA1UdEwEB/wQFMAMB
++Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBR23MGdG1Ma9iR+3CxKTafD/OE0
++dTAKBggqhkjOPQQDAgNHADBEAiA4RCr07KfZdM16VfGNZAQFjvC60SWIU3RRVY/L
++qolIOwIgCaIgj9ipK0Q0p+45UJiq+L/ncrxsweJkFq/UYubzhX0=
++-----END CERTIFICATE-----",
++ )
++ .unwrap()
++ }
++
++ /// Exercises our pathlen overflow error scenario.
++ ///
++ /// This condition is logically unreachable from Python, since
++ /// we unconditionally limit signature checks to a number smaller
++ /// than `u8::MAX`, meaning that we always exhaust the signature budget
++ /// before potentially exhausting the pathlen budget.
++ ///
++ /// To test that directly, we manually lift the signature budget
++ /// and start our pathlen state right at `u8::MAX`, guaranteeing
++ /// an overflow on the immediate chain building step.
++ #[test]
++ fn test_build_chain_inner_depth_overflow() {
++ let pem = looping_ca_pem();
++ let ca = asn1::parse_single::<Certificate<'_>>(pem.contents()).unwrap();
++ let ca_exts = ca.extensions().ok().unwrap();
++
++ // The same self-issued CA is both the working certificate and its own
++ // (only) candidate issuer, so the search recurses on itself.
++ let working = VerificationCertificate::<NullOps>::new(&ca, ());
++ let intermediates = [VerificationCertificate::<NullOps>::new(&ca, ())];
++ let store: Store<'_, NullOps> = Store::new([]);
++
++ let subject = Subject::DNS(DNSName::new("example.com").unwrap());
++ let time = asn1::DateTime::new(2024, 1, 1, 0, 0, 0).unwrap();
++ let policy_def =
++ PolicyDefinition::server(NullOps, subject, time, Some(u8::MAX), None, None).unwrap();
++ let policy = Policy::new(&policy_def, ());
++
++ let builder = ChainBuilder::new(&intermediates, &policy, &store);
++ let mut budget = Budget {
++ name_constraint_checks: usize::MAX,
++ signature_checks: usize::MAX,
++ };
++
++ let name_chain = NameChain::new::<NullOps>(None, &ca_exts, false)
++ .ok()
++ .unwrap();
++ let err = builder
++ .build_chain_inner(&working, u8::MAX, &ca_exts, name_chain, &mut budget)
++ .unwrap_err();
++
++ assert!(matches!(
++ err.kind,
++ ValidationError::Other(msg) if msg.contains("current depth calculation overflowed")
++ ));
++ }
++}
+diff --git a/src/rust/cryptography-x509-verification/src/policy/mod.rs b/src/rust/cryptography-x509-verification/src/policy/mod.rs
+index d5a199d..5bdc8d5 100644
+--- a/src/rust/cryptography-x509-verification/src/policy/mod.rs
++++ b/src/rust/cryptography-x509-verification/src/policy/mod.rs
+@@ -25,7 +25,7 @@ use once_cell::sync::Lazy;
+ use crate::ops::CryptoOps;
+ use crate::policy::extension::{ca, common, ee, Criticality, ExtensionPolicy, ExtensionValidator};
+ use crate::types::{DNSName, DNSPattern, IPAddress};
+-use crate::{ValidationError, VerificationCertificate};
++use crate::{Budget, ValidationError, VerificationCertificate};
+
+ // SubjectPublicKeyInfo AlgorithmIdentifier constants, as defined in CA/B 7.1.3.1.
+
+@@ -463,10 +463,16 @@ impl<'a, B: CryptoOps> Policy<'a, B> {
+ child: &Certificate<'_>,
+ current_depth: u8,
+ issuer_extensions: &Extensions<'_>,
++ budget: &mut Budget,
+ ) -> Result<(), ValidationError> {
+ // The issuer needs to be a valid CA at the current depth.
+ self.permits_ca(issuer.certificate(), current_depth, issuer_extensions)?;
+
++ // Charge the (potentially expensive) signature verification against the
++ // budget before performing it, bounding the total work an attacker can
++ // force during chain building.
++ budget.signature_check()?;
++
+ // CA/B 7.1.3.1 SubjectPublicKeyInfo
+ // NOTE: We check the issuer's SPKI here, since the issuer is
+ // definitionally a CA and thus subject to CABF key requirements.
+--
+2.43.0
+
diff --git a/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb b/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
index 8148ec0ba56..899332123fc 100644
--- a/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
+++ b/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
@@ -14,6 +14,7 @@ SRC_URI += "file://0001-pyproject.toml-remove-benchmark-disable-option.patch \
file://CVE-2026-26007.patch \
file://CVE-2026-34073.patch \
file://CVE-2026-69248.patch \
+ file://CVE-2026-69249.patch \
file://check-memfree.py \
file://run-ptest \
"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 45/48] curl: Security Fix for CVE-2026-13608
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (43 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 44/48] python3-cryptography: Fix CVE-2026-69249 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 46/48] curl: Security Fix for CVE-2026-18924 Yoann Congal
` (2 subsequent siblings)
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Siddharth Doshi <sdoshi@mvista.com>
Picking patch as per [1], and same patch is mentioned in [2]
[1] https://curl.se/docs/CVE-2026-13608.html
[2] https://security-tracker.debian.org/tracker/CVE-2026-13608
Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../curl/curl/CVE-2026-13608.patch | 48 +++++++++++++++++++
meta/recipes-support/curl/curl_8.7.1.bb | 1 +
2 files changed, 49 insertions(+)
create mode 100644 meta/recipes-support/curl/curl/CVE-2026-13608.patch
diff --git a/meta/recipes-support/curl/curl/CVE-2026-13608.patch b/meta/recipes-support/curl/curl/CVE-2026-13608.patch
new file mode 100644
index 00000000000..bb1662fa4c0
--- /dev/null
+++ b/meta/recipes-support/curl/curl/CVE-2026-13608.patch
@@ -0,0 +1,48 @@
+From 25df759f0f0c1aeaee066a4502bb36a8a86fb22e Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Mon, 29 Jun 2026 10:44:47 +0200
+Subject: [PATCH 1/5] openldap: handle Curl_sasl_continue() returns better
+
+Similar to how it gets treated already in other protocol handlers.
+
+Follow-up to eeca818b1e8d1e61c2d4
+
+Reported-by: Eunsoo Kim
+Closes #22213
+
+Upstream-Status: Backport [https://github.com/curl/curl/commit/ea71c3b6b60e563651ea8596a975aef0c8199519]
+CVE: CVE-2026-13608
+Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
+---
+ lib/openldap.c | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/lib/openldap.c b/lib/openldap.c
+index 47266f6..b566d1a 100644
+--- a/lib/openldap.c
++++ b/lib/openldap.c
+@@ -682,8 +682,19 @@ static CURLcode oldap_state_sasl_resp(struct Curl_easy *data,
+ }
+ else {
+ result = Curl_sasl_continue(&li->sasl, data, code, &progress);
+- if(!result && progress != SASL_INPROGRESS)
+- oldap_state(data, OLDAP_STOP);
++ if(!result) {
++ switch(progress) {
++ case SASL_DONE:
++ oldap_state(data, li, OLDAP_STOP); /* Authenticated */
++ break;
++ case SASL_IDLE: /* No mechanism left after cancellation */
++ failf(data, "Authentication cancelled");
++ result = CURLE_LOGIN_DENIED;
++ break;
++ default:
++ break;
++ }
++ }
+ }
+
+ if(li->servercred)
+--
+2.34.1
+
diff --git a/meta/recipes-support/curl/curl_8.7.1.bb b/meta/recipes-support/curl/curl_8.7.1.bb
index f2479a33643..3f44cf02d31 100644
--- a/meta/recipes-support/curl/curl_8.7.1.bb
+++ b/meta/recipes-support/curl/curl_8.7.1.bb
@@ -41,6 +41,7 @@ SRC_URI = " \
file://CVE-2026-5545.patch \
file://CVE-2026-6253.patch \
file://CVE-2026-4873.patch \
+ file://CVE-2026-13608.patch \
"
SRC_URI:append:class-nativesdk = " \
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 46/48] curl: Security Fix for CVE-2026-18924
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (44 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 45/48] curl: Security Fix for CVE-2026-13608 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 15:22 ` Martin Jansa
2026-09-23 9:10 ` [OE-core][scarthgap 47/48] curl: set CVE_STATUS for CVE-2026-82209 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 48/48] time64: enable 64-bit time/file-offset flags for 32-bit nativesdk Yoann Congal
47 siblings, 1 reply; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Siddharth Doshi <sdoshi@mvista.com>
Picking patch as per [1], and same patch is mentioned in [2]
[1] https://curl.se/docs/CVE-2026-18924.html
[2] https://security-tracker.debian.org/tracker/CVE-2026-18924
Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
.../curl/curl/CVE-2026-18924.patch | 39 +++++++++++++++++++
meta/recipes-support/curl/curl_8.7.1.bb | 1 +
2 files changed, 40 insertions(+)
create mode 100644 meta/recipes-support/curl/curl/CVE-2026-18924.patch
diff --git a/meta/recipes-support/curl/curl/CVE-2026-18924.patch b/meta/recipes-support/curl/curl/CVE-2026-18924.patch
new file mode 100644
index 00000000000..28934ababee
--- /dev/null
+++ b/meta/recipes-support/curl/curl/CVE-2026-18924.patch
@@ -0,0 +1,39 @@
+From 90325ff0444cbdff368bda5d26d6405a0bb6ee43 Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Wed, 5 Aug 2026 10:02:53 +0200
+Subject: [PATCH] http2: make server push transfers inherit share from parent
+
+Reported-by: Stephan Zeisberg
+Closes #22488
+
+Upstream-Status: Backport [https://github.com/curl/curl/commit/90325ff0444cbdff368bda5d26d6405a0bb6ee43]
+CVE: CVE-2026-18924
+Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
+---
+ lib/http2.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/lib/http2.c b/lib/http2.c
+index 99d7f3b..e6305c9 100644
+--- a/lib/http2.c
++++ b/lib/http2.c
+@@ -47,6 +47,7 @@
+ #include "transfer.h"
+ #include "dynbuf.h"
+ #include "headers.h"
++#include "curl_share.h"
+ /* The last 3 #include files should be in this order */
+ #include "curl_printf.h"
+ #include "curl_memory.h"
+@@ -776,6 +777,8 @@ static struct Curl_easy *h2_duphandle(struct Curl_cfilter *cf,
+ second->req.p.http = http;
+ http2_data_setup(cf, second, &second_stream);
+ second->state.priority.weight = data->state.priority.weight;
++ if(data->share)
++ (void)Curl_share_easy_link(second, data->share);
+ }
+ }
+ return second;
+--
+2.34.1
+
diff --git a/meta/recipes-support/curl/curl_8.7.1.bb b/meta/recipes-support/curl/curl_8.7.1.bb
index 3f44cf02d31..905d0b47335 100644
--- a/meta/recipes-support/curl/curl_8.7.1.bb
+++ b/meta/recipes-support/curl/curl_8.7.1.bb
@@ -42,6 +42,7 @@ SRC_URI = " \
file://CVE-2026-6253.patch \
file://CVE-2026-4873.patch \
file://CVE-2026-13608.patch \
+ file://CVE-2026-18924.patch \
"
SRC_URI:append:class-nativesdk = " \
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 47/48] curl: set CVE_STATUS for CVE-2026-82209
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (45 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 46/48] curl: Security Fix for CVE-2026-18924 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 48/48] time64: enable 64-bit time/file-offset flags for 32-bit nativesdk Yoann Congal
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Siddharth Doshi <sdoshi@mvista.com>
Analysis:
- The problem only exists when curl is built with libpsl support enabled.[1]
- The recipe is built with "--without-libpsl" option.
- Hence, ignoring the CVE for this recipe.
Reference:
[1] https://curl.se/docs/CVE-2026-82209.html
Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/recipes-support/curl/curl_8.7.1.bb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-support/curl/curl_8.7.1.bb b/meta/recipes-support/curl/curl_8.7.1.bb
index 905d0b47335..34bdd21b77b 100644
--- a/meta/recipes-support/curl/curl_8.7.1.bb
+++ b/meta/recipes-support/curl/curl_8.7.1.bb
@@ -60,7 +60,7 @@ CVE_STATUS[CVE-2025-5025] = "${@bb.utils.contains('PACKAGECONFIG', 'openssl', 'n
CVE_STATUS[CVE-2025-10966] = "${@bb.utils.contains('PACKAGECONFIG', 'openssl', 'not-applicable-config: applicable only with wolfssl','unpatched',d)}"
CVE_STATUS[CVE-2026-10536] = "${@bb.utils.contains('PACKAGECONFIG', 'nghttp2', 'unpatched', 'not-applicable-config: applicable only with HTTP/2', d)}"
CVE_STATUS[CVE-2026-8458] = "${@bb.utils.contains('PACKAGECONFIG', 'krb5 negotiate-auth', 'unpatched', 'not-applicable-config: applicable only with GSS-API-backed Negotiate authentication', d)}"
-
+CVE_STATUS[CVE-2026-82209] = "not-applicable-config: public suffix list support is disabled by the recipe with --without-libpsl"
inherit autotools pkgconfig binconfig multilib_header ptest
^ permalink raw reply related [flat|nested] 51+ messages in thread
* [OE-core][scarthgap 48/48] time64: enable 64-bit time/file-offset flags for 32-bit nativesdk
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
` (46 preceding siblings ...)
2026-09-23 9:10 ` [OE-core][scarthgap 47/48] curl: set CVE_STATUS for CVE-2026-82209 Yoann Congal
@ 2026-09-23 9:10 ` Yoann Congal
47 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-23 9:10 UTC (permalink / raw)
To: openembedded-core
From: Peter Tatrai <peter.tatrai.ext@siemens.com>
When SDKMACHINE is set to i686 or i586, nativesdk binaries are compiled
as 32-bit. Without -D_TIME_BITS=64 and -D_FILE_OFFSET_BITS=64, stat()
and time-related syscalls use 32-bit types, causing EOVERFLOW on
filesystems with large inode numbers (e.g. container overlay filesystems)
and Y2038 issues.
Add SDK_CC_ARCH appends for class-nativesdk:i686 and class-nativesdk:i586
using GLIBC_64BIT_TIME_FLAGS, mirroring how target architectures are
handled.
The existing GLIBC_64BIT_TIME_FLAGS:pn-glibc override only matches the
target recipe, not the class extended nativesdk-glibc, so an additional
pn-nativesdk-glibc override is needed here. This is required on
scarthgap but not on master/wrynose, because scarthgap carries glibc
2.39, which predates glibc commit a4ed0471d717 ("Always define
__USE_TIME_BITS64 when 64 bit time_t is used"). In 2.39 the header
redirect turns sigtimedwait into an alias of __sigtimedwait64, which
then collides with glibc's own weak_alias() and fails to assemble:
Error: symbol '__sigtimedwait64' is already defined
Also exclude nativesdk-mingw-w64-runtime. The MinGW runtime provides the
Windows CRT rather than glibc, and _FILE_OFFSET_BITS=64 changes its
stat declarations. That causes conflicting declarations for wstat when
building the CRT itself.
Signed-off-by: Peter Tatrai <peter.tatrai.ext@siemens.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit d9f62a45555673842021d5746437e66c40d3f3cc)
Signed-off-by: Peter Tatrai <peter.tatrai.ext@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
meta/conf/distro/include/time64.inc | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/meta/conf/distro/include/time64.inc b/meta/conf/distro/include/time64.inc
index dd29105db44..c2a4feab24b 100644
--- a/meta/conf/distro/include/time64.inc
+++ b/meta/conf/distro/include/time64.inc
@@ -32,6 +32,23 @@ GLIBC_64BIT_TIME_FLAGS:pn-pulseaudio = ""
# libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
GLIBC_64BIT_TIME_FLAGS:pn-gcc-sanitizers = ""
+# Apply the same flags to nativesdk packages when building for a 32-bit SDK
+# host (i686, i586).
+SDK_CC_ARCH:append:class-nativesdk:i686 = "${GLIBC_64BIT_TIME_FLAGS}"
+SDK_CC_ARCH:append:class-nativesdk:i586 = "${GLIBC_64BIT_TIME_FLAGS}"
+
+# Recipes which implement or wrap the libc APIs themselves must not be built
+# with these flags, as the redirections glibc performs would collide with the
+# symbols the recipes define (e.g. "symbol '__sigtimedwait64' is already
+# defined" in nativesdk-glibc, or duplicate creat64/fopen64 in
+# nativesdk-pseudo). The pn- overrides above only match the target recipes, so
+# the class extended variants have to be listed separately.
+GLIBC_64BIT_TIME_FLAGS:pn-nativesdk-glibc = ""
+GLIBC_64BIT_TIME_FLAGS:pn-nativesdk-pseudo = ""
+# The MinGW runtime provides the Windows CRT rather than glibc. These flags
+# change its stat declarations and cause conflicting types in the CRT sources.
+GLIBC_64BIT_TIME_FLAGS:pn-nativesdk-mingw-w64-runtime = ""
+
# Caused by the flags exceptions above
INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time"
INSANE_SKIP:append:pn-glibc = " 32bit-time"
^ permalink raw reply related [flat|nested] 51+ messages in thread
* Re: [OE-core][scarthgap 46/48] curl: Security Fix for CVE-2026-18924
2026-09-23 9:10 ` [OE-core][scarthgap 46/48] curl: Security Fix for CVE-2026-18924 Yoann Congal
@ 2026-09-23 15:22 ` Martin Jansa
2026-09-24 6:56 ` Yoann Congal
0 siblings, 1 reply; 51+ messages in thread
From: Martin Jansa @ 2026-09-23 15:22 UTC (permalink / raw)
To: yoann.congal; +Cc: openembedded-core
This breaks the build when nthttp2 PACKAGECONFIG is enabled, because
curl_share.h included here was renamed from share.h in newer curl
8.22:
https://github.com/curl/curl/commit/3887069c661b40e76b053a4867eb565d4761ab3e
8.7.1 version in scarthgap fails with:
curl-8.7.1/lib/http2.c:50:10: fatal error: 'curl_share.h' file not found
Using share.h instead of curl_share.h fixes the include, but then it fails with
curl-8.7.1/lib/http2.c:781:15: error: call to undeclared function
'Curl_share_easy_link'; ISO C99 and later do not support implicit
function declarations [-Wimplicit-function-declaration]
Curl_share_easy_link was added in 8.20 with:
https://github.com/curl/curl/commit/82009c4220774417c821496affa4aa834c028b68
and that will be a bit more difficult to backport.
Please drop this one from the PR until it's resolved.
Cheers,
On Wed, Sep 23, 2026 at 11:12 AM Yoann Congal via
lists.openembedded.org <yoann.congal=smile.fr@lists.openembedded.org>
wrote:
>
> From: Siddharth Doshi <sdoshi@mvista.com>
>
> Picking patch as per [1], and same patch is mentioned in [2]
>
> [1] https://curl.se/docs/CVE-2026-18924.html
> [2] https://security-tracker.debian.org/tracker/CVE-2026-18924
>
> Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
> Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
> ---
> .../curl/curl/CVE-2026-18924.patch | 39 +++++++++++++++++++
> meta/recipes-support/curl/curl_8.7.1.bb | 1 +
> 2 files changed, 40 insertions(+)
> create mode 100644 meta/recipes-support/curl/curl/CVE-2026-18924.patch
>
> diff --git a/meta/recipes-support/curl/curl/CVE-2026-18924.patch b/meta/recipes-support/curl/curl/CVE-2026-18924.patch
> new file mode 100644
> index 00000000000..28934ababee
> --- /dev/null
> +++ b/meta/recipes-support/curl/curl/CVE-2026-18924.patch
> @@ -0,0 +1,39 @@
> +From 90325ff0444cbdff368bda5d26d6405a0bb6ee43 Mon Sep 17 00:00:00 2001
> +From: Daniel Stenberg <daniel@haxx.se>
> +Date: Wed, 5 Aug 2026 10:02:53 +0200
> +Subject: [PATCH] http2: make server push transfers inherit share from parent
> +
> +Reported-by: Stephan Zeisberg
> +Closes #22488
> +
> +Upstream-Status: Backport [https://github.com/curl/curl/commit/90325ff0444cbdff368bda5d26d6405a0bb6ee43]
> +CVE: CVE-2026-18924
> +Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
> +---
> + lib/http2.c | 3 +++
> + 1 file changed, 3 insertions(+)
> +
> +diff --git a/lib/http2.c b/lib/http2.c
> +index 99d7f3b..e6305c9 100644
> +--- a/lib/http2.c
> ++++ b/lib/http2.c
> +@@ -47,6 +47,7 @@
> + #include "transfer.h"
> + #include "dynbuf.h"
> + #include "headers.h"
> ++#include "curl_share.h"
> + /* The last 3 #include files should be in this order */
> + #include "curl_printf.h"
> + #include "curl_memory.h"
> +@@ -776,6 +777,8 @@ static struct Curl_easy *h2_duphandle(struct Curl_cfilter *cf,
> + second->req.p.http = http;
> + http2_data_setup(cf, second, &second_stream);
> + second->state.priority.weight = data->state.priority.weight;
> ++ if(data->share)
> ++ (void)Curl_share_easy_link(second, data->share);
> + }
> + }
> + return second;
> +--
> +2.34.1
> +
> diff --git a/meta/recipes-support/curl/curl_8.7.1.bb b/meta/recipes-support/curl/curl_8.7.1.bb
> index 3f44cf02d31..905d0b47335 100644
> --- a/meta/recipes-support/curl/curl_8.7.1.bb
> +++ b/meta/recipes-support/curl/curl_8.7.1.bb
> @@ -42,6 +42,7 @@ SRC_URI = " \
> file://CVE-2026-6253.patch \
> file://CVE-2026-4873.patch \
> file://CVE-2026-13608.patch \
> + file://CVE-2026-18924.patch \
> "
>
> SRC_URI:append:class-nativesdk = " \
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#246508): https://lists.openembedded.org/g/openembedded-core/message/246508
> Mute This Topic: https://lists.openembedded.org/mt/121389781/3617156
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [martin.jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
^ permalink raw reply [flat|nested] 51+ messages in thread
* Re: [OE-core][scarthgap 46/48] curl: Security Fix for CVE-2026-18924
2026-09-23 15:22 ` Martin Jansa
@ 2026-09-24 6:56 ` Yoann Congal
0 siblings, 0 replies; 51+ messages in thread
From: Yoann Congal @ 2026-09-24 6:56 UTC (permalink / raw)
To: Martin Jansa, Siddharth Doshi; +Cc: openembedded-core
On Wed Sep 23, 2026 at 5:22 PM CEST, Martin Jansa wrote:
> This breaks the build when nthttp2 PACKAGECONFIG is enabled, because
> curl_share.h included here was renamed from share.h in newer curl
> 8.22:
> https://github.com/curl/curl/commit/3887069c661b40e76b053a4867eb565d4761ab3e
> 8.7.1 version in scarthgap fails with:
> curl-8.7.1/lib/http2.c:50:10: fatal error: 'curl_share.h' file not found
>
> Using share.h instead of curl_share.h fixes the include, but then it fails with
> curl-8.7.1/lib/http2.c:781:15: error: call to undeclared function
> 'Curl_share_easy_link'; ISO C99 and later do not support implicit
> function declarations [-Wimplicit-function-declaration]
>
> Curl_share_easy_link was added in 8.20 with:
> https://github.com/curl/curl/commit/82009c4220774417c821496affa4aa834c028b68
> and that will be a bit more difficult to backport.
>
> Please drop this one from the PR until it's resolved.
>
> Cheers,
>
> On Wed, Sep 23, 2026 at 11:12 AM Yoann Congal via
> lists.openembedded.org <yoann.congal=smile.fr@lists.openembedded.org>
> wrote:
>>
>> From: Siddharth Doshi <sdoshi@mvista.com>
>>
>> Picking patch as per [1], and same patch is mentioned in [2]
>>
>> [1] https://curl.se/docs/CVE-2026-18924.html
>> [2] https://security-tracker.debian.org/tracker/CVE-2026-18924
>>
>> Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
>> Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
>> ---
>> .../curl/curl/CVE-2026-18924.patch | 39 +++++++++++++++++++
>> meta/recipes-support/curl/curl_8.7.1.bb | 1 +
>> 2 files changed, 40 insertions(+)
>> create mode 100644 meta/recipes-support/curl/curl/CVE-2026-18924.patch
>>
>> diff --git a/meta/recipes-support/curl/curl/CVE-2026-18924.patch b/meta/recipes-support/curl/curl/CVE-2026-18924.patch
>> new file mode 100644
>> index 00000000000..28934ababee
>> --- /dev/null
>> +++ b/meta/recipes-support/curl/curl/CVE-2026-18924.patch
>> @@ -0,0 +1,39 @@
>> +From 90325ff0444cbdff368bda5d26d6405a0bb6ee43 Mon Sep 17 00:00:00 2001
>> +From: Daniel Stenberg <daniel@haxx.se>
>> +Date: Wed, 5 Aug 2026 10:02:53 +0200
>> +Subject: [PATCH] http2: make server push transfers inherit share from parent
>> +
>> +Reported-by: Stephan Zeisberg
>> +Closes #22488
>> +
>> +Upstream-Status: Backport [https://github.com/curl/curl/commit/90325ff0444cbdff368bda5d26d6405a0bb6ee43]
>> +CVE: CVE-2026-18924
>> +Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
>> +---
>> + lib/http2.c | 3 +++
>> + 1 file changed, 3 insertions(+)
>> +
>> +diff --git a/lib/http2.c b/lib/http2.c
>> +index 99d7f3b..e6305c9 100644
>> +--- a/lib/http2.c
>> ++++ b/lib/http2.c
>> +@@ -47,6 +47,7 @@
>> + #include "transfer.h"
>> + #include "dynbuf.h"
>> + #include "headers.h"
>> ++#include "curl_share.h"
>> + /* The last 3 #include files should be in this order */
>> + #include "curl_printf.h"
>> + #include "curl_memory.h"
Ok, dropped. Nice catch.
Thanks!
--
Yoann Congal
Smile ECS
^ permalink raw reply [flat|nested] 51+ messages in thread
end of thread, other threads:[~2026-09-24 6:57 UTC | newest]
Thread overview: 51+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-23 9:10 [OE-core][scarthgap 00/48] Patch review Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 01/48] wireless-regdb: upgrade 2026.05.30 -> 2026.09.03 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 02/48] ca-certificates: upgrade 20260601 -> 20260816 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 03/48] testimage: avoid symlinking missing qemu boot log Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 04/48] python3-pip: set CVE_STATUS for CVE-2018-20225 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 05/48] python3-ply: set status for CVE-2025-56005 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 06/48] kbd: Fix CVE-2026-72693 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 07/48] gnutls: fix CVE-2026-33845 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 08/48] python3-mako: correct CVE_PRODUCT mapping Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 09/48] python3-pip: Fix CVE-2026-13346 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 10/48] perl: Fix CVE-2026-19487 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 11/48] vim: Fix for CVE-2026-73072 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 12/48] vim: Fix for CVE-2026-73073 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 13/48] vim: Fix for CVE-2026-73074 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 14/48] vim: Fix for CVE-2026-73077 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 15/48] vim: Fix for CVE-2026-73078 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 16/48] cpio: patch CVE-2026-66485 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 17/48] cpio: patch CVE-2026-66484 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 18/48] wget: Fix CVE-2026-58470 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 19/48] gnutls: fix CVE-2026-5419 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 20/48] curl: set CVE_STATUS for CVE-2026-8458 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 21/48] vim: Fix CVE-2026-52858 regression Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 22/48] improve_kernel_cve_report: validate that cve details field exists Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 23/48] improve_kernel_cve_report: fix backported-patch check Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 24/48] libxfont: Fix CVE-2026-56001 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 25/48] libxfont: Fix CVE-2026-56002 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 26/48] libxfont: Fix CVE-2026-56003 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 27/48] golang: fix homepage Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 28/48] python3-certifi: " Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 29/48] gcc: Upgrade to GCC 13.5 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 30/48] python3-git: fix CVE-2026-42215 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 31/48] scripts/install-buildtools: Update to 5.0.20 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 32/48] spdx30_tasks: Fix SPDX_CUSTOM_ANNOTATION_VARS implementation Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 33/48] python3: skip ptest incompatible with ptest-runner >= 2.5.0 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 34/48] ptest-runner: upgrade 2.4.5 -> 2.4.5.1 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 35/48] ptest-runner: Upgrade 2.4.5.1 -> 2.5.0 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 36/48] ptest-runner: Upgrade 2.5.0 -> 2.5.1 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 37/48] pseudo: Add in openat2, exec and linkat fixes Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 38/48] pseudo: Update to 1.9.10 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 39/48] pseudo: 1.9.10 -> 1.9.11 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 40/48] libslirp: patch CVE-2026-9539 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 41/48] rootfs.py: fix run-postinsts removal on multilib images Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 42/48] python3-cryptography: Fix CVE-2026-34073 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 43/48] python3-cryptography: Fix CVE-2026-69248 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 44/48] python3-cryptography: Fix CVE-2026-69249 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 45/48] curl: Security Fix for CVE-2026-13608 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 46/48] curl: Security Fix for CVE-2026-18924 Yoann Congal
2026-09-23 15:22 ` Martin Jansa
2026-09-24 6:56 ` Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 47/48] curl: set CVE_STATUS for CVE-2026-82209 Yoann Congal
2026-09-23 9:10 ` [OE-core][scarthgap 48/48] time64: enable 64-bit time/file-offset flags for 32-bit nativesdk Yoann Congal
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox