Compare commits

..

146 Commits

Author SHA1 Message Date
Steve Sakoman
2c05660b21 build-appliance-image: Update to kirkstone head revision
(From OE-Core rev: 2ed3f8b938579dbbb804e04c45a968cc57761db7)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-12 08:54:41 -08:00
Steve Sakoman
cb1206dd84 poky.conf: bump version for 4.0.32
(From meta-yocto rev: 77b40877c179ea3ce5c37c7ba1831e9c0e289266)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-12 08:49:37 -08:00
Peter Marko
33d90091be libmicrohttpd: disable experimental code by default
Introduce new packageconfig to explicitly avoid compilation of
experimental code. Note that the code was not compiled by default also
before this patch, this now makes it explicit and makes it possible to
check for the flags in cve-check code.

This is less intrusive change than a patch removing the code which was
rejected in patch review.

This will solve CVE-2025-59777 and CVE-2025-62689 as the vulnerable code
is not compiled by default.
Set appropriate CVE status for these CVEs based on new packageconfig.

(From OE-Core rev: 1d8e646aebe75b8ede51d4de9e0003a822992a33)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-12 08:49:37 -08:00
Hitendra Prajapati
9f461395a8 openssh: fix CVE-2025-61984
ssh in OpenSSH before 10.1 allows control characters in usernames that
originate from certain possibly untrusted sources, potentially leading
to code execution when a ProxyCommand is used. The untrusted sources
are the command line and %-sequence expansion of a configuration file.

Note:
openssh does not support variable expansion until 10.0, so backport
adapts for this.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-61984

Upstream-Status: Backport from 35d5917652

(From OE-Core rev: 7ca0c7a4d17c707658669e255689ecd4183c7e9b)

Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-12 08:49:37 -08:00
Peter Marko
0002d5d082 libpng: patch CVE-2025-66293
Pick patches per nvd report [1] and github advisory [2].

[1] https://nvd.nist.gov/vuln/detail/CVE-2025-66293
[2] https://github.com/pnggroup/libpng/security/advisories/GHSA-9mpm-9pxh-mg4f

(From OE-Core rev: c33ebd0882288a962c089b423cc2468a7c84c2e7)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-12 08:49:37 -08:00
Hitendra Prajapati
db73f23fc2 libxml2: Security fix for CVE-2025-7425
CVE-2025-7425
libxslt: heap-use-after-free in xmlFreeID caused by `atype` corruption

Origin: https://launchpad.net/ubuntu/+source/libxml2/2.9.14+dfsg-1.3ubuntu3.6
Ref : https://security-tracker.debian.org/tracker/CVE-2025-7425

Upstream-Status: Backport from https://gitlab.gnome.org/GNOME/libxslt/-/issues/140
(From OE-Core rev: cf260bef4495186662b74b8324d01efcfc2121fd)

Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-12 08:49:36 -08:00
Gyorgy Sarvari
40701465df systemd-bootchart: update SRC_URI branch
The branch was renamed from master to main.

(From OE-Core rev: 80c7fd87fd95a79c6eb5f41b95cf70ccc70d9615)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Archana Polampalli
ba9338d810 go: fix CVE-2025-61724
The Reader.ReadResponse function constructs a response string through repeated
string concatenation of lines. When the number of lines in a response is large,
this can cause excessive CPU consumption.

(From OE-Core rev: 188dbac037809d6e8f0e1667f563fea997ea04b8)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Archana Polampalli
46c836aefa go: fix CVE-2025-61723
The processing time for parsing some invalid inputs scales non-linearly with
respect to the size of the input. This affects programs which parse untrusted PEM inputs.

(From OE-Core rev: cfafebef95330e531ab7bb590e5fb566dd5a3dce)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Archana Polampalli
5f8155aefa go: fix CVE-2025-58189
When Conn.Handshake fails during ALPN negotiation the error contains attacker controlled
information (the ALPN protocols sent by the client) which is not escaped.

(From OE-Core rev: b3f055df67cf345c9a17c5c1c874c778d538ba9e)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Archana Polampalli
dd0a2c2470 go: fix CVE-2025-58187
Due to the design of the name constraint checking algorithm, the processing time
of some inputs scale non-linearly with respect to the size of the certificate.
This affects programs which validate arbitrary certificate chains.

(From OE-Core rev: cea9fcf1b21b1b35b88986b676d712ab8ffa9d67)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Peter Marko
c5794d82b0 libpng: patch CVE-2025-65018
Pick commits per NVD report.

(From OE-Core rev: c46f841cdc8f7c1b0cce7da8fb587f65320a2163)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Peter Marko
169ca8debf libpng: patch CVE-2025-64720
Pick commit per NVD report.

(From OE-Core rev: 9694df176a13eeac174c7da2bcf8243969dbcda6)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Peter Marko
5d27e8f05d libpng: patch CVE-2025-64506
Pick commit per NVD report.

(From OE-Core rev: eb4af9b4cea963b650be217d33bc12f560ed84a6)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Peter Marko
d492537188 libpng: patch CVE-2025-64505
Pick commit per NVD report.
Add two patches to apply it cleanly.

(From OE-Core rev: 1470546924765d134c83b50e62974f048614b121)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Peter Marko
052e4214aa gnutls: patch CVE-2025-9820
This CVE is announced under [1].
Pick commit which mentions this CVE per [2].

[1] https://www.gnutls.org/security-new.html#GNUTLS-SA-2025-11-18
[2] https://security-tracker.debian.org/tracker/CVE-2025-9820

(From OE-Core rev: 946f776b6f7ceacf76a643c5776b0efedb000efd)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-05 06:56:34 -08:00
Gyorgy Sarvari
c76f44b1da flac: patch seeking bug
While working on audiofile recipe from meta-oe, a test that is using flac
to convert a flac file failed with this particular version of the recipe.

Bisecting the issue pointed to a code snippet that later was modifed with the
patch that is introduced here: in version 1.3.4 there is a bug with seeking
in flac files, returning incorrect pointers.

This backported patch fixes this (and fixes the ptest also, that triggered this).

(From OE-Core rev: ceef3cde9b761b7b5de6f7b6b1fb8e99663af9ca)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-01 06:50:49 -08:00
Peter Marko
088d1497d5 libarchive: patch CVE-2025-60753
Pick patch from [3] marked in [2] mentioned in [1].

[1] https://nvd.nist.gov/vuln/detail/CVE-2025-60753
[2] https://github.com/libarchive/libarchive/issues/2725
[3] https://github.com/libarchive/libarchive/pull/2787

(From OE-Core rev: e3e9dd59a32541b36d6c1036b8f83af52bef92cd)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-01 06:50:49 -08:00
Peter Marko
22f8da4818 libarchive: patch 3.8.3 security issue 2
Pick patch [2] as listed in [1].

[1] https://github.com/libarchive/libarchive/releases/tag/v3.8.3
[2] https://github.com/libarchive/libarchive/pull/2768

(From OE-Core rev: 332f07635ccb4965a001f6536620c9d0b1a9c056)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-01 06:50:49 -08:00
Peter Marko
4030876db9 libarchive: patch 3.8.3 security issue 1
Pick patch [2] as listed in [1].
To apply it cleanly, add three additional patches from branch patch/3.8.

[1] https://github.com/libarchive/libarchive/releases/tag/v3.8.3
[2] https://github.com/libarchive/libarchive/pull/2753

(From OE-Core rev: 201eed780c73335c9278db17fe39fb453e16af08)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-01 06:50:49 -08:00
Praveen Kumar
c6234dce63 python3: fix CVE-2025-6075
If the value passed to os.path.expandvars() is user-controlled a
performance degradation is possible when expanding environment variables.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-6075

Upstream-patch:
892747b4cf

(From OE-Core rev: 9a7f33d85355ffbe382aa175c04c64541e77b441)

Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-01 06:50:49 -08:00
Divya Chellam
6639c7b295 ruby: fix CVE-2024-41123
REXML is an XML toolkit for Ruby. The REXML gem before 3.3.2 has some DoS
vulnerabilities when it parses an XML that has many specific characters
such as whitespace character, `>]` and `]>`. The REXML gem 3.3.3 or later
include the patches to fix these vulnerabilities.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2024-41123

Upstream-patches:
2c39c91a65
4444a04ece
ebc3e85bfa
6cac15d458
e2546e6eca

(From OE-Core rev: 6b2a2e689a69deef6098f6c266542234e46fb24b)

Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-01 06:50:49 -08:00
Divya Chellam
7c4bd642e4 ruby: fix CVE-2024-39908
REXML is an XML toolkit for Ruby. The REXML gem before 3.3.1 has some
DoS vulnerabilities when it parses an XML that has many specific characters
such as `<`, `0` and `%>`. If you need to parse untrusted XMLs, you many be
impacted to these vulnerabilities. The REXML gem 3.3.2 or later include the
patches to fix these vulnerabilities. Users are advised to upgrade. Users
unable to upgrade should avoid parsing untrusted XML strings.

Reference:
https://security-tracker.debian.org/tracker/CVE-2024-39908

Upstream-patches:
f1df7d13b3
d146162e9a
b5bf109a59
b8a5f4cd5c
0af55fa49d
c1b64c174e
9f1415a261
c33ea49810
a79ac8b4b4
67efb5951e
1f1e6e9b40
910e5a2b48

(From OE-Core rev: 6e0b70843422cd7cdb25a9e1520dd64bf701fea6)

Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-01 06:50:49 -08:00
Divya Chellam
f58483837c ruby: fix CVE-2024-35176
REXML is an XML toolkit for Ruby. The REXML gem before 3.2.6 has a
denial of service vulnerability when it parses an XML that has many
`<`s in an attribute value. Those who need to parse untrusted XMLs
may be impacted to this vulnerability. The REXML gem 3.2.7 or later
include the patch to fix this vulnerability. As a workaround, don't
parse untrusted XMLs.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2024-35176

Upstream-patch:
4325835f92

(From OE-Core rev: a89fcaf0c3ac2afd95e836bc1356832296135696)

Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-01 06:50:49 -08:00
Vijay Anusuri
cdc78fd36f python3-idna: Fix CVE-2024-3651
import patch from debian to fix
  CVE-2024-3651

Upstream-Status: Backport [import from debian 3.3-1+deb12u1
Upstream commit
5beb28b9dd]

(From OE-Core rev: 7359d3cdf2210e81a26d8712769f7e23bfbc1bb7)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-01 06:50:49 -08:00
Richard Purdie
36165cce68 oe-build-perf-report: relax metadata matching rules
As the poky repository is no longer used, measurements are indexed using
the oe-core commit. But as bitbake, oe-core and meta-yocto are now
retrieved from separate gits, while measuring performances for a given branch
at some time interval, we can get the same commit for oe-core but
different ones for bitbake or meta-yocto. As a consequence, metadata
associated with the same index (oe-core commit) might differ.

To work around this, relax the equality checks for commit, commit_time
and commit_count since they might no longer match.

Ideally we'd group them into separate results but for now, treat them
as being the same.

[Based on work from Mathieu Dubois-Briand but fixed differently]
(From OE-Core rev: ff72b41a3f0bf1820405b8782f0d125cd10e3406)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e7dc42e30c76bf0fbb4d3cc019bbec675bac55fa)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-24 06:57:39 -08:00
Gyorgy Sarvari
9734a91472 musl: patch CVE-2025-26519
Details: https://nvd.nist.gov/vuln/detail/CVE-2025-26519

Pick the patches that are attached to the musl advisory:
https://www.openwall.com/lists/musl/2025/02/13/1

(From OE-Core rev: e1c1b4b5100e08b63a2e6e5ff608f79e7b202649)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-24 06:57:39 -08:00
Vijay Anusuri
42d2a2e8cd xwayland: Fix for CVE-2025-62231
Upstream-Status: Backport from 3baad99f9c

(From OE-Core rev: 24a1574d6f61a45ce104ab6ee01697df2575fd51)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-24 06:57:39 -08:00
Vijay Anusuri
940e5e75b9 xwayland: Fix for CVE-2025-62230
Upstream-Status: Backport from
865089ca70
& 87fe255393

(From OE-Core rev: a481fe0dcca8213eca845d5f1fdde3f0d15c8aed)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-24 06:57:39 -08:00
Vijay Anusuri
3d559d269a xwayland: Fix for CVE-2025-62229
Upstream-Status: Backport from 5a4286b13f

(From OE-Core rev: 5c6a07f215e00392b1831ed89ac0f8180823e124)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-24 06:57:39 -08:00
Soumya Sambu
36037789d2 elfutils: Fix CVE-2025-1377
A vulnerability, which was classified as problematic, has been found in GNU elfutils
0.192. This issue affects the function gelf_getsymshndx of the file strip.c of the
component eu-strip. The manipulation leads to denial of service. The attack needs to
be approached locally. The exploit has been disclosed to the public and may be used.
The identifier of the patch is fbf1df9ca286de3323ae541973b08449f8d03aba. It is
recommended to apply a patch to fix this issue.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-1377

Upstream patch:
https://sourceware.org/git/?p=elfutils.git;a=commit;h=fbf1df9ca286de3323ae541973b08449f8d03aba

(From OE-Core rev: e4e8392e688ceb0d8e68fe48118383c031178b5e)

Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-24 06:57:39 -08:00
Soumya Sambu
7dd51aea98 elfutils: Fix CVE-2025-1376
A vulnerability classified as problematic was found in GNU elfutils 0.192. This
vulnerability affects the function elf_strptr in the library /libelf/elf_strptr.c
of the component eu-strip. The manipulation leads to denial of service. It is
possible to launch the attack on the local host. The complexity of an attack is
rather high. The exploitation appears to be difficult. The exploit has been
disclosed to the public and may be used. The name of the patch is
b16f441cca0a4841050e3215a9f120a6d8aea918. It is recommended to apply a patch to
fix this issue.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-1376

Upstream patch:
https://sourceware.org/git/?p=elfutils.git;a=commit;h=b16f441cca0a4841050e3215a9f120a6d8aea918

(From OE-Core rev: 1126e5c1e63b876499c78ac403d1327645edf1c7)

Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-24 06:57:39 -08:00
Lee Chee Yang
851a3f0c55 migration-guides: add release notes for 4.0.31
(From yocto-docs rev: 4b9df539fa06fb19ed8b51ef2d46e5c56779de81)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 992d0725e8b4fdcdc2e9a101ce51ebef94a00112)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Ross Burton
dacb67f70f documentation: link to the Releases page on yoctoproject.org instead of wiki
We have a machine-generated Releases page[1] which is preferable to the
wiki.

[1] https://www.yoctoproject.org/development/releases/

(From yocto-docs rev: 492619059cbbe2d1ebc347c3e86072f32d7d064a)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 46a9172fd17aa518028e35b8c874e74889079094)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Quentin Schulz
232e8ebe3c overview-manual: migrate to SVG + fix typo
The original PNG had a typo (YP-Comptible instead of YP-Compatible).

Instead of patching a PNG, let's migrate to an SVG with the typo already
fixed.

[AG: fix conflicts]

Reported-by: Robert P. J. Day <rpjday@crashcourse.ca>
(From yocto-docs rev: bb9887a98bb64ebaa23b772fd0f3c22f13e996e7)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 9f3c2a9113b329f7efdd22d3b3fbe272a44bc654)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Quentin Schulz
41c16e82e9 dev-manual: debugging: use bitbake-getvar in Viewing Variable Values section
We should recommend using bitbake-getvar command wherever possible as
its output is much less confusing and overwhelming than bitbake -e.

Unfortunately, bitbake-getvar currently doesn't list Python tasks or
functions, unlike bitbake -e, so keep the latter for some corner cases.

[AG: Moroever -> Moreover typo fix]

(From yocto-docs rev: 382c8eee275eb4773d4e2183f5fe19837a6a3b0b)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 41e4e05369c4e028c679749b7b62434327927a09)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Quentin Schulz
cab0ee97d8 ref-manual: variables: migrate the OVERRIDES note to bitbake-getvar
Wherever possible, we should use bitbake-getvar as it's the recommended
tool so let's do that.

(From yocto-docs rev: 7981bc2bd09b2d618563710474525febabaf6103)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 2293a3f2767895e9fb5c3e8f3ec11bb4951a7127)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Quentin Schulz
d54b15eba1 kernel-dev: common: migrate bitbake -e to bitbake-getvar
It's recommended to use bitbake-getvar for a few releases now so let's
use that instead of bitbake -e.

While at it, use a cross-reference for "OpenEmbedded Build System".

(From yocto-docs rev: 7f6dc007a888784a678859690dbfddd5a1fe28a0)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 54585646d8220f8de1ba2c7246cb3f2fcbc59583)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Walter Werner SCHNEIDER
2943f88d88 kernel-dev: add disable config example
Makes it more clear that the configuration fragment can also be used to
disable a configuration.

(From yocto-docs rev: c4bfc16b2e13444547342204a6f75fd1cf343533)

Signed-off-by: Walter Werner SCHNEIDER <contact@schnwalter.eu>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit d38ef467081ee73bf23f240ace54b849a3a87612)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Robert P. J. Day
9479971ef9 dev-manual/new-recipe.rst: typo, "whith" -> "which"
Fix typo "whith", should be "which".

(From yocto-docs rev: 1a54d05d8bd5484e17cbc060fc57fd2f7afb683f)

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit f98b25f7f7522cf223beb001cabef870d6dd8c10)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Robert P. J. Day
2cf2a95adb dev-manual/new-recipe.rst: replace 'bitbake -e' with 'bitbake-getvar'
Replace the legacy call to 'bitbake -e' to get the value of a recipe's
variable with the newer call to 'bitbake-getvar'.

(From yocto-docs rev: d7ef362307daf2e8d9b62ec895e080654abfef8b)

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit ed7c0766ef5f13b90943a69e64f8e8713d05e864)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Robert P. J. Day
bababfb854 dev-manual/layers.rst: document "bitbake-layers show-machines"
The "show-machines" subcommand is not mentioned in the docs; add it.

[AG: fix conflicts]

(From yocto-docs rev: 09bbdc6bc5f9ae77f120185d1324f1166ac1f9d5)

Signed-off-by: Robert P. J. Day <Crpjday@crashcourse.ca>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit b4320cdc4df08c59a24d5247b3895dd602554fa0)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Robert P. J. Day
6f01aae51d dev-manual/new-recipe.rst: update "recipetool -h" output
Update the output of "recipetool -h" to include the missing "edit"
subcommand.

(From yocto-docs rev: 2a85eab0c51a78ab00168e23274d479cf3aedb24)

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 092d688349b0b6bb10ae6fbbab7d82801964daf5)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Alexander Kanavin
33d61e50c1 goarch.bbclass: do not leak TUNE_FEATURES into crosssdk task signatures
The default assignments look like this:
TARGET_GO386 = "${@go_map_386(d.getVar('TARGET_ARCH'), d.getVar('TUNE_FEATURES'), d)}"

TUNE_FEATURES is a target-specific variable, and so should be used
only for target builds. The change is similar to what is already done
for native packages.

(From OE-Core rev: cfff8e968257c44880caa3605e158764ed5c6a2a)

(From OE-Core rev: 8aad87c12a809d790175b9848f5802d0a28eecac)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Gyorgy Sarvari
9cc35e0f6d babeltrace2: fetch with https protocol
The source doesn't support the default "git" protocol anymore for
anonymous download, causing fetching failures.

(From OE-Core rev: 4351a427b2ec270ea5e4c698fe4c213036c1241b)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Alexander Kanavin
a916d3a38a xf86-video-intel: correct SRC_URI as freedesktop anongit is down
(From OE-Core rev: 04037a14e1431c4a51f5d51885974732a6108368)

(From OE-Core rev: e2c288a92f06af82559cf33db6c988b9dbc8b7ea)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 9649bec517)
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Gyorgy Sarvari
b0c11efc8f efibootmgr: update SRC_URI branch
master branch was renamed to main

(From OE-Core rev: 2c5b195e974ac54610d7b50c014752875004b0b9)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Soumya Sambu
478f5eaa61 python3-urllib3: Upgrade 1.26.18 -> 1.26.20
Includes fix for CVE-2024-37891

Changelog:
----------
https://github.com/urllib3/urllib3/blob/1.26.20/CHANGES.rst

(From OE-Core rev: 2e805113fe0488224f05524360eeff729dd12d91)

Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Vijay Anusuri
748f958fd3 xserver-xorg: Fix for CVE-2025-62231
Upstream-Status: Backport from 3baad99f9c

(From OE-Core rev: 05fe08caa0d4bd30510b496a300731a9754f24b8)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Vijay Anusuri
73e3da5d44 xserver-xorg: Fix for CVE-2025-62230
Upstream-Status: Backport from
865089ca70
& 87fe255393

(From OE-Core rev: 215d63fd22b40148625215aac5c4e7f2629f5814)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Vijay Anusuri
6b397fb207 xserver-xorg: Fix for CVE-2025-62229
Upstream-Status: Backport from 5a4286b13f

(From OE-Core rev: d1d0955ad41827f9c75ae726e7c725d2f82b6d18)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Saquib Iltaf
6ab506f474 rust-cross-canadian: Ignore CVE-2024-43402
Ignore CVE-2024-43402 as its not applicable.

CVEs are specific to Microsoft Windows.

(From OE-Core rev: 3044ae9e6e84faada8c1425238e9e9c3060b1a3a)

Signed-off-by: Saquib Iltaf <saquib.iltaf@kpit.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Peter Marko
809b3e9113 curl: ignore CVE-2025-10966
Per [1] this CVE applies only when wolfssl backed is used.
8.17.0 removed WolfSSL support completely.

[1] https://curl.se/docs/CVE-2025-10966.html

(From OE-Core rev: 41c4735658e9ba5322bd06ef50aa3a1edb1f7fd8)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-19 08:21:24 -08:00
Jason Schonberg
e2d947b1cc Don't use ftp.gnome.org
http://ftp.gnome.org/pub/gnome redirects to https://download.gnome.org

 bitbake.conf defines ${GNOME_MIRROR} to be https://download.gnome.org/sources/

(From OE-Core rev: 1e1993b72f2b6109ce3d0ef950553b74b2b37b27)

Signed-off-by: Jason Schonberg <schonm@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-06 07:14:05 -08:00
Praveen Kumar
1dd6d90744 bind: upgrade 9.18.33 -> 9.18.41
This upgrade fixes
CVE-2025-8677,CVE-2025-40778 and CVE-2025-40780.

Changelog
==========
https://downloads.isc.org/isc/bind9/9.18.41/doc/arm/html/changelog.html

(From OE-Core rev: deca51264991a2f6c6e450f8fa8b4a233280b700)

Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-06 07:14:05 -08:00
Hitendra Prajapati
8641f0fec9 go: fix CVE-2024-24783
Upstream-Status: Backport be5b52bea6

(From OE-Core rev: b7d89fae22b317199b8f72978712075078a17005)

Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-06 07:14:05 -08:00
Peter Marko
484d31c23d binutils: patch CVE-2025-11413
Pick commit per NVD CVE report.

Note that there were two patches for this, first [1] and then [2].
The second patch moved the original patch to different location.
Cherry-pick of second patch is successful leaving out the code removing
the code from first location, so the patch attached here is not
identical to the upstream commit but is identical to applying both and
merging them to a single patch.

[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=1108620d7a521f1c85d2f629031ce0fbae14e331
[2] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=72efdf166aa0ed72ecc69fc2349af6591a7a19c0

(From OE-Core rev: 98df728e6136d04af0f4922b7ffbeffb704de395)

(From OE-Core rev: 8d1a830c713a299f67fc512ed8bc0be21be4b9f0)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-06 07:14:05 -08:00
Peter Marko
aaf9219788 binutils: patch CVE-2025-11412
Pick commit per NVD CVE report.

(From OE-Core rev: 6b94ff6c584a31d2b1e06d1e1dc19392d759b4b7)

(From OE-Core rev: 9130f3471f4814979cfdfa66ca118929f240cb30)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-06 07:14:05 -08:00
Peter Marko
d152607f64 wpa-supplicant: patch CVE-2025-24912
Pick patches as listed in NVD CVE report.

Note that Debian lists one of the patches as introducing the
vulnerability. This is against what the original report [1] says.
Also the commit messages provide hints that the first patch fixes this
issue and second is fixing problem with the first patch.

[1] https://jvn.jp/en/jp/JVN19358384/

(From OE-Core rev: d0907754e0b44c5e41242bc1603278f86101fa31)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-06 07:14:05 -08:00
Archana Polampalli
0de012f0f6 openssh: fix CVE-2025-61985
ssh in OpenSSH before 10.1 allows the '\0' character in an ssh:// URI, potentially
leading to code execution when a ProxyCommand is used.

(From OE-Core rev: 5170bd2f8a63bcc310667a327ea2ab96c783c4f6)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-06 07:14:05 -08:00
Hongxu Jia
c4200e606c u-boot: fix CVE-2024-42040
Backport a patch [1] from upstrem to fix CVE-2024-42040 [2]

[1] 81e5708cc2
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-42040

(From OE-Core rev: f5b980ade1e952a181cb51d60268942095627c0d)

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-11-06 07:14:05 -08:00
Steve Sakoman
04b39e5b7e build-appliance-image: Update to kirkstone head revision
(From OE-Core rev: 99204008786f659ab03538cd2ae2fd23ed4164c5)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:32:40 -07:00
Steve Sakoman
8d5cd4a310 poky.conf: bump version for 4.0.31
(From meta-yocto rev: 3b2df00345b46479237fe0218675a818249f891c)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:29:24 -07:00
Antonin Godard
59579acac7 ref-manual/classes.rst: document the relative_symlinks class
Added by commit e478550c8cd8 ("openssl/fontconfig/bzip2: Use relative
symlinks instead of absolute ones (using a new class)") in OE-Core.

(From yocto-docs rev: 073f3bca4c374b03398317e7f445d2440a287741)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit c0dc554eba7d421023ecc68a70b7a19df38628b0)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
56aa9e3241 ref-manual/classes.rst: gettext: extend the documentation of the class
Mention the use of USE_NLS, INHIBIT_DEFAULT_DEPS and the cross-canadian
class.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 0bbb3eb02881b6ba41d3e77a21345e3520bbedea)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit d877e54f1c85cefc00dd674d60f2db81446bd95a)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
ea90d0a5b1 ref-manual/variables.rst: document the USE_NLS variable
Part of bitbake.conf, this variable allowing to enable or disable
translation was undocumented. Add a entry to the glossary.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 380018c93b0aa4832985bf083620fabee96dda72)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 92a55345a56b5038c0344669daaa7a3a99dd0fc0)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
9e1c28514a ref-manual/variables.rst: document the REQUIRED_IMAGE_FEATURES variable
Added by commit 96a9702a24a7 ("distro_features_check: expand with
IMAGE_FEATURES") in OE-Core.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 7aeeefafb27fd1eae4388d6445a28951f4d79a02)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 860ddbd491ee9db291868bd939392538a2c64a4b)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
24772dd301 ref-manual/variables.rst: document the REQUIRED_COMBINED_FEATURES variable
Added in OE-Core commit: 5f4875b950ce ("distro_features_check: expand
with MACHINE_FEATURES and COMBINED_FEATURES, rename").

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: db007c4b59514d0fa4fb63c8d6c2543e5d54e38f)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit bbc7f26240c2db5cd4179f297ae49c778789514e)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
5f0dcc1dc6 ref-manual/variables.rst: document the REQUIRED_MACHINE_FEATURES variable
Added in OE-Core commit: 5f4875b950ce ("distro_features_check: expand
with MACHINE_FEATURES and COMBINED_FEATURES, rename").

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 02d5f9664a71a4f1b72b28d7093c19cc03ec08f6)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit c0551456cba6016d5014c2be8d6906e58a324cc4)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
8d8972d1b4 ref-manual/classes,variables: document the CCACHE_DISABLE variable
Can be used in recipes that want to explicitly skip Ccache support when
the ccache class is enabled.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: cc6e7a2d80ca03ee49a94af2eda74e83b1a33552)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit b1b4adc8d4d9d23ff6fd91bca632bb0f5277e72b)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
João Marcos Costa
9626809dce variables.rst: fix LAYERDEPENDS description
This variable does not apply to the scope of a single recipe, but rather
to the scope of the entire layer.

(From yocto-docs rev: 7ff462805eb45bd29e361017dfb5041cce448e4d)

Signed-off-by: João Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit eec26e11adb6e3a9c4f53f825b9a1730c9ddee12)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Paul Barker
3fe029171f dev-manual, test-manual: Update autobuilder output links
The current autobuilder cluster is at valkyrie.yocto.io, published files
on autobuilder.yocto.io will be missing or out-of-date.

(From yocto-docs rev: 5cccf2e65b85c52cb9b9fd22d46ebde6d624fbe5)

Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 9ed06c070e309b52f1dbf8877867dcede79f4cb6)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
9a4c708aa5 ref-manual/classes.rst: extend the uninative class documentation
Extend the documentation of the uninative class based on [1].

[1]: https://lore.kernel.org/r/061e6150ce177221f7b6ee8754b03a20347a92c3.camel@linuxfoundation.org

Co-developed-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(From yocto-docs rev: 7efaf626a9313cd0835391c06d3e3af6bdbd0d71)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 68996f0f3bf882714e8d96a0aa7b2492fe16d0c3)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
2442316a1e ref-manual/variables.rst: document UNINATIVE_URL/CHECKSUM
Document the UNINATIVE_URL and UNINATIVE_CHECKSUM variables.

(From yocto-docs rev: e94c46499255f087ccb43c5fa45bf7a3f51b12c6)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 974fe4e1c5db65b462a382e089e016326e7b3f26)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Peter Marko
48ab50b55c lz4: patch CVE-2025-62813
Pick commit mentioned in NVD report.

(From OE-Core rev: 612d09f6b9e262640ed3ee0ee81ac4b6d7c29f4d)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Hitendra Prajapati
bee2fe9cc5 git: fix CVE-2025-48386
Upstream-Status: Backport from 9de345cb27

(From OE-Core rev: 3f2fce1ababbf6c94a9e4995d133d5338913b2ce)

Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Yash Shinde
d0f445a1e2 binutils: fix CVE-2025-8225
CVE: CVE-2025-8225

It is possible with fuzzed files to have num_debug_info_entries zero
after allocating space for debug_information, leading to multiple
allocations.

* dwarf.c (process_debug_info): Don't test num_debug_info_entries
to determine whether debug_information has been allocated,
test alloc_num_debug_info_entries.

Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=e51fdff7d2e538c0e5accdd65649ac68e6e0ddd4]

(From OE-Core rev: 9b5bb098b542a43a7aa97cc376c358f0a38778e3)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Yash Shinde
0118bd1e10 binutils: fix CVE-2025-11081
CVE: CVE-2025-11081

Trying to dump .sframe in a PE file results in a segfault accessing
elf_section_data.

	* objdump (dump_sframe_section, dump_dwarf_section): Don't access
	elf_section_type without first checking the file is ELF.

PR 33406 SEGV in dump_dwarf_section
[https://sourceware.org/bugzilla/show_bug.cgi?id=33406]

Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=f87a66db645caf8cc0e6fc87b0c28c78a38af59b]

(From OE-Core rev: a7d39d40ec867bbcc36d71cf98858a34c619c9fe)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Peter Marko
7ca21c761a python3: upgrade 3.10.18 -> 3.10.19
Drop upstreamed patch and refresh remaining patches.

Release information:
* https://www.python.org/downloads/release/python-31019/
* The release you're looking at is Python 3.10.19, a security bugfix
  release for the legacy 3.10 series.

Handles CVE-2025-59375, CVE-2025-47273 and CVE-2024-6345.

(From OE-Core rev: 9b3dbd691f6ebdbdfe88cef3d3a676ddd1399c63)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Bruce Ashfield
4e75dd0f5f linux-yocto/5.15: update to v5.15.194
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    29e53a5b1c4f1 Linux 5.15.194
    1c532dd246bf2 drm/i915/backlight: Return immediately when scale() finds invalid parameters
    45a7527cd7da4 i40e: add validation for ring_len param
    8043ca4882e77 i40e: increase max descriptors for XL710
    1fa0aadade344 i40e: fix idx validation in config queues msg
    8e35c80f85704 i40e: fix validation of VF state in get resources
    3e851448078f5 mm/hugetlb: fix folio is still mapped when deleted
    4f52f7c50f5b6 mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize()
    523edfed4f68b af_unix: Don't leave consecutive consumed OOB skbs.
    ecbfd9ef5cf3e fbcon: Fix OOB access in font allocation
    b8a6e85328aeb fbcon: fix integer overflow in fbcon_do_set_font
    0d41604d2d53c tracing: dynevent: Add a missing lockdown check on dynevent
    1b1c3bdb8ab3f i40e: add mask to apply valid bits for itr_idx
    77a35be582dff i40e: add max boundary check for VF filters
    f8c8e11825b24 i40e: fix input validation logic for action_meta
    34dfac0c90482 i40e: fix idx validation in i40e_validate_queue_map
    d382d6daf0184 crypto: af_alg - Fix incorrect boolean values in af_alg_ctx
    e4c1ec11132ec crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg
    e15de80737d44 drm/gma500: Fix null dereference in hdmi teardown
    37821b843e4e5 net: dsa: lantiq_gswip: suppress -EINVAL errors for bridge FDB entries added to the CPU port
    e8687ab9c8a11 net: dsa: lantiq_gswip: move gswip_add_single_port_br() call to port_setup()
    b9010dba5f36b net: dsa: lantiq_gswip: do also enable or disable cpu port
    cf2d597fb6f04 selftests: fib_nexthops: Fix creation of non-FDB nexthops
    0e7bfe7a268cc nexthop: Forbid FDB status change while nexthop is in a group
    5d4856a3717d6 bnxt_en: correct offset handling for IPv6 destination address
    d646358255b69 ethernet: rvu-af: Remove slash from the driver name
    48822a59ecc47 can: peak_usb: fix shift-out-of-bounds issue
    6eec67bfb2563 can: mcba_usb: populate ndo_change_mtu() to prevent buffer overflow
    60463a1c13890 can: sun4i_can: populate ndo_change_mtu() to prevent buffer overflow
    7ab85762274c0 can: hi311x: populate ndo_change_mtu() to prevent buffer overflow
    72de0facc50af can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow
    256b64f7a9ba0 can: etas_es58x: sort the includes by alphabetic order
    f44124f407a39 can: etas_es58x: advertise timestamping capabilities and add ioctl support
    0a6e1bd2d2500 can: dev: add generic function can_eth_ioctl_hwts()
    b9a0e6f3b043a can: dev: add generic function can_ethtool_op_get_ts_info_hwts()
    533e3220bac26 can: bittiming: replace CAN units with the generic ones from linux/units.h
    33b83a90b65e4 can: bittiming: allow TDC{V,O} to be zero and add can_tdc_const::tdc{v,o,f}_min
    d51c6b51981fa bpf: Reject bpf_timer for PREEMPT_RT
    9ebf862184569 can: rcar_can: rcar_can_resume(): fix s2ram with PSCI
    b32c64db4370c cpufreq: Initialize cpufreq-based invariance before subsys
    db28f975ed7f3 arm64: dts: imx8mp: Correct thermal sensor index
    bb3eeb3a7c749 IB/mlx5: Fix obj_type mismatch for SRQ event subscriptions
    825c17c54cfb2 usb: core: Add 0x prefix to quirks debug output
    9ba349a33f50e ALSA: usb-audio: Fix build with CONFIG_INPUT=n
    1746e7a74ca0b ALSA: usb-audio: Convert comma to semicolon
    b4b94f092f193 ALSA: usb-audio: Add mixer quirk for Sony DualSense PS5
    4f9294613bb39 ALSA: usb-audio: Remove unneeded wmb() in mixer_quirks
    790b167e58570 ALSA: usb-audio: Simplify NULL comparison in mixer_quirks
    e4f6ae98ebd94 ALSA: usb-audio: Avoid multiple assignments in mixer_quirks
    a4bb77c1bab94 ALSA: usb-audio: Drop unnecessary parentheses in mixer_quirks
    2f56442a417d5 ALSA: usb-audio: Fix block comments in mixer_quirks
    ada2282259243 net: rfkill: gpio: Fix crash due to dereferencering uninitialized pointer
    98c2894580f42 net: rfkill: gpio: add DT support
    2f58e6d3e7a71 mptcp: propagate shutdown to subflows when possible
    773fddf976d28 ksmbd: smbdirect: validate data_offset and data_length field of smb_direct_data_transfer
    dde28a51b8c3a mptcp: set remote_deny_join_id0 on SYN recv
    ca9e4e6a87376 phy: ti: omap-usb2: fix device leak at unbind
    f5648527d2e88 phy: Use device_get_match_data()
    0df0f4bcc7a25 phy: broadcom: ns-usb3: fix Wvoid-pointer-to-enum-cast warning
    662b75f7d1bfb USB: gadget: dummy-hcd: Fix locking bug in RT-enabled kernels
    94fac8987bea7 usb: gadget: dummy_hcd: remove usage of list iterator past the loop body
    dbf216ae5aea8 xhci: dbc: Fix full DbC transfer ring after several reconnects
    503ba5026801b xhci: dbc: decouple endpoint allocation from initialization
    84870a62c48f7 serial: sc16is7xx: fix bug in flow control levels init
    dfca6fa9d174c drm: bridge: cdns-mhdp8546: Fix missing mutex unlock on error path
    51a501e990a35 drm: bridge: anx7625: Fix NULL pointer dereference with early IRQ
    79a06d96e73e4 ASoC: SOF: Intel: hda-stream: Fix incorrect variable used in error message
    e07847f44a0e0 ASoC: wm8974: Correct PLL rate rounding
    0235a5787e87b ASoC: wm8940: Correct typo in control name
    2e94bc6451cb6 rds: ib: Increment i_fastreg_wrs before bailing out
    9697890763328 KVM: SVM: Sync TPR from LAPIC into VMCB::V_TPR even if AVIC is active
    8a29726633978 mmc: mvsdio: Fix dma_unmap_sg() nents value
    4f935a1297080 btrfs: tree-checker: fix the incorrect inode ref size check
    29d9125d6c07f power: supply: bq27xxx: restrict no-battery detection to bq27000
    fe0f602a75cc9 power: supply: bq27xxx: fix error return in case of no bq27000 hdq battery
    40fb833c64cab nilfs2: fix CFI failure when accessing /sys/fs/nilfs2/features/*
    0405055930264 cnic: Fix use-after-free bugs in cnic_delete_task
    428c1dd78ef66 net: liquidio: fix overflow in octeon_init_instr_queue()
    3cae94808b2ff Revert "net/mlx5e: Update and set Xon/Xoff upon port speed set"
    33a4fdf0b4a25 tcp: Clear tcp_sk(sk)->fastopen_rsk in tcp_disconnect().
    17cb9b4017be7 i40e: remove redundant memory barrier when cleaning Tx descs
    95235d29cd8b0 net: natsemi: fix `rx_dropped` double accounting on `netif_rx()` failure
    e0e24571a7b2f qed: Don't collect too many protection override GRC elements
    e4343d400761c dpaa2-switch: fix buffer pool seeding for control traffic
    5e94e44c9cb30 um: virtio_uml: Fix use-after-free after put_device in probe
    f2795d1b92506 cgroup: split cgroup_destroy_wq into 3 workqueues
    f2ede1f9070cc pcmcia: omap_cf: Mark driver struct with __refdata to prevent section mismatch
    0f9cf94656d08 wifi: mac80211: fix incorrect type for ret
    d2587970f0887 ALSA: firewire-motu: drop EPOLLOUT from poll return values as write is not supported
    5f2f50aa44de7 net: hsr: hsr_slave: Fix the promiscuous mode in offload mode
    99f7048957f5a mm/memory-failure: fix VM_BUG_ON_PAGE(PagePoisoned(page)) when unpoison memory
    a8b0032687c74 drm/i915/power: fix size for for_each_set_bit() in abox iteration
    f1b349706538c drm/amdgpu: fix a memory leak in fence cleanup when unloading
    91b2c8ee68219 soc: qcom: mdt_loader: Deal with zero e_shentsize
    e3d490ff8d12e phy: ti-pipe3: fix device leak at unbind
    4de4344ed4164 phy: tegra: xusb: fix device and OF node leak at probe
    6ac1599d0e780 dmaengine: qcom: bam_dma: Fix DT error handling for num-channels/ees
    24a65b46cd663 hrtimers: Unconditionally update target CPU base after offline timer migration
    e90b685c5f2a8 hrtimer: Rename __hrtimer_hres_active() to hrtimer_hres_active()
    95b76ebeb0f14 hrtimer: Remove unused function
    5d5385feef357 regulator: sy7636a: fix lifecycle of power good gpio
    301a96cc4dc00 dmaengine: ti: edma: Fix memory allocation size for queue_priority_map
    810167fa6f34a hsr: use hsr_for_each_port_rtnl in hsr_port_get_hsr
    cedfcd09a338e hsr: use rtnl lock when iterating over ports
    1100242709d56 net: hsr: Add VLAN CTAG filter support
    7e0ef989aa6d4 net: hsr: Add support for MC filtering at the slave device
    d981b9680be2b net: hsr: Disable promiscuous mode in offload mode
    e202ffd9e5453 can: xilinx_can: xcan_write_frame(): fix use-after-free of transmitted SKB
    5cf37a6fcb61c can: j1939: j1939_local_ecu_get(): undo increment when j1939_local_ecu_get() fails
    3245eb9c25e94 can: j1939: j1939_sk_bind(): call j1939_priv_put() immediately when j1939_local_ecu_get() failed
    b9721a023df38 i40e: fix IRQ freeing in i40e_vsi_request_irq_msix error path
    7d9bd1c2bf4a7 i40e: Use irq_update_affinity_hint()
    e7ddb59a63cb8 genirq: Provide new interfaces for affinity hints
    582f5ce29adce igb: fix link test skipping when interface is admin down
    f39a12660ea88 tunnels: reset the GSO metadata before reusing the skb
    93a699d6e92cf net: fec: Fix possible NPD in fec_enet_phy_reset_after_clk_enable()
    e818c35296a4f USB: serial: option: add Telit Cinterion LE910C4-WWX new compositions
    93e4404990206 USB: serial: option: add Telit Cinterion FN990A w/audio compositions
    28d20ff4e3886 dt-bindings: serial: brcm,bcm7271-uart: Constrain clocks
    d91604c39b74c tty: hvc_console: Call hvc_kick in hvc_write unconditionally
    9cf2429fe6cbb Input: i8042 - add TUXEDO InfinityBook Pro Gen10 AMD to i8042 quirk table
    e32a2ea52b513 mtd: rawnand: stm32_fmc2: avoid overlapping mappings on ECC buffer
    6e2859c6aa466 mtd: rawnand: stm32_fmc2: Fix dma_map_sg error check
    e0bca4dd48fc5 mtd: nand: raw: atmel: Respect tAR, tCLR in read setup timing
    c3f1ea856e147 mtd: nand: raw: atmel: Fix comment in timings preparation
    123e31a54d51b mm/khugepaged: fix the address passed to notifier on testing young
    ea12ab684f8ae libceph: fix invalid accesses to ceph_connection_v1_info
    1e1bcbc548777 fuse: prevent overflow in copy_file_range return value
    5d41589fa0699 fuse: check if copy_file_range() returns larger than requested size
    b8af2e74e49db mtd: rawnand: stm32_fmc2: fix ECC overwrite
    ef30404980e4c ocfs2: fix recursive semaphore deadlock in fiemap call
    23092f6723bc1 mptcp: sockopt: make sync_socket_options propagate SOCK_KEEPOPEN
    5d7267abcd65e compiler-clang.h: define __SANITIZE_*__ macros only when undefined
    8178ccf5671e6 EDAC/altera: Delete an inappropriate dma_free_coherent() call
    34b87ac4bb903 KVM: SVM: Set synthesized TSA CPUID flags
    54270c1b29f2a KVM: SVM: Return TSA_SQ_NO and TSA_L1_NO bits in __do_cpuid_func()
    2fab1e2af6c59 KVM: x86: Move open-coded CPUID leaf 0x80000021 EAX bit propagation code
    7429b8b9bfbc2 tcp_bpf: Call sk_msg_free() when tcp_bpf_send_verdict() fails to allocate psock->cork.
    5f756d1866ebb NFSv4/flexfiles: Fix layout merge mirror check.
    9a38cd92493c2 tracing: Fix tracing_marker may trigger page fault during preempt_disable
    c10744fd7fec8 NFSv4: Clear the NFS_CAP_XATTR flag if not supported by the server
    89f40500c09aa NFSv4: Clear the NFS_CAP_FS_LOCATIONS flag if it is not set
    91902607106c0 NFSv4: Don't clear capabilities that won't be reset
    929de8cc2f66c flexfiles/pNFS: fix NULL checks on result of ff_layout_choose_ds_for_read
    76b1a7c29ef3b mm/rmap: reject hugetlb folios in folio_make_device_exclusive()
    1cdb41d4f08a6 tracing: Do not add length to print format in synthetic events
    d51e47e2ab6ef net: Fix null-ptr-deref by sock_lock_init_class_and_name() and rmmod.
    85d1c5d416c6a media: i2c: imx214: Fix link frequency validation
    6e31585286b97 media: mtk-vcodec: venc: avoid -Wenum-compare-conditional warning
    10d8884e1869f mm: introduce and use {pgd,p4d}_populate_kernel()
    adb2f26b875b9 kunit: kasan_test: disable fortify string checker on kasan_strings() test
    69944b3cd7ec5 xfs: short circuit xfs_growfs_data_private() if delta is zero
    c0950ee2c3cc8 Revert "fbdev: Disable sysfb device registration when removing conflicting FBs"

(From OE-Core rev: b75a820962588097058e528a7db9ccd04368d299)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Bruce Ashfield
75cb79eaf5 linux-yocto/5.15: update to v5.15.193
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

no ids found, dumping:
    43bb85222e53 Linux 5.15.193
    70de678302a8 x86/vmscape: Add old Intel CPUs to affected list
    79ec330d124e x86/vmscape: Warn when STIBP is disabled with SMT
    1cd71b057f05 x86/bugs: Move cpu_bugs_smt_update() down
    2f4f2f8f860c x86/vmscape: Enable the mitigation
    d5490dfa3542 x86/vmscape: Add conditional IBPB mitigation
    f2ed886bb650 x86/vmscape: Enumerate VMSCAPE bug
    a4fff4e5c054 Documentation/hw-vuln: Add VMSCAPE documentation
    de9476bb4f1b Linux 5.15.192
    3e7c1c70abf2 dmaengine: mediatek: Fix a flag reuse error in mtk_cqdma_tx_status()
    b521afbe4525 spi: tegra114: Use value to check for invalid delays
    ffe9232693e3 clk: qcom: gdsc: Set retain_ff before moving to HW CTRL
    b01a706f9e73 perf bpf-event: Fix use-after-free in synthesis
    43167766ea1b drm/bridge: ti-sn65dsi86: fix REFCLK setting
    f2e6b997632d spi: spi-fsl-lpspi: Reset FIFO and disable module on transfer abort
    18fac6162dda spi: spi-fsl-lpspi: Set correct chip-select polarity bit
    5255b997529b spi: spi-fsl-lpspi: Fix transmissions when using CONT
    85be7ef8c8e7 pcmcia: Add error handling for add_interval() in do_validate_mem()
    271ed980d57d ALSA: hda/hdmi: Add pin fix for another HP EliteDesk 800 G4 model
    7e287256904e mm/slub: avoid accessing metadata when pointer is invalid in object_err()
    8b9a5269b442 randstruct: gcc-plugin: Fix attribute addition
    db44404d1b9b randstruct: gcc-plugin: Remove bogus void member
    4da1cc986b75 arm64: dts: marvell: uDPU: define pinctrl state for alarm LEDs
    85530b4ec374 vmxnet3: update MTU after device quiesce
    a82c31b8e9b6 net: dsa: microchip: linearize skb for tail-tagging switches
    01ea671f1f2b net: dsa: microchip: update tag_ksz masks for KSZ9477 family
    6db1f39f003c dmaengine: mediatek: Fix a possible deadlock error in mtk_cqdma_tx_status()
    d0b7f11dd68b dma-buf: insert memory barrier before updating num_fences
    b336106f04a2 gpio: pca953x: fix IRQ storm on system wake up
    1d7def97e7eb iio: light: opt3001: fix deadlock due to concurrent flag access
    28e4e1b59a34 iio: chemical: pms7003: use aligned_s64 for timestamp
    66dc11e9c28f spi: tegra114: Don't fail set_cs_timing when delays are zero
    45eef6be830e spi: tegra114: Remove unnecessary NULL-pointer checks
    b9f28182e29e KVM: x86: Take irqfds.lock when adding/deleting IRQ bypass producer
    c824d766e472 cpufreq/sched: Explicitly synchronize limits_changed flag handling
    abdf3c339181 mm/khugepaged: fix ->anon_vma race
    99a8772611e2 e1000e: fix heap overflow in e1000_set_eeprom
    5d334bce9fad batman-adv: fix OOB read/write in network-coding decode
    95b63d15fce5 scsi: lpfc: Fix buffer free/clear order in deferred receive path
    da98fc73f7d1 drm/amdgpu: drop hw access in non-DC audio fini
    acdf26a91219 wifi: mwifiex: Initialize the chan_stats array to zero
    732e62212f49 mm: move page table sync declarations to linux/pgtable.h
    744ff519c72d x86/mm/64: define ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings()
    4bd570f49412 pcmcia: Fix a NULL pointer dereference in __iodyn_find_io_region()
    2be7109ef258 ALSA: usb-audio: Add mute TLV for playback volumes on some devices
    0bb7069ee343 phy: mscc: Stop taking ts_lock for tx_queue and use its own lock
    24b24295464f net: phy: mscc: Fix memory leak when using one step timestamping
    b4c2fb32f4fe ptp: Add generic PTP is_sync() function
    0b21e9cd4559 ppp: fix memory leak in pad_compress_skb
    955f400e4f51 net: atm: fix memory leak in atm_register_sysfs when device_register fail
    2bd0f6721290 ax25: properly unshare skbs in ax25_kiss_rcv()
    a7eae33227ee ipv4: Fix NULL vs error pointer check in inet_blackhole_dev_init()
    894c7d0c3fba net: thunder_bgx: decrement cleanup index before use
    299c6d47528e net: thunder_bgx: add a missing of_node_put
    e5f334ac7747 wifi: libertas: cap SSID len in lbs_associate()
    24ec8826381f wifi: cw1200: cap SSID length in cw1200_do_join()
    eaa10a027ab6 net: ethernet: mtk_eth_soc: fix tx vlan tag for llc packets
    1eadabcf5623 i40e: Fix potential invalid access when MAC list is empty
    348a01c8574b icmp: fix icmp_ndo_send address translation for reply direction
    e96d08ddbc99 mISDN: Fix memory leak in dsp_hwec_enable()
    1079c1029384 xirc2ps_cs: fix register access when enabling FullDuplex
    47f6090bcf75 Bluetooth: Fix use-after-free in l2cap_sock_cleanup_listen()
    c79730e337a1 netfilter: conntrack: helper: Replace -EEXIST by -EBUSY
    d00c8b0daf56 netfilter: br_netfilter: do not check confirmed bit in br_nf_local_in() after confirm
    ff040562c10a wifi: cfg80211: fix use-after-free in cmp_bss()
    0f70fab5598d arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3399-pinebook-pro
    4377eac565c2 tee: fix NULL pointer dereference in tee_shm_put
    b187c9761119 fs: writeback: fix use-after-free in __mark_inode_dirty()
    71224142994b drm/amd/display: Don't warn when missing DCE encoder caps
    c1c74584b9b4 bpf: Fix oob access in cgroup local storage
    c04992612ed4 bpf: Move bpf map owner out of common struct
    bfb8da7a5dd1 bpf: Move cgroup iterator helpers to bpf.h
    23099792bb6f bpf: Add cookie object to bpf maps
    7a6c2d093c45 Linux 5.15.191
    90bae69c2959 xfs: do not propagate ENODATA disk errors into xattr code
    c570d773884c Revert "drm/dp: Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS"
    3db34718c755 HID: mcp2221: Handle reads greater than 60 bytes
    6ac648746149 HID: mcp2221: Don't set bus speed on every transfer
    2a0ed07b6967 drm/nouveau/disp: Always accept linear modifier
    40a0165278b7 net: usb: qmi_wwan: add Telit Cinterion LE910C4-WWX new compositions
    9a0b5fdce128 dma/pool: Ensure DMA_DIRECT_REMAP allocations are decrypted
    67334c94b853 Revert "drm/amdgpu: fix incorrect vm flags to map bo"
    4338b0f6544c HID: hid-ntrig: fix unable to handle page fault in ntrig_report_version()
    bfde0392d74f HID: wacom: Add a new Art Pen 2
    4263e5851779 HID: multitouch: fix slab out-of-bounds access in mt_report_fixup()
    eaae728e7335 HID: asus: fix UAF via HID_CLAIMED_INPUT validation
    d51e381beed5 KVM: x86: use array_index_nospec with indices that come from guest
    568e7761279b efivarfs: Fix slab-out-of-bounds in efivarfs_d_compare
    17d6c7747045 sctp: initialize more fields in sctp_v6_from_sk()
    700a71e78755 net: stmmac: xgmac: Do not enable RX FIFO Overflow interrupts
    47fbd9c3364c net/mlx5e: Set local Xoff after FW update
    9352f6ea981d net/mlx5e: Update and set Xon/Xoff upon port speed set
    7011f0f400d4 net/mlx5e: Update and set Xon/Xoff upon MTU set
    f64abfa0649a phy: mscc: Fix when PTP clock is register and unregister
    5680a4dd1009 net: dlink: fix multicast stats being counted incorrectly
    62f368472b0a atm: atmtcp: Prevent arbitrary write in atmtcp_recv_control().
    bf813928bb53 Bluetooth: hci_event: Detect if HCI_EV_NUM_COMP_PKTS is unbalanced
    e726dc92f45d powerpc/kvm: Fix ifdef to remove build warning
    5a2d5ab38365 net: ipv4: fix regression in local-broadcast routes
    6606a6d37496 udf: Fix directory iteration for longer tail extents
    d717c12fbb23 vhost/net: Protect ubufs with rcu read lock in vhost_net_ubuf_put()
    f230d40147cc NFS: Fix a race when updating an existing write
    fd947b71cc1b nfs: fold nfs_page_group_lock_subrequests into nfs_lock_and_join_requests
    2e0d974cdbd1 ASoC: codecs: tx-macro: correct tx_macro_component_drv name
    8f397cdef773 scsi: core: sysfs: Correct sysfs attributes access rights
    a6f0f8873cc3 ftrace: Fix potential warning in trace_printk_seq during ftrace_dump
    2573ee4e6c03 pinctrl: STMFX: add missing HAS_IOMEM dependency
    01879f56bdde Linux 5.15.190
    77cf363f7667 alloc_fdtable(): change calling conventions.
    e442a966e2b7 wifi: mac80211: check basic rates validity in sta_link_apply_parameters
    82ef97abf227 netfilter: nf_reject: don't leak dst refcount for loopback packets
    53320a99948d s390/hypfs: Enable limited access during lockdown
    0ffb1bf99e49 s390/hypfs: Avoid unnecessary ioctl registration in debugfs
    bbdfdc63afdf ALSA: usb-audio: Use correct sub-type for UAC3 feature unit validation
    9d48c8091947 bonding: update LACP activity flag after setting lacp_active
    5748c51afe91 net/sched: Remove unnecessary WARNING condition for empty child qdisc in htb_activate
    0dacfc5372e3 net/sched: Make cake_enqueue return NET_XMIT_CN when past buffer_limit
    f422b5e49b72 igc: fix disabling L1.2 PCI-E link substate on I226 on init
    aa65c2bdb19f ixgbe: xsk: resolve the negative overflow of budget in ixgbe_xmit_zc
    fcb4ce9f729c net: usb: asix_devices: Fix PHY address mask in MDIO bus initialization
    5d1fed4b1c3c phy: mscc: Fix timestamping for vsc8584
    94beabf466da net: phy: Use netif_rx().
    9a1969fbffc1 ppp: fix race conditions in ppp_fill_forward_path
    9f113d2828f0 ipv6: sr: validate HMAC algorithm ID in seg6_hmac_info_add
    2af45aadb7b5 drm/amd/display: Add null pointer check in mod_hdcp_hdcp1_create_session()
    38c13968b80e ALSA: usb-audio: Fix size validation in convert_chmap_v3()
    ddf1691f2534 drm/hisilicon/hibmc: fix the hibmc loaded failed bug
    10ae957833eb mlxsw: spectrum: Forward packets with an IPv4 link-local source IP
    0ad8509b468f iommu/amd: Avoid stack buffer overflow from kernel cmdline
    325bf7d57c4e scsi: qla4xxx: Prevent a potential error pointer dereference
    34171b9e53bd net: bridge: fix soft lockup in br_multicast_query_expired()
    0ba6efb2c174 RDMA/bnxt_re: Fix to initialize the PBL array
    e7ea080f85b7 cgroup/cpuset: Use static_branch_enable_cpuslocked() on cpusets_insane_config_key
    c635a42d9b74 mm/page_alloc: detect allocation forbidden by cpuset and bail out early
    873f32201df8 x86/cpu/hygon: Add missing resctrl_cpu_detect() in bsp_init helper
    4ad0d45ffc39 mm/memory-failure: fix infinite UCE for VM_PFNMAP pfn
    d8c5d87a4315 iio: light: as73211: Ensure buffer holes are zeroed
    41b838420457 tracing: Limit access to parser->buffer when trace_get_user failed
    9fb26b72bb8b tracing: Remove unneeded goto out logic
    14b0d8e7423a iio: imu: inv_icm42600: change invalid data error to -EBUSY
    c78c8e5048b7 usb: xhci: Fix slot_id resource race conflict
    5e2414ebe6f9 compiler: remove __ADDRESSABLE_ASM{_STR,}() again
    c8124155c223 selftests: mptcp: pm: check flush doesn't reset limits
    9aff206cfc27 pwm: mediatek: Fix duty and period setting
    7735341026e5 pwm: mediatek: Handle hardware enable and clock enable separately
    de1dda2e5312 pwm: mediatek: Implement .apply() callback
    1c72f369221c scsi: mpi3mr: Serialize admin queue BAR writes on 32-bit systems
    fef82b52a48c scsi: mpi3mr: Drop unnecessary volatile from __iomem pointers
    098b2c8ee208 scsi: ufs: exynos: Fix programming of HCI_UTRL_NEXUS_TYPE
    423fd248c7aa iio: adc: ad_sigma_delta: change to buffer predisable
    0d59ce2bfc3b soc: qcom: mdt_loader: Ensure we don't read past the ELF header
    e94264b07c41 wifi: ath11k: fix dest ring-buffer corruption when ring is full
    80bc1e5d9e15 asm-generic: Add memory barrier dma_mb()
    06b70cccc106 locking/barriers, kcsan: Support generic instrumentation
    9db6a78bc5e4 media: venus: protect against spurious interrupts during probe
    c52e2ecb77e8 media: venus: Add support for SSR trigger using fault injection
    39d70ce5a252 media: qcom: camss: cleanup media device allocated resource on error path
    4ef9526792ae media: camss: Convert to platform remove callback returning void
    6b7784ea07e6 f2fs: fix to avoid out-of-boundary access in dnode page
    a19b31f854a8 drm/dp: Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS
    a7037057fd16 mptcp: disable add_addr retransmission when timeout is 0
    7c5f3b639bb1 drm/amd/display: Don't overclock DCE 6 by 15%
    dfe40159eec6 usb: dwc3: Remove WARN_ON for device endpoint command timeouts
    bccd26d713ec usb: dwc3: Ignore late xferNotReady event to prevent halt timeout
    7ec4f6da3a4b USB: storage: Ignore driver CD mode for Realtek multi-mode Wi-Fi dongles
    564b015af068 usb: storage: realtek_cr: Use correct byte order for bcs->Residue
    b5a59ea98836 USB: storage: Add unusual-devs entry for Novatek NTK96550-based camera
    f596da86b8c7 usb: renesas-xhci: Fix External ROM access timeouts
    f9f402f8b93c usb: core: hcd: fix accessing unmapped memory in SINGLE_STEP_SET_FEATURE test
    868a1b68dcd9 comedi: Fix use of uninitialized memory in do_insn_ioctl() and do_insnlist_ioctl()
    bab220b0bb5a comedi: pcl726: Prevent invalid irq number
    ab77e85bd3bc comedi: Make insn_rw_emulate_bits() do insn->n samples
    78232f3d0eac usb: quirks: Add DELAY_INIT quick for another SanDisk 3.2Gen1 Flash Drive
    4cb568aacc43 most: core: Drop device reference after usage in get_channel()
    65817f61e181 iio: proximity: isl29501: fix buffered read on big-endian systems
    35b8c9082dd5 iio: pressure: bmp280: Use IS_ERR() in bmp280_common_probe()
    e0b6b223167e ftrace: Also allocate and copy hash for reading of filter files
    403820959475 fpga: zynq_fpga: Fix the wrong usage of dma_map_sgtable()
    905986f6b670 use uniform permission checks for all mount propagation changes
    03b40bf5d038 fs/buffer: fix use-after-free when call bh_read() helper
    0496b11f223f drm/amd/display: Fill display clock and vblank time in dce110_fill_display_configs
    9031c990fd69 drm/amd/display: Find first CRTC and its line time in dce110_fill_display_configs
    2e278aee6afe drm/amd/display: Fix DP audio DTO1 clock source on DCE 6.
    fe8670344ab3 drm/amd/display: Fix fractional fb divider in set_pixel_clock_v3
    9c92d12b5cb9 drm/amd/display: Avoid a NULL pointer dereference
    f89530d76d28 ALSA: hda/realtek: Add support for HP EliteBook x360 830 G6 and EliteBook 830 G6
    7bf57a0709cd mm/debug_vm_pgtable: clear page table entries at destroy_args()
    b14850b047e8 squashfs: fix memory leak in squashfs_fill_super
    7a556ae35d7c mmc: sdhci-pci-gli: GL9763e: Rename the gli_set_gl9763e() for consistency
    c3e0a66fd999 memstick: Fix deadlock by moving removing flag earlier
    23249dade24e KVM: arm64: Fix kernel BUG() due to bad backport of FPSIMD/SVE/SME fix
    d08713bac991 scsi: ufs: ufs-pci: Fix default runtime and system PM levels
    b2be32915f07 scsi: ufs: ufs-pci: Fix hibernate state transition for Intel MTL-like host controllers
    fb9c73ef2ac2 mptcp: do not queue data on closed subflows
    a08f285d2020 mptcp: drop unused sk in mptcp_push_release
    13e85f7d6979 selftests: mptcp: Initialize variables to quiet gcc 12 warnings
    c9f8a3b0600b mptcp: introduce MAPPING_BAD_CSUM
    1da47584e2d7 mptcp: fix error mibs accounting
    f4480eaad489 selftests: mptcp: add missing join check
    2b92ae68ba70 selftests: mptcp: connect: also cover checksum
    2668261dd04d selftests: mptcp: connect: also cover alt modes
    2c5b3b71fe6b selftests: mptcp: make sendfile selftest work
    696480028b59 kbuild: userprogs: use correct linker when mixing clang and GNU ld
    ad1190744da9 ACPI: processor: idle: Check acpi_fetch_acpi_dev() return value
    cbb445d5cd98 PCI: vmd: Assign VMD IRQ domain before enumeration
    c2d25fddd867 sch_htb: make htb_deactivate() idempotent
    eda741fe155d codel: remove sch->q.qlen check before qdisc_tree_reduce_backlog()
    db568d2151cd sch_drr: make drr_qlen_notify() idempotent
    dd83b2be69a1 btrfs: populate otime when logging an inode item
    a803d916ae9a KVM: VMX: Flush shadow VMCS on emergency reboot
    be9692dafdfb net/sched: ets: use old 'nbands' while purging unused classes
    1980d8d38cef net_sched: sch_ets: implement lockless ets_dump()
    de127abe923a net/sched: sch_ets: properly init all active DRR list handles
    8af89a96144e platform/chrome: cros_ec: Unregister notifier in cros_ec_unregister()
    9936cb9ef2d2 platform/chrome: cros_ec: remove unneeded label and if-condition
    2ad140545b2a platform/chrome: cros_ec: Use per-device lockdep key
    d9e812b90b38 platform/chrome: cros_ec: Make cros_ec_unregister() return void
    79c745be310e usb: dwc3: imx8mp: fix device leak at unbind
    7b3f0e3b60c2 bus: mhi: host: Detect events pointing to unexpected TREs
    cfbd61d63263 ata: Fix SATA_MOBILE_LPM_POLICY description in Kconfig
    90a53102729e usb: musb: omap2430: fix device leak at unbind
    1be6c638f72d usb: musb: omap2430: Convert to platform remove callback returning void
    69bea84b06b5 mm/ptdump: take the memory hotplug lock inside ptdump_walk_pgd()
    3924dab90816 NFS: Fix the setting of capabilities when automounting a new filesystem
    dbadab480714 NFS: Create an nfs4_server_set_init_caps() function
    e60dc74f62f0 net: enetc: fix device and OF node leak at probe
    a39791e479ba block: Make REQ_OP_ZONE_FINISH a write operation
    1aaa8e9e4f50 PCI/ACPI: Fix runtime PM ref imbalance on Hot-Plug Capable ports
    5cbf5709aa05 usb: typec: fusb302: cache PD RX state
    3467c4ebb334 hv_netvsc: Fix panic during namespace deletion with VF
    26eb63f732b0 smb: server: Fix extension string in ksmbd_extract_shortname()
    14fafb398360 ALSA: scarlett2: Add retry on -EPROTO from scarlett2_usb_tx()
    1b2b7e9da01e x86/fpu: Delay instruction pointer fixup until after warning
    6550b2bef095 smb: client: fix use-after-free in crypt_message when using async crypto
    ae8428d68252 usb: hub: Don't try to recover devices lost during warm reset.
    98df81d18e5d usb: hub: avoid warm port reset during USB3 disconnect
    8a0b022147b1 x86/mce/amd: Add default names for MCA banks and blocks
    4e2ee5d14333 iio: hid-sensor-prox: Fix incorrect OFFSET calculation
    4597cf3ac9ba iio: hid-sensor-prox: Restore lost scale assignments
    c4029044cc40 f2fs: fix to do sanity check on ino and xnid
    3a12e18a0310 ARM: 9448/1: Use an absolute path to unified.h in KBUILD_AFLAGS
    407047893a64 arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack()
    6188d61ba73d drm/sched: Remove optimization that causes hang when killing dependent jobs
    7c5a13c76dd3 ice: Fix a null pointer dereference in ice_copy_and_init_pkg()
    46a7cdcf06c4 selftests/memfd: add test for mapping write-sealed memfd read-only
    1c296cba6568 mm: reinstate ability to map write-sealed memfd mappings read-only
    d919658a3871 mm: update memfd seal write check to include F_SEAL_WRITE
    27df40ad7445 mm: drop the assumption that VM_SHARED always implies writable
    44e2f93f9820 sch_qfq: make qfq_qlen_notify() idempotent
    a5efc95a33bd sch_hfsc: make hfsc_qlen_notify() idempotent
    967955c9e57f sch_htb: make htb_qlen_notify() idempotent
    587558d812ac mptcp: pm: kernel: flush: do not reset ADD_ADDR limit
    6ddf51fc0b07 mptcp: drop skb if MPTCP skb extension allocation fails
    3b348c9c8d2c ipv6: sr: Fix MAC comparison to be constant-time
    3ae272ab523d net, hsr: reject HSR frame if skb can't hold tag
    da240d7f7e10 drm/amd/display: Don't overwrite dce60_clk_mgr
    92c4a1fde641 drm/amd: Restore cached power limit during resume
    5005e4e6f964 media: venus: venc: Clamp param smaller than 1fps and bigger than 240
    48045c17fddf media: venus: vdec: Clamp param smaller than 1fps and bigger than 240.
    e6e5e5e5b40a media: venus: hfi: explicitly release IRQ during teardown
    ef09b96665f1 media: venus: Add a check for packet size after reading from shared memory
    f16dc2c87ce4 media: ov2659: Fix memory leaks in ov2659_probe()
    fbc81e78d75b media: rainshadow-cec: fix TOCTOU race condition in rain_interrupt()
    5427dda195d6 media: usbtv: Lock resolution while streaming
    436774334587 media: v4l2-ctrls: Don't reset handler's error in v4l2_ctrl_handler_free()
    025617f4851a media: imx: fix a potential memory leak in imx_media_csc_scaler_device_init()
    5197247df6a0 media: hi556: correct the test pattern configuration
    6512784dbf5d media: gspca: Add bounds checking to firmware parser
    90cc9e7d82e1 soc/tegra: pmc: Ensure power-domains are in a known state
    84ff98c1ea19 jbd2: prevent softlockup in jbd2_log_do_checkpoint()
    fb454ba99189 PCI: endpoint: Fix configfs group removal on driver teardown
    dc4ffbd57171 PCI: endpoint: Fix configfs group list head handling
    7d5c223edf89 mtd: rawnand: fsmc: Add missing check after DMA map
    93f1be8de86a mtd: spinand: propagate spinand_wait() errors from spinand_write_page()
    e26bd46c2968 hwmon: (gsc-hwmon) fix fan pwm setpoint show functions
    dbe8b4366878 pwm: imx-tpm: Reset counter if CMOD is 0
    6b6fa2a7a1b3 wifi: ath11k: fix source ring-buffer corruption
    5679342831db wifi: brcmsmac: Remove const from tbl_ptr parameter in wlc_lcnphy_common_read_table()
    1bb6bb6cd975 zynq_fpga: use sgtable-based scatterlist wrappers
    0176a6117fc7 ata: libata-scsi: Fix ata_to_sense_error() status handling
    48a1795cbf67 scsi: mpi3mr: Fix race between config read submit and interrupt completion
    e1f8a51a8602 ext4: fix hole length calculation overflow in non-extent inodes
    66245c16d72e ext4: use kmalloc_array() for array space allocation
    5396de17bcea ext4: don't try to clear the orphan_present feature block device is r/o
    2c9c15656569 ext4: fix reserved gdt blocks handling in fsmap
    e0fad182ba8a ext4: fix fsmap end of range reporting with bigalloc
    cdfc7b6d3473 ext4: check fast symlink for ea_inode correctly
    8a5e6282c6a7 Revert "vgacon: Add check for vc_origin address range in vgacon_scroll()"
    649383fa7f67 lib/crypto: mips/chacha: Fix clang build and remove unneeded byteswap
    969668b6e7d2 vt: defkeymap: Map keycodes above 127 to K_HOLE
    6b03d59b1e0e vt: keyboard: Don't process Unicode characters in K_OFF mode
    228c686e20ff bus: mhi: host: Fix endianness of BHI vector table
    9d916500ecf9 usb: dwc3: meson-g12a: fix device leaks at unbind
    332d4a4b8615 usb: gadget: udc: renesas_usb3: fix device leak at unbind
    f6d79955b2a3 usb: atm: cxacru: Merge cxacru_upload_firmware() into cxacru_heavy_init()
    5e5ccfdbe4ac m68k: Fix lost column on framebuffer debug console
    177d3651dbd3 cpufreq: armada-8k: Fix off by one in armada_8k_cpufreq_free_table()
    68c4613e89f0 serial: 8250: fix panic due to PSLVERR
    08e12045014b HID: magicmouse: avoid setting up battery timer when not needed
    123cf618a0ae media: uvcvideo: Do not mark valid metadata as invalid
    8343f3fe0b75 media: uvcvideo: Fix 1-byte out-of-bounds read in uvc_parse_format()
    f249d32bb548 mm/kmemleak: avoid deadlock by moving pr_warn() outside kmemleak_lock
    a04de4c40aab mm/kmemleak: avoid soft lockup in __kmemleak_do_cleanup()
    d06e119a16ce parisc: Makefile: fix a typo in palo.conf
    078e62bffca4 fbdev: Fix vmalloc out-of-bounds write in fast_imageblit
    fa086b1398cf btrfs: do not allow relocation of partially dropped subvolumes
    8563ac0b5b8f btrfs: fix log tree replay failure due to file with 0 links and extents
    fa6e0cc6a720 cdc-acm: fix race between initial clearing halt and open
    6eb63a710da3 thunderbolt: Fix copy+paste error in match_service_id()
    d85fac8729c9 comedi: fix race between polling and detaching
    56b9177f17ab usb: typec: ucsi: Update power_supply on power role change
    030b156ec7e0 misc: rtsx: usb: Ensure mmc child device is active when card is present
    058ad2b72281 usb: core: config: Prevent OOB read in SS endpoint companion parsing
    91789de2ed20 ext4: fix largest free orders lists corruption on mb_optimize_scan switch
    3b6de89a9dda drm/amdgpu: fix incorrect vm flags to map bo
    30b14a9374d9 ASoC: fsl_sai: replace regmap_write with regmap_update_bits
    780ce4759f94 ASoC: soc-dai.h: merge DAI call back functions into ops
    4f60001afa06 ASoC: soc-dai.c: add missing flag check at snd_soc_pcm_dai_probe()
    87c474a68724 scsi: lpfc: Remove redundant assignment to avoid memory leak
    481701300b7b rtc: ds1307: remove clear of oscillator stop flag (OSF) in probe
    4f783333cbfa pNFS: Fix uninited ptr deref in block/scsi layout
    f47b0662bdbd pNFS: Handle RPC size limit for layoutcommits
    1ba621a63625 pNFS: Fix disk addr range check in block/scsi layout
    c8dea4397432 pNFS: Fix stripe mapping in block/scsi layout
    8b3ce085b52e block: avoid possible overflow for chunk_sectors check in blk_stack_limits()
    53acbc94344e net: phy: smsc: add proper reset flags for LAN8710A
    dc826121cd44 ipmi: Fix strcpy source and destination the same
    a12feec53c1a kconfig: lxdialog: fix 'space' to (de)select options
    f7d9f0717be8 kconfig: gconf: fix potential memory leak in renderer_edited()
    28498cf306f9 kconfig: gconf: avoid hardcoding model2 in on_treeview2_cursor_changed()
    19b946182978 ipmi: Use dev_warn_ratelimited() for incorrect message warnings
    2b4aa66f7532 scsi: aacraid: Stop using PCI_IRQ_AFFINITY
    2e24d269359b scsi: target: core: Generate correct identifiers for PR OUT transport IDs
    237edd281d52 scsi: Fix sas_user_scan() to handle wildcard and multi-channel scans
    e008120a621e kconfig: nconf: Ensure null termination where strncpy is used
    a73ee10c2781 kconfig: lxdialog: replace strcpy() with strncpy() in inputbox.c
    344ef2a6c6e8 i2c: Force DLL0945 touchpad i2c freq to 100khz
    3963ecbdddaf dm-mpath: don't print the "loaded" message if registering fails
    6f83cf2e362a i3c: don't fail if GETHDRCAP is unsupported
    ce3195182fe0 rtc: ds1307: handle oscillator stop flag (OSF) for ds1341
    758b8e343610 i3c: add missing include to internal header
    b506af24d662 md: dm-zoned-target: Initialize return variable r to avoid uninitialized use
    e6f44cd74134 crypto: octeontx2 - add timeout for load_fvc completion poll
    eb6059474e70 media: uvcvideo: Fix bandwidth issue for Alcor camera
    17b30e5ded06 media: dvb-frontends: w7090p: fix null-ptr-deref in w7090p_tuner_write_serpar and w7090p_tuner_read_serpar
    529fd5593b72 media: dvb-frontends: dib7090p: fix null-ptr-deref in dib7090p_rw_on_apb()
    e06e706500b8 media: usb: hdpvr: disable zero-length read messages
    aef1b717d4a2 media: tc358743: Increase FIFO trigger level to 374
    21ba26a8e347 media: tc358743: Return an appropriate colorspace from tc358743_set_fmt
    a6ccbe037734 media: tc358743: Check I2C succeeded during probe
    2e82f9a5a37b pinctrl: stm32: Manage irq affinity settings
    0de080a0ecab scsi: mpt3sas: Correctly handle ATA device errors
    5e25ee1ecec9 scsi: lpfc: Check for hdwq null ptr when cleaning up lpfc_vport structure
    c16984bc84bf RDMA/core: reduce stack using in nldev_stat_get_doit()
    9d3211cb61a0 RDMA: hfi1: fix possible divide-by-zero in find_hw_thread_mask()
    a8c0dc453e9f leds: leds-lp50xx: Handle reg to get correct multi_index
    b6a9cc9918db media: v4l2-common: Reduce warnings about missing V4L2_CID_LINK_FREQ control
    bd90dbd19683 MIPS: Don't crash in stack_top() for tasks without ABI or vDSO
    1467a75819e4 jfs: upper bound check of tree index in dbAllocAG
    9ad054cd2c4c jfs: Regular file corruption check
    8ed7275910fb jfs: truncate good inode pages when hard link is 0
    ba024d925645 scsi: bfa: Double-free fix
    f5de907f0479 watchdog: iTCO_wdt: Report error if timeout configuration fails
    90c1295da0a7 MIPS: vpe-mt: add missing prototypes for vpe_{alloc,start,stop,free}
    e9849ca6dd01 watchdog: dw_wdt: Fix default timeout
    dacfd8cf9c23 fs/orangefs: use snprintf() instead of sprintf()
    fd5aad080edb scsi: libiscsi: Initialize iscsi_conn->dd_data only if memory is allocated
    7f322c12df7a ext4: do not BUG when INLINE_DATA_FL lacks system.data xattr
    79ec8dabf001 crypto: hisilicon/hpre - fix dma unmap sequence
    b06a3c552c00 cifs: Fix calling CIFSFindFirst() for root path without msearch
    8e6932ee0cc9 watchdog: sbsa: Adjust keepalive timeout to avoid MediaTek WS0 race condition
    1117260a5402 vhost: fail early when __vhost_add_used() fails
    6ef6e42de0d4 net: dsa: b53: fix IP_MULTICAST_CTRL on BCM5325
    77e56dbc7b7a drm/ttm: Respect the shrinker core free target
    65a7b7717600 uapi: in6: restore visibility of most IPv6 socket options
    49586908dea6 drm/ttm: Should to return the evict error
    6716de171b2a net: ncsi: Fix buffer overflow in fetching version id
    56c4837283eb wifi: rtlwifi: fix possible skb memory leak in _rtl_pci_init_one_rxdesc()
    f531abcdfec2 net: dsa: b53: prevent SWITCH_CTRL access on BCM5325
    bae08d48d044 net: dsa: b53: prevent DIS_LEARNING access on BCM5325
    9874ad64285f net: dsa: b53: prevent GMII_PORT_OVERRIDE_CTRL access on BCM5325
    36bec4066dff net: dsa: b53: fix b53_imp_vlan_setup for BCM5325
    392aa29dbcc5 gve: Return error for unknown admin queue command
    452de5797933 net: vlan: Replace BUG() with WARN_ON_ONCE() in vlan_dev_* stubs
    d49af61978b6 drm/amd: Allow printing VanGogh OD SCLK levels without setting dpm to manual
    851c50b31611 dpaa_eth: don't use fixed_phy_change_carrier
    6de7a77911b2 wifi: iwlegacy: Check rate_idx range after addition
    7cc4b7c2e24f netmem: fix skb_frag_address_safe with unreadable skbs
    7451726049e8 wifi: rtlwifi: fix possible skb memory leak in `_rtl_pci_rx_interrupt()`.
    e80b670bc30d drm/amd/display: Fix 'failed to blank crtc!'
    6fed73112e43 wifi: iwlwifi: fw: Fix possible memory leak in iwl_fw_dbg_collect
    ffbf9699d639 wifi: iwlwifi: dvm: fix potential overflow in rs_fill_link_cmd()
    851726384eb6 drm/amd/display: Separate set_gsl from set_gsl_source_select
    e03f9c0b9324 net: fec: allow disable coalescing
    03dd58451897 net: atlantic: add set_power to fw_ops for atl2 to fix wol
    833e0e6744cd net: thunderbolt: Fix the parameter passing of tb_xdomain_enable_paths()/tb_xdomain_disable_paths()
    39117551069d drm/msm: use trylock for debugfs
    834c1e80164e ipv6: mcast: Check inet6_dev->dead under idev->mc_lock in __ipv6_dev_mc_inc().
    e22b1ee8cec9 (powerpc/512) Fix possible `dma_unmap_single()` on uninitialized pointer
    599dcdfff36f wifi: mac80211: don't complete management TX on SAE commit
    bb9a6585c2f9 s390/stp: Remove udelay from stp_sync_clock()
    13ff80efde1c wifi: iwlwifi: mvm: fix scan request validation
    ac31ba743054 sched/deadline: Fix accounting after global limits change
    037d856072bc net: thunderx: Fix format-truncation warning in bgx_acpi_match_id()
    c965a0f7477a net: ipv4: fix incorrect MTU in broadcast routes
    7fcb3d1a622b wifi: cfg80211: Fix interface type validation
    15b05f078e6c net: mctp: Prevent duplicate binds
    0ad84d622174 rcu: Protect ->defer_qs_iw_pending from data race
    a8b4ecb16327 arm64: Mark kernel as tainted on SAE and SError panic
    0f2d1bcdd01c net/mlx5e: Properly access RCU protected qdisc_sleeping variable
    8769e2cd97dc net: ag71xx: Add missing check after DMA map
    44746e44ef61 et131x: Add missing check after DMA map
    9152c8dce4fa be2net: Use correct byte order and format string for TCP seq and ack_seq
    5e18232d72a1 s390/time: Use monotonic clock in get_cycles()
    39968a6d1b7f wifi: cfg80211: reject HTC bit for management frames
    72632af764d0 ktest.pl: Prevent recursion of default variable options
    2fc78b1f4544 xen/netfront: Fix TX response spurious interrupts
    a0c4744b3e7a ASoC: codecs: rt5640: Retry DEVICE_ID verification
    2191a2f89827 iio: adc: ad7768-1: Ensure SYNC_IN pulse minimum timing requirement
    97e1d2a18a7d ALSA: usb-audio: Avoid precedence issues in mixer_quirks macros
    77477121f87a ALSA: pcm: Rewrite recalculate_boundary() to avoid costly loop
    c2dacfe495b7 ALSA: hda/ca0132: Fix buffer overflow in add_tuning_control
    a73ccab0ebd2 platform/chrome: cros_ec_typec: Defer probe on missing EC parent
    93d700f59bf9 platform/x86: thinkpad_acpi: Handle KCOV __init vs inline mismatches
    ddb96ab185e8 pm: cpupower: Fix the snapshot-order of tsc,mperf, clock in mperf_stop()
    ffa551a30da6 usb: core: usb_submit_urb: downgrade type check
    5c7fda829b16 usb: typec: intel_pmc_mux: Defer probe if SCU IPC isn't present
    82ba7b8cf9f6 ASoC: core: Check for rtd == NULL in snd_soc_remove_pcm_runtime()
    afd0dd1baf0a ALSA: intel8x0: Fix incorrect codec index usage in mixer for ICH4
    866fcfc056c3 ASoC: hdac_hdmi: Rate limit logging on connection and disconnection
    b3f0f92abaac x86/bugs: Avoid warning when overriding return thunk
    921592ffe886 mmc: rtsx_usb_sdmmc: Fix error-path in sd_set_power_mode()
    345df19a971a reset: brcmstb: Enable reset drivers for ARCH_BCM2835
    932d27bc3650 pps: clients: gpio: fix interrupt handling order in remove path
    e8d164041ebd ACPI: APEI: GHES: add TAINT_MACHINE_CHECK on GHES panic path
    18aed89a19d9 mmc: sdhci-msm: Ensure SD card power isn't ON when card removed
    0c48c9fe3fac ACPI: processor: fix acpi_object initialization
    b287704f0b51 PM: sleep: console: Fix the black screen issue
    7121241b7267 thermal: sysfs: Return ENODATA instead of EAGAIN for reads
    c2b884662890 PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit()
    2bcc6a6c3fbd ACPI: PRM: Reduce unnecessary printing to avoid user confusion
    e453c89e247d selftests: tracing: Use mutex_unlock for testing glob filter
    2499b0ac908e ARM: tegra: Use I/O memcpy to write to IRAM
    aeb7edd5cb7e gpio: tps65912: check the return value of regmap_update_bits()
    4dd40dfba23a tools/nolibc: define time_t in terms of __kernel_old_time_t
    5b49e57e1e73 thermal/drivers/qcom-spmi-temp-alarm: Enable stage 2 shutdown when required
    8cac2bd3cc83 ASoC: soc-dapm: set bias_level if snd_soc_dapm_set_bias_level() was successed
    472af4d4fa68 EDAC/synopsys: Clear the ECC counters on init
    2a65a7477b82 PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store()
    c0726d1e466e ARM: rockchip: fix kernel hang during smp initialization
    4d0b2d5a7419 cpufreq: Exit governor when failed to start old governor
    6c3ae3c40cbb gpio: wcd934x: check the return value of regmap_update_bits()
    bade491eb9e0 usb: xhci: Avoid showing errors during surprise removal
    c4ba0c252d92 usb: xhci: Set avg_trb_len = 8 for EP0 during Address Device Command
    04e615daf3b9 usb: xhci: Avoid showing warnings for dying controller
    5a164a725b9c usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default
    cc1613a46a1f selftests/futex: Define SYS_futex on 32-bit architectures with 64-bit time_t
    be45f1b5f28d cpufreq: CPPC: Mark driver with NEED_UPDATE_LIMITS flag
    f3ab168d3c85 usb: xhci: print xhci->xhc_state when queue_command failed
    c8704dca5792 securityfs: don't pin dentries twice, once is enough...
    d167a43b29cc ext2: Handle fiemap on empty files to prevent EINVAL
    5a77f371b4a1 fs/ntfs3: correctly create symlink for relative path
    bde58c1539f3 fs/ntfs3: Add sanity check for file name
    11388106fab5 ata: libata-sata: Disallow changing LPM state if not supported
    11b567346c65 better lockdep annotations for simple_recursive_removal()
    ad5f53b993b2 hfs: fix not erasing deleted b-tree node issue
    84ef8dd32383 drbd: add missing kref_get in handle_write_conflicts
    dc83df485f44 udf: Verify partition map count
    9d5012ffe141 smb/server: avoid deadlock when linking with ReplaceIfExists
    f8d55c912e45 arm64: Handle KCOV __init vs inline mismatches
    03cd1db1494c hfsplus: don't use BUG_ON() in hfsplus_create_attributes_file()
    ccf0ad56a779 hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()
    5ab59229bef6 hfsplus: fix slab-out-of-bounds in hfsplus_bnode_read()
    a1a60e795022 hfs: fix slab-out-of-bounds in hfs_bnode_read()
    240325993e78 ptp: prevent possible ABBA deadlock in ptp_clock_freerun()
    55b12736625d cpuidle: governors: menu: Avoid using invalid recent intervals data
    8680e712240e intel_idle: Allow loading ACPI tables for any family
    cd0e92bb2b75 sctp: linearize cloned gso packets in sctp_rcv
    19b909a4b145 netfilter: ctnetlink: fix refcount leak on table dump
    a47767e20cf7 udp: also consider secpath when evaluating ipsec use for checksumming
    edc065c19257 ACPI: processor: perflib: Move problematic pr->performance check
    40f8fea730ce ACPI: processor: perflib: Fix initial _PPC limit application
    289d1d1fc1dc Documentation: ACPI: Fix parent device references
    71379495ab70 eventpoll: Fix semi-unbounded recursion
    749528086620 fs: Prevent file descriptor table allocations exceeding INT_MAX
    9620376f73fa sunvdc: Balance device refcount in vdc_port_mpgroup_check
    6fd42124b445 NFSD: detect mismatch of file handle and delegation stateid in OPEN op
    f3aac6cf390d nfsd: handle get_client_locked() failure in nfsd4_setclientid_confirm()
    75947d3200de net: usb: asix_devices: add phy_mask for ax88772 mdio bus
    1b35f7ee5012 net: dpaa: fix device leak when querying time stamp info
    f95f0deb566d net: gianfar: fix device leak when querying time stamp info
    f324959ad47e netlink: avoid infinite retry looping in netlink_unicast()
    286b5be7f2ae gpio: virtio: Fix config space reading.
    275e37532e8e ALSA: usb-audio: Validate UAC3 cluster segment descriptors
    f03418bb9d54 ALSA: usb-audio: Validate UAC3 power domain descriptors, too
    b0878a23aee6 io_uring: don't use int for ABI
    8afb22aa063f usb: gadget : fix use-after-free in composite_dev_cleanup()
    66b1f50158e6 mm/hmm: move pmd_to_hmm_pfn_flags() to the respective #ifdeffery
    42ade82926c3 MIPS: mm: tlb-r4k: Uniquify TLB entries on init
    e05310943e7b ALSA: intel_hdmi: Fix off-by-one error in __hdmi_lpe_audio_probe()
    1946a6a9bdeb net: usbnet: Fix the wrong netif_carrier_on() call
    e2a4325ce21a net: usbnet: Avoid potential RCU stall on LINK_CHANGE event
    b4b40bab6c34 USB: serial: option: add Foxconn T99W709
    cf86704798c1 vsock: Do not allow binding to VMADDR_PORT_ANY
    ba2257034755 net/packet: fix a race in packet_set_ring() and packet_notifier()
    2675f405a60b selftests/perf_events: Add a mmap() correctness test
    3bd518cc7ea6 perf/core: Prevent VMA split of buffer mappings
    de85e72598d8 perf/core: Exit early on perf_mmap() fail
    899d253add77 perf/core: Don't leak AUX buffer refcount on allocation failure
    ce0481ac88a7 pptp: fix pptp_xmit() error path
    229429073578 smb: client: let recv_done() cleanup before notifying the callers.
    1f6525e79074 smb: server: let recv_done() avoid touching data_transfer after cleanup/move
    87fc5ce6ff98 smb: server: let recv_done() consistently call put_recvmsg/smb_direct_disconnect_rdma_connection
    fb3854e76cd3 smb: server: make sure we call ib_dma_unmap_single() only if we called ib_dma_map_single already
    484dea96e8c6 smb: server: remove separate empty_recvmsg_queue
    61a58a043906 ALSA: hda/ca0132: Fix missing error handling in ca0132_alt_select_out()
    f80b34ebc579 benet: fix BUG when creating VFs
    4c1022220b1b net: drop UFO packets in udp_rcv_segment()
    09ff062b89d8 ipv6: reject malicious packets in ipv6_gso_segment()
    d0e1d47eca66 net/mlx5: Correctly set gso_segs when LRO is used
    5de7513f38f3 pptp: ensure minimal skb length in pptp_xmit()
    10c803dee386 phy: mscc: Fix parsing of unicast frames
    0a0108796b84 netpoll: prevent hanging NAPI when netcons gets enabled
    19b83e315441 NFS: Fixup allocation flags for nfsiod's __GFP_NORETRY
    461125e8f46c XArray: Add calls to might_alloc()
    b23afb4a5fd2 NFSv4.2: another fix for listxattr
    3570ef5c3131 NFS: Fix filehandle bounds checking in nfs_fh_to_dentry()
    70bf32087b4d pNFS/flexfiles: don't attempt pnfs on fatal DS errors
    2ec8ec57bb8e PCI: pnv_php: Fix surprise plug detection and recovery
    f56e004b7817 powerpc/eeh: Make EEH driver device hotplug safe
    efabe0bd99f4 powerpc/eeh: Rely on dev->link_active_reporting
    cb1ea063039c powerpc/eeh: Export eeh_unfreeze_pe()
    12656cda9194 PCI: pnv_php: Work around switches with broken presence detection
    912e200240b6 PCI: pnv_php: Clean up allocated IRQs on unplug
    06e25dfea328 kconfig: qconf: fix ConfigList::updateListAllforAll()
    a30c34e6be0f scsi: ufs: core: Use link recovery when h8 exit fails during runtime resume
    0967189e6a09 scsi: mpt3sas: Fix a fw_event memory leak
    666b7cf6ac9a f2fs: fix to avoid out-of-boundary access in devs.path
    5cd99d5aa3d3 f2fs: fix to avoid panic in f2fs_evict_inode
    1edf68272b8c f2fs: fix to avoid UAF in f2fs_sync_inode_meta()
    fba3a1c1c330 f2fs: doc: fix wrong quota mount option description
    08e8ab00a6d2 f2fs: fix KMSAN uninit-value in extent_info usage
    37f3a111913b rtc: rv3028: fix incorrect maximum clock rate handling
    2ed0bae18a77 rtc: pcf8563: fix incorrect maximum clock rate handling
    facb6e7c0f4e rtc: pcf85063: fix incorrect maximum clock rate handling
    452aed10517b rtc: hym8563: fix incorrect maximum clock rate handling
    d62a797801fd rtc: ds1307: fix incorrect maximum clock rate handling
    e9293fd04c1b ucount: fix atomic_long_inc_below() argument type
    0b973c5eeef5 module: Restore the moduleparam prefix length check
    69e83e552750 apparmor: ensure WB_HISTORY_SIZE value is a power of 2
    74a87aca0942 bpf: Check flow_dissector ctx accesses are aligned
    27354cbd69b8 vhost-scsi: Fix log flooding with target does not exist errors
    aed9a4e43946 mtd: rawnand: atmel: set pmecc data setup time
    62f7cc11b04e mtd: rawnand: rockchip: Add missing check after DMA map
    15d0e92dfd45 mtd: rawnand: atmel: Fix dma_mapping_error() address
    47bf04a5a4b7 jfs: fix metapage reference count leak in dbAllocCtl
    cca8f5a39919 fbdev: imxfb: Check fb_add_videomode to prevent null-ptr-deref
    52e1dc93d52d crypto: qat - fix seq_file position update in adf_ring_next()
    6ff44d06e953 sh: Do not use hyphen in exported variable name
    2bba4bdf050d dmaengine: nbpfaxi: Add missing check after DMA map
    c94f4c6e662a dmaengine: mv_xor: Fix missing check after DMA map and missing unmap
    bbe6cd4da912 fs/orangefs: Allow 2 more characters in do_c_string()
    d2016efbc42a PCI: endpoint: pci-epf-vntb: Fix the incorrect usage of __iomem attribute
    d54f6bc4b2b0 soundwire: stream: restore params when prepare ports fail
    cbdd905a6b3e crypto: img-hash - Fix dma_unmap_sg() nents value
    5867d62dfe92 crypto: keembay - Fix dma_unmap_sg() nents value
    0b777a598b76 hwrng: mtk - handle devm_pm_runtime_enable errors
    7a9ee7b9034a watchdog: ziirave_wdt: check record length in ziirave_firm_verify()
    d084ff4b7c6b scsi: isci: Fix dma_unmap_sg() nents value
    999bb730ca69 scsi: mvsas: Fix dma_unmap_sg() nents value
    1c0717978d2a scsi: ibmvscsi_tgt: Fix dma_unmap_sg() nents value
    896c8ac77794 clk: sunxi-ng: v3s: Fix de clock definition
    2ab3f20f4baa perf tests bp_account: Fix leaked file descriptor
    b1b1bfb81a4a kernel: trace: preemptirq_delay_test: use offstack cpu mask
    b6fbac6ae904 RDMA/hns: Fix -Wframe-larger-than issue
    20c0ed8dd658 crypto: ccp - Fix crash when rebind ccp device for ccp.ko
    f25a1c8834c3 crypto: inside-secure - Fix `dma_unmap_sg()` nents value
    9f13f09c8dc4 perf sched: Fix memory leaks for evsel->priv in timehist
    84cd7256f068 clk: clk-axi-clkgen: fix fpfd_max frequency for zynq
    7b5365d17b58 pinctrl: sunxi: Fix memory leak on krealloc failure
    0369e2055789 PCI: endpoint: pci-epf-vntb: Return -ENOENT if pci_epc_get_next_free_bar() fails
    9ed082a72c20 power: supply: max14577: Handle NULL pdata when CONFIG_OF is not set
    4ebbb9106aaa power: supply: cpcap-charger: Fix null check for power_supply_get_by_name
    7e903da71f8b clk: xilinx: vcu: unregister pll_post only if registered correctly
    c62c0b6d797e media: v4l2-ctrls: Fix H264 SEPARATE_COLOUR_PLANE check
    2adc945b70c4 clk: davinci: Add NULL check in davinci_lpsc_clk_register()
    e86cc0b9812c mtd: fix possible integer overflow in erase_xfer()
    9745eecf5b69 crypto: marvell/cesa - Fix engine load inaccuracy
    dcd17f4f579b PCI: rockchip-host: Fix "Unexpected Completion" log message
    2e34470f44eb vrf: Drop existing dst reference in vrf_ip6_input_dst
    5e0275f888eb selftests: rtnetlink.sh: remove esp4_offload after test
    b10cfa2de13d netfilter: xt_nfacct: don't assume acct name is null-terminated
    bfc8a82751f6 can: kvaser_usb: Assign netdev.dev_port based on device channel index
    0721467bb069 can: kvaser_pciefd: Store device channel index
    19859cc12acc wifi: brcmfmac: fix P2P discovery failure in P2P peer due to missing P2P IE
    696994a1d655 Reapply "wifi: mac80211: Update skb's control block key in ieee80211_tx_dequeue()"
    9b096abd5454 wifi: mac80211: Check 802.11 encaps offloading in ieee80211_tx_h_select_key()
    fe1ee935285a wifi: mac80211: Don't call fq_flow_idx() for management frames
    d56890533b08 mwl8k: Add missing check after DMA map
    da1be393a75d wifi: rtl8xxxu: Fix RX skb size for aggregation disabled
    7c537709a18c xen/gntdev: remove struct gntdev_copy_batch from stack
    9cd1537036ac net_sched: act_ctinfo: use atomic64_t for three counters
    cab280994498 net/sched: Restrict conditions for adding duplicating netems to qdisc tree
    863b1c70e7f8 um: rtc: Avoid shadowing err in uml_rtc_start()
    8d83f7143ff7 arch: powerpc: defconfig: Drop obsolete CONFIG_NET_CLS_TCINDEX
    5351b8a41623 netfilter: nf_tables: adjust lockdep assertions handling
    7a43cb575217 drm/amd/pm/powerplay/hwmgr/smu_helper: fix order of mask and value
    8f35daf34357 m68k: Don't unregister boot console needlessly
    9053a69abfb5 net/mlx5: Check device memory pointer before usage
    f5a27666c8cf tcp: fix tcp_ofo_queue() to avoid including too much DUP SACK range
    eff3bb53c18c wifi: ath11k: clear initialized flag for deinit-ed srng lists
    2e9f85ee3b46 iwlwifi: Add missing check for alloc_ordered_workqueue
    d76ca8359371 wifi: iwlwifi: Fix memory leak in iwl_mvm_init()
    c73c773b09e3 wifi: rtl818x: Kill URBs before clearing tx status queue
    9a0624ff42df caif: reduce stack size, again
    a7caec2a1b59 bpftool: Fix memory leak in dump_xx_nlmsg on realloc failure
    73fc5d04009d bpf, ktls: Fix data corruption when using bpf_msg_pop_data() in ktls
    c0efe4eae2cc bpf, sockmap: Fix psock incorrectly pointing to sk
    d699e4e6d33b drm/rockchip: cleanup fb when drm_gem_fb_afbc_init failed
    4bf712152125 selftests/tracing: Fix false failure of subsystem event test
    3afd514c77f4 staging: nvec: Fix incorrect null termination of battery manufacturer
    f7c2de49fee3 samples: mei: Fix building on musl libc
    90918264362d cpufreq: Init policy->rwsem before it may be possibly used
    d9c7fc2c8ae2 cpufreq: Initialize cpufreq-based frequency-invariance later
    997c36d137e3 cpufreq: intel_pstate: Always use HWP_DESIRED_PERF in passive mode
    f0479e878d4b PM / devfreq: Check governor before using governor->name
    35a490ea5a80 arm64: dts: imx8mn-beacon: Fix HS400 USDHC clock speed
    10c0fbd5ad66 arm64: dts: imx8mm-beacon: Fix HS400 USDHC clock speed
    0008ec694e2b ARM: dts: imx6ul-kontron-bl-common: Fix RTS polarity for RS485 interface
    a789256941ab arm: dts: ti: omap: Fixup pinheader typo
    ae08cd98fef4 usb: early: xhci-dbc: Fix early_ioremap leak
    c6fdcd40390e Revert "vmci: Prevent the dispatching of uninitialized payloads"
    a891b456ba2b pps: fix poll support
    a85dc8385749 vmci: Prevent the dispatching of uninitialized payloads
    3290f62f23fa staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()
    76f1842cdc91 usb: misc: apple-mfi-fastcharge: Make power supply names unique
    4986c1e82e93 ARM: dts: vfxxx: Correctly use two tuples for timer address
    b6b551196f5b selftests: Fix errno checking in syscall_user_dispatch test
    cfb5e5582f69 ASoC: ops: dynamically allocate struct snd_ctl_elem_value
    fe18d9f14f4c ASoC: soc-dai: tidyup return value of snd_soc_xlate_tdm_slot_mask()
    bec8109f957a Revert "fs/ntfs3: Replace inode_trylock with inode_lock"
    14922f0cc92e hfsplus: remove mutex_lock check in hfsplus_free_extents
    92c50b2d5a57 fs_context: fix parameter name in infofc() macro
    7becf31ed946 ASoC: Intel: fix SND_SOC_SOF dependencies
    c845b2e787d8 ethernet: intel: fix building with large NR_CPUS
    6dd7e3fc9246 usb: phy: mxs: disconnect line when USB charger is attached
    c53baa6a134c usb: chipidea: add USB PHY event
    6005cea17d04 ALSA: hda: Add missing NVIDIA HDA codec IDs
    988be12b610d comedi: comedi_test: Fix possible deletion of uninitialized timers
    fa6ce4a9cc9f jfs: reject on-disk inodes of an unsupported type
    6b80d98a9710 x86/bugs: Fix use of possibly uninit value in amd_check_tsa_microcode()
    6d40dd35a932 usb: typec: tcpm: apply vbus before data bringup in tcpm_src_attach
    92370ce7071c usb: typec: tcpm: allow switching to mode accessory to mux properly
    2f7fbb19d983 usb: typec: tcpm: allow to use sink in accessory mode
    4991f824128b mm/zsmalloc: do not pass __GFP_MOVABLE if CONFIG_COMPACTION=n
    98872a934ea6 nilfs2: reject invalid file types when reading inodes
    1d6f02700d75 gve: Fix stuck TX queue for DQ queue format
    ae07af3d1f8e e1000e: ignore uninitialized checksum word on tgp
    30e2871bd4b3 e1000e: disregard NVM checksum on tgp when valid checksum bit is not set
    8aa46b2428b8 dpaa2-switch: Fix device reference count leak in MAC endpoint handling
    30f7d3d90f41 dpaa2-eth: Fix device reference count leak in MAC endpoint handling
    094a94e3b237 ALSA: hda/realtek - Add mute LED support for HP Pavilion 15-eg0xxx
    83f64bb37197 bus: fsl-mc: Fix potential double device reference in fsl_mc_get_endpoint()
    c742b06302a0 i2c: virtio: Avoid hang by using interruptible completion wait
    d05ec13aa3eb i2c: qup: jump out of the loop in case of timeout
    ec1aa39ea7f9 platform/x86: ideapad-laptop: Fix kbd backlight not remembered among boots
    a8e8b3733ebd net: hns3: fixed vf get max channels bug
    d739b876c161 net: hns3: disable interrupt when ptp init failed
    f1d943048fd2 net: hns3: fix concurrent setting vlan filter issue
    ab905a2e982e net/sched: sch_qfq: Avoid triggering might_sleep in atomic context in qfq_delete_class
    186942d19c02 net: appletalk: Fix use-after-free in AARP proxy probe
    4640c4dc604d i40e: report VF tx_dropped with tx_errors instead of tx_discards
    8d9184cce2bf i40e: Add rx_missed_errors for buffer exhaustion
    c8aefc5994eb regmap: fix potential memory leak of regmap_bus
    cda04854614f interconnect: qcom: sc7280: Add missing num_links to xm_pcie3_1 node
    532fbdc74a4e RDMA/core: Rate limit GID cache warning messages
    ca9bef9ba1a6 regulator: core: fix NULL dereference on unbind due to stale coupling data
    664e5a6f541f Input: gpio-keys - fix a sleep while atomic with PREEMPT_RT
    b62c8ee41b81 x86: Pin task-stack in __get_wchan()
    e43191f9efa3 x86: Fix __get_wchan() for !STACKTRACE
    5ce1264b586d sched: Add wrapper for get_wchan() to keep task blocked
    b52e53a44a43 x86: Fix get_wchan() to support the ORC unwinder
    4dba44333a11 bpf, sockmap: Fix panic when calling skb_linearize
    7722142d7265 platform/x86: think-lmi: Fix kobject cleanup
    f110c609b0c5 powercap: intel_rapl: Do not change CLAMPING bit if ENABLE bit cannot be changed
    7d2c4a0fee61 mm/vmalloc: leave lazy MMU mode on PTE mapping error
    ee093910b9f8 ASoC: fsl_sai: Force a software reset when starting in consumer mode
    d2ab0bb400cc usb: dwc3: qcom: Don't leave BCR asserted
    5e2851d5e3cf usb: musb: fix gadget state on disconnect
    8594a4e87977 usb: musb: Add and use inline functions musb_{get,set}_state
    7a7178837bed usb: hub: Fix flushing of delayed work used for post resume purposes
    1a6fee8d8295 usb: hub: Fix flushing and scheduling of delayed work that tunes runtime pm
    e38ca702130b usb: hub: fix detection of high tier USB3 devices behind suspended hubs
    36fecd740de2 clone_private_mnt(): make sure that caller has CAP_SYS_ADMIN in the right userns
    9ef510db1362 sched: Change nr_uninterruptible type to unsigned long
    850226aef8d2 net/sched: Return NULL when htb_lookup_leaf encounters an empty rbtree
    2a4b9df3cb50 net: bridge: Do not offload IGMP/MLD messages
    047b61a24d7c net: vlan: fix VLAN 0 refcount imbalance of toggling filtering during runtime
    9aa9261bf1fe Bluetooth: L2CAP: Fix attempting to adjust outgoing MTU
    6e4eec86fe5f ipv6: mcast: Delay put pmc->idev in mld_del_delrec()
    984a2fb6f2ed net/mlx5: Correctly set gso_size when LRO is used
    88576404084d net/mlx5e: Add support to klm_umr_wqe
    9737501f26b6 lib: bitmap: Introduce node-aware alloc API
    ce2f1b5d0f13 Bluetooth: SMP: Fix using HCI_ERROR_REMOTE_USER_TERM on timeout
    edf3a1828373 Bluetooth: SMP: If an unallowed command is received consider it a failure
    3a4eca2a1859 Bluetooth: Fix null-ptr-deref in l2cap_sock_resume_cb()
    a6a238c4126e usb: net: sierra: check for no status endpoint
    4eb5cc48399f hwmon: (corsair-cpro) Validate the size of the received input buffer
    22bff8038efb selftests: net: increase inter-packet timeout in udpgro.sh
    db262843d1ce selftests: udpgro: report error when receive failed
    46c321f45c87 nvme: fix misaccounting of nvme-mpath inflight I/O
    4256a483fe58 smb: client: fix use-after-free in cifs_oplock_break
    4b5022b649ab pinctrl: mediatek: moore: check if pin_desc is valid before use
    8ba6c2362b85 rpl: Fix use-after-free in rpl_do_srh_inline().
    c6df79400014 net/sched: sch_qfq: Fix race condition on qfq_aggregate
    ca9850df52cc net: emaclite: Fix missing pointer increment in aligned_read()
    97303e541e12 bpf: Reject %p% format string in bprintf-like helpers
    020eed5681d0 comedi: Fix initialization of data for instructions that write to subdevice
    c53570e62b5b comedi: Fix use of uninitialized data in insn_rw_emulate_bits()
    757127050b43 comedi: Fix some signed shift left operations
    69dc06b95145 comedi: Fail COMEDI_INSNLIST ioctl if n_insns is too large
    73f34d609397 comedi: das6402: Fix bit shift out of bounds
    b3c95fa508e5 comedi: das16m1: Fix bit shift out of bounds
    c593215385f0 comedi: aio_iiro_16: Fix bit shift out of bounds
    29ef03e5b844 comedi: pcl812: Fix bit shift out of bounds
    eda041948635 iio: adc: stm32-adc: Fix race in installing chained IRQ handler
    2f10149ae596 iio: adc: max1363: Reorder mode_list[] entries
    8ff32ec36adb iio: adc: max1363: Fix MAX1363_4X_CHANS/MAX1363_8X_CHANS[]
    166afe964e84 soc: aspeed: lpc-snoop: Don't disable channels that aren't enabled
    fe632e8fc184 soc: aspeed: lpc-snoop: Cleanup resources in stack-order
    5fd9150de773 pmdomain: governor: Consider CPU latency tolerance from pm_domain_cpu_gov
    ecb1a74e41b5 mmc: sdhci_am654: Workaround for Errata i2312
    4d6c8f3e13af mmc: sdhci-pci: Quirk for broken command queuing on Intel GLK-based Positivo models
    0886c420da61 mmc: bcm2835: Fix dma_unmap_sg() nents value
    0a8432ef8cd9 memstick: core: Zero initialize id_reg in h_memstick_read_dev_id()
    6ef428a6e972 isofs: Verify inode mode when loading from disk
    24861ef8b517 dmaengine: nbpfaxi: Fix memory corruption in probe()
    052af0c58b5b af_packet: fix soft lockup issue caused by tpacket_snd()
    9e3219d33907 af_packet: fix the SO_SNDTIMEO constraint not effective on tpacked_snd()
    e98c1dfae40e phonet/pep: Move call to pn_skb_get_dst_sockaddr() earlier in pep_sock_accept()
    ca60064ea03f tracing: Add down_write(trace_event_sem) when adding trace event
    f10923b8d32a HID: core: do not bypass hid_hw_raw_request
    aefa6e92d9b4 HID: core: ensure __hid_request reserves the report ID as the first byte
    7fa83d004337 HID: core: ensure the allocated report buffer can contain the reserved report ID
    6c6ae150dbd8 pch_uart: Fix dma_sync_sg_for_device() nents value
    d83feb2854d8 Input: xpad - set correct controller type for Acer NGR200
    8039721de433 thunderbolt: Fix bit masking in tb_dp_port_set_hops()
    0bcdbf953523 i2c: stm32: fix the device used for the DMA map
    15a872068799 usb: gadget: configfs: Fix OOB read on empty string write
    76157b526d17 USB: serial: ftdi_sio: add support for NDI EMGUIDE GEMINI
    660b9dc0fd3d USB: serial: option: add Foxconn T99W640
    d374b477ae95 USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition
    cdcb0ffd6448 phy: tegra: xusb: Fix unbalanced regulator disable in UTMI PHY mode

(From OE-Core rev: bd8a3bdbd78f806b4a3077de8ae7aa3bc00511fc)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Bruce Ashfield
5abe7f3283 linux-yocto/5.15: update to v5.15.189
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    c79648372d02 Linux 5.15.189
    3e4028ef31b6 rseq: Fix segfault on registration when rseq_cs is non-zero
    4b934b78041f x86: Fix X86_FEATURE_VERW_CLEAR definition
    562f207d0a91 x86/mm: Disable hugetlb page table sharing on 32-bit
    8312a1ccff15 vhost-scsi: protect vq->log_used with vq->mutex
    02fd0c7d0d14 Input: atkbd - do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID
    1b297ab6f38c HID: quirks: Add quirk for 2 Chicony Electronics HP 5MP Cameras
    68c0e3adf09a HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY
    95f184337eb4 vt: add missing notification when switching back to text mode
    f174d73b3fb0 HID: lenovo: Add support for ThinkPad X1 Tablet Thin Keyboard Gen2
    acc94849ebb9 net: usb: qmi_wwan: add SIMCom 8230C composition
    78fe114f13a3 um: vector: Reduce stack usage in vector_eth_configure()
    8ea9a9fb79a9 atm: idt77252: Add missing `dma_map_error()`
    8d672a1a6bfc bnxt_en: Set DMA unmap len correctly for XDP_REDIRECT
    0118fe8fbe2b bnxt_en: Fix DCB ETS validation
    8d11e48b1276 net: ll_temac: Fix missing tx_pending check in ethtools_set_ringparam()
    0da557bbeae2 can: m_can: m_can_handle_lost_msg(): downgrade msg lost in rx message to debug level
    6b08605e12b3 net: phy: microchip: limit 100M workaround to link-down events on LAN88xx
    b2f5dfa87367 net: appletalk: Fix device refcount leak in atrtr_create()
    a3aea97d5596 netfilter: flowtable: account for Ethernet header in nf_flow_pppoe_proto()
    df525911974c ksmbd: fix a mount write count leak in ksmbd_vfs_kern_path_locked()
    fedd65b58469 smb: server: make use of rdma_destroy_qp()
    cb121c47f364 nbd: fix uaf in nbd_genl_connect() error path
    10c6021a609d raid10: cleanup memleak at raid10_make_request
    48da050b4f54 md/raid1: Fix stack memory use after return in raid1_reshape
    b24f65c18454 wifi: zd1211rw: Fix potential NULL pointer dereference in zd_mac_tx_to_dev()
    09064e6d6597 dma-buf: fix timeout handling in dma_resv_wait_timeout v2
    419192cb11f2 dma-buf: use new iterator in dma_resv_wait_timeout
    84df80b4c704 dma-buf: add dma_resv_for_each_fence_unlocked v8
    3435a2048972 usb: dwc3: Abort suspend on soft disconnect failure
    c1cb5c166fec usb: cdnsp: Fix issue with CV Bad Descriptor test
    ba3a2e446fc7 usb: cdnsp: Replace snprintf() with the safer scnprintf() variant
    2991f28da681 usb:cdnsp: remove TRB_FLUSH_ENDPOINT command
    9a433cd87236 Input: xpad - support Acer NGR 200 Controller
    e9b894ca7589 xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS
    e262ff8d634c usb: xhci: quirk for data loss in ISOC transfers
    59aca35c69c2 xhci: Allow RPM on the USB controller (1022:43f7) by default
    982beb7582c1 virtio-net: ensure the received length does not exceed allocated size
    c47c83f6f2ec netlink: make sure we allow at least one dump skb
    ccc9da90af65 netlink: Fix rmem check in netlink_broadcast_deliver().
    a2504279841f pwm: mediatek: Ensure to disable clocks in error path
    d7684190951e RDMA/mlx5: Fix vport loopback for MPV device
    e774a693b7ff btrfs: use btrfs_record_snapshot_destroy() during rmdir
    21ab2c7c9794 btrfs: propagate last_unlink_trans earlier when doing a rmdir
    d216d5a277de Revert "ACPI: battery: negate current when discharging"
    a5012673d497 usb: gadget: u_serial: Fix race condition in TTY wakeup
    2f4df5d07c77 drm/gem: Fix race in drm_gem_handle_create_tail()
    ef841f8e4e1f drm/sched: Increment job count before swapping tail spsc queue
    cb4b08a095b1 pinctrl: qcom: msm: mark certain pins as invalid for interrupts
    0c1ad5738526 gre: Fix IPv6 multicast route creation.
    e3154a48fd0b x86/mce: Make sure CMCI banks are cleared during shutdown on Intel
    9f4431ba8501 x86/mce: Don't remove sysfs if thresholding sysfs init fails
    9cd4fa64814b x86/mce/amd: Fix threshold limit reset
    ae0e082687b2 xen: replace xen_remap() with memremap()
    f98bf80b20f4 jfs: fix null ptr deref in dtInsertEntry
    65ad600b9bde bpf, sockmap: Fix skb refcnt race after locking changes
    2499fa286fb0 aoe: avoid potential deadlock at set_capacity
    39d5137085a6 thermal/int340x_thermal: handle data_vault when the value is ZERO_SIZE_PTR
    e37e3b6cc8dc bpf: fix precision backtracking instruction iteration
    f5e72b7824d0 rxrpc: Fix oops due to non-existence of prealloc backlog struct
    d30910170f7e ice: safer stats processing
    32caa50275cc fs/proc: do_task_stat: use __for_each_thread()
    25452638f133 net/sched: Abort __tc_modify_qdisc if parent class does not exist
    7f1cad84ac1a atm: clip: Fix NULL pointer dereference in vcc_sendmsg()
    5641019dfbae atm: clip: Fix infinite recursive call of clip_push().
    1c075e88d585 atm: clip: Fix memory leak of struct clip_vcc.
    3251ce3979f4 atm: clip: Fix potential null-ptr-deref in to_atmarpd().
    66f9065c1c7d net: phy: smsc: Fix link failure in forced mode with Auto-MDIX
    29a5de38fa1e net: phy: smsc: Fix Auto-MDIX configuration when disabled by strap
    0ba1021a8302 vsock: Fix IOCTL_VM_SOCKETS_GET_LOCAL_CID to check also `transport_local`
    36a439049b34 vsock: Fix transport_* TOCTOU
    80d7dc15805a vsock: Fix transport_{g2h,h2g} TOCTOU
    dab8ded2e5ff tipc: Fix use-after-free in tipc_conn_close().
    fd69af061010 netlink: Fix wraparounds of sk->sk_rmem_alloc.
    552a066477cb fix proc_sys_compare() handling of in-lookup dentries
    c0aec35f861f perf: Revert to requiring CAP_SYS_ADMIN for uprobes
    2df3e265a301 ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode
    87825fbd1e17 drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling

(From OE-Core rev: b3f7c8cd4d56120e96b2b12f5a1eb76dc65f682b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Bruce Ashfield
9a1d2ff9d0 linux-yocto/5.15: update to v5.15.188
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    89950c454265 Linux 5.15.188
    cd0d988f7dd7 x86/CPU/AMD: Properly check the TSA microcode
    2f693b607545 Linux 5.15.187
    21953dde398d x86/process: Move the buffer clearing before MONITOR
    c334ae4a545a KVM: SVM: Advertise TSA CPUID bits to guests
    3d6513b51b72 KVM: x86: add support for CPUID leaf 0x80000021
    f2b75f1368af x86/bugs: Add a Transient Scheduler Attacks mitigation
    04304f5fe3e3 x86/bugs: Rename MDS machinery to something more generic
    7be0d1ea71f5 usb: typec: displayport: Fix potential deadlock
    5bcca95ca6d2 platform/x86: think-lmi: Create ksets consecutively
    d01c737efd81 Logitech C-270 even more broken
    475f89e1f9bd i2c/designware: Fix an initialization issue
    b32dfd00bd51 usb: cdnsp: do not disable slot for disabled slot
    969941ca9f1e xhci: dbc: Flush queued requests before stopping dbc
    45f2cd76bc50 xhci: dbctty: disable ECHO flag by default
    d8ccb3d08159 platform/x86: dell-wmi-sysman: Fix class device unregistration
    8ac2cb8d809b platform/x86: think-lmi: Fix class device unregistration
    846baaa88a2d dpaa2-eth: fix xdp_rxq_info leak
    3f0b6236e11f net: dpaa2-eth: rearrange variable in dpaa2_eth_get_ethtool_stats
    b2e1b676711e dpaa2-eth: Update SINGLE_STEP register access
    8e4d49fc2617 dpaa2-eth: Update dpni_get_single_step_cfg command
    0ab03e2616a1 ethernet: atl1: Add missing DMA mapping error checks and count errors
    94a09ec93e93 NFSv4/flexfiles: Fix handling of NFS level errors in I/O
    576a6739e08a drm/v3d: Disable interrupts before resetting the GPU
    56738cbac3bb regulator: gpio: Fix the out-of-bounds access to drvdata::gpiods
    e772f8f5c82d regulator: gpio: Add input_supply support in gpio_regulator_config
    1728e17762b9 mmc: core: sd: Apply BROKEN_SD_DISCARD quirk earlier
    bee6329e5fd5 rcu: Return early if callback is not specified
    68d3417305ee mtd: spinand: fix memory leak of ECC engine conf
    ab1e8491c19e ACPICA: Refuse to evaluate a method if arguments are missing
    46b47d4b06fa wifi: ath6kl: remove WARN on bad firmware input
    a856228c44dc wifi: mac80211: drop invalid source address OCB frames
    1129e0e0a833 scsi: target: Fix NULL pointer dereference in core_scsi3_decode_spec_i_port()
    161ff4102038 powerpc: Fix struct termio related ioctl macros
    ce5f6b2540d6 ata: pata_cs5536: fix build on 32-bit UML
    ba5104b9b3fa ALSA: sb: Force to disable DMAs once when DMA mode is changed
    73337c003f3d ALSA: sb: Don't allow changing the DMA mode during operations
    5deab0fa6cfd drm/msm: Fix a fence leak in submit error path
    e269f29e9395 net/sched: Always pass notifications when child class becomes empty
    7bf497c2ad87 nui: Fix dma_mapping_error() check
    2b952dbb32fe rose: fix dangling neighbour pointers in rose_rt_device_down()
    1fba51f021b2 enic: fix incorrect MTU comparison in enic_change_mtu()
    52b4b2e85e63 amd-xgbe: align CL37 AN sequence as per databook
    7edff1bbdd3a lib: test_objagg: Set error message in check_expect_hints_stats()
    f5874e0dea9e igc: disable L1.2 PCI-E link substate to avoid performance issue
    f10af3426144 drm/i915/gt: Fix timeline left held on VMA alloc error
    92c2d914b533 platform/x86: dell-wmi-sysman: Fix WMI data block retrieval in sysfs callbacks
    4caf6a93ac39 drm/i915/selftests: Change mock_request() to return error pointers
    54f62d542d2c spi: spi-fsl-dspi: Clear completion counter before initiating transfer
    4c315caf16e8 drm/exynos: fimd: Guard display clock control with runtime PM calls
    a1950bb9edfa btrfs: fix missing error handling when searching for inode refs during log replay
    9f0771b8cc4a RDMA/mlx5: Fix CC counters query for MPV
    abfdb3b4ce2b scsi: ufs: core: Fix spelling of a sysfs attribute name
    1afb58c7e32b scsi: qla4xxx: Fix missing DMA mapping error in qla4xxx_alloc_pdu()
    9ceff7ded1e9 scsi: qla2xxx: Fix DMA mapping test in qla24xx_get_port_database()
    8846fd02c98d NFSv4/pNFS: Fix a race to wake on NFS_LAYOUT_DRAIN
    b92397ce9674 nfs: Clean up /proc/net/rpc/nfs when nfs_fs_proc_net_init() fails.
    00ed215f5938 RDMA/mlx5: Initialize obj_event->obj_sub_list before xa_insert
    16a16c901a75 platform/mellanox: mlxbf-tmfifo: fix vring_desc.len assignment
    944ced3e4a09 mtk-sd: reset host->mrq on prepare_data() error
    48bf4f3dfcda mtk-sd: Prevent memory corruption from DMA map failure
    2580162c4ebf mtk-sd: Fix a pagefault in dma_unmap_sg() for not prepared data
    621d5a3ef023 usb: typec: altmodes/displayport: do not index invalid pin_assignments
    aab032d171e7 Revert "mmc: sdhci: Disable SD card clock before changing parameters"
    3d07fd496513 mmc: sdhci: Add a helper function for dump register in dynamic debug mode
    2d44723a091b vsock/vmci: Clear the vmci transport packet properly when initializing it
    1def00386211 rtc: cmos: use spin_lock_irqsave in cmos_interrupt
    8516edd36397 ARM: 9354/1: ptrace: Use bitfield helpers
    143842584c12 btrfs: don't drop extent_map for free space inode on write error
    6a8aa6420ad3 arm64: Restrict pagetable teardown to avoid false warning
    6d486f1e3818 Revert "ipv6: save dontfrag in cork"
    9f69eb424aa2 s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS
    707030cb1c66 s390/entry: Fix last breaking event handling in case of stack corruption
    9e2976e4e326 media: uvcvideo: Rollback non processed entities on error
    45d1aa5674d6 PCI: hv: Do not set PCI_COMMAND_MEMORY to reduce VM boot time
    34d3e10ab905 drm/amd/display: Add null pointer check for get_first_active_display()
    53dee8fd76a6 drm/bridge: cdns-dsi: Wait for Clk and Data Lanes to be ready
    62a7143dce1c drm/bridge: cdns-dsi: Check return value when getting default PHY config
    49a421180aaa drm/bridge: cdns-dsi: Fix connecting to next bridge
    6c3056ed0b73 drm/bridge: cdns-dsi: Fix the clock variable for mode_valid()
    105b0a0c7e65 drm/amdkfd: Fix race in GWS queue scheduling
    b0dc5d6da1da drm/udl: Unregister device before cleaning up on disconnect
    c7fc459ae6f9 drm/tegra: Fix a possible null pointer dereference
    21dfbd590734 drm/tegra: Assign plane type before registration
    03b68435fbe3 HID: wacom: fix kobject reference count leak
    796abf9f710a HID: wacom: fix memory leak on sysfs attribute creation failure
    ca7b6d00a713 HID: wacom: fix memory leak on kobject creation failure
    896bc23e1e25 btrfs: update superblock's device bytes_used when dropping chunk
    2826ef05854d dm-raid: fix variable in journal device check
    78f4cf0e81b7 Bluetooth: L2CAP: Fix L2CAP MTU negotiation
    34cbe5543bec dt-bindings: serial: 8250: Make clocks and clock-frequency exclusive
    f61db0a69d0b staging: rtl8723bs: Avoid memset() in aes_cipher() and aes_decipher()
    9f7fd60fb8f7 net: selftests: fix TCP packet checksum
    26248d5d68c8 atm: Release atm_dev_mutex after removing procfs in atm_dev_deregister().
    6b908e85a739 net: enetc: Correct endianness handling in _enetc_rd_reg64
    8898080d6143 um: ubd: Add missing error check in start_io_thread()
    a4aa7c001043 vsock/uapi: fix linux/vm_sockets.h userspace compilation errors
    1bc8c7b8e5b9 af_unix: Don't set -ECONNRESET for consumed OOB skb.
    2afcde1b3676 wifi: mac80211: fix beacon interval calculation overflow
    1197abb1ee3b libbpf: Fix null pointer dereference in btf_dump__free on allocation failure
    6b4ce195552b attach_recursive_mnt(): do not lock the covering tree when sliding something under it
    c3fb926abe90 ALSA: usb-audio: Fix out-of-bounds read in snd_usb_get_audioformat_uac3()
    9199e8cb75f1 atm: clip: prevent NULL deref in clip_push()
    ad1bdd24a02d s390/pkey: Prevent overflow in size calculation for memdup_user()
    56e54021b77c i2c: robotfuzz-osif: disable zero-length read messages
    d6bc3e078509 i2c: tiny-usb: disable zero-length read messages
    9b084de34f1a platform/x86: ideapad-laptop: use usleep_range() for EC polling
    d0537c51b4a1 dummycon: Trigger redraw when switching consoles with deferred takeover
    acd41ac591b7 tty: vt: make consw::con_switch() return a bool
    a74907cdd18d tty: vt: sanitize arguments of consw::con_clear()
    d2781a0ba98c tty: vt: make init parameter of consw::con_init() a bool
    de2871093fa3 vgacon: remove unneeded forward declarations
    72dc92531df9 vgacon: switch vgacon_scrolldelta() and vgacon_restore_screen()
    4b0b22dfe4d6 tty/vt: consolemap: rename and document struct uni_pagedir
    3a88320314ab fbcon: delete a few unneeded forward decl
    c8ea0f204cf4 uio_hv_generic: Align ring size to system page
    a955c1b360b3 uio_hv_generic: Query the ringbuffer size for device
    a8c1b5e33a1c Drivers: hv: vmbus: Add utility function for querying ring size
    101c4437f6fb Drivers: hv: Rename 'alloced' to 'allocated'
    1f2f2f56f59e f2fs: don't over-report free space or inodes in statvfs
    fbcbbf2ebe5c media: imx-jpeg: Drop the first error frames
    8701675abab4 clk: ti: am43xx: Add clkctrl data for am43xx ADC1
    9f55faa41eac media: omap3isp: use sgtable-based scatterlist wrappers
    78b7d79b8626 media: davinci: vpif: Fix memory leak in probe error path
    c3705c82b740 jfs: validate AG parameters in dbMount() to prevent crashes
    4789cea3f8d4 fs/jfs: consolidate sanity checking in dbMount
    8c8d1dcc726a ovl: Check for NULL d_inode() in ovl_dentry_upper()
    42923c6e9cd7 ceph: fix possible integer overflow in ceph_zero_objects()
    bfdbc927d165 ALSA: usb-audio: Add a quirk for Lenovo Thinkpad Thunderbolt 3 dock
    da01b76bb66a ALSA: hda: Add new pci id for AMD GPU display HD audio controller
    44aa0cdaed5f ALSA: hda: Ignore unsol events for cards being shut down
    56846793f105 usb: typec: displayport: Receive DP Status Update NAK request exit dp altmode
    cd414d7d7077 usb: cdc-wdm: avoid setting WDM_READ for ZLP-s
    383d33f3aeb7 usb: Add checks for snprintf() calls in usb_alloc_dev()
    780e48c99f66 usb: common: usb-conn-gpio: use a unique name for usb connector device
    9c905fdbba68 tty: serial: uartlite: register uart driver in init
    6f77e344515b usb: potential integer overflow in usbg_make_tpg()
    5cb3cb3db317 usb: dwc2: also exit clock_gating when stopping udc while suspended
    fd72dd6a82e2 coresight: Only check bottom two claim bits
    be620f25161f um: Add cmpxchg8b_emu and checksum functions to asm-prototypes.h
    82ddbbc98949 iio: pressure: zpa2326: Use aligned_s64 for the timestamp
    1f25f2d3fa29 bcache: fix NULL pointer in cache_set_flush()
    8ddce5eab6c3 md/md-bitmap: fix dm-raid max_write_behind setting
    477c044309e6 dmaengine: xilinx_dma: Set dma_device directions
    566487aad232 ksmbd: allow a filename to contain special characters on SMB3.1.1 posix extension
    d8322d861a6f hwmon: (pmbus/max34440) Fix support for max34451
    bbd1511e27ee leds: multicolor: Fix intensity setting while SW blinking
    a23b82a0693b mfd: max14577: Fix wakeup source leaks on device unbind
    852a2bda152a mailbox: Not protect module_put with spin_lock_irqsave
    86be8c7409b7 NFSv4.2: fix listxattr to return selinux security label
    a35f2168961e NFSv4: Always set NLINK even if the server doesn't support it
    80251a15ed61 cifs: Fix cifs_query_path_info() for Windows NT servers

(From OE-Core rev: 6b6a51e73e89903e5766175c54fad23cc4a1721b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Saravanan
2b691e84d8 cmake: fix CVE-2025-9301
Reference:
	https://nvd.nist.gov/vuln/detail/CVE-2025-9301
	https://gitlab.kitware.com/cmake/cmake/-/issues/27135

Upstream-patch:
	37e27f71bc

(From OE-Core rev: 0aacc4298f2cdaaf6d19a58e6e134b6a6ecc5097)

Signed-off-by: Saravanan <saravanan.kadambathursubramaniyam@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:19 -07:00
Rajeshkumar Ramasamy
41ae63737b glib-networking: fix CVE-2025-60019
glib-networking's OpenSSL backend fails to properly check the return
value of memory allocation routines. An out of memory condition could
potentially result in writing to an invalid memory location.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-60019

Upstream-patch:
70df675dd4

(From OE-Core rev: eda5838fcbb8c725e6e39d6e72b63c33f6c44446)

Signed-off-by: Rajeshkumar Ramasamy <rajeshkumar.ramasamy@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:19 -07:00
Rajeshkumar Ramasamy
ca6745e603 glib-networking: fix CVE-2025-60018
glib-networking's OpenSSL backend fails to properly check the return
value of a call to BIO_write(), resulting in an out of bounds read.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-60018

Upstream-patch:
4dd540505d

(From OE-Core rev: bd11f18909b5946e4570e0eba9b3cb9b47791dc1)

Signed-off-by: Rajeshkumar Ramasamy <rajeshkumar.ramasamy@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:19 -07:00
Sunil Dora
d847c8aac1 glibc: : PTHREAD_COND_INITIALIZER compatibility with pre-2.41 versions (bug 32786)
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=dbc5a50d12eff4cb3f782129029d04b8a76f58e7
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002282.html

(From OE-Core rev: 8f1000d9dad5e51f08a40b0f6650204425cc8efb)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
1bf7d50410 glibc: nptl Use all of g1_start and g_signals
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=91bb902f58264a2fd50fbce8f39a9a290dd23706
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002283.html

(From OE-Core rev: 4593e800b832d740d0b63ddd4b5c948c564116b2)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
b48d3ea982 glibc: nptl rename __condvar_quiesce_and_switch_g1
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=4b79e27a5073c02f6bff9aa8f4791230a0ab1867
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002281.html

(From OE-Core rev: 0a9ccd040037c12aa2e7fbc2213ca60b30dafcc4)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
42b3adafcc glibc: nptl Fix indentation
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=ee6c14ed59d480720721aaacc5fb03213dc153da
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002280.html

(From OE-Core rev: f54e082df2f07893f66183089518f98cb792f22e)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
2105de9c82 glibc: nptl Use a single loop in pthread_cond_wait instaed of a nested loop
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=929a4764ac90382616b6a21f099192b2475da674
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002279.html

(From OE-Core rev: 75bbc8cb3a94640120d778916abb2edf78b89fd0)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
dd624cec3b glibc: Remove g_refs from condition variables
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=c36fc50781995e6758cae2b6927839d0157f213c
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002278.html

(From OE-Core rev: 1972b6776fa8a23b9d373d516ace32e136e9058f)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
2fdbec72e5 glibc: nptl Remove unnecessary quadruple check in pthread_cond_wait
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=4f7b051f8ee3feff1b53b27a906f245afaa9cee1
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002276.html

(From OE-Core rev: e6cac5aef751d698327f6ebee966462644c6c6a8)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
7b6bc5b49c glibc: nptl Remove unnecessary catch-all-wake in condvar group switch
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=b42cc6af11062c260c7dfa91f1c89891366fed3e
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002274.html

(From OE-Core rev: 18b4f22aaae19cd0efb21433f0c23c5580246a2e)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
0c1db5ac27 glibc: nptl Update comments and indentation for new condvar implementation
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=0cc973160c23bb67f895bc887dd6942d29f8fee3
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002275.html

(From OE-Core rev: bf3d91124c2584b9d3000098d1f81d9459d143fc)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
8f20ad5f77 glibc: pthreads NPTL lost wakeup fix 2
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=1db84775f831a1494993ce9c118deaf9537cc50a
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002277.html

(From OE-Core rev: 4d57f7c82ccb64e2bd2a2371ef18bdc5a4b718e3)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
74672d72c0 glibc: Remove partial BZ#25847 backport patches
To facilitate a clean backport of the full 10-commit series
addressing the pthread condition variable lost wakeup issue
(BZ#25847) in glibc 2.35, remove the existing 8 patches that
were applied as a partial backport.

The previous partial backport excluded commit:
c36fc50781995e6758cae2b6927839d0157f213c ("nptl: Remove
g_refs from condition variables") based on guidance from
glibc maintainer Florian Weimer(#comment #74)

This exclusion was recommended for stable branches to
avoid altering the layout of pthread_cond_t, which could
introduce ABI incompatibilities. Additionally, the dependent
commit dbc5a50d12eff4cb3f782129029d04b8a76f58e7 was not needed
in the partial backport.

To align with upstream mainline, per maintainer Carlos O'Donell
(comment #75), apply the complete 10-commit series for consistency.

By removing these patches first, we ensure the subsequent
application of the full 10 commits results in cleaner, more
reviewable changes without intermixed conflicts or overlaps.

Removed patches and corresponding upstream commits:
- 0026-PR25847-1.patch: 1db84775f831a1494993ce9c118deaf9537cc50a
- 0026-PR25847-2.patch: 0cc973160c23bb67f895bc887dd6942d29f8fee3
- 0026-PR25847-3.patch: b42cc6af11062c260c7dfa91f1c89891366fed3e
- 0026-PR25847-4.patch: 4f7b051f8ee3feff1b53b27a906f245afaa9cee1
- 0026-PR25847-5.patch: 929a4764ac90382616b6a21f099192b2475da674
- 0026-PR25847-6.patch: ee6c14ed59d480720721aaacc5fb03213dc153da
- 0026-PR25847-7.patch: 4b79e27a5073c02f6bff9aa8f4791230a0ab1867
- 0026-PR25847-8.patch: 91bb902f58264a2fd50fbce8f39a9a290dd23706

Bug reference: https://sourceware.org/bugzilla/show_bug.cgi?id=25847
This change prepares the branch for the full backport in follow-up commits.

(From OE-Core rev: 9881dd70305b87945e9649d744bcbc40a1a7b780)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Peter Marko
f245c680a8 binutils: patch CVE-2025-11083
Pick patch per link in NVD report.

(From OE-Core rev: 99879f41af7272e597c9a8c4c0260d1b690f9051)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Peter Marko
2325a1dbc5 binutils: patch CVE-2025-11082
Pick patch per link in NVD report.

(From OE-Core rev: cdc458b5dd21614058aac56de68a272201283141)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Peter Marko
2952d99f0f qemu: patch CVE-2024-8354
Pick commit per [1].

(From OE-Core rev: bebd1b24473e3480ae6c4ae2897fbfdf4942ea11)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:23 -07:00
Peter Marko
962d08fb40 vulnerabilities: update nvdcve file name
The filename is outdated as its version was already bumped and there are
also different files for different feed choices.
Use glob to match any available file.

(From yocto-docs rev: fca48e1239950ccf10f6b1b805c5734104144ded)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Lee Chee Yang
425363de54 migration-guides: add release notes for 4.0.30
(From yocto-docs rev: 2999dd8be2534d3d5b2cfa28be703d07fffa795c)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit e89c95b167c24cfb9c1d5d548a26872393ca2fee)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Steve Sakoman
e5fb48f371 oeqa/sdk/cases/buildcpio.py: use gnu mirror instead of main server
ftp.gnu.org is the main server of the GNU project, however download speed
can vary greatly based on one's location.

Using ftpmirror.gnu.org should redirect the request to the closest up-to-date mirror,
which should result sometimes in significantly faster download speed, depending
on one's location. This should also distribute the traffic more across the mirrors.

This information was sourced from https://www.gnu.org/prep/ftp.html

(From OE-Core rev: 0d11c9103f072841baf39166efc133f2a20fc4dc)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Steve Sakoman
259d81175f selftest/cases/meta_ide.py: use use gnu mirror instead of main server
ftp.gnu.org is the main server of the GNU project, however download speed
can vary greatly based on one's location.

Using ftpmirror.gnu.org should redirect the request to the closest up-to-date mirror,
which should result sometimes in significantly faster download speed, depending
on one's location. This should also distribute the traffic more across the mirrors.

This information was sourced from https://www.gnu.org/prep/ftp.html

(From OE-Core rev: 97939775d2b81af392a2f98c922165763ff0ae5f)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Gyorgy Sarvari
eca1e13385 conf/bitbake.conf: use gnu mirror instead of main server
ftp.gnu.org is the main server of the GNU project, however download speed
can vary greatly based on one's location.

Using ftpmirror.gnu.org should redirect the request to the closest up-to-date mirror,
which should result sometimes in significantly faster download speed, depending
on one's location. This should also distribute the traffic more across the mirrors.

This information was sourced from https://www.gnu.org/prep/ftp.html .

(From OE-Core rev: 8418289277056d582d88916b524b920a2e005c75)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.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 d8c6f01d7467e018aa0ed27a87850d9e4434a47a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
AshishKumar Mishra
e46adde7bb p11-kit: backport fix for handle USE_NLS from master
Disable NLS in the build when USE_NLS is off.

(From OE-Core rev: b94798ecd535956ef4565663710ea9a701ff21ed)

This change corresponds to upstream eeb3974472
from master .
Since the p11-kit version are different between master & kirkstone
applied the patch manually

(From OE-Core rev: c621612a12cdbf5c89279b69e28d0e3a0b5d0a86)

Signed-off-by: Philip Lorenz <philip.lorenz@bmw.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: AshishKumar Mishra <emailaddress.ashish@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
AshishKumar Mishra
d34a0bd00b systemd: backport fix for handle USE_NLS from master
Do not build translations when NLS is disabled.
(From OE-Core rev: 83795ef6c3fa12a863cd20b7ec1a2607606987b6)

This change corresponds to upstream d848b454e6
from master .
Since the systemd version are different between master & kirkstone
applied the patch manually

(From OE-Core rev: 4b612ae7cbdc8327765c34d0e64fa8e0564891d4)

Signed-off-by: Philip Lorenz <philip.lorenz@bmw.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: AshishKumar Mishra <emailaddress.ashish@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Deepesh Varatharajan
11f3763b0f glibc: stable 2.35 branch updates
git log --oneline a66bc3941ff298e474d5f02d0c3303401951141f..4e50046821f05ada5f14c76803845125ddb3ed7d

4e50046821 (HEAD, origin/release/2.35/master) x86-64: Add GLIBC_ABI_DT_X86_64_PLT [BZ #33212]
c97735cfde elf: Handle ld.so with LOAD segment gaps in _dl_find_object (bug 31943)
96cc65a28a elf: Extract rtld_setup_phdr function from dl_main
e3f04f64fa elf: Do not add a copy of _dl_find_object to libc.so
bfae8bf49c arm: Use _dl_find_object on __gnu_Unwind_Find_exidx (BZ 31405)

Testing Results:
           Before     After   Diff
PASS         4605      4609     +4
XPASS           6         6      0
FAIL          358       356     -2
XFAIL          16        16      0
UNRESOLVED      0         1     +1
UNSUPPORTED   197       197      0

Testcases changes

testcase-name                              before           after

elf/tst-link-map-contiguous-libc(new)        -               PASS
elf/tst-link-map-contiguous-ldso(new)        -               FAIL
elf/check-dt-x86-64-plt(new)                 -               UNRESOLVED
misc/tst-tsearch                            FAIL             PASS
posix/bug-regex24                           FAIL             PASS
string/tst-cmp                              FAIL             PASS

(From OE-Core rev: 932ee96c0dc24ac3cdb9cee5bf96375568b41df0)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Archana Polampalli
89a78911d7 openssl: upgrade 3.0.17 -> 3.0.18
This release incorporates the following bug fixes and mitigations:
Fix Out-of-bounds read & write in RFC 3211 KEK Unwrap. (CVE-2025-9230)
Fix Out-of-bounds read in HTTP client no_proxy handling. (CVE-2025-9232)

Changelog:
https://github.com/openssl/openssl/blob/openssl-3.0.18/NEWS.md#openssl-30

(From OE-Core rev: 0a0d640436258269ffaaf23116d41f9a79db5ab7)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Aleksandar Nikolic
673b839a6b scripts/install-buildtools: Update to 4.0.30
Update to the 4.0.30 release of the 4.0 series for buildtools

(From OE-Core rev: 237452d023dfc895cd8183e30e781da6f60b2ec5)

Signed-off-by: Aleksandar Nikolic <aleksandar.nikolic@zeiss.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Archana Polampalli
f63f49bdea go: fix CVE-2025-47906
If the PATH environment variable contains paths which are executables
(rather than just directories), passing certain strings to LookPath
("", ".", and ".."), can result in the binaries listed in the PATH
being unexpectedly returned.

(From OE-Core rev: c4d81e32ee3fb7d05db2cfbfaaa8081841bc16ce)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Peter Marko
7a5c6b3e18 ffmpeg: mark CVE-2023-6601 as patched
Per [1] this CVE is fixed by the same commits as the other 3 CVEs.

[1] https://security-tracker.debian.org/tracker/CVE-2023-6601

(From OE-Core rev: b0542ad422ac1ba05dd5b8003429b8719619d892)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Peter Marko
5d1ccbd52f ffmpeg: ignore CVE-2023-6603
Per [1] this CVE is fixed by [2] which is available in version 5.0, so
version 5.0.3 is not vulnerable anymore.

[1] https://security-tracker.debian.org/tracker/CVE-2023-6603
[2] 28c83584e8

(From OE-Core rev: dcfd5672474f7a9bf7913c0f0e35f7c40bb685c4)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
c95f2e55ac pulseaudio: ignore CVE-2024-11586
As per the linked ticket, this issue is related to an Ubuntu-specific
patch that we don't have.

(From OE-Core rev: dc81fdc6bdf8ab39b7f2fd994d50256430c36558)

(From OE-Core rev: 72e63e44a0c6ad5a408c4dc59a24288c36463439)

Rewritten CVE_STATUS to CVE_CHECK_IGNORE.

(From OE-Core rev: 66e45229a9614d33f64167f0259ae1d719839d83)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
02148028a0 ghostscript: patch CVE-2025-59800
Pick commit mentioned in the NVD report.

(From OE-Core rev: 5109fd6675b6782f10f86f774fe54b6ccecee415)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
093e91d190 ghostscript: patch CVE-2025-59799
Pick commit mentioned in the NVD report.

(From OE-Core rev: 10a51275bb0f62b018a6182953352ecf7aa3d220)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
0163ca382a ghostscript: patch CVE-2025-59798
Pick commit mentioned in the NVD report.

(From OE-Core rev: dc65da274b26c1e7f4143154cd7639a93cc658be)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
0adb465b9e grub: ignore CVE-2024-2312
This CVE is specific to Ubuntu [1].

[1] https://bugs.launchpad.net/ubuntu/+source/grub2-unsigned/+bug/2054127

(From OE-Core rev: dc10bf2f9dd91cbd34af43162b61736fc26aa314)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
ca3783f70d gstreamer1.0: ignore CVE-2025-2759
Copy statement from [1] that it is problem of installers (non-Linux).
Also [2] linked in NVD says "Fixed in 1.25.1 Gstreamer Installer".
Since Yocto builds from sources into our own packages, ignore it.

[1] https://security-tracker.debian.org/tracker/CVE-2025-2759
[2] https://www.zerodayinitiative.com/advisories/ZDI-25-268/

(From OE-Core rev: 99ee1df6bde2ffd4fa2ddea44c0a9b94d9d77bae)

Reworked to CVE_CHECK_IGNORE format.

(From OE-Core rev: 2162bc3b305a0b088018e251baad54c356f7855f)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
b5a57a04eb gstreamer1.0: ignore CVEs fixed in plugins
All these CVEs were fixed in recent commits.

(From OE-Core rev: 86f48cdb1b26b6e234dde10b1e636e54e8a7e71f)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Vijay Anusuri
ed56389e82 tiff: Fix CVE-2025-9165
Upstream-Commit: ed141286a3

(From OE-Core rev: 08823f96a400055e5924bae3af0d2dfaf488148b)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Vijay Anusuri
4a1254610c tiff: Fix CVE-2025-8961
Upstream-Status: Backport from 0ac97aa7a5

(From OE-Core rev: 8d956d80f0eae39f9de68c0cd5a361c69b47cda4)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Vijay Anusuri
4ef41425c6 libxslt: Patch for CVE-2025-7424
This patch is taken from the upstream bug, and is used by Apple in their
build of WebKit.

Origin: https://gitlab.gnome.org/-/project/1762/uploads/627ae84cb0643d9adf6e5c86947f6be6/gnome-libxslt-bug-139-apple-fix.diff

Ref: https://gitlab.gnome.org/GNOME/libxslt/-/issues/139

(From OE-Core rev: 2e2fa1ae7f24dadae9cb8371174aa7744aa42028)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
db50dd87bc busybox: patch CVE-2025-46394
Pick commit mentioning this CVE.
Additionally fix test broken by the CVE fix.

(From OE-Core rev: 137299edbc47e8a57173ef3c22bcb719d48d5302)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Vijay Anusuri
2b82706dc5 gstreamer1.0-plugins-bad: Fix CVE-2025-3887
Upstream-Status: Backport from
5463f0e097
& bcaab36098

(From OE-Core rev: a35bdbdb4d1dd77de7b85ab19d7354be6a11e8b2)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Theo GAIGE
bc7377a239 libxml2: fix CVE-2025-9714
Upstream-Status: Backport from 677a42645e

(From OE-Core rev: 277692c2472f03ae62401bfbd26e8c4d872113d0)

Signed-off-by: Theo GAIGE <tgaige.opensource@witekio.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Adam Blank
7f12221f49 ref-manual/variables.rst: fix the description of STAGING_DIR
There is no single "recipe-sysroots" directory, but rather many
"recipe-sysroot*" directories.

(From yocto-docs rev: eca2cb23eb1fd4186d1f5cadc3280d73e8f52631)

Signed-off-by: Adam Blank <adam.blank.g@gmail.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit f2d6e228409cb1dd1dbf339c405699ac6d3900be)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Antonin Godard
11d8b290dd ref-manual/structure: document the auto.conf file
Add documentation for auto.conf, which is used by external tools for
automatically setting variables.

(From yocto-docs rev: 707b29352838792c635b39c8b5c20c519b10b832)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 134e54a75e0144c4629f702c6f43e92ed1f12dce)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Talel BELHAJ SALEM
55c58356f1 dev-manual/building.rst: add note about externalsrc variables absolute paths
(From yocto-docs rev: a0ffc6296e7349367fa6e6e615b74e2017a1a67e)

Signed-off-by: Talel BELHAJ SALEM <bhstalel@gmail.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 33166d70b6ad093bd95ffccafc0b07820682f656)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Adam Blank
3c3b5d0fe9 ref-manual/variables.rst: fix the description of KBUILD_DEFCONFIG
Remove some leftover confusing mention of KMACHINE.

(From yocto-docs rev: 972f61f12f2b33fc518cf8c3e3da5bf71e1b1cb9)

Signed-off-by: Adam Blank <adam.blank.g@gmail.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 582ee9e0b4930aea03255542b3d3913df19af8b0)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Adam Blank
3ff44348f7 kernel-dev/common.rst: fix the in-tree defconfig description
The description of the relation between KBUILD_DEFCONFIG and
SRC_URI is reversed. In fact it is the SRC_URI provided
defconfig which will be dropped by the kernel-yocto class
if both are provided.

(From yocto-docs rev: 6efc3ca5491722072fd394bae92d827791ef6bc3)

Signed-off-by: Adam Blank <adam.blank.g@gmail.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit a808420655a0976ba08f013f468cf80f379b1d89)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Antonin Godard
1f6c798015 test-manual/yocto-project-compatible.rst: fix a typo
Fix a typo in yocto-project-compatible.rst.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 95f31030628d0f7681401b1de6fb8e7a362963c1)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit a84c234acfedfa714419006c743405e2f9acaedc)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:18 -07:00
Quentin Schulz
fd0df2cb78 contributor-guide: submit-changes: make "Crediting contributors" part of "Commit your changes"
There's no need to differentiate crediting contributors from committing
your changes, so let's simply make it the last step of "Commit your
changes" section.

This simply indents the text so it's now part of "Commit your changes"
list instead of the main list in the "Implement and commit changes"
section. Because of this reorganisation, the instruction to use "git
commit --amend" to add the contributors is moved to a note, and the
first few sentences are reworded to better match the wording of other
items in the "Commit your changes" list of instructions.

(From yocto-docs rev: 5ce7ae8f655f45dec80e68398911f117920f5eb2)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit eff4d14e28d323ebfdaeb0c5c805b5f1e2ad153d)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:18 -07:00
Quentin Schulz
ffd5cd98d6 contributor-guide: submit-changes: number instruction list in commit your changes
... so that it's clear that you need to read and follow each and every
instruction in this list.

(From yocto-docs rev: 4799ffa5170a5f9e12350634bcdfca6f531ea937)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit c628a489f081925fabaabb5acac6752251150269)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
794b42f01a contributor-guide: submit-changes: reword commit message instructions
This should hopefully make it clearer what is expected from the
contributor.

This follows my understanding of git-commit(1)[1] where the following is
a git commit message:

"""
git commit title

git commit description
"""

I'm putting the "Fixes [YOCTO" line in "body of the commit message" so
it's understood as being different from the git commit description so
that the note admonition allowing us to have an empty commit description
doesn't apply to the "Fixes [YOCTO" line.

[1] https://www.man7.org/linux/man-pages/man1/git-commit.1.html#DISCUSSION

(From yocto-docs rev: f817ef5542adc2ce830e22dd04424b9d5d5ed5c5)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit b84903a760350bd118c56ea9ce4e98039edf6e55)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
11999973cb contributor-guide: submit-changes: make the Cc tag follow kernel guidelines
The kernel docs specifies[1] a Cc: tag and not CC: tag, so let's align
with that.

[1] https://www.kernel.org/doc/html/latest/process/submitting-patches.html#when-to-use-acked-by-cc-and-co-developed-by

(From yocto-docs rev: 87721121d9dc95e2de110cadee4538e2ea4ff7c3)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit f800fef4e9e2c1d3584ac49be8324638d2923b17)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
49a5ab4d5f contributor-guide: submit-changes: align CC tag description
The other tag descriptions have the double colon outside of the
highlight, and start the sentence with a lowercase word, so let's align
the CC tag with those.

(From yocto-docs rev: 9764dc8ff26883684f3e993cfa821116ee2e6d95)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit f116e93fb335e9d0f85891c4cb501bcf55b18ccf)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
d153a3dc36 contributor-guide: submit-changes: clarify example with Yocto bug ID
The example could be understood as the content of the commit message
once the editor (git config core.editor) opens, where the first
line is the actual commit title and not the commit description.

This example would make the Fixes line the commit title, which is not
what we want.

In short, according to my understanding of git-commit(1):

The following is a git commit message:

"""
git commit title

git commit description
"""

Reported-by: Barne Carstensen <barne.carstensen@danfoss.com>
(From yocto-docs rev: db54a8bd56f38c532498e0f624fcceb60d2b9ea7)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit a5862406bf3230befe9db9f2539bbbc86c02015d)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
2399c63ca5 contributor-guide: submit-changes: fix improper bold string
I don't know what was the initial intent but this doesn't seem right, so
let's remove the bold formatting.

Fixes: 4abe87cb20d3 ("contributor-guide: submit-changes: detail commit and patch creation")
Cc: Michael Opdenacker <michael.opdenacker@rootcommit.com>
(From yocto-docs rev: 508a1b7d905dabe8a36361da8e346040db4cca2a)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 6c499b3796a578a0fe4c319c9547b4321b0d41df)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Gyorgy Sarvari
866395041f libhandy: update git branch name
Master branch was renamed to main.

(From OE-Core rev: 2285f30e643f52511c328e4f6e1f0c042bea4110)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Soumya Sambu
6303a9d5b5 python3-jinja2: upgrade 3.1.4 -> 3.1.6
Includes fix for - CVE-2024-56326, CVE-2025-27516, CVE-2024-56201

Changelog:
https://github.com/pallets/jinja/blob/3.1.6/CHANGES.rst
https://github.com/pallets/jinja/blob/3.1.5/CHANGES.rst

(From OE-Core rev: a935ef8f205c9510ebc5539c133960bc72504902)

(From OE-Core rev: 7108dccff524888d77f0e5e02d9cc4523a700a91)

Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Divya Chellam
1811a2d13e vim: upgrade 9.1.1652 -> 9.1.1683
Handles CVE-2025-9389

Changes between 9.1.1652 -> 9.1.1683
====================================
https://github.com/vim/vim/compare/v9.1.1652...v9.1.1683

(From OE-Core rev: 24b7e7f719ca600a88aa893b87f6ea821caeadce)

Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Yogita Urade
15dd68bda1 tiff: fix CVE-2025-9900
A flaw was found in Libtiff. This vulnerability is a "write-what-where"
condition, triggered when the library processes a specially crafted TIFF
image file.[EOL][EOL]By providing an abnormally large image height value
in the file's metadata, an attacker can trick the library into writing
attacker-controlled color data to an arbitrary memory location. This
memory corruption can be exploited to cause a denial of service (application
crash) or to achieve arbitrary code execution with the permissions of the user.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-9900

Upstream patch:
3e0dcf0ec6

(From OE-Core rev: f4e5cdeccee02d3ea78db91d5dfdcfd017c40ee0)

Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Yogita Urade
9c9c706252 curl: fix CVE-2025-9086
1, A cookie is set using the secure keyword for https://target
2, curl is redirected to or otherwise made to speak with http://target
(same hostname, but using clear text HTTP) using the same cookie set
3, The same cookie name is set - but with just a slash as path (path="/").
Since this site is not secure, the cookie should just be ignored.
4, A bug in the path comparison logic makes curl read outside a heap buffer boundary

The bug either causes a crash or it potentially makes the comparison come to
the wrong conclusion and lets the clear-text site override the contents of
the secure cookie, contrary to expectations and depending on the memory contents
immediately following the single-byte allocation that holds the path.

The presumed and correct behavior would be to plainly ignore the second set of
the cookie since it was already set as secure on a secure host so overriding
it on an insecure host should not be okay.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-9086

Upstream patch:
https://github.com/curl/curl/commit/c6ae07c6a541e0e96d0040afb6

(From OE-Core rev: dc842a631b178acd9c4f00c4a3b87831baf08ebb)

Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Yogita Urade
d2a96dd89c grub2: fix CVE-2024-56738
Backport an algorithmic change to grub_crypto_memcmp() so that it
completes in constant time and thus isn't susceptible to side-channel
attacks.

reference:
https://git.openembedded.org/openembedded-core/commit/?id=30a1cc225a2bd5d044bf608d863a67df3f9c03be

Upstream patch:
https://cgit.git.savannah.gnu.org/cgit/grub.git/commit/?id=0739d24cd1648531d0708d1079ff6bbfa6140268

(From OE-Core rev: d6572d29892b7da593acafe3af68cf98230acf04)

Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Praveen Kumar
9ae3736eb4 go: fix CVE-2025-47907
Cancelling a query (e.g. by cancelling the context passed to one of
the query methods) during a call to the Scan method of the returned
Rows can result in unexpected results if other queries are being made
in parallel. This can result in a race condition that may overwrite
the expected results with those of another query, causing the call to
Scan to return either unexpected results from the other query or an
error.

Made below changes for Go 1.17 backport:
- Replaced `atomic.Pointer[error]` with `atomic.Value`, since
  atomic pointers are not supported in Go 1.17.
- Used errp.(*error) to retrieve and dereference
  the stored *error, Without this, build fails with:
  invalid indirect of errp (type interface{}).
- Replaced Go 1.18 `any` keyword with `interface{}` for backward
  compatibility with Go 1.17.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-47907

Upstream-patch:
8a924caaf3
298fe517a9
c23579f031

(From OE-Core rev: af9c43c39764ce9ce37785c44dfb83e25cb24703)

Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
188 changed files with 13282 additions and 1063 deletions

View File

@@ -123,110 +123,116 @@ to add the upgraded version.
$ git commit -s file1 file2 dir1 dir2 ...
To include **a**\ ll staged files::
To include all staged files::
$ git commit -sa
- The ``-s`` option of ``git commit`` adds a "Signed-off-by:" line
to your commit message. There is the same requirement for contributing
to the Linux kernel. Adding such a line signifies that you, the
submitter, have agreed to the `Developer's Certificate of Origin 1.1
<https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin>`__
as follows:
#. The ``-s`` option of ``git commit`` adds a "Signed-off-by:" line
to your commit message. There is the same requirement for contributing
to the Linux kernel. Adding such a line signifies that you, the
submitter, have agreed to the `Developer's Certificate of Origin 1.1
<https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin>`__
as follows:
.. code-block:: none
.. code-block:: none
Developer's Certificate of Origin 1.1
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
- Provide a single-line summary of the change and, if more
explanation is needed, provide more detail in the body of the
commit. This summary is typically viewable in the "shortlist" of
changes. Thus, providing something short and descriptive that
gives the reader a summary of the change is useful when viewing a
list of many commits. You should prefix this short description
with the recipe name (if changing a recipe), or else with the
short form path to the file being changed.
#. Provide a single-line summary of the change and, if more
explanation is needed, provide more detail in the description of the
commit. This summary is typically viewable in the "shortlist" of
changes. Thus, providing something short and descriptive that
gives the reader a summary of the change is useful when viewing a
list of many commits. You should prefix this short description
with the recipe name (if changing a recipe), or else with the
short form path to the file being changed.
.. note::
To find a suitable prefix for the commit summary, a good idea
is to look for prefixes used in previous commits touching the
same files or directories::
git log --oneline <paths>
#. For the commit description, provide detailed information
that describes what you changed, why you made the change, and the
approach you used. It might also be helpful if you mention how you
tested the change. Provide as much detail as you can in the commit
description.
.. note::
If the single line summary is enough to describe a simple
change, the commit description can be left empty.
#. If the change addresses a specific bug or issue that is associated
with a bug-tracking ID, include a reference to that ID in the body of the
commit message. For example, the Yocto Project uses a
specific convention for bug references --- any commit that addresses
a specific bug should use the following form for the body of the commit
message. Be sure to use the actual bug-tracking ID from
Bugzilla for bug-id::
single-line summary of change
Fixes [YOCTO #bug-id]
detailed description of change
#. If other people participated in this patch, add some tags to the commit
description to credit other contributors to the change:
- ``Reported-by``: name and email of a person reporting a bug
that your commit is trying to fix. This is a good practice
to encourage people to go on reporting bugs and let them
know that their reports are taken into account.
- ``Suggested-by``: name and email of a person to credit for the
idea of making the change.
- ``Tested-by``, ``Reviewed-by``: name and email for people having
tested your changes or reviewed their code. These fields are
usually added by the maintainer accepting a patch, or by
yourself if you submitted your patches to early reviewers,
or are submitting an unmodified patch again as part of a
new iteration of your patch series.
- ``Cc``: name and email of people you want to send a copy
of your changes to. This field will be used by ``git send-email``.
See `more guidance about using such tags
<https://www.kernel.org/doc/html/latest/process/submitting-patches.html#using-reported-by-tested-by-reviewed-by-suggested-by-and-fixes>`__
in the Linux kernel documentation.
.. note::
To find a suitable prefix for the commit summary, a good idea
is to look for prefixes used in previous commits touching the
same files or directories::
git log --oneline <paths>
- For the body of the commit message, provide detailed information
that describes what you changed, why you made the change, and the
approach you used. It might also be helpful if you mention how you
tested the change. Provide as much detail as you can in the body
of the commit message.
.. note::
If the single line summary is enough to describe a simple
change, the body of the commit message can be left empty.
- If the change addresses a specific bug or issue that is associated
with a bug-tracking ID, include a reference to that ID in your
detailed description. For example, the Yocto Project uses a
specific convention for bug references --- any commit that addresses
a specific bug should use the following form for the detailed
description. Be sure to use the actual bug-tracking ID from
Bugzilla for bug-id::
Fixes [YOCTO #bug-id]
detailed description of change
#. *Crediting contributors:* By using the ``git commit --amend`` command,
you can add some tags to the commit description to credit other contributors
to the change:
- ``Reported-by``: name and email of a person reporting a bug
that your commit is trying to fix. This is a good practice
to encourage people to go on reporting bugs and let them
know that their reports are taken into account.
- ``Suggested-by``: name and email of a person to credit for the
idea of making the change.
- ``Tested-by``, ``Reviewed-by``: name and email for people having
tested your changes or reviewed their code. These fields are
usually added by the maintainer accepting a patch, or by
yourself if you submitted your patches to early reviewers,
or are submitting an unmodified patch again as part of a
new iteration of your patch series.
- ``CC:`` Name and email of people you want to send a copy
of your changes to. This field will be used by ``git send-email``.
See `more guidance about using such tags
<https://www.kernel.org/doc/html/latest/process/submitting-patches.html#using-reported-by-tested-by-reviewed-by-suggested-by-and-fixes>`__
in the Linux kernel documentation.
One can amend an existing git commit message to add missing tags for
contributors with the ``git commit --amend`` command.
Test your changes
-----------------
@@ -650,8 +656,8 @@ backported to a stable branch unless the bug in question does not affect the
master branch or the fix on the master branch is unsuitable for backporting.
The list of stable branches along with the status and maintainer for each
branch can be obtained from the
:yocto_wiki:`Releases wiki page </Releases>`.
branch can be obtained from the :yocto_home:`Releases </development/releases/>`
page.
.. note::

View File

@@ -909,6 +909,11 @@ to point to that directory::
EXTERNALSRC_BUILD:pn-myrecipe = "path-to-your-source-tree"
.. note::
The values of :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD`
must be absolute paths.
Replicating a Build Offline
===========================

View File

@@ -111,17 +111,17 @@ occurred in your project. Perhaps an attempt to :ref:`modify a variable
<bitbake-user-manual/bitbake-user-manual-metadata:modifying existing
variables>` did not work out as expected.
BitBake's ``-e`` option is used to display variable values after
parsing. The following command displays the variable values after the
configuration files (i.e. ``local.conf``, ``bblayers.conf``,
BitBake's ``bitbake-getvar`` command is used to display variable values after
parsing. The following command displays the variable value for :term:`OVERRIDES`
after the configuration files (i.e. ``local.conf``, ``bblayers.conf``,
``bitbake.conf`` and so forth) have been parsed::
$ bitbake -e
$ bitbake-getvar OVERRIDES
The following command displays variable values after a specific recipe has
been parsed. The variables include those from the configuration as well::
The following command displays the value of :term:`PV` after a specific recipe
has been parsed::
$ bitbake -e recipename
$ bitbake-getvar -r recipename PV
.. note::
@@ -135,19 +135,25 @@ been parsed. The variables include those from the configuration as well::
the recipe datastore, which means that variables set within one task
will not be visible to other tasks.
In the output of ``bitbake -e``, each variable is preceded by a
description of how the variable got its value, including temporary
values that were later overridden. This description also includes
variable flags (varflags) set on the variable. The output can be very
In the output of ``bitbake-getvar``, the line containing the value of the
variable is preceded by a description of how the variable got its value,
including temporary values that were later overridden. This description also
includes variable flags (varflags) set on the variable. The output can be very
helpful during debugging.
Variables that are exported to the environment are preceded by
``export`` in the output of ``bitbake -e``. See the following example::
``export`` in the output of ``bitbake-getvar``. See the following example::
export CC="i586-poky-linux-gcc -m32 -march=i586 --sysroot=/home/ulf/poky/build/tmp/sysroots/qemux86"
In addition to variable values, the output of the ``bitbake -e`` and
``bitbake -e`` recipe commands includes the following information:
Shell functions and tasks can also be inspected with the same mechanism::
$ bitbake-getvar -r recipename do_install
For Python functions and tasks, ``bitbake -e recipename`` can be used instead.
Moreover, the output of the ``bitbake -e`` and ``bitbake -e`` recipe commands
includes the following information:
- The output starts with a tree listing all configuration files and
classes included globally, recursively listing the files they include

View File

@@ -123,10 +123,9 @@ Follow these general steps to create your layer without using tools:
Lists all layers on which this layer depends (if any).
- :term:`LAYERSERIES_COMPAT`:
Lists the :yocto_wiki:`Yocto Project </Releases>`
releases for which the current version is compatible. This
variable is a good way to indicate if your particular layer is
current.
Lists the :yocto_home:`Yocto Project releases </development/releases/>`
for which the current version is compatible. This variable is a good
way to indicate if your particular layer is current.
.. note::
@@ -822,6 +821,8 @@ The following list describes the available commands:
- ``create-layer``: Creates a basic layer.
- ``show-machines``: Lists the machines available in the currently configured layers.
Creating a General Layer Using the ``bitbake-layers`` Script
============================================================

View File

@@ -83,19 +83,20 @@ command::
OpenEmbedded recipe tool
options:
-d, --debug Enable debug output
-q, --quiet Print only errors
--color COLOR Colorize output (where COLOR is auto, always, never)
-h, --help show this help message and exit
-d, --debug Enable debug output
-q, --quiet Print only errors
--color COLOR Colorize output (where COLOR is auto, always, never)
-h, --help show this help message and exit
subcommands:
create Create a new recipe
newappend Create a bbappend for the specified target in the specified
layer
setvar Set a variable within a recipe
appendfile Create/update a bbappend to replace a target file
appendsrcfiles Create/update a bbappend to add or replace source files
appendsrcfile Create/update a bbappend to add or replace a source file
newappend Create a bbappend for the specified target in the specified layer
create Create a new recipe
setvar Set a variable within a recipe
appendfile Create/update a bbappend to replace a target file
appendsrcfiles Create/update a bbappend to add or replace source files
appendsrcfile Create/update a bbappend to add or replace a source file
edit Edit the recipe and appends for the specified target. This obeys $VISUAL if set,
otherwise $EDITOR, otherwise vi.
Use recipetool <subcommand> --help to get help on a specific command
Running ``recipetool create -o OUTFILE`` creates the base recipe and
@@ -218,9 +219,9 @@ compilation and packaging files, and so forth.
The path to the per-recipe temporary work directory depends on the
context in which it is being built. The quickest way to find this path
is to have BitBake return it by running the following::
is to use the ``bitbake-getvar`` utility::
$ bitbake -e basename | grep ^WORKDIR=
$ bitbake-getvar -r basename WORKDIR
As an example, assume a Source Directory
top-level folder named ``poky``, a default :term:`Build Directory` at
@@ -438,7 +439,7 @@ Licensing
=========
Your recipe needs to define variables related to the license
under whith the software is distributed. See the
under which the software is distributed. See the
:ref:`contributor-guide/recipe-style-guide:recipe license fields`
section in the Contributor Guide for details.

View File

@@ -44,10 +44,10 @@ See the
documentation for details regarding the policies and maintenance of stable
branches.
The :yocto_wiki:`Releases page </Releases>` contains a list
of all releases of the Yocto Project. Versions in gray are no longer actively
maintained with security patches, but well-tested patches may still be accepted
for them for significant issues.
The :yocto_home:`Releases </development/releases/>` page contains a list of all
releases of the Yocto Project, grouped into current and previous releases.
Previous releases are no longer actively maintained with security patches, but
well-tested patches may still be accepted for them for significant issues.
Security-related discussions at the Yocto Project
-------------------------------------------------

View File

@@ -676,7 +676,7 @@ described in the ":ref:`dev-manual/start:accessing index of releases`" section.
.. note::
For a "map" of Yocto Project releases to version numbers, see the
:yocto_wiki:`Releases </Releases>` wiki page.
:yocto_home:`Releases </development/releases/>` page.
You can use the "RELEASE ARCHIVE" link to reveal a menu of all Yocto
Project releases.

View File

@@ -12,7 +12,7 @@ known security vulnerabilities, as tracked by the public
database.
The Yocto Project maintains a `list of known vulnerabilities
<https://autobuilder.yocto.io/pub/non-release/patchmetrics/>`__
<https://valkyrie.yocto.io/pub/non-release/patchmetrics/>`__
for packages in Poky and OE-Core, tracking the evolution of the number of
unpatched CVEs and the status of patches. Such information is available for
the current development version and for each supported release.
@@ -235,7 +235,7 @@ products defined in :term:`CVE_PRODUCT`. Then, for each found CVE:
The CVE database is stored in :term:`DL_DIR` and can be inspected using
``sqlite3`` command as follows::
sqlite3 downloads/CVE_CHECK/nvdcve_1.1.db .dump | grep CVE-2021-37462
sqlite3 downloads/CVE_CHECK/nvd*.db .dump | grep CVE-2021-37462
When analyzing CVEs, it is recommended to:

View File

@@ -724,13 +724,9 @@ a Raspberry Pi 2, which is based on the Broadcom 2708/2709 chipset::
KBUILD_DEFCONFIG:raspberrypi2 ?= "bcm2709_defconfig"
Aside from modifying your kernel recipe and providing your own
``defconfig`` file, you need to be sure no files or statements set
:term:`SRC_URI` to use a ``defconfig`` other than your "in-tree" file (e.g.
a kernel's ``linux-``\ `machine`\ ``.inc`` file). In other words, if the
build system detects a statement that identifies an "out-of-tree"
``defconfig`` file, that statement will override your
:term:`KBUILD_DEFCONFIG` variable.
If the build system detects a statement that identifies an "out-of-tree"
``defconfig`` file, your :term:`KBUILD_DEFCONFIG` variable will take precedence
over it.
See the
:term:`KBUILD_DEFCONFIG`
@@ -1276,10 +1272,12 @@ appear in the ``.config`` file, which is in the :term:`Build Directory`.
It is simple to create a configuration fragment. One method is to use
shell commands. For example, issuing the following from the shell
creates a configuration fragment file named ``my_smp.cfg`` that enables
multi-processor support within the kernel::
creates a configuration fragment file named ``my_changes.cfg`` that enables
multi-processor support within the kernel and disables the FPGA
Configuration Framework::
$ echo "CONFIG_SMP=y" >> my_smp.cfg
$ echo "CONFIG_SMP=y" >> my_changes.cfg
$ echo "# CONFIG_FPGA is not set" >> my_changes.cfg
.. note::
@@ -1516,15 +1514,13 @@ Expanding Variables
===================
Sometimes it is helpful to determine what a variable expands to during a
build. You can examine the values of variables by examining the
output of the ``bitbake -e`` command. The output is long and is more
easily managed in a text file, which allows for easy searches::
build. You can examine the value of a variable by running the ``bitbake-getvar``
command::
$ bitbake -e virtual/kernel > some_text_file
$ bitbake-getvar -r virtual/kernel VARIABLE
Within the text file, you can see
exactly how each variable is expanded and used by the OpenEmbedded build
system.
The output of the command explains exactly how the variable is expanded and used
by the :term:`OpenEmbedded Build System`.
Working with a "Dirty" Kernel Version String
============================================

View File

@@ -36,3 +36,5 @@ Release 4.0 (kirkstone)
release-notes-4.0.27
release-notes-4.0.28
release-notes-4.0.29
release-notes-4.0.30
release-notes-4.0.31

View File

@@ -0,0 +1,170 @@
Release notes for Yocto-4.0.30 (Kirkstone)
------------------------------------------
Security Fixes in Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- cups: Fix :cve_nist:`2025-58060` and :cve_nist:`2025-58364`
- dpkg: Fix :cve_nist:`2025-6297`
- ffmpeg: Fix :cve_nist:`2023-6602`, :cve_nist:`2023-6604`, :cve_nist:`2023-6605`,
:cve_nist:`2025-1594` and CVE-2025-7700
- git: Fix :cve_nist:`2025-27613`, :cve_nist:`2025-27614`, :cve_nist:`2025-46334`,
:cve_nist:`2025-46835` and :cve_nist:`2025-48384`
- glib-2.0: Fix :cve_nist:`2025-7039`
- glib-2.0: Ignore :cve_nist:`2025-4056`
- go: Ignore :cve_nist:`2024-24790` and :cve_nist:`2025-0913`
- gstreamer1.0-plugins-base: Fix :cve_nist:`2025-47806`, :cve_nist:`2025-47807` and
:cve_nist:`2025-47808`
- gstreamer1.0-plugins-good: Fix :cve_nist:`2025-47183` and :cve_nist:`2025-47219`
- libarchive: Fix :cve_nist:`2025-5918`
- libxslt: Fix :cve_nist:`2023-40403`
- openssl: Fix :cve_nist:`2023-50781`
- python3: Fix :cve_nist:`2025-8194`
- qemu: Ignore :cve_nist:`2024-7730`
- sqlite3: Revert "sqlite3: patch CVE-2025-7458"
- tiff: Fix :cve_nist:`2024-13978`, :cve_nist:`2025-8176`, :cve_nist:`2025-8177`,
:cve_nist:`2025-8534` and :cve_nist:`2025-8851`
- vim: Fix :cve_nist:`2025-53905` and :cve_nist:`2025-53906`
- wpa-supplicant: Fix :cve_nist:`2022-37660`
- xserver-xorg: Fix :cve_nist:`2025-49175`, :cve_nist:`2025-49176`, :cve_nist:`2025-49177`,
:cve_nist:`2025-49178`, :cve_nist:`2025-49179` and :cve_nist:`2025-49180`
Fixes in Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~
- build-appliance-image: Update to kirkstone head revision
- default-distrovars.inc: Fix CONNECTIVITY_CHECK_URIS redirect issue
- dev-manual/security-subjects.rst: update mailing lists
- gnupg: disable tests to avoid running target binaries at build time
- go-helloworld: fix license
- insane: Ensure that `src-uri-bad` fails correctly
- insane: Improve patch warning/error handling
- libubootenv: backport patch to fix unknown type name 'size_t'
- llvm: fix typo in CVE-2024-0151.patch
- migration-guides: add release notes for 4.0.29
- overview-manual/yp-intro.rst: fix broken link to article
- poky.conf: bump version for 4.0.30
- pulseaudio: Add audio group explicitly
- ref-manual/classes.rst: document the testexport class
- ref-manual/system-requirements.rst: update supported distributions
- ref-manual/variables.rst: document :term:`FIT_CONF_PREFIX` :term:`SPL_DTB_BINARY` variable
- ref-manual/variables.rst: expand :term:`IMAGE_OVERHEAD_FACTOR` glossary entry
- sdk: The main in the C example should return an int
- sudo: remove devtool FIXME comment
- systemd: Fix manpage build after :cve_nist:`2025-4598`
- vim: not adjust script pathnames for native scripts either
- vim: upgrade to 9.1.1652
Known Issues in Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- N/A
Contributors to Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Antonin Godard
- Archana Polampalli
- Dan McGregor
- Deepak Rathore
- Divya Chellam
- Erik Lindsten
- Guocai He
- Gyorgy Sarvari
- Hitendra Prajapati
- Jan Vermaete
- Jiaying Song
- Joao Marcos Costa
- Kyungjik Min
- Lee Chee Yang
- Mingli Yu
- Peter Marko
- Philip Lorenz
- Praveen Kumar
- Quentin Schulz
- Richard Purdie
- Steve Sakoman
- Vijay Anusuri
- Yogita Urade
- Youngseok Jeong
Repositories / Downloads for Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
poky
- Repository Location: :yocto_git:`/poky`
- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </poky/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`51dc9c464de0703bfbc6f1ee71ac9bea20933a45 </poky/commit/?id=51dc9c464de0703bfbc6f1ee71ac9bea20933a45>`
- Release Artefact: poky-51dc9c464de0703bfbc6f1ee71ac9bea20933a45
- sha: 2b5db0a07598df7684975c0839e6f31515a8e78d366503feb9917ef1ca56c0b2
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/poky-51dc9c464de0703bfbc6f1ee71ac9bea20933a45.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/poky-51dc9c464de0703bfbc6f1ee71ac9bea20933a45.tar.bz2
openembedded-core
- Repository Location: :oe_git:`/openembedded-core`
- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
- Tag: :oe_git:`yocto-4.0.30 </openembedded-core/log/?h=yocto-4.0.30>`
- Git Revision: :oe_git:`d381eeb5e70bd0ce9e78032c909e4a23564f4dd7 </openembedded-core/commit/?id=d381eeb5e70bd0ce9e78032c909e4a23564f4dd7>`
- Release Artefact: oecore-d381eeb5e70bd0ce9e78032c909e4a23564f4dd7
- sha: 022ab4ef5ac59ac3f01a9dacd8b1d6310cc117c6bed2e86e195ced88e0689c85
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/oecore-d381eeb5e70bd0ce9e78032c909e4a23564f4dd7.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/oecore-d381eeb5e70bd0ce9e78032c909e4a23564f4dd7.tar.bz2
meta-mingw
- Repository Location: :yocto_git:`/meta-mingw`
- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </meta-mingw/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
meta-gplv2
- Repository Location: :yocto_git:`/meta-gplv2`
- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </meta-gplv2/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
bitbake
- Repository Location: :oe_git:`/bitbake`
- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
- Tag: :oe_git:`yocto-4.0.30 </bitbake/log/?h=yocto-4.0.30>`
- Git Revision: :oe_git:`8e2d1f8de055549b2101614d85454fcd1d0f94b2 </bitbake/commit/?id=8e2d1f8de055549b2101614d85454fcd1d0f94b2>`
- Release Artefact: bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2
- sha: fad4e7699bae62082118e89785324b031b0af0743064caee87c91ba28549afb0
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
meta-yocto
- Repository Location: :yocto_git:`/meta-yocto`
- Branch: :yocto_git:`kirkstone </meta-yocto/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </meta-yocto/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`edf7950e4d81dd31f29a58acdd8022dabd2be494 </meta-yocto/commit/?id=edf7950e4d81dd31f29a58acdd8022dabd2be494>`
yocto-docs
- Repository Location: :yocto_git:`/yocto-docs`
- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </yocto-docs/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`71a3933c609ce73ff07e5be48d9e7b03f22ef8d7 </yocto-docs/commit/?id=71a3933c609ce73ff07e5be48d9e7b03f22ef8d7>`

View File

@@ -0,0 +1,210 @@
Release notes for Yocto-4.0.31 (Kirkstone)
------------------------------------------
Security Fixes in Yocto-4.0.31
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- binutils: Fix :cve_nist:`2025-8225`, :cve_nist:`2025-11081`, :cve_nist:`2025-11082` and
:cve_nist:`2025-11083`
- busybox: Fix :cve_nist:`2025-46394`
- cmake: Fix :cve_nist:`2025-9301`
- curl: Fix :cve_nist:`2025-9086`
- ffmpeg: Ignore :cve_nist:`2023-6603`
- ffmpeg: mark :cve_nist:`2023-6601` as Fixed
- ghostscript: Fix :cve_nist:`2025-59798`, :cve_nist:`2025-59799` and :cve_nist:`2025-59800`
- git: Fix :cve_nist:`2025-48386`
- glib-networking: Fix :cve_nist:`2025-60018` and :cve_nist:`2025-60019`
- go: Fix :cve_nist:`2025-47906` and :cve_nist:`2025-47907`
- grub2: Fix :cve_nist:`2024-56738`
- grub: Ignore :cve_nist:`2024-2312`
- gstreamer1.0-plugins-bad: Fix :cve_nist:`2025-3887`
- gstreamer1.0: Ignore :cve_nist:`2025-2759`, :cve_nist:`2025-3887`, :cve_nist:`2025-47183`,
:cve_nist:`2025-47219`, :cve_nist:`2025-47806`, :cve_nist:`2025-47807` and :cve_nist:`2025-47808`
- python3-jinja2: Fix :cve_nist:`2024-56201`, :cve_nist:`2024-56326` and :cve_nist:`2025-27516`
- libxml2: Fix :cve_nist:`2025-9714`
- libxslt: Fix :cve_nist:`2025-7424`
- lz4: Fix :cve_nist:`2025-62813`
- openssl: Fix :cve_nist:`2025-9230` and :cve_nist:`2025-9232`
- pulseaudio: Ignore :cve_nist:`2024-11586`
- python3: Fix :cve_nist:`2024-6345`, :cve_nist:`2025-47273` and :cve_nist:`2025-59375`
- qemu: Fix :cve_nist:`2024-8354`
- tiff: Fix :cve_nist:`2025-8961`, :cve_nist:`2025-9165` and :cve_nist:`2025-9900`
- vim: Fix :cve_nist:`2025-9389`
Fixes in Yocto-4.0.31
~~~~~~~~~~~~~~~~~~~~~
- build-appliance-image: Update to kirkstone head revision
- poky.conf: bump version for 4.0.31
- ref-manual/classes.rst: document the relative_symlinks class
- ref-manual/classes.rst: gettext: extend the documentation of the class
- ref-manual/variables.rst: document the CCACHE_DISABLE, UNINATIVE_CHECKSUM, UNINATIVE_URL, USE_NLS,
REQUIRED_COMBINED_FEATURES, REQUIRED_IMAGE_FEATURES, :term:`REQUIRED_MACHINE_FEATURES` variable
- ref-manual/variables.rst: fix :term:`LAYERDEPENDS` description
- dev-manual, test-manual: Update autobuilder output links
- ref-manual/classes.rst: extend the uninative class documentation
- python3: upgrade to 3.10.19
- linux-yocto/5.15: update to v5.15.194
- glibc: : PTHREAD_COND_INITIALIZER compatibility with pre-2.41 versions (bug 32786)
- glibc: nptl Use all of g1_start and g_signals
- glibc: nptl rename __condvar_quiesce_and_switch_g1
- glibc: nptl Fix indentation
- glibc: nptl Use a single loop in pthread_cond_wait instaed of a nested loop
- glibc: Remove g_refs from condition variables
- glibc: nptl Remove unnecessary quadruple check in pthread_cond_wait
- glibc: nptl Remove unnecessary catch-all-wake in condvar group switch
- glibc: nptl Update comments and indentation for new condvar implementation
- glibc: pthreads NPTL lost wakeup fix 2
- glibc: Remove partial BZ#25847 backport patches
- vulnerabilities: update nvdcve file name
- migration-guides: add release notes for 4.0.30
- oeqa/sdk/cases/buildcpio.py: use gnu mirror instead of main server
- selftest/cases/meta_ide.py: use use gnu mirror instead of main server
- conf/bitbake.conf: use gnu mirror instead of main server
- p11-kit: backport fix for handle :term:`USE_NLS` from master
- systemd: backport fix for handle :term:`USE_NLS` from master
- glibc: stable 2.35 branch updates
- openssl: upgrade to 3.0.18
- scripts/install-buildtools: Update to 4.0.30
- ref-manual/variables.rst: fix the description of :term:`STAGING_DIR`
- ref-manual/structure: document the auto.conf file
- dev-manual/building.rst: add note about externalsrc variables absolute paths
- ref-manual/variables.rst: fix the description of :term:`KBUILD_DEFCONFIG`
- kernel-dev/common.rst: fix the in-tree defconfig description
- test-manual/yocto-project-compatible.rst: fix a typo
- contributor-guide: submit-changes: make "Crediting contributors" part of "Commit your changes"
- contributor-guide: submit-changes: number instruction list in commit your changes
- contributor-guide: submit-changes: reword commit message instructions
- contributor-guide: submit-changes: make the Cc tag follow kernel guidelines
- contributor-guide: submit-changes: align :term:`CC` tag description
- contributor-guide: submit-changes: clarify example with Yocto bug ID
- contributor-guide: submit-changes: fix improper bold string
- libhandy: update git branch name
- python3-jinja2: upgrade to 3.1.6
- vim: upgrade to 9.1.1683
Known Issues in Yocto-4.0.31
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- N/A
Contributors to Yocto-4.0.31
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Adam Blank
- Aleksandar Nikolic
- Antonin Godard
- Archana Polampalli
- AshishKumar Mishra
- Bruce Ashfield
- Deepesh Varatharajan
- Divya Chellam
- Gyorgy Sarvari
- Hitendra Prajapati
- João Marcos Costa
- Lee Chee Yang
- Paul Barker
- Peter Marko
- Praveen Kumar
- Quentin Schulz
- Rajeshkumar Ramasamy
- Saravanan
- Soumya Sambu
- Steve Sakoman
- Sunil Dora
- Talel BELHAJ SALEM
- Theo GAIGE
- Vijay Anusuri
- Yash Shinde
- Yogita Urade
Repositories / Downloads for Yocto-4.0.31
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yocto-docs
- Repository Location: :yocto_git:`/yocto-docs`
- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.31 </yocto-docs/log/?h=yocto-4.0.31>`
- Git Revision: :yocto_git:`073f3bca4c374b03398317e7f445d2440a287741 </yocto-docs/commit/?id=073f3bca4c374b03398317e7f445d2440a287741>`
- Release Artefact: yocto-docs-073f3bca4c374b03398317e7f445d2440a287741
- sha: 3bfde9b6ad310dd42817509b67f61cd69552f74b2bc5011bd20788fe96d6823b
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.31/yocto-docs-073f3bca4c374b03398317e7f445d2440a287741.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.31/yocto-docs-073f3bca4c374b03398317e7f445d2440a287741.tar.bz2
poky
- Repository Location: :yocto_git:`/poky`
- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.31 </poky/log/?h=yocto-4.0.31>`
- Git Revision: :yocto_git:`04b39e5b7eb19498215d85c88a5fffb460fea1eb </poky/commit/?id=04b39e5b7eb19498215d85c88a5fffb460fea1eb>`
- Release Artefact: poky-04b39e5b7eb19498215d85c88a5fffb460fea1eb
- sha: 0ca18ab1ed25c0d77412ba30dbb03d74811756c7c2fe2401940f848a5e734930
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.31/poky-04b39e5b7eb19498215d85c88a5fffb460fea1eb.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.31/poky-04b39e5b7eb19498215d85c88a5fffb460fea1eb.tar.bz2
openembedded-core
- Repository Location: :oe_git:`/openembedded-core`
- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
- Tag: :oe_git:`yocto-4.0.31 </openembedded-core/log/?h=yocto-4.0.31>`
- Git Revision: :oe_git:`99204008786f659ab03538cd2ae2fd23ed4164c5 </openembedded-core/commit/?id=99204008786f659ab03538cd2ae2fd23ed4164c5>`
- Release Artefact: oecore-99204008786f659ab03538cd2ae2fd23ed4164c5
- sha: aa97bf826ad217b3a5278b4ad60bef4d194f0f1ff617677cf2323d3cc4897687
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.31/oecore-99204008786f659ab03538cd2ae2fd23ed4164c5.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.31/oecore-99204008786f659ab03538cd2ae2fd23ed4164c5.tar.bz2
meta-yocto
- Repository Location: :yocto_git:`/meta-yocto`
- Branch: :yocto_git:`kirkstone </meta-yocto/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.31 </meta-yocto/log/?h=yocto-4.0.31>`
- Git Revision: :yocto_git:`3b2df00345b46479237fe0218675a818249f891c </meta-yocto/commit/?id=3b2df00345b46479237fe0218675a818249f891c>`
- Release Artefact: meta-yocto-3b2df00345b46479237fe0218675a818249f891c
- sha: 630e99e0f515bab8a316b2e32aff1352b4404f15aa087e8821b84093596a08ce
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.31/meta-yocto-3b2df00345b46479237fe0218675a818249f891c.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.31/meta-yocto-3b2df00345b46479237fe0218675a818249f891c.tar.bz2
meta-mingw
- Repository Location: :yocto_git:`/meta-mingw`
- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.31 </meta-mingw/log/?h=yocto-4.0.31>`
- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.31/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.31/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
meta-gplv2
- Repository Location: :yocto_git:`/meta-gplv2`
- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.31 </meta-gplv2/log/?h=yocto-4.0.31>`
- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.31/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.31/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
bitbake
- Repository Location: :oe_git:`/bitbake`
- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
- Tag: :oe_git:`yocto-4.0.31 </bitbake/log/?h=yocto-4.0.31>`
- Git Revision: :oe_git:`8e2d1f8de055549b2101614d85454fcd1d0f94b2 </bitbake/commit/?id=8e2d1f8de055549b2101614d85454fcd1d0f94b2>`
- Release Artefact: bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2
- sha: fad4e7699bae62082118e89785324b031b0af0743064caee87c91ba28549afb0
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.31/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.31/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="164.765mm"
height="72.988113mm"
viewBox="0 0 164.765 72.988114"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
sodipodi:docname="key-dev-elements.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="false"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1"
inkscape:cx="341.5"
inkscape:cy="-31.5"
inkscape:window-width="2560"
inkscape:window-height="1440"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="layer2"
showborder="false"
borderlayer="false"
inkscape:antialias-rendering="true"
showguides="true" /><defs
id="defs1" /><g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer "
style="display:inline"
transform="translate(-20.664242,-129.6793)"><rect
style="display:inline;fill:#f1e9cc;fill-opacity:1;stroke:#6d8eb4;stroke-width:0.653;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:7.4;stroke-opacity:1;paint-order:fill markers stroke"
id="rect1"
width="164.112"
height="54.273098"
x="20.990742"
y="130.0058"
ry="0"
inkscape:label="yp-rect" /><rect
style="display:inline;fill:#f3d770;fill-opacity:1;stroke:#6d8eb4;stroke-width:0.653;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:7.4;stroke-opacity:1;paint-order:fill markers stroke"
id="rect2"
width="101.45864"
height="41.151588"
x="28.1292"
y="137.10953"
inkscape:label="poky-rect" /><rect
style="display:inline;fill:#c0ebf5;fill-opacity:1;stroke:#6d8eb4;stroke-width:0.653;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:7.4;stroke-opacity:1;paint-order:fill markers stroke"
id="rect3"
width="50.652737"
height="53.04562"
x="35.516178"
y="149.29529"
inkscape:label="oe-rect" /><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:46.7487;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:7.4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
x="136.38763"
y="137.69727"
id="text3"
inkscape:label="poky-title"
transform="matrix(0.90889596,0,0,0.81399719,-26.072941,39.399474)"><tspan
x="136.38763"
y="137.69727"
id="tspan2">Poky</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:46.7487;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:7.4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
x="136.38763"
y="137.69727"
id="text3-8"
inkscape:label="oe-title"
transform="matrix(0.90889596,0,0,0.81399719,-78.327995,83.175189)"><tspan
x="136.38763"
y="137.69727"
id="tspan4">OpenEmbedded</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;white-space:pre;inline-size:46.7487;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:7.4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
x="136.38763"
y="137.69727"
id="text3-0"
inkscape:label="yp-title"
transform="matrix(0.8469291,0,0,0.81399719,21.497595,28.033837)"><tspan
x="136.38763"
y="137.69727"
id="tspan5">YOCTO PROJECT (YP)</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.98347px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:7.4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
x="137.19444"
y="150.50006"
id="text4"
transform="scale(1.0050579,0.9949676)"
inkscape:label="yp-text"><tspan
sodipodi:role="line"
id="tspan3"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.98347px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="137.19444"
y="150.50006">Umbrella Open Source Project</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.98347px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="137.19444"
y="154.2294"
id="tspan6">that Builds and Maintains</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.98347px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="137.19444"
y="157.95874"
id="tspan7">Validated Open Source Tools and</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.98347px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="137.19444"
y="161.68808"
id="tspan8">Components Associated with</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.98347px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="137.19444"
y="165.4174"
id="tspan9">Embedded Linux</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.97078px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:7.4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
x="90.582634"
y="159.10139"
id="text10"
transform="scale(1.0018079,0.9981954)"
inkscape:label="poky-text"><tspan
sodipodi:role="line"
id="tspan10"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.97078px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="90.582634"
y="159.10139">Yocto Project Open</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.97078px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="90.582634"
y="162.81487"
id="tspan11">Source Reference</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.97078px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="90.582634"
y="166.52835"
id="tspan12">Embedded Distribution</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.01677px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:7.4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
x="40.36692"
y="160.98824"
id="text13"
transform="scale(0.99784993,1.0021547)"
inkscape:label="oe-text"><tspan
sodipodi:role="line"
id="tspan13"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.01677px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="40.36692"
y="160.98824">Open Source Build Engine</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.01677px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="40.36692"
y="164.7592"
id="tspan14">and YP-Compatible Metadata</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.01677px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
x="40.36692"
y="168.53017"
id="tspan15">for Embedded Linux</tspan></text></g></svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -23,8 +23,8 @@ comes to delivering embedded software stacks. The project allows
software customizations and build interchange for multiple hardware
platforms as well as software stacks that can be maintained and scaled.
.. image:: figures/key-dev-elements.png
:align: center
.. image:: svg/key-dev-elements.*
:width: 100%
For further introductory information on the Yocto Project, you might be
interested in this

View File

@@ -309,8 +309,12 @@ file for details about how to enable this mechanism in your configuration
file, how to disable it for specific recipes, and how to share ``ccache``
files between builds.
However, using the class can lead to unexpected side-effects. Thus, using
this class is not recommended.
Recipes can also explicitly disable `Ccache` support even when the
:ref:`ref-classes-ccache` class is enabled, by setting the
:term:`CCACHE_DISABLE` variable to "1".
Using the :ref:`ref-classes-ccache` class can lead to unexpected side-effects.
Using this class is not recommended.
.. _ref-classes-chrpath:
@@ -825,6 +829,14 @@ software that uses the GNU ``gettext`` internationalization and localization
system. All recipes building software that use ``gettext`` should inherit this
class.
This class will configure recipes to build translations *unless*:
- the :term:`USE_NLS` variable is set to ``no``, or
- the :term:`INHIBIT_DEFAULT_DEPS` variable is set and the recipe inheriting
the :ref:`ref-classes-gettext` class does not also inherit the
:ref:`ref-classes-cross-canadian` class.
.. _ref-classes-gnomebase:
``gnomebase``
@@ -2544,6 +2556,25 @@ The :ref:`ref-classes-recipe_sanity` class checks for the presence of any host s
recipe prerequisites that might affect the build (e.g. variables that
are set or software that is present).
.. _ref-classes-relative_symlinks:
``relative_symlinks``
=====================
The :ref:`ref-classes-relative_symlinks` class walks the symbolic links in the
:term:`D` directory and replaces links pointing to absolute paths to relative
paths. This is occasionally used in some recipes that create wrong symbolic
links when their :ref:`ref-classes-native` version is built, and/or would cause
breakage in the :ref:`overview-manual/concepts:shared state cache`.
For example, if the following symbolic link is found in :term:`D`::
/usr/bin/foo -> /sbin/bar
It is replaced by::
/usr/bin/foo -> ../../sbin/bar
.. _ref-classes-relocatable:
``relocatable``
@@ -3214,22 +3245,51 @@ imitates.
``uninative``
=============
Attempts to isolate the build system from the host distribution's C
library in order to make re-use of native shared state artifacts across
different host distributions practical. With this class enabled, a
tarball containing a pre-built C library is downloaded at the start of
the build. In the Poky reference distribution this is enabled by default
through ``meta/conf/distro/include/yocto-uninative.inc``. Other
distributions that do not derive from poky can also
"``require conf/distro/include/yocto-uninative.inc``" to use this.
Alternatively if you prefer, you can build the uninative-tarball recipe
yourself, publish the resulting tarball (e.g. via HTTP) and set
``UNINATIVE_URL`` and ``UNINATIVE_CHECKSUM`` appropriately. For an
example, see the ``meta/conf/distro/include/yocto-uninative.inc``.
The :ref:`ref-classes-uninative` class allows binaries to run on systems with
older or newer :wikipedia:`Glibc <Glibc>` versions. This means
:ref:`ref-classes-native` recipe :ref:`overview-manual/concepts:shared state
cache` can be shared among different host distributions of different versions,
i.e. the :ref:`overview-manual/concepts:shared state cache` is "universal".
The :ref:`ref-classes-uninative` class is also used unconditionally by the extensible
SDK. When building the extensible SDK, ``uninative-tarball`` is built
and the resulting tarball is included within the SDK.
To allow this to work, the dynamic loader is changed to our own :manpage:`ld.so
<ld.so.8>` when binaries are compiled using the
``--dynamic-linker`` option. This means when the binary is executed, it finds
our own :manpage:`ld.so <ld.so.8>` and that loader has a modified search path
which finds a newer Glibc version.
The linking of the binaries is not changed at link time since the
headers on the system wouldn't match the newer Glibc and this causes
obtuse failures. Changing the loader is effectively the same as if the
system had a Glibc upgrade after the binary was compiled, so it is a
mechanism supported by upstream.
One caveat to this approach is that the uninative Glibc binary must be
equal to or newer in version to the versions on all the systems using
the common :ref:`overview-manual/concepts:shared state cache`. This is why
:ref:`ref-classes-uninative` is regularly changed on the development and stable
branches.
Another potential issue is static linking: static libraries created on
a system with a new Glibc version may have symbols not present in older
versions, which would then fail during linking on older systems. This
is one reason we don't use static linking for our :ref:`ref-classes-native`
binaries.
With this class enabled, a tarball containing a pre-built C library is
downloaded at the start of the build. In the Poky reference distribution this is
enabled by default through :oe_git:`meta/conf/distro/include/yocto-uninative.inc
</openembedded-core/tree/meta/conf/distro/include/yocto-uninative.inc>`. Other distributions that do
not derive from Poky can also "``require conf/distro/include/yocto-uninative.inc``"
to use this. Alternatively if you prefer, you can build the uninative-tarball
recipe yourself, publish the resulting tarball (e.g. via HTTP) and set
:term:`UNINATIVE_URL` and :term:`UNINATIVE_CHECKSUM` appropriately. For an
example, see :oe_git:`meta/conf/distro/include/yocto-uninative.inc
</openembedded-core/tree/meta/conf/distro/include/yocto-uninative.inc>`.
The :ref:`ref-classes-uninative` class is also used unconditionally by the
:doc:`extensible SDK </sdk-manual/extensible>`. When building the extensible
SDK, ``uninative-tarball`` is built and the resulting tarball is included within
the SDK.
.. _ref-classes-update-alternatives:

View File

@@ -62,7 +62,8 @@ codename are likely to be compatible and thus work together.
Releases are given a nominal release version as well but the codename is
used in repositories for this reason. You can find information on Yocto
Project releases and codenames at :yocto_wiki:`/Releases`.
Project releases and codenames in the :yocto_home:`Releases page
</development/releases/>`.
Our :doc:`/migration-guides/index` detail how to migrate from one release of
the Yocto Project to the next.

View File

@@ -328,6 +328,15 @@ Once the build process gets the sample file, it uses ``sed`` to substitute final
This file indicates the state of the sanity checks and is created during
the build.
.. _structure-build-conf-auto.conf:
``build/conf/auto.conf``
------------------------
This file contains configuration variables that are automatically modified by
tools such as :oe_git:`bitbake-config-build </bitbake/tree/bin/bitbake-config-build>`.
This file should not be modified manually.
.. _structure-build-downloads:
``build/downloads/``

View File

@@ -1097,6 +1097,11 @@ system and gives an overview of their function and contents.
:term:`CC`
The minimal command and arguments used to run the C compiler.
:term:`CCACHE_DISABLE`
When inheriting the :ref:`ref-classes-ccache` class, the
:term:`CCACHE_DISABLE` variable can be set to "1" in a recipe to disable
`Ccache` support. This is useful when the recipe is known to not support it.
:term:`CFLAGS`
Specifies the flags to pass to the C compiler. This variable is
exported to an environment variable and thus made visible to the
@@ -4251,8 +4256,7 @@ system and gives an overview of their function and contents.
would place patch files and configuration fragment files (i.e.
"out-of-tree"). However, if you want to use a ``defconfig`` file that
is part of the kernel tree (i.e. "in-tree"), you can use the
:term:`KBUILD_DEFCONFIG` variable and append the
:term:`KMACHINE` variable to point to the
:term:`KBUILD_DEFCONFIG` variable to point to the
``defconfig`` file.
To use the variable, set it in the append file for your kernel recipe
@@ -4688,7 +4692,7 @@ system and gives an overview of their function and contents.
information on how this variable is used.
:term:`LAYERDEPENDS`
Lists the layers, separated by spaces, on which this recipe depends.
Lists the layers, separated by spaces, on which this layer depends.
Optionally, you can specify a specific layer version for a dependency
by adding it to the end of the layer name. Here is an example::
@@ -5545,8 +5549,8 @@ system and gives an overview of their function and contents.
.. note::
An easy way to see what overrides apply is to search for :term:`OVERRIDES`
in the output of the ``bitbake -e`` command. See the
An easy way to see what overrides apply is to run the command
``bitbake-getvar -r myrecipe OVERRIDES``. See the
":ref:`dev-manual/debugging:viewing variable values`" section in the Yocto
Project Development Tasks Manual for more information.
@@ -6822,6 +6826,16 @@ system and gives an overview of their function and contents.
:term:`REPODIR`
See :term:`bitbake:REPODIR` in the BitBake manual.
:term:`REQUIRED_COMBINED_FEATURES`
When inheriting the :ref:`ref-classes-features_check` class, this variable
identifies combined features (the intersection of :term:`MACHINE_FEATURES`
and :term:`DISTRO_FEATURES`) that must exist in the current configuration
in order for the :term:`OpenEmbedded Build System` to build the recipe. In
other words, if the :term:`REQUIRED_COMBINED_FEATURES` variable lists a
feature that does not appear in :term:`COMBINED_FEATURES` within the
current configuration, then the recipe will be skipped, and if the build
system attempts to build the recipe then an error will be triggered.
:term:`REQUIRED_DISTRO_FEATURES`
When inheriting the
:ref:`features_check <ref-classes-features_check>`
@@ -6833,6 +6847,32 @@ system and gives an overview of their function and contents.
the recipe will be skipped, and if the build system attempts to build
the recipe then an error will be triggered.
:term:`REQUIRED_IMAGE_FEATURES`
When inheriting the :ref:`ref-classes-features_check` class, this variable
identifies image features that must exist in the current
configuration in order for the :term:`OpenEmbedded Build System` to build
the recipe. In other words, if the :term:`REQUIRED_IMAGE_FEATURES` variable
lists a feature that does not appear in :term:`IMAGE_FEATURES` within the
current configuration, then the recipe will be skipped, and if the build
system attempts to build the recipe then an error will be triggered.
Compared to other ``REQUIRED_*_FEATURES`` variables, the
:term:`REQUIRED_IMAGE_FEATURES` varible only targets image recipes, as the
:term:`IMAGE_FEATURES` variable is handled by the :ref:`ref-classes-core-image`
class). However, the :term:`REQUIRED_IMAGE_FEATURES` varible can also be
set from a :term:`Configuration File`, such as a distro
configuration file, if the list of required image features should apply to
all images using this :term:`DISTRO`.
:term:`REQUIRED_MACHINE_FEATURES`
When inheriting the :ref:`ref-classes-features_check` class, this variable
identifies :term:`MACHINE_FEATURES` that must exist in the current
configuration in order for the :term:`OpenEmbedded Build System` to build
the recipe. In other words, if the :term:`REQUIRED_MACHINE_FEATURES` variable
lists a feature that does not appear in :term:`MACHINE_FEATURES` within the
current configuration, then the recipe will be skipped, and if the build
system attempts to build the recipe then an error will be triggered.
:term:`REQUIRED_VERSION`
If there are multiple versions of a recipe available, this variable
determines which version should be given preference.
@@ -8174,7 +8214,7 @@ system and gives an overview of their function and contents.
directory for the build host.
:term:`STAGING_DIR`
Helps construct the ``recipe-sysroots`` directory, which is used
Helps construct the ``recipe-sysroot*`` directories, which are used
during packaging.
For information on how staging for recipe-specific sysroots occurs,
@@ -9422,6 +9462,22 @@ system and gives an overview of their function and contents.
passes and uses "all" for the target during the U-Boot building
process.
:term:`UNINATIVE_CHECKSUM`
When inheriting the :ref:`ref-classes-uninative` class, the
:term:`UNINATIVE_CHECKSUM` variable flags contain the checksums of the
uninative tarball as specified by the :term:`UNINATIVE_URL` variable.
There should be one checksum per tarballs published at
:term:`UNINATIVE_URL`, which match architectures. For example::
UNINATIVE_CHECKSUM[aarch64] ?= "812045d826b7fda88944055e8526b95a5a9440bfef608d5b53fd52faab49bf85"
UNINATIVE_CHECKSUM[i686] ?= "5cc28efd0c15a75de4bcb147c6cce65f1c1c9d442173a220f08427f40a3ffa09"
UNINATIVE_CHECKSUM[x86_64] ?= "4c03d1ed2b7b4e823aca4a1a23d8f2e322f1770fc10e859adcede5777aff4f3a"
:term:`UNINATIVE_URL`
When inheriting the :ref:`ref-classes-uninative` class, the
:term:`UNINATIVE_URL` variable contains the URL where the uninative
tarballs are published.
:term:`UNKNOWN_CONFIGURE_OPT_IGNORE`
Specifies a list of options that, if reported by the configure script
as being invalid, should not generate a warning during the
@@ -9517,6 +9573,18 @@ system and gives an overview of their function and contents.
the Yocto Project Development Tasks Manual for information on how to
use this variable.
:term:`USE_NLS`
Determine if language translations should be built for recipes that can
build them. This variable can be equal to:
- ``yes``: translations are enabled.
- ``no``: translation are disabled.
Recipes can use the value of this variable to enable language
translations in their build. Classes such as :ref:`ref-classes-gettext`
use the value of this variable to enable :wikipedia:`Gettext <Gettext>`
support.
:term:`USE_VT`
When using
:ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,

View File

@@ -113,7 +113,7 @@ If ``OEQA_DEBUGGING_SAVED_OUTPUT`` is set, any differing packages will be saved
here. The test is also able to run the ``diffoscope`` command on the output to
generate HTML files showing the differences between the packages, to aid
debugging. On the Autobuilder, these appear under
https://autobuilder.yocto.io/pub/repro-fail/ in the form ``oe-reproducible +
https://valkyrie.yocto.io/pub/repro-fail/ in the form ``oe-reproducible +
<date> + <random ID>``, e.g. ``oe-reproducible-20200202-1lm8o1th``.
The project's current reproducibility status can be seen at

View File

@@ -69,7 +69,7 @@ box to "generate an email to QA" is also checked.
When the build completes, an email is sent out using the ``send-qa-email``
script in the :yocto_git:`yocto-autobuilder-helper </yocto-autobuilder-helper>`
repository to the list of people configured for that release. Release builds
are placed into a directory in https://autobuilder.yocto.io/pub/releases on the
are placed into a directory in https://valkyrie.yocto.io/pub/releases on the
Autobuilder which is included in the email. The process from here is
more manual and control is effectively passed to release engineering.
The next steps include:

View File

@@ -38,7 +38,7 @@ Benefits
and flexible: it gives users the ultimate power to change pretty much any
aspect of the system but as with most things, power comes with responsibility.
The Yocto Project would like to see people able to mix and match BSPs with
distro configs or software stacks and be able to merge succesfully.
distro configs or software stacks and be able to merge successfully.
Over time, the project identified characteristics in layers that allow them
to operate well together. "anti-patterns" were also found, preventing layers
from working well together.

View File

@@ -1,7 +1,7 @@
DISTRO = "poky"
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
#DISTRO_VERSION = "3.4+snapshot-${METADATA_REVISION}"
DISTRO_VERSION = "4.0.30"
DISTRO_VERSION = "4.0.32"
DISTRO_CODENAME = "kirkstone"
SDK_VENDOR = "-pokysdk"
SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"

View File

@@ -18,6 +18,9 @@ TARGET_GOMIPS = "${@go_map_mips(d.getVar('TARGET_ARCH'), d.getVar('TUNE_FEATURES
TARGET_GOARM:class-native = "7"
TARGET_GO386:class-native = "sse2"
TARGET_GOMIPS:class-native = "hardfloat"
TARGET_GOARM:class-crosssdk = "7"
TARGET_GO386:class-crosssdk = "sse2"
TARGET_GOMIPS:class-crosssdk = "hardfloat"
TARGET_GOTUPLE = "${TARGET_GOOS}_${TARGET_GOARCH}"
GO_BUILD_BINDIR = "${@['bin/${HOST_GOTUPLE}','bin'][d.getVar('BUILD_GOTUPLE') == d.getVar('HOST_GOTUPLE')]}"

View File

@@ -690,7 +690,7 @@ DEBIAN_MIRROR = "http://ftp.debian.org/debian/pool"
GENTOO_MIRROR = "http://distfiles.gentoo.org/distfiles"
GNOME_GIT = "git://gitlab.gnome.org/GNOME"
GNOME_MIRROR = "https://download.gnome.org/sources/"
GNU_MIRROR = "https://ftp.gnu.org/gnu"
GNU_MIRROR = "https://ftpmirror.gnu.org/gnu"
GNUPG_MIRROR = "https://www.gnupg.org/ftp/gcrypt"
GPE_MIRROR = "http://gpe.linuxtogo.org/download/source"
KERNELORG_MIRROR = "https://cdn.kernel.org/pub"

View File

@@ -17,7 +17,7 @@ class BuildCpioTest(OESDKTestCase):
"""
def test_cpio(self):
with tempfile.TemporaryDirectory(prefix="cpio-", dir=self.tc.sdk_dir) as testdir:
tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz")
tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftpmirror.gnu.org/gnu/cpio/cpio-2.13.tar.gz")
dirs = {}
dirs["source"] = os.path.join(testdir, "cpio-2.13")

View File

@@ -40,7 +40,7 @@ class MetaIDE(OESelftestTestCase):
def test_meta_ide_can_build_cpio_project(self):
dl_dir = self.td.get('DL_DIR', None)
self.project = SDKBuildProject(self.tmpdir_metaideQA + "/cpio/", self.environment_script_path,
"https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
"https://ftpmirror.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
self.tmpdir_metaideQA, self.td['DATETIME'], dl_dir=dl_dir)
self.project.download_archive()
self.assertEqual(self.project.run_configure('$CONFIGURE_FLAGS --disable-maintainer-mode','sed -i -e "/char \*program_name/d" src/global.c;'), 0,

View File

@@ -10,7 +10,7 @@ DEPENDS = "efivar popt"
COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
SRC_URI = "git://github.com/rhinstaller/efibootmgr.git;protocol=https;branch=master \
SRC_URI = "git://github.com/rhinstaller/efibootmgr.git;protocol=https;branch=main \
file://0001-remove-extra-decl.patch \
file://97668ae0bce776a36ea2001dea63d376be8274ac.patch \
file://0001-src-make-compatible-with-efivar-38.patch \

View File

@@ -0,0 +1,75 @@
From 4cef2fc7308b2132317ad166939994f098b41561 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@arm.com>
Date: Tue, 9 Sep 2025 14:23:14 +0100
Subject: [PATCH] CVE-2024-56738
Backport an algorithmic change to grub_crypto_memcmp() so that it completes in
constant time and thus isn't susceptible to side-channel attacks.
This is a partial backport of grub 0739d24cd
("libgcrypt: Adjust import script, definitions and API users for libgcrypt 1.11")
CVE: CVE-2024-56738
Upstream-Status: Backport [0739d24cd]
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
---
grub-core/lib/crypto.c | 23 ++++++++++++++++-------
include/grub/crypto.h | 2 +-
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/grub-core/lib/crypto.c b/grub-core/lib/crypto.c
index ca334d5..1bfa922 100644
--- a/grub-core/lib/crypto.c
+++ b/grub-core/lib/crypto.c
@@ -433,19 +433,28 @@ grub_crypto_gcry_error (gcry_err_code_t in)
return GRUB_ACCESS_DENIED;
}
+/*
+ * Compare byte arrays of length LEN, return 1 if it's not same,
+ * 0, otherwise.
+ */
int
-grub_crypto_memcmp (const void *a, const void *b, grub_size_t n)
+grub_crypto_memcmp (const void *b1, const void *b2, grub_size_t len)
{
- register grub_size_t counter = 0;
- const grub_uint8_t *pa, *pb;
+ const grub_uint8_t *a = b1;
+ const grub_uint8_t *b = b2;
+ int ab, ba;
+ grub_size_t i;
- for (pa = a, pb = b; n; pa++, pb++, n--)
+ /* Constant-time compare. */
+ for (i = 0, ab = 0, ba = 0; i < len; i++)
{
- if (*pa != *pb)
- counter++;
+ /* If a[i] != b[i], either ab or ba will be negative. */
+ ab |= a[i] - b[i];
+ ba |= b[i] - a[i];
}
- return !!counter;
+ /* 'ab | ba' is negative when buffers are not equal, extract sign bit. */
+ return ((unsigned int)(ab | ba) >> (sizeof(unsigned int) * 8 - 1)) & 1;
}
#ifndef GRUB_UTIL
diff --git a/include/grub/crypto.h b/include/grub/crypto.h
index 21cd1f7..432912b 100644
--- a/include/grub/crypto.h
+++ b/include/grub/crypto.h
@@ -393,7 +393,7 @@ grub_crypto_pbkdf2 (const struct gcry_md_spec *md,
grub_uint8_t *DK, grub_size_t dkLen);
int
-grub_crypto_memcmp (const void *a, const void *b, grub_size_t n);
+grub_crypto_memcmp (const void *b1, const void *b2, grub_size_t len);
int
grub_password_get (char buf[], unsigned buf_size);
--
2.40.0

View File

@@ -59,6 +59,7 @@ SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
file://CVE-2025-0678_CVE-2025-1125.patch \
file://CVE-2025-0690.patch \
file://CVE-2025-1118.patch \
file://CVE-2024-56738.patch \
"
SRC_URI[sha256sum] = "23b64b4c741569f9426ed2e3d0e6780796fca081bee4c99f62aa3f53ae803f5f"
@@ -69,6 +70,8 @@ CVE_CHECK_IGNORE += "CVE-2019-14865"
CVE_CHECK_IGNORE += "CVE-2021-46705"
# not-applicable-platform: Applies only to RHEL/Fedora
CVE_CHECK_IGNORE += "CVE-2024-1048 CVE-2023-4001"
# not-applicable-platform: Applies only to Ubuntu
CVE_CHECK_IGNORE += "CVE-2024-2312"
DEPENDS = "flex-native bison-native gettext-native"

View File

@@ -0,0 +1,56 @@
From 1406fc918977bba4dac0af5e22e63a5553aa6aff Mon Sep 17 00:00:00 2001
From: Paul HENRYS <paul.henrys_ext@softathome.com>
Date: Thu, 9 Oct 2025 17:43:28 +0200
Subject: [PATCH] net: bootp: Prevent buffer overflow to avoid leaking the RAM
content
CVE-2024-42040 describes a possible buffer overflow when calling
bootp_process_vendor() in bootp_handler() since the total length
of the packet is passed to bootp_process_vendor() without being
reduced to len-(offsetof(struct bootp_hdr,bp_vend)+4).
The packet length is also checked against its minimum size to avoid
reading data from struct bootp_hdr outside of the packet length.
Signed-off-by: Paul HENRYS <paul.henrys_ext@softathome.com>
Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com>
CVE: CVE-2024-42040
Upstream-Status: Backport [https://source.denx.de/u-boot/u-boot/-/commit/81e5708cc2c865df606e49aed5415adb2a662171]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
net/bootp.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/net/bootp.c b/net/bootp.c
index 68002909634..843180d296c 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -362,6 +362,14 @@ static void bootp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
debug("got BOOTP packet (src=%d, dst=%d, len=%d want_len=%zu)\n",
src, dest, len, sizeof(struct bootp_hdr));
+ /* Check the minimum size of a BOOTP packet is respected.
+ * A BOOTP packet is between 300 bytes and 576 bytes big
+ */
+ if (len < offsetof(struct bootp_hdr, bp_vend) + 64) {
+ printf("Error: got an invalid BOOTP packet (len=%u)\n", len);
+ return;
+ }
+
bp = (struct bootp_hdr *)pkt;
/* Filter out pkts we don't want */
@@ -379,7 +387,8 @@ static void bootp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
/* Retrieve extended information (we must parse the vendor area) */
if (net_read_u32((u32 *)&bp->bp_vend[0]) == htonl(BOOTP_VENDOR_MAGIC))
- bootp_process_vendor((uchar *)&bp->bp_vend[4], len);
+ bootp_process_vendor((uchar *)&bp->bp_vend[4], len -
+ (offsetof(struct bootp_hdr, bp_vend) + 4));
net_set_timeout_handler(0, (thand_f *)0);
bootstage_mark_name(BOOTSTAGE_ID_BOOTP_STOP, "bootp_stop");
--
2.49.0

View File

@@ -14,7 +14,9 @@ PE = "1"
# repo during parse
SRCREV = "d637294e264adfeb29f390dfc393106fd4d41b17"
SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master"
SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master \
file://CVE-2024-42040.patch \
"
S = "${WORKDIR}/git"
B = "${WORKDIR}/build"

View File

@@ -20,7 +20,7 @@ SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.xz \
file://0001-avoid-start-failure-with-bind-user.patch \
"
SRC_URI[sha256sum] = "fb373fac5ebbc41c645160afd5a9fb451918f6c0e69ab1d9474154e2b515de40"
SRC_URI[sha256sum] = "6ddc1d981511c4da0b203b0513af131e5d15e5f1c261145736fe1f35dd1fe79d"
UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
# follow the ESV versions divisible by 2

View File

@@ -0,0 +1,98 @@
From 35d5917652106aede47621bb3f64044604164043 Mon Sep 17 00:00:00 2001
From: "djm@openbsd.org" <djm@openbsd.org>
Date: Thu, 4 Sep 2025 00:29:09 +0000
Subject: [PATCH] upstream: Improve rules for %-expansion of username.
Usernames passed on the commandline will no longer be subject to
% expansion. Some tools invoke ssh with connection information
(i.e. usernames and host names) supplied from untrusted sources.
These may contain % expansion sequences which could yield
unexpected results.
Since openssh-9.6, all usernames have been subject to validity
checking. This change tightens the validity checks by refusing
usernames that include control characters (again, these can cause
surprises when supplied adversarially).
This change also relaxes the validity checks in one small way:
usernames supplied via the configuration file as literals (i.e.
include no % expansion characters) are not subject to these
validity checks. This allows usernames that contain arbitrary
characters to be used, but only via configuration files. This
is done on the basis that ssh's configuration is trusted.
Pointed out by David Leadbeater, ok deraadt@
OpenBSD-Commit-ID: e2f0c871fbe664aba30607321575e7c7fc798362
CVE: CVE-2025-61984
Upstream-Status: Backport [https://github.com/openssh/openssh-portable/commit/35d5917652106aede47621bb3f64044604164043]
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
---
ssh.c | 11 +++++++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/ssh.c b/ssh.c
index 82ed15f..d4e2040 100644
--- a/ssh.c
+++ b/ssh.c
@@ -634,6 +634,8 @@ valid_ruser(const char *s)
if (*s == '-')
return 0;
for (i = 0; s[i] != 0; i++) {
+ if (iscntrl((u_char)s[i]))
+ return 0;
if (strchr("'`\";&<>|(){}", s[i]) != NULL)
return 0;
/* Disallow '-' after whitespace */
@@ -655,6 +657,7 @@ main(int ac, char **av)
struct ssh *ssh = NULL;
int i, r, opt, exit_status, use_syslog, direct, timeout_ms;
int was_addr, config_test = 0, opt_terminated = 0, want_final_pass = 0;
+ int user_on_commandline = 0, user_was_default = 0, user_expanded = 0;
char *p, *cp, *line, *argv0, *logfile, *host_arg;
char cname[NI_MAXHOST], thishost[NI_MAXHOST];
struct stat st;
@@ -995,8 +998,10 @@ main(int ac, char **av)
}
break;
case 'l':
- if (options.user == NULL)
+ if (options.user == NULL) {
options.user = optarg;
+ user_on_commandline = 1;
+ }
break;
case 'L':
@@ -1099,6 +1104,7 @@ main(int ac, char **av)
if (options.user == NULL) {
options.user = tuser;
tuser = NULL;
+ user_on_commandline = 1;
}
free(tuser);
if (options.port == -1 && tport != -1)
@@ -1113,6 +1119,7 @@ main(int ac, char **av)
if (options.user == NULL) {
options.user = p;
p = NULL;
+ user_on_commandline = 1;
}
*cp++ = '\0';
host = xstrdup(cp);
@@ -1265,8 +1272,10 @@ main(int ac, char **av)
if (fill_default_options(&options) != 0)
cleanup_exit(255);
- if (options.user == NULL)
+ if (options.user == NULL) {
+ user_was_default = 1;
options.user = xstrdup(pw->pw_name);
+ }
/*
* If ProxyJump option specified, then construct a ProxyCommand now.
--
2.50.1

View File

@@ -0,0 +1,35 @@
From 54928cb9eaa7143ff17f463efa7ed3109afdbf30 Mon Sep 17 00:00:00 2001
From: "djm@openbsd.org" <djm@openbsd.org>
Date: Thu, 4 Sep 2025 00:30:06 +0000
Subject: [PATCH] upstream: don't allow \0 characters in url-encoded strings.
Suggested by David Leadbeater, ok deraadt@
OpenBSD-Commit-ID: c92196cef0f970ceabc1e8007a80b01e9b7cd49c
CVE: CVE-2025-61985
Upstream-Status: Backport [https://github.com/openssh/openssh-portable/commit/43b3bff47bb029f2299bacb6a36057981b39fdb0]
Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
---
misc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/misc.c b/misc.c
index 6135b15..3d133b5 100644
--- a/misc.c
+++ b/misc.c
@@ -934,9 +934,10 @@ urldecode(const char *src)
*dst++ = ' ';
break;
case '%':
+ /* note: don't allow \0 characters */
if (!isxdigit((unsigned char)src[1]) ||
!isxdigit((unsigned char)src[2]) ||
- (ch = hexchar(src + 1)) == -1) {
+ (ch = hexchar(src + 1)) == -1 || ch == 0) {
free(ret);
return NULL;
}
--
2.40.0

View File

@@ -39,6 +39,8 @@ SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar
file://CVE-2024-6387.patch \
file://CVE-2025-26465.patch \
file://CVE-2025-32728.patch \
file://CVE-2025-61985.patch \
file://CVE-2025-61984.patch \
"
SRC_URI[sha256sum] = "fd497654b7ab1686dac672fb83dfb4ba4096e8b5ffcdaccd262380ae58bec5e7"

View File

@@ -25,7 +25,7 @@ SRC_URI:append:class-nativesdk = " \
file://environment.d-openssl.sh \
"
SRC_URI[sha256sum] = "dfdd77e4ea1b57ff3a6dbde6b0bdc3f31db5ac99e7fdd4eaf9e1fbb6ec2db8ce"
SRC_URI[sha256sum] = "d80c34f5cf902dccf1f1b5df5ebb86d0392e37049e5d73df1b3abae72e4ffe8b"
inherit lib_package multilib_header multilib_script ptest perlnative
MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"

View File

@@ -0,0 +1,79 @@
From 726432d7622cc0088ac353d073b59628b590ea44 Mon Sep 17 00:00:00 2001
From: Jouni Malinen <j@w1.fi>
Date: Sat, 25 Jan 2025 11:21:16 +0200
Subject: [PATCH] RADIUS: Drop pending request only when accepting the response
The case of an invalid authenticator in a RADIUS response could imply
that the response is not from the correct RADIUS server and as such,
such a response should be discarded without changing internal state for
the pending request. The case of an unknown response (RADIUS_RX_UNKNOWN)
is somewhat more complex since it could have been indicated before
validating the authenticator. In any case, it seems better to change the
state for the pending request only when we have fully accepted the
response.
Allowing the internal state of pending RADIUS request to change based on
responses that are not fully validation could have allow at least a
theoretical DoS attack if an attacker were to have means for injecting
RADIUS messages to the network using the IP address of the real RADIUS
server and being able to do so more quickly than the real server and
with the matching identifier from the request header (i.e., either by
flooding 256 responses quickly or by having means to capture the RADIUS
request). These should not really be realistic options in a properly
protected deployment, but nevertheless it is good to be more careful in
processing RADIUS responses.
Remove a pending RADIUS request from the internal list only when having
fully accepted a matching RADIUS response, i.e., after one of the
registered handlers has confirmed that the authenticator is valid and
processing of the response has succeeded.
Signed-off-by: Jouni Malinen <j@w1.fi>
CVE: CVE-2025-24912
Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=726432d7622cc0088ac353d073b59628b590ea44]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
src/radius/radius_client.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/src/radius/radius_client.c b/src/radius/radius_client.c
index 2a7f36170..7909b29a7 100644
--- a/src/radius/radius_client.c
+++ b/src/radius/radius_client.c
@@ -922,13 +922,6 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx)
roundtrip / 100, roundtrip % 100);
rconf->round_trip_time = roundtrip;
- /* Remove ACKed RADIUS packet from retransmit list */
- if (prev_req)
- prev_req->next = req->next;
- else
- radius->msgs = req->next;
- radius->num_msgs--;
-
for (i = 0; i < num_handlers; i++) {
RadiusRxResult res;
res = handlers[i].handler(msg, req->msg, req->shared_secret,
@@ -939,6 +932,13 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx)
radius_msg_free(msg);
/* fall through */
case RADIUS_RX_QUEUED:
+ /* Remove ACKed RADIUS packet from retransmit list */
+ if (prev_req)
+ prev_req->next = req->next;
+ else
+ radius->msgs = req->next;
+ radius->num_msgs--;
+
radius_client_msg_free(req);
return;
case RADIUS_RX_INVALID_AUTHENTICATOR:
@@ -960,7 +960,6 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx)
msg_type, hdr->code, hdr->identifier,
invalid_authenticator ? " [INVALID AUTHENTICATOR]" :
"");
- radius_client_msg_free(req);
fail:
radius_msg_free(msg);

View File

@@ -0,0 +1,70 @@
From 339a334551ca911187cc870f4f97ef08e11db109 Mon Sep 17 00:00:00 2001
From: Jouni Malinen <quic_jouni@quicinc.com>
Date: Wed, 5 Feb 2025 19:23:39 +0200
Subject: [PATCH] RADIUS: Fix pending request dropping
A recent change to this moved the place where the processed RADIUS
request was removed from the pending list to happen after the message
handler had been called. This did not take into account possibility of
the handler adding a new pending request in the list and the prev_req
pointer not necessarily pointing to the correct entry anymore. As such,
some of the pending requests could have been lost and that would result
in not being able to process responses to those requests and also, to a
memory leak.
Fix this by determining prev_req at the point when the pending request
is being removed, i.e., after the handler function has already added a
new entry.
Fixes: 726432d7622c ("RADIUS: Drop pending request only when accepting the response")
Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
CVE: CVE-2025-24912
Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=339a334551ca911187cc870f4f97ef08e11db109]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
src/radius/radius_client.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/radius/radius_client.c b/src/radius/radius_client.c
index 7909b29a7..d4faa7936 100644
--- a/src/radius/radius_client.c
+++ b/src/radius/radius_client.c
@@ -824,7 +824,7 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx)
struct radius_hdr *hdr;
struct radius_rx_handler *handlers;
size_t num_handlers, i;
- struct radius_msg_list *req, *prev_req;
+ struct radius_msg_list *req, *prev_req, *r;
struct os_reltime now;
struct hostapd_radius_server *rconf;
int invalid_authenticator = 0;
@@ -887,7 +887,6 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx)
break;
}
- prev_req = NULL;
req = radius->msgs;
while (req) {
/* TODO: also match by src addr:port of the packet when using
@@ -899,7 +898,6 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx)
hdr->identifier)
break;
- prev_req = req;
req = req->next;
}
@@ -933,6 +931,12 @@ static void radius_client_receive(int sock, void *eloop_ctx, void *sock_ctx)
/* fall through */
case RADIUS_RX_QUEUED:
/* Remove ACKed RADIUS packet from retransmit list */
+ prev_req = NULL;
+ for (r = radius->msgs; r; r = r->next) {
+ if (r == req)
+ break;
+ prev_req = r;
+ }
if (prev_req)
prev_req->next = req->next;
else

View File

@@ -43,6 +43,8 @@ SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \
file://CVE-2022-37660-0003.patch \
file://CVE-2022-37660-0004.patch \
file://CVE-2022-37660-0005.patch \
file://CVE-2025-24912-01.patch \
file://CVE-2025-24912-02.patch \
"
SRC_URI[sha256sum] = "20df7ae5154b3830355f8ab4269123a87affdea59fe74fe9292a91d0d7e17b2f"

View File

@@ -0,0 +1,57 @@
From f5e1bf966b19ea1821f00a8c9ecd7774598689b4 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Wed, 24 Sep 2025 03:28:47 +0200
Subject: [PATCH] archival/libarchive: sanitize filenames on output (prevent
control sequence attacks
This fixes CVE-2025-46394 (terminal escape sequence injection)
Original credit: Ian.Norton at entrust.com
function old new delta
header_list 9 15 +6
header_verbose_list 239 244 +5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 11/0) Total: 11 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
CVE: CVE-2025-46394
Upstream-Status: Backport [https://git.busybox.net/busybox/commit/?id=f5e1bf966b19ea1821f00a8c9ecd7774598689b4]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
archival/libarchive/header_list.c | 2 +-
archival/libarchive/header_verbose_list.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/archival/libarchive/header_list.c b/archival/libarchive/header_list.c
index 0621aa406..9490b3635 100644
--- a/archival/libarchive/header_list.c
+++ b/archival/libarchive/header_list.c
@@ -8,5 +8,5 @@
void FAST_FUNC header_list(const file_header_t *file_header)
{
//TODO: cpio -vp DIR should output "DIR/NAME", not just "NAME" */
- puts(file_header->name);
+ puts(printable_string(file_header->name));
}
diff --git a/archival/libarchive/header_verbose_list.c b/archival/libarchive/header_verbose_list.c
index a575a08a0..e7a09430d 100644
--- a/archival/libarchive/header_verbose_list.c
+++ b/archival/libarchive/header_verbose_list.c
@@ -57,13 +57,13 @@ void FAST_FUNC header_verbose_list(const file_header_t *file_header)
ptm->tm_hour,
ptm->tm_min,
ptm->tm_sec,
- file_header->name);
+ printable_string(file_header->name));
#endif /* FEATURE_TAR_UNAME_GNAME */
/* NB: GNU tar shows "->" for symlinks and "link to" for hardlinks */
if (file_header->link_target) {
- printf(" -> %s", file_header->link_target);
+ printf(" -> %s", printable_string(file_header->link_target));
}
bb_putchar('\n');
}

View File

@@ -0,0 +1,32 @@
From 7378db981d87b4a2264e14d60340a7fb5c67ae59 Mon Sep 17 00:00:00 2001
From: Peter Marko <peter.marko@siemens.com>
Date: Fri, 3 Oct 2025 16:12:56 +0200
Subject: [PATCH] testsuite/tar.tests: fix test after CVE-2025-46394
tar now sanitizes output and this test needs to expect that.
Signed-off-by: Peter Marko <peter.marko@siemens.com>
CVE: CVE-2025-46394
Upstream-Status: Submitted [https://lists.busybox.net/pipermail/busybox/2025-October/091743.html]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
testsuite/tar.tests | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/testsuite/tar.tests b/testsuite/tar.tests
index 0f2e89112..48fc38114 100755
--- a/testsuite/tar.tests
+++ b/testsuite/tar.tests
@@ -325,9 +325,9 @@ unset LANG
rm -rf etc usr
' "\
etc/ssl/certs/3b2716e5.0
-etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem
+etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_Sa??lay??c??s??.pem
etc/ssl/certs/f80cc7f6.0
-usr/share/ca-certificates/mozilla/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.crt
+usr/share/ca-certificates/mozilla/EBG_Elektronik_Sertifika_Hizmet_Sa??lay??c??s??.crt
0
etc/ssl/certs/3b2716e5.0 -> EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem
etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem -> /usr/share/ca-certificates/mozilla/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.crt

View File

@@ -59,6 +59,8 @@ SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
file://CVE-2023-42366.patch \
file://0001-cut-Fix-s-flag-to-omit-blank-lines.patch \
file://CVE-2023-39810.patch \
file://CVE-2025-46394-01.patch \
file://CVE-2025-46394-02.patch \
"
SRC_URI:append:libc-musl = " file://musl.cfg "

View File

@@ -0,0 +1,83 @@
From 4dd540505d40babe488404f3174ec39f49a84485 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Mon, 4 Aug 2025 15:10:21 -0500
Subject: [PATCH] openssl: properly check return value when writing to BIO
objects
In particular, we will read out of bounds, and then write the invalid
memory, if BIO_write() fails when getting the PROP_CERTIFICATE_PEM
property. Here we attempt to check the return value, but the check is
not correct.
This also fixes a leak of the BIO in the same place.
Also add error checking to PROP_SUBJECT_NAME and PROP_ISSUER_NAME, for
good measure.
Fixes #226
CVE: CVE-2025-60018
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib-networking/-/commit/4dd540505d40babe488404f3174ec39f49a84485]
Signed-off-by: Rajeshkumar Ramasamy <rajeshkumar.ramasamy@windriver.com>
---
tls/openssl/gtlscertificate-openssl.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/tls/openssl/gtlscertificate-openssl.c b/tls/openssl/gtlscertificate-openssl.c
index 648f3e8..b536559 100644
--- a/tls/openssl/gtlscertificate-openssl.c
+++ b/tls/openssl/gtlscertificate-openssl.c
@@ -362,15 +362,12 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_CERTIFICATE_PEM:
bio = BIO_new (BIO_s_mem ());
- if (!PEM_write_bio_X509 (bio, openssl->cert) || !BIO_write (bio, "\0", 1))
- certificate_pem = NULL;
- else
+ if (PEM_write_bio_X509 (bio, openssl->cert) == 1 && BIO_write (bio, "\0", 1) == 1)
{
BIO_get_mem_data (bio, &certificate_pem);
g_value_set_string (value, certificate_pem);
-
- BIO_free_all (bio);
}
+ BIO_free_all (bio);
break;
case PROP_PRIVATE_KEY:
@@ -411,8 +408,12 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_SUBJECT_NAME:
bio = BIO_new (BIO_s_mem ());
name = X509_get_subject_name (openssl->cert);
- X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS);
- BIO_write (bio, "\0", 1);
+ if (X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS) < 0 ||
+ BIO_write (bio, "\0", 1) != 1)
+ {
+ BIO_free_all (bio);
+ break;
+ }
BIO_get_mem_data (bio, (char **)&name_string);
g_value_set_string (value, name_string);
BIO_free_all (bio);
@@ -421,9 +422,13 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_ISSUER_NAME:
bio = BIO_new (BIO_s_mem ());
name = X509_get_issuer_name (openssl->cert);
- X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS);
- BIO_write (bio, "\0", 1);
- BIO_get_mem_data (bio, &name_string);
+ if (X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS) < 0 ||
+ BIO_write (bio, "\0", 1) != 1)
+ {
+ BIO_free_all (bio);
+ break;
+ }
+ BIO_get_mem_data (bio, (char **)&name_string);
g_value_set_string (value, name_string);
BIO_free_all (bio);
break;
--
2.48.1

View File

@@ -0,0 +1,137 @@
From 70df675dd4f5e4a593b2f95406c1aac031aa8bc7 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Thu, 21 Aug 2025 17:21:01 -0500
Subject: [PATCH] openssl: check return values of BIO_new()
We probably need to check even more return values of even more OpenSSL
functions, but these ones allocate memory and that's particularly
important to get right.
CVE: CVE-2025-60019
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib-networking/-/commit/70df675dd4f5e4a593b2f95406c1aac031aa8bc7]
Signed-off-by: Rajeshkumar Ramasamy <rajeshkumar.ramasamy@windriver.com>
---
tls/openssl/gtlscertificate-openssl.c | 39 ++++++++++++++++++++-------
1 file changed, 29 insertions(+), 10 deletions(-)
diff --git a/tls/openssl/gtlscertificate-openssl.c b/tls/openssl/gtlscertificate-openssl.c
index 8f828a7..f7fde51 100644
--- a/tls/openssl/gtlscertificate-openssl.c
+++ b/tls/openssl/gtlscertificate-openssl.c
@@ -156,6 +156,9 @@ export_privkey_to_der (GTlsCertificateOpenssl *openssl,
goto err;
bio = BIO_new (BIO_s_mem ());
+ if (!bio)
+ goto err;
+
if (i2d_PKCS8_PRIV_KEY_INFO_bio (bio, pkcs8) == 0)
goto err;
@@ -189,6 +192,9 @@ export_privkey_to_pem (GTlsCertificateOpenssl *openssl)
return NULL;
bio = BIO_new (BIO_s_mem ());
+ if (!bio)
+ goto out;
+
ret = PEM_write_bio_PKCS8PrivateKey (bio, openssl->key, NULL, NULL, 0, NULL, NULL);
if (ret == 0)
goto out;
@@ -201,7 +207,7 @@ export_privkey_to_pem (GTlsCertificateOpenssl *openssl)
result = g_strdup (data);
out:
- BIO_free_all (bio);
+ g_clear_pointer (&bio, BIO_free_all);
return result;
}
@@ -216,7 +222,7 @@ g_tls_certificate_openssl_get_property (GObject *object,
guint8 *data;
BIO *bio;
GByteArray *byte_array;
- char *certificate_pem;
+ const char *certificate_pem;
long size;
const ASN1_TIME *time_asn1;
@@ -251,12 +257,12 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_CERTIFICATE_PEM:
bio = BIO_new (BIO_s_mem ());
- if (PEM_write_bio_X509 (bio, openssl->cert) == 1 && BIO_write (bio, "\0", 1) == 1)
+ if (bio && PEM_write_bio_X509 (bio, openssl->cert) == 1 && BIO_write (bio, "\0", 1) == 1)
{
BIO_get_mem_data (bio, &certificate_pem);
g_value_set_string (value, certificate_pem);
}
- BIO_free_all (bio);
+ g_clear_pointer (&bio, BIO_free_all);
break;
case PROP_PRIVATE_KEY:
@@ -296,6 +302,8 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_SUBJECT_NAME:
bio = BIO_new (BIO_s_mem ());
+ if (!bio)
+ break;
name = X509_get_subject_name (openssl->cert);
if (X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS) < 0 ||
BIO_write (bio, "\0", 1) != 1)
@@ -310,6 +318,8 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_ISSUER_NAME:
bio = BIO_new (BIO_s_mem ());
+ if (!bio)
+ break;
name = X509_get_issuer_name (openssl->cert);
if (X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS) < 0 ||
BIO_write (bio, "\0", 1) != 1)
@@ -377,8 +387,11 @@ g_tls_certificate_openssl_set_property (GObject *object,
break;
g_return_if_fail (openssl->have_cert == FALSE);
bio = BIO_new_mem_buf ((gpointer)string, -1);
- openssl->cert = PEM_read_bio_X509 (bio, NULL, NULL, NULL);
- BIO_free (bio);
+ if (bio)
+ {
+ openssl->cert = PEM_read_bio_X509 (bio, NULL, NULL, NULL);
+ BIO_free (bio);
+ }
if (openssl->cert)
openssl->have_cert = TRUE;
else if (!openssl->construct_error)
@@ -397,8 +410,11 @@ g_tls_certificate_openssl_set_property (GObject *object,
break;
g_return_if_fail (openssl->have_key == FALSE);
bio = BIO_new_mem_buf (bytes->data, bytes->len);
- openssl->key = d2i_PrivateKey_bio (bio, NULL);
- BIO_free (bio);
+ if (bio)
+ {
+ openssl->key = d2i_PrivateKey_bio (bio, NULL);
+ BIO_free (bio);
+ }
if (openssl->key)
openssl->have_key = TRUE;
else if (!openssl->construct_error)
@@ -417,8 +433,11 @@ g_tls_certificate_openssl_set_property (GObject *object,
break;
g_return_if_fail (openssl->have_key == FALSE);
bio = BIO_new_mem_buf ((gpointer)string, -1);
- openssl->key = PEM_read_bio_PrivateKey (bio, NULL, NULL, NULL);
- BIO_free (bio);
+ if (bio)
+ {
+ openssl->key = PEM_read_bio_PrivateKey (bio, NULL, NULL, NULL);
+ BIO_free (bio);
+ }
if (openssl->key)
openssl->have_key = TRUE;
else if (!openssl->construct_error)
--
2.48.1

View File

@@ -24,6 +24,8 @@ GNOMEBASEBUILDCLASS = "meson"
inherit gnomebase gettext upstream-version-is-even gio-module-cache ptest-gnome
SRC_URI += "file://run-ptest"
SRC_URI += "file://CVE-2025-60018.patch"
SRC_URI += "file://CVE-2025-60019.patch"
FILES:${PN} += "\
${libdir}/gio/modules/libgio*.so \

View File

@@ -1,6 +1,6 @@
SRCBRANCH ?= "release/2.35/master"
PV = "2.35"
SRCREV_glibc ?= "a66bc3941ff298e474d5f02d0c3303401951141f"
SRCREV_glibc ?= "4e50046821f05ada5f14c76803845125ddb3ed7d"
SRCREV_localedef ?= "794da69788cbf9bf57b59a852f9f11307663fa87"
GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"

View File

@@ -1,6 +1,6 @@
From 31d9848830e496f57d4182b518467c4c63bfd4bd Mon Sep 17 00:00:00 2001
From 0402999b82f697011de388f61bad68da26060bef Mon Sep 17 00:00:00 2001
From: Frank Barrus <frankbarrus_sw@shaggy.cc>
Date: Mon, 16 Jun 2025 22:37:54 -0700
Date: Tue, 14 Oct 2025 03:55:17 -0700
Subject: [PATCH] pthreads NPTL: lost wakeup fix 2
This fixes the lost wakeup (from a bug in signal stealing) with a change
@@ -65,18 +65,19 @@ full wakeup from a G1/G2 switch.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
Commit : 1db84775f831a1494993ce9c118deaf9537cc50a
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=1db84775f831a1494993ce9c118deaf9537cc50a]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002277.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_common.c | 106 +++++++++------------------
nptl/pthread_cond_common.c | 105 +++++++++------------------
nptl/pthread_cond_wait.c | 144 ++++++++++++-------------------------
2 files changed, 81 insertions(+), 169 deletions(-)
2 files changed, 81 insertions(+), 168 deletions(-)
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index fb035f72c3..8dd7037923 100644
index fb035f72..a55eee3e 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -201,7 +201,6 @@ static bool __attribute__ ((unused))
@@ -87,7 +88,7 @@ index fb035f72c3..8dd7037923 100644
unsigned int g1 = *g1index;
/* If there is no waiter in G2, we don't do anything. The expression may
@@ -222,85 +221,46 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -222,84 +221,46 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
* New waiters arriving concurrently with the group switching will all go
into G2 until we atomically make the switch. Waiters existing in G2
are not affected.
@@ -176,7 +177,6 @@ index fb035f72c3..8dd7037923 100644
- that this is now a new group (see __pthread_cond_wait_common for the
- matching acquire MO loads). */
- atomic_store_release (cond->__data.__g_signals + g1, 0);
-
+ unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U;
+
+ /* If any waiters still hold group references (and thus could be blocked),
@@ -201,10 +201,10 @@ index fb035f72c3..8dd7037923 100644
+
+ futex_wake (cond->__data.__g_signals + g1, INT_MAX, private);
+ }
/* At this point, the old G1 is now a valid new G2 (but not in use yet).
No old waiter can neither grab a signal nor acquire a reference without
noticing that __g1_start is larger.
@@ -311,6 +271,10 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -311,6 +272,10 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
g1 ^= 1;
*g1index ^= 1;
@@ -216,7 +216,7 @@ index fb035f72c3..8dd7037923 100644
lock. */
unsigned int orig_size = wseq - (old_g1_start + old_orig_size);
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 20c348a503..1cb3dbf7b0 100644
index 20c348a5..1cb3dbf7 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -238,9 +238,7 @@ __condvar_cleanup_waiting (void *arg)

View File

@@ -0,0 +1,54 @@
From 4f78382dd671f381db6d1f452e6f1593d17b177e Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Tue, 14 Oct 2025 06:53:40 -0700
Subject: [PATCH] nptl: PTHREAD_COND_INITIALIZER compatibility with pre-2.41
versions (bug 32786)
The new initializer and struct layout does not initialize the
__g_signals field in the old struct layout before the change in
commit c36fc50781995e6758cae2b6927839d0157f213c ("nptl: Remove
g_refs from condition variables"). Bring back fields at the end
of struct __pthread_cond_s, so that they are again zero-initialized.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: dbc5a50d12eff4cb3f782129029d04b8a76f58e7
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002282.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
sysdeps/nptl/bits/thread-shared-types.h | 2 ++
sysdeps/nptl/pthread.h | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/sysdeps/nptl/bits/thread-shared-types.h b/sysdeps/nptl/bits/thread-shared-types.h
index 6f17afa4..2354ea21 100644
--- a/sysdeps/nptl/bits/thread-shared-types.h
+++ b/sysdeps/nptl/bits/thread-shared-types.h
@@ -99,6 +99,8 @@ struct __pthread_cond_s
unsigned int __g1_orig_size;
unsigned int __wrefs;
unsigned int __g_signals[2];
+ unsigned int __unused_initialized_1;
+ unsigned int __unused_initialized_2;
};
typedef unsigned int __tss_t;
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index bbb36540..8d6d24ff 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -152,7 +152,7 @@ enum
/* Conditional variable handling. */
-#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, 0, 0, {0, 0} } }
+#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, 0, 0, {0, 0}, 0, 0 } }
/* Cleanup buffers */
--
2.49.0

View File

@@ -1,6 +1,6 @@
From 6aab1191e35a3da66e8c49d95178a9d77c119a1f Mon Sep 17 00:00:00 2001
From 306ea7810f5f6709ef3942a7be75077203b5d201 Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Mon, 16 Jun 2025 23:17:53 -0700
Date: Tue, 14 Oct 2025 04:27:19 -0700
Subject: [PATCH] nptl: Update comments and indentation for new condvar
implementation
@@ -9,9 +9,10 @@ Also fixing indentation where it was using spaces instead of tabs.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 0cc973160c23bb67f895bc887dd6942d29f8fee3
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=0cc973160c23bb67f895bc887dd6942d29f8fee3]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002275.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
@@ -20,7 +21,7 @@ Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
2 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 8dd7037923..306a207dd6 100644
index a55eee3e..350a16fa 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -221,8 +221,9 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -36,7 +37,7 @@ index 8dd7037923..306a207dd6 100644
__g_signals since it provides enough signals for all possible
remaining waiters. As a result, they can each consume a signal
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 1cb3dbf7b0..cee1968756 100644
index 1cb3dbf7..cee19687 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -249,7 +249,7 @@ __condvar_cleanup_waiting (void *arg)

View File

@@ -1,6 +1,6 @@
From 28a5082045429fdc5a4744d45fdc5b5202528eaa Mon Sep 17 00:00:00 2001
From 5f22e8cf95cf6b3b2e16ddb03820ae3e77fd420d Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Mon, 16 Jun 2025 23:29:49 -0700
Date: Tue, 14 Oct 2025 04:47:48 -0700
Subject: [PATCH] nptl: Remove unnecessary catch-all-wake in condvar group
switch
@@ -15,17 +15,18 @@ switch g1 when it should, so we wouldn't even have entered this code path.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: b42cc6af11062c260c7dfa91f1c89891366fed3e
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=b42cc6af11062c260c7dfa91f1c89891366fed3e]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002274.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_common.c | 30 +-----------------------------
1 file changed, 1 insertion(+), 29 deletions(-)
nptl/pthread_cond_common.c | 31 +------------------------------
1 file changed, 1 insertion(+), 30 deletions(-)
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 306a207dd6..f976a533a1 100644
index 350a16fa..f976a533 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -221,13 +221,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -43,7 +44,7 @@ index 306a207dd6..f976a533a1 100644
/* Update __g1_start, which finishes closing this group. The value we add
will never be negative because old_orig_size can only be zero when we
@@ -240,28 +234,6 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -240,29 +234,6 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U;
@@ -69,6 +70,7 @@ index 306a207dd6..f976a533a1 100644
-
- futex_wake (cond->__data.__g_signals + g1, INT_MAX, private);
- }
-
/* At this point, the old G1 is now a valid new G2 (but not in use yet).
No old waiter can neither grab a signal nor acquire a reference without
noticing that __g1_start is larger.

View File

@@ -1,6 +1,6 @@
From 16b9af737c77b153fca4f36cbdbe94f7416c0b42 Mon Sep 17 00:00:00 2001
From d714165c8bb3cac420077cfa61e3df87ea7f8b2c Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Mon, 16 Jun 2025 23:38:40 -0700
Date: Tue, 14 Oct 2025 05:34:06 -0700
Subject: [PATCH] nptl: Remove unnecessary quadruple check in pthread_cond_wait
pthread_cond_wait was checking whether it was in a closed group no less than
@@ -22,9 +22,10 @@ Removing the duplicate checks clarifies the code.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 4f7b051f8ee3feff1b53b27a906f245afaa9cee1
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=4f7b051f8ee3feff1b53b27a906f245afaa9cee1]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002276.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
@@ -32,7 +33,7 @@ Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
1 file changed, 49 deletions(-)
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index cee1968756..47e834cade 100644
index cee19687..47e834ca 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -366,7 +366,6 @@ static __always_inline int

View File

@@ -1,105 +1,188 @@
From d9ffb50dc55f77e584a5d0275eea758c7a6b04e3 Mon Sep 17 00:00:00 2001
From f904a81ff8d0469ceaf3220329e716c03fcbd2d3 Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Mon, 16 Jun 2025 23:53:35 -0700
Subject: [PATCH] nptl: Use a single loop in pthread_cond_wait instaed of a
nested loop
Date: Tue, 14 Oct 2025 05:59:02 -0700
Subject: [PATCH] nptl: Remove g_refs from condition variables
The loop was a little more complicated than necessary. There was only one
break statement out of the inner loop, and the outer loop was nearly empty.
So just remove the outer loop, moving its code to the one break statement in
the inner loop. This allows us to replace all gotos with break statements.
This variable used to be needed to wait in group switching until all sleepers
have confirmed that they have woken. This is no longer needed. Nothing waits
on this variable so there is no need to track how many threads are currently
asleep in each group.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
cmmit: c36fc50781995e6758cae2b6927839d0157f213c
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=929a4764ac90382616b6a21f099192b2475da674]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002278.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_wait.c | 41 +++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 22 deletions(-)
nptl/pthread_cond_wait.c | 52 +------------------------
nptl/tst-cond22.c | 12 +++---
sysdeps/nptl/bits/thread-shared-types.h | 3 +-
sysdeps/nptl/pthread.h | 2 +-
4 files changed, 9 insertions(+), 60 deletions(-)
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 47e834cade..5c86880105 100644
index 47e834ca..8a9219e0 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -410,17 +410,15 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
return err;
@@ -143,23 +143,6 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g,
}
}
- /* Now wait until a signal is available in our group or it is closed.
- Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
-
- do
-/* Wake up any signalers that might be waiting. */
-static void
-__condvar_dec_grefs (pthread_cond_t *cond, unsigned int g, int private)
-{
- /* Release MO to synchronize-with the acquire load in
- __condvar_quiesce_and_switch_g1. */
- if (atomic_fetch_add_release (cond->__data.__g_refs + g, -2) == 3)
- {
+
while (1)
{
+ /* Now wait until a signal is available in our group or it is closed.
+ Acquire MO so that if we observe (signals == lowseq) after group
+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that
+ store and will see the prior update of __g1_start done while switching
+ groups too. */
+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
@@ -429,7 +427,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
/* If the group is closed already,
then this waiter originally had enough extra signals to
consume, up until the time its group was closed. */
- goto done;
+ break;
}
/* If there is an available signal, don't block.
@@ -438,8 +436,16 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
G2, but in either case we're allowed to consume the available
signal and should not block anymore. */
if ((int)(signals - lowseq) >= 2)
- break;
- /* Clear the wake-up request flag before waking up. We do not need more
- than relaxed MO and it doesn't matter if we apply this for an aliased
- group because we wake all futex waiters right after clearing the
- flag. */
- atomic_fetch_and_relaxed (cond->__data.__g_refs + g, ~(unsigned int) 1);
- futex_wake (cond->__data.__g_refs + g, INT_MAX, private);
- }
-}
-
+ {
+ /* Try to grab a signal. See above for MO. (if we do another loop
+ iteration we need to see the correct value of g1_start) */
+ if (atomic_compare_exchange_weak_acquire (
+ cond->__data.__g_signals + g,
+ &signals, signals - 2))
+ break;
+ else
+ continue;
+ }
/* No signals available after spinning, so prepare to block.
We first acquire a group reference and use acquire MO for that so
that we synchronize with the dummy read-modify-write in
@@ -479,21 +485,12 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
the lock during cancellation is not possible. */
/* Clean-up for cancellation of waiters waiting for normal signals. We cancel
our registration as a waiter, confirm we have woken up, and re-acquire the
mutex. */
@@ -171,8 +154,6 @@ __condvar_cleanup_waiting (void *arg)
pthread_cond_t *cond = cbuffer->cond;
unsigned g = cbuffer->wseq & 1;
- __condvar_dec_grefs (cond, g, cbuffer->private);
-
__condvar_cancel_waiting (cond, cbuffer->wseq >> 1, g, cbuffer->private);
/* FIXME With the current cancellation implementation, it is possible that
a thread is cancelled after it has returned from a syscall. This could
@@ -327,15 +308,6 @@ __condvar_cleanup_waiting (void *arg)
sufficient because if a waiter can see a sufficiently large value, it could
have also consume a signal in the waiters group.
- It is essential that the last field in pthread_cond_t is __g_signals[1]:
- The previous condvar used a pointer-sized field in pthread_cond_t, so a
- PTHREAD_COND_INITIALIZER from that condvar implementation might only
- initialize 4 bytes to zero instead of the 8 bytes we need (i.e., 44 bytes
- in total instead of the 48 we need). __g_signals[1] is not accessed before
- the first group switch (G2 starts at index 0), which will set its value to
- zero after a harmless fetch-or whose return value is ignored. This
- effectively completes initialization.
-
Limitations:
* This condvar isn't designed to allow for more than
@@ -440,21 +412,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
if ((int)(signals - lowseq) >= 2)
break;
- /* No signals available after spinning, so prepare to block.
- We first acquire a group reference and use acquire MO for that so
- that we synchronize with the dummy read-modify-write in
- __condvar_quiesce_and_switch_g1 if we read from that. In turn,
- in this case this will make us see the advancement of __g_signals
- to the upcoming new g1_start that occurs with a concurrent
- attempt to reuse the group's slot.
- We use acquire MO for the __g_signals check to make the
- __g1_start check work (see spinning above).
- Note that the group reference acquisition will not mask the
- release MO when decrementing the reference count because we use
- an atomic read-modify-write operation and thus extend the release
- sequence. */
- atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2);
-
// Now block.
struct _pthread_cleanup_buffer buffer;
struct _condvar_cleanup_buffer cbuffer;
@@ -471,18 +428,11 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
{
- __condvar_dec_grefs (cond, g, private);
- /* If we timed out, we effectively cancel waiting. Note that
- we have decremented __g_refs before cancellation, so that a
- deadlock between waiting for quiescence of our group in
- __condvar_quiesce_and_switch_g1 and us trying to acquire
- the lock during cancellation is not possible. */
+ /* If we timed out, we effectively cancel waiting. */
__condvar_cancel_waiting (cond, seq, g, private);
result = err;
- goto done;
+ break;
goto done;
}
else
__condvar_dec_grefs (cond, g, private);
- else
- __condvar_dec_grefs (cond, g, private);
- /* Reload signals. See above for MO. */
- signals = atomic_load_acquire (cond->__data.__g_signals + g);
}
- }
- /* Try to grab a signal. See above for MO. (if we do another loop
- iteration we need to see the correct value of g1_start) */
- while (!atomic_compare_exchange_weak_acquire (cond->__data.__g_signals + g,
- &signals, signals - 2));
-
- done:
/* Reload signals. See above for MO. */
signals = atomic_load_acquire (cond->__data.__g_signals + g);
diff --git a/nptl/tst-cond22.c b/nptl/tst-cond22.c
index 1336e9c7..bdcb45c5 100644
--- a/nptl/tst-cond22.c
+++ b/nptl/tst-cond22.c
@@ -106,13 +106,13 @@ do_test (void)
status = 1;
}
/* Confirm that we have been woken. We do that before acquiring the mutex
to allow for execution of pthread_cond_destroy while having acquired the
- printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u/%u, %u/%u/%u, %u, %u }\n",
+ printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u, %u/%u, %u, %u }\n",
c.__data.__wseq.__value32.__high,
c.__data.__wseq.__value32.__low,
c.__data.__g1_start.__value32.__high,
c.__data.__g1_start.__value32.__low,
- c.__data.__g_signals[0], c.__data.__g_refs[0], c.__data.__g_size[0],
- c.__data.__g_signals[1], c.__data.__g_refs[1], c.__data.__g_size[1],
+ c.__data.__g_signals[0], c.__data.__g_size[0],
+ c.__data.__g_signals[1], c.__data.__g_size[1],
c.__data.__g1_orig_size, c.__data.__wrefs);
if (pthread_create (&th, NULL, tf, (void *) 1l) != 0)
@@ -152,13 +152,13 @@ do_test (void)
status = 1;
}
- printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u/%u, %u/%u/%u, %u, %u }\n",
+ printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u, %u/%u, %u, %u }\n",
c.__data.__wseq.__value32.__high,
c.__data.__wseq.__value32.__low,
c.__data.__g1_start.__value32.__high,
c.__data.__g1_start.__value32.__low,
- c.__data.__g_signals[0], c.__data.__g_refs[0], c.__data.__g_size[0],
- c.__data.__g_signals[1], c.__data.__g_refs[1], c.__data.__g_size[1],
+ c.__data.__g_signals[0], c.__data.__g_size[0],
+ c.__data.__g_signals[1], c.__data.__g_size[1],
c.__data.__g1_orig_size, c.__data.__wrefs);
return status;
diff --git a/sysdeps/nptl/bits/thread-shared-types.h b/sysdeps/nptl/bits/thread-shared-types.h
index 5653507e..6f17afa4 100644
--- a/sysdeps/nptl/bits/thread-shared-types.h
+++ b/sysdeps/nptl/bits/thread-shared-types.h
@@ -95,8 +95,7 @@ struct __pthread_cond_s
{
__atomic_wide_counter __wseq;
__atomic_wide_counter __g1_start;
- unsigned int __g_refs[2] __LOCK_ALIGNMENT;
- unsigned int __g_size[2];
+ unsigned int __g_size[2] __LOCK_ALIGNMENT;
unsigned int __g1_orig_size;
unsigned int __wrefs;
unsigned int __g_signals[2];
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index dedad4ec..bbb36540 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -152,7 +152,7 @@ enum
/* Conditional variable handling. */
-#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }
+#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, 0, 0, {0, 0} } }
/* Cleanup buffers */
--
2.49.0

View File

@@ -1,166 +1,100 @@
From a2faee6d0dac6e5232255da9afda4d9ed6cfb6e5 Mon Sep 17 00:00:00 2001
From bbd7c84a1a14bf93bf1e5976d8a1540aabbf901b Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Tue, 17 Jun 2025 01:37:12 -0700
Subject: [PATCH] nptl: Fix indentation
Date: Tue, 14 Oct 2025 06:19:02 -0700
Subject: [PATCH] nptl: Use a single loop in pthread_cond_wait instaed of a
nested loop
In my previous change I turned a nested loop into a simple loop. I'm doing
the resulting indentation changes in a separate commit to make the diff on
the previous commit easier to review.
The loop was a little more complicated than necessary. There was only one
break statement out of the inner loop, and the outer loop was nearly empty.
So just remove the outer loop, moving its code to the one break statement in
the inner loop. This allows us to replace all gotos with break statements.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 929a4764ac90382616b6a21f099192b2475da674
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=ee6c14ed59d480720721aaacc5fb03213dc153da]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002279.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_wait.c | 132 ++++++++++++++++-----------------------
1 file changed, 54 insertions(+), 78 deletions(-)
nptl/pthread_cond_wait.c | 41 +++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 22 deletions(-)
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 5c86880105..104ebd48ca 100644
index 8a9219e0..c8c99bbf 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -410,87 +410,63 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
@@ -382,17 +382,15 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
return err;
}
- /* Now wait until a signal is available in our group or it is closed.
- Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
-
- while (1)
- {
- /* Now wait until a signal is available in our group or it is closed.
- Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
-
- if (seq < (g1_start >> 1))
- {
- /* If the group is closed already,
- then this waiter originally had enough extra signals to
- consume, up until the time its group was closed. */
- break;
- }
-
- /* If there is an available signal, don't block.
- If __g1_start has advanced at all, then we must be in G1
- by now, perhaps in the process of switching back to an older
- G2, but in either case we're allowed to consume the available
- signal and should not block anymore. */
- if ((int)(signals - lowseq) >= 2)
- {
- /* Try to grab a signal. See above for MO. (if we do another loop
- iteration we need to see the correct value of g1_start) */
- if (atomic_compare_exchange_weak_acquire (
- cond->__data.__g_signals + g,
+ while (1)
+ {
+ /* Now wait until a signal is available in our group or it is closed.
+ Acquire MO so that if we observe (signals == lowseq) after group
+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that
+ store and will see the prior update of __g1_start done while switching
+ groups too. */
+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
+ unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
- do
- {
+
+ if (seq < (g1_start >> 1))
+ {
+ /* If the group is closed already,
+ then this waiter originally had enough extra signals to
+ consume, up until the time its group was closed. */
+ break;
+ }
+
+ /* If there is an available signal, don't block.
+ If __g1_start has advanced at all, then we must be in G1
+ by now, perhaps in the process of switching back to an older
+ G2, but in either case we're allowed to consume the available
+ signal and should not block anymore. */
+ if ((int)(signals - lowseq) >= 2)
+ {
+ /* Try to grab a signal. See above for MO. (if we do another loop
+ iteration we need to see the correct value of g1_start) */
+ if (atomic_compare_exchange_weak_acquire (
+ cond->__data.__g_signals + g,
&signals, signals - 2))
- break;
- else
- continue;
- }
- /* No signals available after spinning, so prepare to block.
- We first acquire a group reference and use acquire MO for that so
- that we synchronize with the dummy read-modify-write in
- __condvar_quiesce_and_switch_g1 if we read from that. In turn,
- in this case this will make us see the advancement of __g_signals
- to the upcoming new g1_start that occurs with a concurrent
- attempt to reuse the group's slot.
- We use acquire MO for the __g_signals check to make the
- __g1_start check work (see spinning above).
- Note that the group reference acquisition will not mask the
- release MO when decrementing the reference count because we use
- an atomic read-modify-write operation and thus extend the release
- sequence. */
- atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2);
while (1)
{
+ /* Now wait until a signal is available in our group or it is closed.
+ Acquire MO so that if we observe (signals == lowseq) after group
+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that
+ store and will see the prior update of __g1_start done while switching
+ groups too. */
+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
@@ -401,7 +399,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
/* If the group is closed already,
then this waiter originally had enough extra signals to
consume, up until the time its group was closed. */
- goto done;
+ break;
}
/* If there is an available signal, don't block.
@@ -410,7 +408,16 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
G2, but in either case we're allowed to consume the available
signal and should not block anymore. */
if ((int)(signals - lowseq) >= 2)
- break;
+ {
+ /* Try to grab a signal. See above for MO. (if we do another loop
+ iteration we need to see the correct value of g1_start) */
+ if (atomic_compare_exchange_weak_acquire (
+ cond->__data.__g_signals + g,
+ &signals, signals - 2))
+ break;
+ else
+ continue;
+ }
// Now block.
struct _pthread_cleanup_buffer buffer;
@@ -431,19 +438,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
/* If we timed out, we effectively cancel waiting. */
__condvar_cancel_waiting (cond, seq, g, private);
result = err;
- goto done;
+ break;
}
-
- // Now block.
- struct _pthread_cleanup_buffer buffer;
- struct _condvar_cleanup_buffer cbuffer;
- cbuffer.wseq = wseq;
- cbuffer.cond = cond;
- cbuffer.mutex = mutex;
- cbuffer.private = private;
- __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
-
- err = __futex_abstimed_wait_cancelable64 (
- cond->__data.__g_signals + g, signals, clockid, abstime, private);
-
- __pthread_cleanup_pop (&buffer, 0);
-
- if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
- {
- __condvar_dec_grefs (cond, g, private);
- /* If we timed out, we effectively cancel waiting. Note that
- we have decremented __g_refs before cancellation, so that a
- deadlock between waiting for quiescence of our group in
- __condvar_quiesce_and_switch_g1 and us trying to acquire
- the lock during cancellation is not possible. */
- __condvar_cancel_waiting (cond, seq, g, private);
- result = err;
break;
- }
- else
- __condvar_dec_grefs (cond, g, private);
-
+ else
+ continue;
- /* Reload signals. See above for MO. */
- signals = atomic_load_acquire (cond->__data.__g_signals + g);
}
+ // Now block.
+ struct _pthread_cleanup_buffer buffer;
+ struct _condvar_cleanup_buffer cbuffer;
+ cbuffer.wseq = wseq;
+ cbuffer.cond = cond;
+ cbuffer.mutex = mutex;
+ cbuffer.private = private;
+ __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
+
+ err = __futex_abstimed_wait_cancelable64 (
+ cond->__data.__g_signals + g, signals, clockid, abstime, private);
+
+ __pthread_cleanup_pop (&buffer, 0);
+
+ if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
+ {
+ /* If we timed out, we effectively cancel waiting. */
+ __condvar_cancel_waiting (cond, seq, g, private);
+ result = err;
+ break;
+ }
+ }
- }
- /* Try to grab a signal. See above for MO. (if we do another loop
- iteration we need to see the correct value of g1_start) */
- while (!atomic_compare_exchange_weak_acquire (cond->__data.__g_signals + g,
- &signals, signals - 2));
-
- done:
/* Confirm that we have been woken. We do that before acquiring the mutex
to allow for execution of pthread_cond_destroy while having acquired the

View File

@@ -1,160 +1,149 @@
From 2a601ac9041e2ca645acad2c174b1c545cfceafe Mon Sep 17 00:00:00 2001
From 1077953950d1e8864c63222967141c67f51297f8 Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Tue, 17 Jun 2025 01:53:25 -0700
Subject: [PATCH] nptl: rename __condvar_quiesce_and_switch_g1
Date: Tue, 14 Oct 2025 06:27:04 -0700
Subject: [PATCH] nptl: Fix indentation
This function no longer waits for threads to leave g1, so rename it to
__condvar_switch_g1
In my previous change I turned a nested loop into a simple loop. I'm doing
the resulting indentation changes in a separate commit to make the diff on
the previous commit easier to review.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: ee6c14ed59d480720721aaacc5fb03213dc153da
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=4b79e27a5073c02f6bff9aa8f4791230a0ab1867]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002280.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_broadcast.c | 4 ++--
nptl/pthread_cond_common.c | 26 ++++++++++++--------------
nptl/pthread_cond_signal.c | 17 ++++++++---------
nptl/pthread_cond_wait.c | 9 ++++-----
4 files changed, 26 insertions(+), 30 deletions(-)
nptl/pthread_cond_wait.c | 110 +++++++++++++++++++--------------------
1 file changed, 55 insertions(+), 55 deletions(-)
diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c
index 5ae141ac81..a07435589a 100644
--- a/nptl/pthread_cond_broadcast.c
+++ b/nptl/pthread_cond_broadcast.c
@@ -60,7 +60,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
cond->__data.__g_size[g1] << 1);
cond->__data.__g_size[g1] = 0;
- /* We need to wake G1 waiters before we quiesce G1 below. */
+ /* We need to wake G1 waiters before we switch G1 below. */
/* TODO Only set it if there are indeed futex waiters. We could
also try to move this out of the critical section in cases when
G2 is empty (and we don't need to quiesce). */
@@ -69,7 +69,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
/* G1 is complete. Step (2) is next unless there are no waiters in G2, in
which case we can stop. */
- if (__condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ if (__condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Step (3): Send signals to all waiters in the old G2 / new G1. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index f976a533a1..3baac4dabc 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -189,16 +189,15 @@ __condvar_get_private (int flags)
return FUTEX_SHARED;
}
-/* This closes G1 (whose index is in G1INDEX), waits for all futex waiters to
- leave G1, converts G1 into a fresh G2, and then switches group roles so that
- the former G2 becomes the new G1 ending at the current __wseq value when we
- eventually make the switch (WSEQ is just an observation of __wseq by the
- signaler).
+/* This closes G1 (whose index is in G1INDEX), converts G1 into a fresh G2,
+ and then switches group roles so that the former G2 becomes the new G1
+ ending at the current __wseq value when we eventually make the switch
+ (WSEQ is just an observation of __wseq by the signaler).
If G2 is empty, it will not switch groups because then it would create an
empty G1 which would require switching groups again on the next signal.
Returns false iff groups were not switched because G2 was empty. */
static bool __attribute__ ((unused))
-__condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
+__condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
unsigned int *g1index, int private)
{
unsigned int g1 = *g1index;
@@ -214,8 +213,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
+ cond->__data.__g_size[g1 ^ 1]) == 0)
return false;
- /* Now try to close and quiesce G1. We have to consider the following kinds
- of waiters:
+ /* We have to consider the following kinds of waiters:
* Waiters from less recent groups than G1 are not affected because
nothing will change for them apart from __g1_start getting larger.
* New waiters arriving concurrently with the group switching will all go
@@ -223,12 +221,12 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
are not affected.
* Waiters in G1 have already received a signal and been woken. */
- /* Update __g1_start, which finishes closing this group. The value we add
- will never be negative because old_orig_size can only be zero when we
- switch groups the first time after a condvar was initialized, in which
- case G1 will be at index 1 and we will add a value of 1.
- Relaxed MO is fine because the change comes with no additional
- constraints that others would have to observe. */
+ /* Update __g1_start, which closes this group. The value we add will never
+ be negative because old_orig_size can only be zero when we switch groups
+ the first time after a condvar was initialized, in which case G1 will be
+ at index 1 and we will add a value of 1. Relaxed MO is fine because the
+ change comes with no additional constraints that others would have to
+ observe. */
__condvar_add_g1_start_relaxed (cond,
(old_orig_size << 1) + (g1 == 1 ? 1 : - 1));
diff --git a/nptl/pthread_cond_signal.c b/nptl/pthread_cond_signal.c
index 14800ba00b..a9bc10dcca 100644
--- a/nptl/pthread_cond_signal.c
+++ b/nptl/pthread_cond_signal.c
@@ -69,18 +69,17 @@ ___pthread_cond_signal (pthread_cond_t *cond)
bool do_futex_wake = false;
/* If G1 is still receiving signals, we put the signal there. If not, we
- check if G2 has waiters, and if so, quiesce and switch G1 to the former
- G2; if this results in a new G1 with waiters (G2 might have cancellations
- already, see __condvar_quiesce_and_switch_g1), we put the signal in the
- new G1. */
+ check if G2 has waiters, and if so, switch G1 to the former G2; if this
+ results in a new G1 with waiters (G2 might have cancellations already,
+ see __condvar_switch_g1), we put the signal in the new G1. */
if ((cond->__data.__g_size[g1] != 0)
- || __condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ || __condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Add a signal. Relaxed MO is fine because signaling does not need to
- establish a happens-before relation (see above). We do not mask the
- release-MO store when initializing a group in
- __condvar_quiesce_and_switch_g1 because we use an atomic
- read-modify-write and thus extend that store's release sequence. */
+ establish a happens-before relation (see above). We do not mask the
+ release-MO store when initializing a group in __condvar_switch_g1
+ because we use an atomic read-modify-write and thus extend that
+ store's release sequence. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2);
cond->__data.__g_size[g1]--;
/* TODO Only set it if there are indeed futex waiters. */
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 104ebd48ca..bb46f3605d 100644
index c8c99bbf..adf26a80 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -382,8 +382,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
because we do not need to establish any happens-before relation with
signalers (see __pthread_cond_signal); modification order alone
establishes a total order of waiters/signals. We do need acquire MO
- to synchronize with group reinitialization in
- __condvar_quiesce_and_switch_g1. */
+ to synchronize with group reinitialization in __condvar_switch_g1. */
uint64_t wseq = __condvar_fetch_add_wseq_acquire (cond, 2);
/* Find our group's index. We always go into what was G2 when we acquired
our position. */
@@ -414,9 +413,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
{
/* Now wait until a signal is available in our group or it is closed.
Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
+ switching in __condvar_switch_g1, we synchronize with that store and
+ will see the prior update of __g1_start done while switching groups
+ too. */
unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
@@ -383,65 +383,65 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
}
- while (1)
- {
- /* Now wait until a signal is available in our group or it is closed.
- Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
-
- if (seq < (g1_start >> 1))
- {
- /* If the group is closed already,
- then this waiter originally had enough extra signals to
- consume, up until the time its group was closed. */
- break;
- }
-
- /* If there is an available signal, don't block.
- If __g1_start has advanced at all, then we must be in G1
- by now, perhaps in the process of switching back to an older
- G2, but in either case we're allowed to consume the available
- signal and should not block anymore. */
- if ((int)(signals - lowseq) >= 2)
- {
- /* Try to grab a signal. See above for MO. (if we do another loop
- iteration we need to see the correct value of g1_start) */
- if (atomic_compare_exchange_weak_acquire (
- cond->__data.__g_signals + g,
+ while (1)
+ {
+ /* Now wait until a signal is available in our group or it is closed.
+ Acquire MO so that if we observe (signals == lowseq) after group
+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that
+ store and will see the prior update of __g1_start done while switching
+ groups too. */
+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
+ unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
+
+ if (seq < (g1_start >> 1))
+ {
+ /* If the group is closed already,
+ then this waiter originally had enough extra signals to
+ consume, up until the time its group was closed. */
+ break;
+ }
+
+ /* If there is an available signal, don't block.
+ If __g1_start has advanced at all, then we must be in G1
+ by now, perhaps in the process of switching back to an older
+ G2, but in either case we're allowed to consume the available
+ signal and should not block anymore. */
+ if ((int)(signals - lowseq) >= 2)
+ {
+ /* Try to grab a signal. See above for MO. (if we do another loop
+ iteration we need to see the correct value of g1_start) */
+ if (atomic_compare_exchange_weak_acquire (
+ cond->__data.__g_signals + g,
&signals, signals - 2))
- break;
- else
- continue;
- }
-
- // Now block.
- struct _pthread_cleanup_buffer buffer;
- struct _condvar_cleanup_buffer cbuffer;
- cbuffer.wseq = wseq;
- cbuffer.cond = cond;
- cbuffer.mutex = mutex;
- cbuffer.private = private;
- __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
-
- err = __futex_abstimed_wait_cancelable64 (
- cond->__data.__g_signals + g, signals, clockid, abstime, private);
-
- __pthread_cleanup_pop (&buffer, 0);
-
- if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
- {
- /* If we timed out, we effectively cancel waiting. */
- __condvar_cancel_waiting (cond, seq, g, private);
- result = err;
break;
- }
+ else
+ continue;
}
+ // Now block.
+ struct _pthread_cleanup_buffer buffer;
+ struct _condvar_cleanup_buffer cbuffer;
+ cbuffer.wseq = wseq;
+ cbuffer.cond = cond;
+ cbuffer.mutex = mutex;
+ cbuffer.private = private;
+ __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
+
+ err = __futex_abstimed_wait_cancelable64 (
+ cond->__data.__g_signals + g, signals, clockid, abstime, private);
+
+ __pthread_cleanup_pop (&buffer, 0);
+
+ if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
+ {
+ /* If we timed out, we effectively cancel waiting. */
+ __condvar_cancel_waiting (cond, seq, g, private);
+ result = err;
+ break;
+ }
+ }
+
/* Confirm that we have been woken. We do that before acquiring the mutex
to allow for execution of pthread_cond_destroy while having acquired the
mutex. */
--
2.49.0

View File

@@ -1,192 +1,161 @@
From fc074de88796eb2036fbe9bade638e00adfd5cb2 Mon Sep 17 00:00:00 2001
From 20d84dfa0b9a32f88259269bbeaae588744ae4ae Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Tue, 17 Jun 2025 02:08:36 -0700
Subject: [PATCH] nptl: Use all of g1_start and g_signals
Date: Tue, 14 Oct 2025 06:33:50 -0700
Subject: [PATCH] nptl: rename __condvar_quiesce_and_switch_g1
The LSB of g_signals was unused. The LSB of g1_start was used to indicate
which group is G2. This was used to always go to sleep in pthread_cond_wait
if a waiter is in G2. A comment earlier in the file says that this is not
correct to do:
"Waiters cannot determine whether they are currently in G2 or G1 -- but they
do not have to because all they are interested in is whether there are
available signals"
I either would have had to update the comment, or get rid of the check. I
chose to get rid of the check. In fact I don't quite know why it was there.
There will never be available signals for group G2, so we didn't need the
special case. Even if there were, this would just be a spurious wake. This
might have caught some cases where the count has wrapped around, but it
wouldn't reliably do that, (and even if it did, why would you want to force a
sleep in that case?) and we don't support that many concurrent waiters
anyway. Getting rid of it allows us to use one more bit, making us more
robust to wraparound.
This function no longer waits for threads to leave g1, so rename it to
__condvar_switch_g1
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 4b79e27a5073c02f6bff9aa8f4791230a0ab1867
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=91bb902f58264a2fd50fbce8f39a9a290dd23706]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002281.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_broadcast.c | 4 ++--
nptl/pthread_cond_common.c | 26 ++++++++++----------------
nptl/pthread_cond_signal.c | 2 +-
nptl/pthread_cond_wait.c | 14 +++++---------
4 files changed, 18 insertions(+), 28 deletions(-)
nptl/pthread_cond_common.c | 26 ++++++++++++--------------
nptl/pthread_cond_signal.c | 17 ++++++++---------
nptl/pthread_cond_wait.c | 9 ++++-----
4 files changed, 26 insertions(+), 30 deletions(-)
diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c
index a07435589a..ef0943cdc5 100644
index 5ae141ac..a0743558 100644
--- a/nptl/pthread_cond_broadcast.c
+++ b/nptl/pthread_cond_broadcast.c
@@ -57,7 +57,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
{
/* Add as many signals as the remaining size of the group. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
@@ -60,7 +60,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
cond->__data.__g_size[g1] << 1);
cond->__data.__g_size[g1] = 0;
/* We need to wake G1 waiters before we switch G1 below. */
@@ -73,7 +73,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
- /* We need to wake G1 waiters before we quiesce G1 below. */
+ /* We need to wake G1 waiters before we switch G1 below. */
/* TODO Only set it if there are indeed futex waiters. We could
also try to move this out of the critical section in cases when
G2 is empty (and we don't need to quiesce). */
@@ -69,7 +69,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
/* G1 is complete. Step (2) is next unless there are no waiters in G2, in
which case we can stop. */
- if (__condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ if (__condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Step (3): Send signals to all waiters in the old G2 / new G1. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
cond->__data.__g_size[g1] = 0;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 3baac4dabc..e48f914321 100644
index f976a533..3baac4da 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -208,9 +208,9 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
behavior.
Note that this works correctly for a zero-initialized condvar too. */
unsigned int old_orig_size = __condvar_get_orig_size (cond);
- uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
- if (((unsigned) (wseq - old_g1_start - old_orig_size)
- + cond->__data.__g_size[g1 ^ 1]) == 0)
+ uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond);
+ uint64_t new_g1_start = old_g1_start + old_orig_size;
+ if (((unsigned) (wseq - new_g1_start) + cond->__data.__g_size[g1 ^ 1]) == 0)
@@ -189,16 +189,15 @@ __condvar_get_private (int flags)
return FUTEX_SHARED;
}
-/* This closes G1 (whose index is in G1INDEX), waits for all futex waiters to
- leave G1, converts G1 into a fresh G2, and then switches group roles so that
- the former G2 becomes the new G1 ending at the current __wseq value when we
- eventually make the switch (WSEQ is just an observation of __wseq by the
- signaler).
+/* This closes G1 (whose index is in G1INDEX), converts G1 into a fresh G2,
+ and then switches group roles so that the former G2 becomes the new G1
+ ending at the current __wseq value when we eventually make the switch
+ (WSEQ is just an observation of __wseq by the signaler).
If G2 is empty, it will not switch groups because then it would create an
empty G1 which would require switching groups again on the next signal.
Returns false iff groups were not switched because G2 was empty. */
static bool __attribute__ ((unused))
-__condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
+__condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
unsigned int *g1index, int private)
{
unsigned int g1 = *g1index;
@@ -214,8 +213,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
+ cond->__data.__g_size[g1 ^ 1]) == 0)
return false;
/* We have to consider the following kinds of waiters:
@@ -221,16 +221,10 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
- /* Now try to close and quiesce G1. We have to consider the following kinds
- of waiters:
+ /* We have to consider the following kinds of waiters:
* Waiters from less recent groups than G1 are not affected because
nothing will change for them apart from __g1_start getting larger.
* New waiters arriving concurrently with the group switching will all go
@@ -223,12 +221,12 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
are not affected.
* Waiters in G1 have already received a signal and been woken. */
- /* Update __g1_start, which closes this group. The value we add will never
- be negative because old_orig_size can only be zero when we switch groups
- the first time after a condvar was initialized, in which case G1 will be
- at index 1 and we will add a value of 1. Relaxed MO is fine because the
- change comes with no additional constraints that others would have to
- observe. */
- __condvar_add_g1_start_relaxed (cond,
- (old_orig_size << 1) + (g1 == 1 ? 1 : - 1));
-
- unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U;
+ /* Update __g1_start, which closes this group. Relaxed MO is fine because
+ the change comes with no additional constraints that others would have
+ to observe. */
+ __condvar_add_g1_start_relaxed (cond, old_orig_size);
- /* Update __g1_start, which finishes closing this group. The value we add
- will never be negative because old_orig_size can only be zero when we
- switch groups the first time after a condvar was initialized, in which
- case G1 will be at index 1 and we will add a value of 1.
- Relaxed MO is fine because the change comes with no additional
- constraints that others would have to observe. */
+ /* Update __g1_start, which closes this group. The value we add will never
+ be negative because old_orig_size can only be zero when we switch groups
+ the first time after a condvar was initialized, in which case G1 will be
+ at index 1 and we will add a value of 1. Relaxed MO is fine because the
+ change comes with no additional constraints that others would have to
+ observe. */
__condvar_add_g1_start_relaxed (cond,
(old_orig_size << 1) + (g1 == 1 ? 1 : - 1));
/* At this point, the old G1 is now a valid new G2 (but not in use yet).
No old waiter can neither grab a signal nor acquire a reference without
@@ -242,13 +236,13 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
g1 ^= 1;
*g1index ^= 1;
- /* Now advance the new G1 g_signals to the new lowseq, giving it
+ /* Now advance the new G1 g_signals to the new g1_start, giving it
an effective signal count of 0 to start. */
- atomic_store_release (cond->__data.__g_signals + g1, lowseq);
+ atomic_store_release (cond->__data.__g_signals + g1, (unsigned)new_g1_start);
/* These values are just observed by signalers, and thus protected by the
lock. */
- unsigned int orig_size = wseq - (old_g1_start + old_orig_size);
+ unsigned int orig_size = wseq - new_g1_start;
__condvar_set_orig_size (cond, orig_size);
/* Use and addition to not loose track of cancellations in what was
previously G2. */
diff --git a/nptl/pthread_cond_signal.c b/nptl/pthread_cond_signal.c
index a9bc10dcca..07427369aa 100644
index 14800ba0..a9bc10dc 100644
--- a/nptl/pthread_cond_signal.c
+++ b/nptl/pthread_cond_signal.c
@@ -80,7 +80,7 @@ ___pthread_cond_signal (pthread_cond_t *cond)
release-MO store when initializing a group in __condvar_switch_g1
because we use an atomic read-modify-write and thus extend that
store's release sequence. */
- atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2);
+ atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 1);
@@ -69,18 +69,17 @@ ___pthread_cond_signal (pthread_cond_t *cond)
bool do_futex_wake = false;
/* If G1 is still receiving signals, we put the signal there. If not, we
- check if G2 has waiters, and if so, quiesce and switch G1 to the former
- G2; if this results in a new G1 with waiters (G2 might have cancellations
- already, see __condvar_quiesce_and_switch_g1), we put the signal in the
- new G1. */
+ check if G2 has waiters, and if so, switch G1 to the former G2; if this
+ results in a new G1 with waiters (G2 might have cancellations already,
+ see __condvar_switch_g1), we put the signal in the new G1. */
if ((cond->__data.__g_size[g1] != 0)
- || __condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ || __condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Add a signal. Relaxed MO is fine because signaling does not need to
- establish a happens-before relation (see above). We do not mask the
- release-MO store when initializing a group in
- __condvar_quiesce_and_switch_g1 because we use an atomic
- read-modify-write and thus extend that store's release sequence. */
+ establish a happens-before relation (see above). We do not mask the
+ release-MO store when initializing a group in __condvar_switch_g1
+ because we use an atomic read-modify-write and thus extend that
+ store's release sequence. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2);
cond->__data.__g_size[g1]--;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index bb46f3605d..430cbe8a35 100644
index adf26a80..40a74342 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -84,7 +84,7 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g,
not hold a reference on the group. */
__condvar_acquire_lock (cond, private);
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
if (g1_start > seq)
@@ -354,8 +354,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
because we do not need to establish any happens-before relation with
signalers (see __pthread_cond_signal); modification order alone
establishes a total order of waiters/signals. We do need acquire MO
- to synchronize with group reinitialization in
- __condvar_quiesce_and_switch_g1. */
+ to synchronize with group reinitialization in __condvar_switch_g1. */
uint64_t wseq = __condvar_fetch_add_wseq_acquire (cond, 2);
/* Find our group's index. We always go into what was G2 when we acquired
our position. */
@@ -387,9 +386,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
{
/* Our group is closed, so someone provided enough signals for it.
@@ -278,7 +278,6 @@ __condvar_cleanup_waiting (void *arg)
* Waiters fetch-add while having acquire the mutex associated with the
condvar. Signalers load it and fetch-xor it concurrently.
__g1_start: Starting position of G1 (inclusive)
- * LSB is index of current G2.
* Modified by signalers while having acquired the condvar-internal lock
and observed concurrently by waiters.
__g1_orig_size: Initial size of G1
@@ -299,11 +298,9 @@ __condvar_cleanup_waiting (void *arg)
* Reference count used by waiters concurrently with signalers that have
acquired the condvar-internal lock.
__g_signals: The number of signals that can still be consumed, relative to
- the current g1_start. (i.e. bits 31 to 1 of __g_signals are bits
- 31 to 1 of g1_start with the signal count added)
+ the current g1_start. (i.e. g1_start with the signal count added)
* Used as a futex word by waiters. Used concurrently by waiters and
signalers.
- * LSB is currently reserved and 0.
__g_size: Waiters remaining in this group (i.e., which have not been
signaled yet.
* Accessed by signalers and waiters that cancel waiting (both do so only
@@ -418,9 +415,8 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
too. */
/* Now wait until a signal is available in our group or it is closed.
Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
+ switching in __condvar_switch_g1, we synchronize with that store and
+ will see the prior update of __g1_start done while switching groups
+ too. */
unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
- if (seq < (g1_start >> 1))
+ if (seq < g1_start)
{
/* If the group is closed already,
then this waiter originally had enough extra signals to
@@ -433,13 +429,13 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
by now, perhaps in the process of switching back to an older
G2, but in either case we're allowed to consume the available
signal and should not block anymore. */
- if ((int)(signals - lowseq) >= 2)
+ if ((int)(signals - (unsigned int)g1_start) > 0)
{
/* Try to grab a signal. See above for MO. (if we do another loop
iteration we need to see the correct value of g1_start) */
if (atomic_compare_exchange_weak_acquire (
cond->__data.__g_signals + g,
- &signals, signals - 2))
+ &signals, signals - 1))
break;
else
continue;
unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
--
2.49.0

View File

@@ -0,0 +1,193 @@
From c2677e68956bb9677d8de4ee6c5341b1a744d490 Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Tue, 14 Oct 2025 06:40:57 -0700
Subject: [PATCH] nptl: Use all of g1_start and g_signals
The LSB of g_signals was unused. The LSB of g1_start was used to indicate
which group is G2. This was used to always go to sleep in pthread_cond_wait
if a waiter is in G2. A comment earlier in the file says that this is not
correct to do:
"Waiters cannot determine whether they are currently in G2 or G1 -- but they
do not have to because all they are interested in is whether there are
available signals"
I either would have had to update the comment, or get rid of the check. I
chose to get rid of the check. In fact I don't quite know why it was there.
There will never be available signals for group G2, so we didn't need the
special case. Even if there were, this would just be a spurious wake. This
might have caught some cases where the count has wrapped around, but it
wouldn't reliably do that, (and even if it did, why would you want to force a
sleep in that case?) and we don't support that many concurrent waiters
anyway. Getting rid of it allows us to use one more bit, making us more
robust to wraparound.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 91bb902f58264a2fd50fbce8f39a9a290dd23706
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002283.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_broadcast.c | 4 ++--
nptl/pthread_cond_common.c | 26 ++++++++++----------------
nptl/pthread_cond_signal.c | 2 +-
nptl/pthread_cond_wait.c | 14 +++++---------
4 files changed, 18 insertions(+), 28 deletions(-)
diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c
index a0743558..ef0943cd 100644
--- a/nptl/pthread_cond_broadcast.c
+++ b/nptl/pthread_cond_broadcast.c
@@ -57,7 +57,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
{
/* Add as many signals as the remaining size of the group. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
cond->__data.__g_size[g1] = 0;
/* We need to wake G1 waiters before we switch G1 below. */
@@ -73,7 +73,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
{
/* Step (3): Send signals to all waiters in the old G2 / new G1. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
cond->__data.__g_size[g1] = 0;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 3baac4da..e48f9143 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -208,9 +208,9 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
behavior.
Note that this works correctly for a zero-initialized condvar too. */
unsigned int old_orig_size = __condvar_get_orig_size (cond);
- uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
- if (((unsigned) (wseq - old_g1_start - old_orig_size)
- + cond->__data.__g_size[g1 ^ 1]) == 0)
+ uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond);
+ uint64_t new_g1_start = old_g1_start + old_orig_size;
+ if (((unsigned) (wseq - new_g1_start) + cond->__data.__g_size[g1 ^ 1]) == 0)
return false;
/* We have to consider the following kinds of waiters:
@@ -221,16 +221,10 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
are not affected.
* Waiters in G1 have already received a signal and been woken. */
- /* Update __g1_start, which closes this group. The value we add will never
- be negative because old_orig_size can only be zero when we switch groups
- the first time after a condvar was initialized, in which case G1 will be
- at index 1 and we will add a value of 1. Relaxed MO is fine because the
- change comes with no additional constraints that others would have to
- observe. */
- __condvar_add_g1_start_relaxed (cond,
- (old_orig_size << 1) + (g1 == 1 ? 1 : - 1));
-
- unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U;
+ /* Update __g1_start, which closes this group. Relaxed MO is fine because
+ the change comes with no additional constraints that others would have
+ to observe. */
+ __condvar_add_g1_start_relaxed (cond, old_orig_size);
/* At this point, the old G1 is now a valid new G2 (but not in use yet).
No old waiter can neither grab a signal nor acquire a reference without
@@ -242,13 +236,13 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
g1 ^= 1;
*g1index ^= 1;
- /* Now advance the new G1 g_signals to the new lowseq, giving it
+ /* Now advance the new G1 g_signals to the new g1_start, giving it
an effective signal count of 0 to start. */
- atomic_store_release (cond->__data.__g_signals + g1, lowseq);
+ atomic_store_release (cond->__data.__g_signals + g1, (unsigned)new_g1_start);
/* These values are just observed by signalers, and thus protected by the
lock. */
- unsigned int orig_size = wseq - (old_g1_start + old_orig_size);
+ unsigned int orig_size = wseq - new_g1_start;
__condvar_set_orig_size (cond, orig_size);
/* Use and addition to not loose track of cancellations in what was
previously G2. */
diff --git a/nptl/pthread_cond_signal.c b/nptl/pthread_cond_signal.c
index a9bc10dc..07427369 100644
--- a/nptl/pthread_cond_signal.c
+++ b/nptl/pthread_cond_signal.c
@@ -80,7 +80,7 @@ ___pthread_cond_signal (pthread_cond_t *cond)
release-MO store when initializing a group in __condvar_switch_g1
because we use an atomic read-modify-write and thus extend that
store's release sequence. */
- atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2);
+ atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 1);
cond->__data.__g_size[g1]--;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 40a74342..d7e073ab 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -84,7 +84,7 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g,
not hold a reference on the group. */
__condvar_acquire_lock (cond, private);
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
if (g1_start > seq)
{
/* Our group is closed, so someone provided enough signals for it.
@@ -259,7 +259,6 @@ __condvar_cleanup_waiting (void *arg)
* Waiters fetch-add while having acquire the mutex associated with the
condvar. Signalers load it and fetch-xor it concurrently.
__g1_start: Starting position of G1 (inclusive)
- * LSB is index of current G2.
* Modified by signalers while having acquired the condvar-internal lock
and observed concurrently by waiters.
__g1_orig_size: Initial size of G1
@@ -280,11 +279,9 @@ __condvar_cleanup_waiting (void *arg)
* Reference count used by waiters concurrently with signalers that have
acquired the condvar-internal lock.
__g_signals: The number of signals that can still be consumed, relative to
- the current g1_start. (i.e. bits 31 to 1 of __g_signals are bits
- 31 to 1 of g1_start with the signal count added)
+ the current g1_start. (i.e. g1_start with the signal count added)
* Used as a futex word by waiters. Used concurrently by waiters and
signalers.
- * LSB is currently reserved and 0.
__g_size: Waiters remaining in this group (i.e., which have not been
signaled yet.
* Accessed by signalers and waiters that cancel waiting (both do so only
@@ -391,9 +388,8 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
too. */
unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
- if (seq < (g1_start >> 1))
+ if (seq < g1_start)
{
/* If the group is closed already,
then this waiter originally had enough extra signals to
@@ -406,13 +402,13 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
by now, perhaps in the process of switching back to an older
G2, but in either case we're allowed to consume the available
signal and should not block anymore. */
- if ((int)(signals - lowseq) >= 2)
+ if ((int)(signals - (unsigned int)g1_start) > 0)
{
/* Try to grab a signal. See above for MO. (if we do another loop
iteration we need to see the correct value of g1_start) */
if (atomic_compare_exchange_weak_acquire (
cond->__data.__g_signals + g,
- &signals, signals - 2))
+ &signals, signals - 1))
break;
else
continue;
--
2.49.0

View File

@@ -70,6 +70,8 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
file://0026-PR25847-6.patch \
file://0026-PR25847-7.patch \
file://0026-PR25847-8.patch \
file://0026-PR25847-9.patch \
file://0026-PR25847-10.patch \
\
file://0001-Revert-Linux-Implement-a-useful-version-of-_startup_.patch \
file://0002-get_nscd_addresses-Fix-subscript-typos-BZ-29605.patch \

View File

@@ -24,7 +24,7 @@ IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx"
inherit core-image setuptools3
SRCREV ?= "49e837cefaa0d1844b32ff788c6e9de246a3a739"
SRCREV ?= "cb1206dd8460f2701df03b1e9224825bad23a90e"
SRC_URI = "git://git.yoctoproject.org/poky;branch=kirkstone \
file://Yocto_Build_Appliance.vmx \
file://Yocto_Build_Appliance.vmxf \

View File

@@ -0,0 +1,802 @@
From 87786d6200ae1f5ac98d21f04d451e17ff25a216 Mon Sep 17 00:00:00 2001
From: David Kilzer <ddkilzer@apple.com>
Reviewed-By: Aron Xu <aron@debian.org>
Date: Mon, 23 Jun 2025 14:41:56 -0700
Subject: [PATCH] libxslt: heap-use-after-free in xmlFreeID caused by `atype`
corruption
* include/libxml/tree.h:
(XML_ATTR_CLEAR_ATYPE): Add.
(XML_ATTR_GET_ATYPE): Add.
(XML_ATTR_SET_ATYPE): Add.
(XML_NODE_ADD_EXTRA): Add.
(XML_NODE_CLEAR_EXTRA): Add.
(XML_NODE_GET_EXTRA): Add.
(XML_NODE_SET_EXTRA): Add.
(XML_DOC_ADD_PROPERTIES): Add.
(XML_DOC_CLEAR_PROPERTIES): Add.
(XML_DOC_GET_PROPERTIES): Add.
(XML_DOC_SET_PROPERTIES): Add.
- Add macros for accessing fields with upper bits that may be set by
libxslt.
* HTMLparser.c:
(htmlNewDocNoDtD):
* SAX2.c:
(xmlSAX2StartDocument):
(xmlSAX2EndDocument):
* parser.c:
(xmlParseEntityDecl):
(xmlParseExternalSubset):
(xmlParseReference):
(xmlCtxtParseDtd):
* runxmlconf.c:
(xmlconfTestInvalid):
(xmlconfTestValid):
* tree.c:
(xmlNewDoc):
(xmlFreeProp):
(xmlNodeSetDoc):
(xmlSetNsProp):
(xmlDOMWrapAdoptBranch):
* valid.c:
(xmlFreeID):
(xmlAddIDInternal):
(xmlValidateAttributeValueInternal):
(xmlValidateOneAttribute):
(xmlValidateRef):
* xmlreader.c:
(xmlTextReaderStartElement):
(xmlTextReaderStartElementNs):
(xmlTextReaderValidateEntity):
(xmlTextReaderRead):
(xmlTextReaderNext):
(xmlTextReaderIsEmptyElement):
(xmlTextReaderPreserve):
* xmlschemas.c:
(xmlSchemaPValAttrNodeID):
* xmlschemastypes.c:
(xmlSchemaValAtomicType):
- Adopt macros by renaming the struct fields, recompiling and fixing
compiler failures, then changing the struct field names back.
Origin: https://launchpad.net/ubuntu/+source/libxml2/2.9.14+dfsg-1.3ubuntu3.6
Ref : https://security-tracker.debian.org/tracker/CVE-2025-7425
CVE: CVE-2025-7425
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxslt/-/issues/140]
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
---
HTMLparser.c | 1 +
SAX2.c | 6 ++--
include/libxml/tree.h | 14 ++++++++-
parser.c | 8 ++---
runxmlconf.c | 4 +--
tree.c | 20 ++++++-------
valid.c | 68 +++++++++++++++++++++----------------------
xmlreader.c | 30 +++++++++----------
xmlschemas.c | 4 +--
xmlschemastypes.c | 12 ++++----
10 files changed, 90 insertions(+), 77 deletions(-)
diff --git a/HTMLparser.c b/HTMLparser.c
index e720bb2..1307f71 100644
--- a/HTMLparser.c
+++ b/HTMLparser.c
@@ -2514,6 +2514,7 @@ htmlNewDocNoDtD(const xmlChar *URI, const xmlChar *ExternalID) {
cur->refs = NULL;
cur->_private = NULL;
cur->charset = XML_CHAR_ENCODING_UTF8;
+ XML_DOC_SET_PROPERTIES(cur, XML_DOC_HTML | XML_DOC_USERBUILT);
cur->properties = XML_DOC_HTML | XML_DOC_USERBUILT;
if ((ExternalID != NULL) ||
(URI != NULL))
diff --git a/SAX2.c b/SAX2.c
index f7c77c2..0d8e84a 100644
--- a/SAX2.c
+++ b/SAX2.c
@@ -970,7 +970,7 @@ xmlSAX2StartDocument(void *ctx)
xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument");
return;
}
- ctxt->myDoc->properties = XML_DOC_HTML;
+ XML_DOC_SET_PROPERTIES(ctxt->myDoc, XML_DOC_HTML);
ctxt->myDoc->parseFlags = ctxt->options;
#else
xmlGenericError(xmlGenericErrorContext,
@@ -983,9 +983,9 @@ xmlSAX2StartDocument(void *ctx)
} else {
doc = ctxt->myDoc = xmlNewDoc(ctxt->version);
if (doc != NULL) {
- doc->properties = 0;
+ XML_DOC_CLEAR_PROPERTIES(doc);
if (ctxt->options & XML_PARSE_OLD10)
- doc->properties |= XML_DOC_OLD10;
+ XML_DOC_ADD_PROPERTIES(doc, XML_DOC_OLD10);
doc->parseFlags = ctxt->options;
if (ctxt->encoding != NULL)
doc->encoding = xmlStrdup(ctxt->encoding);
diff --git a/include/libxml/tree.h b/include/libxml/tree.h
index 1e79be9..61178b2 100644
--- a/include/libxml/tree.h
+++ b/include/libxml/tree.h
@@ -365,7 +365,6 @@ struct _xmlElement {
#endif
};
-
/**
* XML_LOCAL_NAMESPACE:
*
@@ -446,6 +445,10 @@ struct _xmlAttr {
void *psvi; /* for type/PSVI information */
};
+#define XML_ATTR_CLEAR_ATYPE(attr) (((attr)->atype) = 0)
+#define XML_ATTR_GET_ATYPE(attr) (((attr)->atype) & ~(15U << 27))
+#define XML_ATTR_SET_ATYPE(attr, type) ((attr)->atype = ((((attr)->atype) & (15U << 27)) | ((type) & ~(15U << 27))))
+
/**
* xmlID:
*
@@ -507,6 +510,11 @@ struct _xmlNode {
unsigned short extra; /* extra data for XPath/XSLT */
};
+#define XML_NODE_ADD_EXTRA(node, type) ((node)->extra |= ((type) & ~(15U << 12)))
+#define XML_NODE_CLEAR_EXTRA(node) (((node)->extra) = 0)
+#define XML_NODE_GET_EXTRA(node) (((node)->extra) & ~(15U << 12))
+#define XML_NODE_SET_EXTRA(node, type) ((node)->extra = ((((node)->extra) & (15U << 12)) | ((type) & ~(15U << 12))))
+
/**
* XML_GET_CONTENT:
*
@@ -585,6 +593,10 @@ struct _xmlDoc {
set at the end of parsing */
};
+#define XML_DOC_ADD_PROPERTIES(doc, type) ((doc)->properties |= ((type) & ~(15U << 27)))
+#define XML_DOC_CLEAR_PROPERTIES(doc) (((doc)->properties) = 0)
+#define XML_DOC_GET_PROPERTIES(doc) (((doc)->properties) & ~(15U << 27))
+#define XML_DOC_SET_PROPERTIES(doc, type) ((doc)->properties = ((((doc)->properties) & (15U << 27)) | ((type) & ~(15U << 27))))
typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
diff --git a/parser.c b/parser.c
index 738dbee..772d883 100644
--- a/parser.c
+++ b/parser.c
@@ -5523,7 +5523,7 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) {
xmlErrMemory(ctxt, "New Doc failed");
return;
}
- ctxt->myDoc->properties = XML_DOC_INTERNAL;
+ XML_DOC_SET_PROPERTIES(ctxt->myDoc, XML_DOC_INTERNAL);
}
if (ctxt->myDoc->intSubset == NULL)
ctxt->myDoc->intSubset = xmlNewDtd(ctxt->myDoc,
@@ -5594,7 +5594,7 @@ xmlParseEntityDecl(xmlParserCtxtPtr ctxt) {
xmlErrMemory(ctxt, "New Doc failed");
return;
}
- ctxt->myDoc->properties = XML_DOC_INTERNAL;
+ XML_DOC_SET_PROPERTIES(ctxt->myDoc, XML_DOC_INTERNAL);
}
if (ctxt->myDoc->intSubset == NULL)
@@ -7035,7 +7035,7 @@ xmlParseExternalSubset(xmlParserCtxtPtr ctxt, const xmlChar *ExternalID,
xmlErrMemory(ctxt, "New Doc failed");
return;
}
- ctxt->myDoc->properties = XML_DOC_INTERNAL;
+ XML_DOC_SET_PROPERTIES(ctxt->myDoc, XML_DOC_INTERNAL);
}
if ((ctxt->myDoc != NULL) && (ctxt->myDoc->intSubset == NULL))
xmlCreateIntSubset(ctxt->myDoc, NULL, ExternalID, SystemID);
@@ -7419,7 +7419,7 @@ xmlParseReference(xmlParserCtxtPtr ctxt) {
(nw != NULL) &&
(nw->type == XML_ELEMENT_NODE) &&
(nw->children == NULL))
- nw->extra = 1;
+ XML_NODE_SET_EXTRA(nw, 1);
break;
}
diff --git a/runxmlconf.c b/runxmlconf.c
index f43fdd3..82b7241 100644
--- a/runxmlconf.c
+++ b/runxmlconf.c
@@ -197,7 +197,7 @@ xmlconfTestInvalid(const char *id, const char *filename, int options) {
id, filename);
} else {
/* invalidity should be reported both in the context and in the document */
- if ((ctxt->valid != 0) || (doc->properties & XML_DOC_DTDVALID)) {
+ if ((ctxt->valid != 0) || (XML_DOC_GET_PROPERTIES(doc) & XML_DOC_DTDVALID)) {
test_log("test %s : %s failed to detect invalid document\n",
id, filename);
nb_errors++;
@@ -229,7 +229,7 @@ xmlconfTestValid(const char *id, const char *filename, int options) {
ret = 0;
} else {
/* validity should be reported both in the context and in the document */
- if ((ctxt->valid == 0) || ((doc->properties & XML_DOC_DTDVALID) == 0)) {
+ if ((ctxt->valid == 0) || ((XML_DOC_GET_PROPERTIES(doc) & XML_DOC_DTDVALID) == 0)) {
test_log("test %s : %s failed to validate a valid document\n",
id, filename);
nb_errors++;
diff --git a/tree.c b/tree.c
index cdf863c..3bac0b8 100644
--- a/tree.c
+++ b/tree.c
@@ -1192,7 +1192,7 @@ xmlNewDoc(const xmlChar *version) {
cur->compression = -1; /* not initialized */
cur->doc = cur;
cur->parseFlags = 0;
- cur->properties = XML_DOC_USERBUILT;
+ XML_DOC_SET_PROPERTIES(cur, XML_DOC_USERBUILT);
/*
* The in memory encoding is always UTF8
* This field will never change and would
@@ -2119,7 +2119,7 @@ xmlFreeProp(xmlAttrPtr cur) {
xmlDeregisterNodeDefaultValue((xmlNodePtr)cur);
/* Check for ID removal -> leading to invalid references ! */
- if ((cur->doc != NULL) && (cur->atype == XML_ATTRIBUTE_ID)) {
+ if ((cur->doc != NULL) && (XML_ATTR_GET_ATYPE(cur) == XML_ATTRIBUTE_ID)) {
xmlRemoveID(cur->doc, cur);
}
if (cur->children != NULL) xmlFreeNodeList(cur->children);
@@ -2838,7 +2838,7 @@ xmlSetTreeDoc(xmlNodePtr tree, xmlDocPtr doc) {
if(tree->type == XML_ELEMENT_NODE) {
prop = tree->properties;
while (prop != NULL) {
- if (prop->atype == XML_ATTRIBUTE_ID) {
+ if (XML_ATTR_GET_ATYPE(prop) == XML_ATTRIBUTE_ID) {
xmlRemoveID(tree->doc, prop);
}
@@ -6953,9 +6953,9 @@ xmlSetNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name,
/*
* Modify the attribute's value.
*/
- if (prop->atype == XML_ATTRIBUTE_ID) {
+ if (XML_ATTR_GET_ATYPE(prop) == XML_ATTRIBUTE_ID) {
xmlRemoveID(node->doc, prop);
- prop->atype = XML_ATTRIBUTE_ID;
+ XML_ATTR_SET_ATYPE(prop, XML_ATTRIBUTE_ID);
}
if (prop->children != NULL)
xmlFreeNodeList(prop->children);
@@ -6975,7 +6975,7 @@ xmlSetNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name,
tmp = tmp->next;
}
}
- if (prop->atype == XML_ATTRIBUTE_ID)
+ if (XML_ATTR_GET_ATYPE(prop) == XML_ATTRIBUTE_ID)
xmlAddID(NULL, node->doc, value, prop);
return(prop);
}
@@ -9252,7 +9252,7 @@ ns_end:
if (cur->type == XML_ELEMENT_NODE) {
cur->psvi = NULL;
cur->line = 0;
- cur->extra = 0;
+ XML_NODE_CLEAR_EXTRA(cur);
/*
* Walk attributes.
*/
@@ -9268,11 +9268,11 @@ ns_end:
* Attributes.
*/
if ((sourceDoc != NULL) &&
- (((xmlAttrPtr) cur)->atype == XML_ATTRIBUTE_ID))
+ (XML_ATTR_GET_ATYPE((xmlAttrPtr) cur) == XML_ATTRIBUTE_ID))
{
xmlRemoveID(sourceDoc, (xmlAttrPtr) cur);
}
- ((xmlAttrPtr) cur)->atype = 0;
+ XML_ATTR_CLEAR_ATYPE((xmlAttrPtr) cur);
((xmlAttrPtr) cur)->psvi = NULL;
}
break;
@@ -9992,7 +9992,7 @@ xmlDOMWrapAdoptAttr(xmlDOMWrapCtxtPtr ctxt,
}
XML_TREE_ADOPT_STR(attr->name);
- attr->atype = 0;
+ XML_ATTR_CLEAR_ATYPE(attr);
attr->psvi = NULL;
/*
* Walk content.
diff --git a/valid.c b/valid.c
index 36a0435..8e76cfa 100644
--- a/valid.c
+++ b/valid.c
@@ -1906,7 +1906,7 @@ xmlScanIDAttributeDecl(xmlValidCtxtPtr ctxt, xmlElementPtr elem, int err) {
if (elem == NULL) return(0);
cur = elem->attributes;
while (cur != NULL) {
- if (cur->atype == XML_ATTRIBUTE_ID) {
+ if (XML_ATTR_GET_ATYPE(cur) == XML_ATTRIBUTE_ID) {
ret ++;
if ((ret > 1) && (err))
xmlErrValidNode(ctxt, (xmlNodePtr) elem, XML_DTD_MULTIPLE_ID,
@@ -2279,7 +2279,7 @@ xmlDumpAttributeDecl(xmlBufferPtr buf, xmlAttributePtr attr) {
xmlBufferWriteChar(buf, ":");
}
xmlBufferWriteCHAR(buf, attr->name);
- switch (attr->atype) {
+ switch (XML_ATTR_GET_ATYPE(attr)) {
case XML_ATTRIBUTE_CDATA:
xmlBufferWriteChar(buf, " CDATA");
break;
@@ -2758,7 +2758,7 @@ xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value,
return(NULL);
}
if (attr != NULL)
- attr->atype = XML_ATTRIBUTE_ID;
+ XML_ATTR_SET_ATYPE(attr, XML_ATTRIBUTE_ID);
return(ret);
}
@@ -2837,7 +2837,7 @@ xmlIsID(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) {
if ((fullelemname != felem) && (fullelemname != elem->name))
xmlFree(fullelemname);
- if ((attrDecl != NULL) && (attrDecl->atype == XML_ATTRIBUTE_ID))
+ if ((attrDecl != NULL) && (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_ID))
return(1);
}
return(0);
@@ -2878,7 +2878,7 @@ xmlRemoveID(xmlDocPtr doc, xmlAttrPtr attr) {
xmlHashRemoveEntry(table, ID, xmlFreeIDTableEntry);
xmlFree(ID);
- attr->atype = 0;
+ XML_ATTR_CLEAR_ATYPE(attr);
return(0);
}
@@ -3157,8 +3157,8 @@ xmlIsRef(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr) {
elem->name, attr->name);
if ((attrDecl != NULL) &&
- (attrDecl->atype == XML_ATTRIBUTE_IDREF ||
- attrDecl->atype == XML_ATTRIBUTE_IDREFS))
+ (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_IDREF ||
+ XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_IDREFS))
return(1);
}
return(0);
@@ -3532,7 +3532,7 @@ xmlIsMixedElement(xmlDocPtr doc, const xmlChar *name) {
static int
xmlIsDocNameStartChar(xmlDocPtr doc, int c) {
- if ((doc == NULL) || (doc->properties & XML_DOC_OLD10) == 0) {
+ if ((doc == NULL) || (XML_DOC_GET_PROPERTIES(doc) & XML_DOC_OLD10) == 0) {
/*
* Use the new checks of production [4] [4a] amd [5] of the
* Update 5 of XML-1.0
@@ -3562,7 +3562,7 @@ xmlIsDocNameStartChar(xmlDocPtr doc, int c) {
static int
xmlIsDocNameChar(xmlDocPtr doc, int c) {
- if ((doc == NULL) || (doc->properties & XML_DOC_OLD10) == 0) {
+ if ((doc == NULL) || (XML_DOC_GET_PROPERTIES(doc) & XML_DOC_OLD10) == 0) {
/*
* Use the new checks of production [4] [4a] amd [5] of the
* Update 5 of XML-1.0
@@ -4112,7 +4112,7 @@ xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
if (attrDecl == NULL)
return(NULL);
- if (attrDecl->atype == XML_ATTRIBUTE_CDATA)
+ if (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_CDATA)
return(NULL);
ret = xmlStrdup(value);
@@ -4174,7 +4174,7 @@ xmlValidNormalizeAttributeValue(xmlDocPtr doc, xmlNodePtr elem,
if (attrDecl == NULL)
return(NULL);
- if (attrDecl->atype == XML_ATTRIBUTE_CDATA)
+ if (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_CDATA)
return(NULL);
ret = xmlStrdup(value);
@@ -4189,7 +4189,7 @@ xmlValidateAttributeIdCallback(void *payload, void *data,
const xmlChar *name ATTRIBUTE_UNUSED) {
xmlAttributePtr attr = (xmlAttributePtr) payload;
int *count = (int *) data;
- if (attr->atype == XML_ATTRIBUTE_ID) (*count)++;
+ if (XML_ATTR_GET_ATYPE(attr) == XML_ATTRIBUTE_ID) (*count)++;
}
/**
@@ -4221,7 +4221,7 @@ xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
/* Attribute Default Legal */
/* Enumeration */
if (attr->defaultValue != NULL) {
- val = xmlValidateAttributeValueInternal(doc, attr->atype,
+ val = xmlValidateAttributeValueInternal(doc, XML_ATTR_GET_ATYPE(attr),
attr->defaultValue);
if (val == 0) {
xmlErrValidNode(ctxt, (xmlNodePtr) attr, XML_DTD_ATTRIBUTE_DEFAULT,
@@ -4232,7 +4232,7 @@ xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
}
/* ID Attribute Default */
- if ((attr->atype == XML_ATTRIBUTE_ID)&&
+ if ((XML_ATTR_GET_ATYPE(attr) == XML_ATTRIBUTE_ID)&&
(attr->def != XML_ATTRIBUTE_IMPLIED) &&
(attr->def != XML_ATTRIBUTE_REQUIRED)) {
xmlErrValidNode(ctxt, (xmlNodePtr) attr, XML_DTD_ID_FIXED,
@@ -4242,7 +4242,7 @@ xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
}
/* One ID per Element Type */
- if (attr->atype == XML_ATTRIBUTE_ID) {
+ if (XML_ATTR_GET_ATYPE(attr) == XML_ATTRIBUTE_ID) {
int nbId;
/* the trick is that we parse DtD as their own internal subset */
@@ -4501,9 +4501,9 @@ xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
attr->name, elem->name, NULL);
return(0);
}
- attr->atype = attrDecl->atype;
+ XML_ATTR_SET_ATYPE(attr, attrDecl->atype);
- val = xmlValidateAttributeValueInternal(doc, attrDecl->atype, value);
+ val = xmlValidateAttributeValueInternal(doc, XML_ATTR_GET_ATYPE(attrDecl), value);
if (val == 0) {
xmlErrValidNode(ctxt, elem, XML_DTD_ATTRIBUTE_VALUE,
"Syntax of value for attribute %s of %s is not valid\n",
@@ -4522,19 +4522,19 @@ xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
}
/* Validity Constraint: ID uniqueness */
- if (attrDecl->atype == XML_ATTRIBUTE_ID) {
+ if (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_ID) {
if (xmlAddID(ctxt, doc, value, attr) == NULL)
ret = 0;
}
- if ((attrDecl->atype == XML_ATTRIBUTE_IDREF) ||
- (attrDecl->atype == XML_ATTRIBUTE_IDREFS)) {
+ if ((XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_IDREF) ||
+ (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_IDREFS)) {
if (xmlAddRef(ctxt, doc, value, attr) == NULL)
ret = 0;
}
/* Validity Constraint: Notation Attributes */
- if (attrDecl->atype == XML_ATTRIBUTE_NOTATION) {
+ if (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_NOTATION) {
xmlEnumerationPtr tree = attrDecl->tree;
xmlNotationPtr nota;
@@ -4564,7 +4564,7 @@ xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
}
/* Validity Constraint: Enumeration */
- if (attrDecl->atype == XML_ATTRIBUTE_ENUMERATION) {
+ if (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_ENUMERATION) {
xmlEnumerationPtr tree = attrDecl->tree;
while (tree != NULL) {
if (xmlStrEqual(tree->name, value)) break;
@@ -4589,7 +4589,7 @@ xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
/* Extra check for the attribute value */
ret &= xmlValidateAttributeValue2(ctxt, doc, attr->name,
- attrDecl->atype, value);
+ XML_ATTR_GET_ATYPE(attrDecl), value);
return(ret);
}
@@ -4688,7 +4688,7 @@ xmlNodePtr elem, const xmlChar *prefix, xmlNsPtr ns, const xmlChar *value) {
return(0);
}
- val = xmlValidateAttributeValueInternal(doc, attrDecl->atype, value);
+ val = xmlValidateAttributeValueInternal(doc, XML_ATTR_GET_ATYPE(attrDecl), value);
if (val == 0) {
if (ns->prefix != NULL) {
xmlErrValidNode(ctxt, elem, XML_DTD_INVALID_DEFAULT,
@@ -4738,7 +4738,7 @@ xmlNodePtr elem, const xmlChar *prefix, xmlNsPtr ns, const xmlChar *value) {
#endif
/* Validity Constraint: Notation Attributes */
- if (attrDecl->atype == XML_ATTRIBUTE_NOTATION) {
+ if (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_NOTATION) {
xmlEnumerationPtr tree = attrDecl->tree;
xmlNotationPtr nota;
@@ -4780,7 +4780,7 @@ xmlNodePtr elem, const xmlChar *prefix, xmlNsPtr ns, const xmlChar *value) {
}
/* Validity Constraint: Enumeration */
- if (attrDecl->atype == XML_ATTRIBUTE_ENUMERATION) {
+ if (XML_ATTR_GET_ATYPE(attrDecl) == XML_ATTRIBUTE_ENUMERATION) {
xmlEnumerationPtr tree = attrDecl->tree;
while (tree != NULL) {
if (xmlStrEqual(tree->name, value)) break;
@@ -4818,10 +4818,10 @@ xmlNodePtr elem, const xmlChar *prefix, xmlNsPtr ns, const xmlChar *value) {
/* Extra check for the attribute value */
if (ns->prefix != NULL) {
ret &= xmlValidateAttributeValue2(ctxt, doc, ns->prefix,
- attrDecl->atype, value);
+ XML_ATTR_GET_ATYPE(attrDecl), value);
} else {
ret &= xmlValidateAttributeValue2(ctxt, doc, BAD_CAST "xmlns",
- attrDecl->atype, value);
+ XML_ATTR_GET_ATYPE(attrDecl), value);
}
return(ret);
@@ -6574,7 +6574,7 @@ xmlValidateRef(xmlRefPtr ref, xmlValidCtxtPtr ctxt,
while (IS_BLANK_CH(*cur)) cur++;
}
xmlFree(dup);
- } else if (attr->atype == XML_ATTRIBUTE_IDREF) {
+ } else if (XML_ATTR_GET_ATYPE(attr) == XML_ATTRIBUTE_IDREF) {
id = xmlGetID(ctxt->doc, name);
if (id == NULL) {
xmlErrValidNode(ctxt, attr->parent, XML_DTD_UNKNOWN_ID,
@@ -6582,7 +6582,7 @@ xmlValidateRef(xmlRefPtr ref, xmlValidCtxtPtr ctxt,
attr->name, name, NULL);
ctxt->valid = 0;
}
- } else if (attr->atype == XML_ATTRIBUTE_IDREFS) {
+ } else if (XML_ATTR_GET_ATYPE(attr) == XML_ATTRIBUTE_IDREFS) {
xmlChar *dup, *str = NULL, *cur, save;
dup = xmlStrdup(name);
@@ -6782,7 +6782,7 @@ xmlValidateAttributeCallback(void *payload, void *data,
if (cur == NULL)
return;
- switch (cur->atype) {
+ switch (XML_ATTR_GET_ATYPE(cur)) {
case XML_ATTRIBUTE_CDATA:
case XML_ATTRIBUTE_ID:
case XML_ATTRIBUTE_IDREF :
@@ -6797,7 +6797,7 @@ xmlValidateAttributeCallback(void *payload, void *data,
if (cur->defaultValue != NULL) {
ret = xmlValidateAttributeValue2(ctxt, ctxt->doc, cur->name,
- cur->atype, cur->defaultValue);
+ XML_ATTR_GET_ATYPE(cur), cur->defaultValue);
if ((ret == 0) && (ctxt->valid == 1))
ctxt->valid = 0;
}
@@ -6805,14 +6805,14 @@ xmlValidateAttributeCallback(void *payload, void *data,
xmlEnumerationPtr tree = cur->tree;
while (tree != NULL) {
ret = xmlValidateAttributeValue2(ctxt, ctxt->doc,
- cur->name, cur->atype, tree->name);
+ cur->name, XML_ATTR_GET_ATYPE(cur), tree->name);
if ((ret == 0) && (ctxt->valid == 1))
ctxt->valid = 0;
tree = tree->next;
}
}
}
- if (cur->atype == XML_ATTRIBUTE_NOTATION) {
+ if (XML_ATTR_GET_ATYPE(cur) == XML_ATTRIBUTE_NOTATION) {
doc = cur->doc;
if (cur->elem == NULL) {
xmlErrValid(ctxt, XML_ERR_INTERNAL_ERROR,
diff --git a/xmlreader.c b/xmlreader.c
index 67ff2cd..2a1a66a 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -753,7 +753,7 @@ xmlTextReaderStartElement(void *ctx, const xmlChar *fullname,
if ((ctxt->node != NULL) && (ctxt->input != NULL) &&
(ctxt->input->cur != NULL) && (ctxt->input->cur[0] == '/') &&
(ctxt->input->cur[1] == '>'))
- ctxt->node->extra = NODE_IS_EMPTY;
+ XML_NODE_SET_EXTRA(ctxt->node, NODE_IS_EMPTY);
}
if (reader != NULL)
reader->state = XML_TEXTREADER_ELEMENT;
@@ -818,7 +818,7 @@ xmlTextReaderStartElementNs(void *ctx,
if ((ctxt->node != NULL) && (ctxt->input != NULL) &&
(ctxt->input->cur != NULL) && (ctxt->input->cur[0] == '/') &&
(ctxt->input->cur[1] == '>'))
- ctxt->node->extra = NODE_IS_EMPTY;
+ XML_NODE_SET_EXTRA(ctxt->node, NODE_IS_EMPTY);
}
if (reader != NULL)
reader->state = XML_TEXTREADER_ELEMENT;
@@ -1216,7 +1216,7 @@ skip_children:
xmlNodePtr tmp;
if (reader->entNr == 0) {
while ((tmp = node->last) != NULL) {
- if ((tmp->extra & NODE_IS_PRESERVED) == 0) {
+ if ((XML_NODE_GET_EXTRA(tmp) & NODE_IS_PRESERVED) == 0) {
xmlUnlinkNode(tmp);
xmlTextReaderFreeNode(reader, tmp);
} else
@@ -1467,7 +1467,7 @@ get_next_node:
if ((oldstate == XML_TEXTREADER_ELEMENT) &&
(reader->node->type == XML_ELEMENT_NODE) &&
(reader->node->children == NULL) &&
- ((reader->node->extra & NODE_IS_EMPTY) == 0)
+ ((XML_NODE_GET_EXTRA(reader->node) & NODE_IS_EMPTY) == 0)
#ifdef LIBXML_XINCLUDE_ENABLED
&& (reader->in_xinclude <= 0)
#endif
@@ -1481,7 +1481,7 @@ get_next_node:
xmlTextReaderValidatePop(reader);
#endif /* LIBXML_REGEXP_ENABLED */
if ((reader->preserves > 0) &&
- (reader->node->extra & NODE_IS_SPRESERVED))
+ (XML_NODE_GET_EXTRA(reader->node) & NODE_IS_SPRESERVED))
reader->preserves--;
reader->node = reader->node->next;
reader->state = XML_TEXTREADER_ELEMENT;
@@ -1497,7 +1497,7 @@ get_next_node:
(reader->node->prev != NULL) &&
(reader->node->prev->type != XML_DTD_NODE)) {
xmlNodePtr tmp = reader->node->prev;
- if ((tmp->extra & NODE_IS_PRESERVED) == 0) {
+ if ((XML_NODE_GET_EXTRA(tmp) & NODE_IS_PRESERVED) == 0) {
if (oldnode == tmp)
oldnode = NULL;
xmlUnlinkNode(tmp);
@@ -1510,7 +1510,7 @@ get_next_node:
if ((oldstate == XML_TEXTREADER_ELEMENT) &&
(reader->node->type == XML_ELEMENT_NODE) &&
(reader->node->children == NULL) &&
- ((reader->node->extra & NODE_IS_EMPTY) == 0)) {;
+ ((XML_NODE_GET_EXTRA(reader->node) & NODE_IS_EMPTY) == 0)) {;
reader->state = XML_TEXTREADER_END;
goto node_found;
}
@@ -1519,7 +1519,7 @@ get_next_node:
xmlTextReaderValidatePop(reader);
#endif /* LIBXML_REGEXP_ENABLED */
if ((reader->preserves > 0) &&
- (reader->node->extra & NODE_IS_SPRESERVED))
+ (XML_NODE_GET_EXTRA(reader->node) & NODE_IS_SPRESERVED))
reader->preserves--;
reader->node = reader->node->parent;
if ((reader->node == NULL) ||
@@ -1546,7 +1546,7 @@ get_next_node:
#endif
(reader->entNr == 0) &&
(oldnode->type != XML_DTD_NODE) &&
- ((oldnode->extra & NODE_IS_PRESERVED) == 0)) {
+ ((XML_NODE_GET_EXTRA(oldnode) & NODE_IS_PRESERVED) == 0)) {
xmlUnlinkNode(oldnode);
xmlTextReaderFreeNode(reader, oldnode);
}
@@ -1559,7 +1559,7 @@ get_next_node:
#endif
(reader->entNr == 0) &&
(reader->node->last != NULL) &&
- ((reader->node->last->extra & NODE_IS_PRESERVED) == 0)) {
+ ((XML_NODE_GET_EXTRA(reader->node->last) & NODE_IS_PRESERVED) == 0)) {
xmlNodePtr tmp = reader->node->last;
xmlUnlinkNode(tmp);
xmlTextReaderFreeNode(reader, tmp);
@@ -1741,7 +1741,7 @@ xmlTextReaderNext(xmlTextReaderPtr reader) {
return(xmlTextReaderRead(reader));
if (reader->state == XML_TEXTREADER_END || reader->state == XML_TEXTREADER_BACKTRACK)
return(xmlTextReaderRead(reader));
- if (cur->extra & NODE_IS_EMPTY)
+ if (XML_NODE_GET_EXTRA(cur) & NODE_IS_EMPTY)
return(xmlTextReaderRead(reader));
do {
ret = xmlTextReaderRead(reader);
@@ -3167,7 +3167,7 @@ xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader) {
if (reader->in_xinclude > 0)
return(1);
#endif
- return((reader->node->extra & NODE_IS_EMPTY) != 0);
+ return((XML_NODE_GET_EXTRA(reader->node) & NODE_IS_EMPTY) != 0);
}
/**
@@ -4035,15 +4035,15 @@ xmlTextReaderPreserve(xmlTextReaderPtr reader) {
return(NULL);
if ((cur->type != XML_DOCUMENT_NODE) && (cur->type != XML_DTD_NODE)) {
- cur->extra |= NODE_IS_PRESERVED;
- cur->extra |= NODE_IS_SPRESERVED;
+ XML_NODE_ADD_EXTRA(cur, NODE_IS_PRESERVED);
+ XML_NODE_ADD_EXTRA(cur, NODE_IS_SPRESERVED);
}
reader->preserves++;
parent = cur->parent;;
while (parent != NULL) {
if (parent->type == XML_ELEMENT_NODE)
- parent->extra |= NODE_IS_PRESERVED;
+ XML_NODE_ADD_EXTRA(parent, NODE_IS_PRESERVED);
parent = parent->parent;
}
return(cur);
diff --git a/xmlschemas.c b/xmlschemas.c
index a2dd6cf..2e6c349 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -6024,7 +6024,7 @@ xmlSchemaPValAttrNodeID(xmlSchemaParserCtxtPtr ctxt, xmlAttrPtr attr)
/*
* NOTE: the IDness might have already be declared in the DTD
*/
- if (attr->atype != XML_ATTRIBUTE_ID) {
+ if (XML_ATTR_GET_ATYPE(attr) != XML_ATTRIBUTE_ID) {
xmlIDPtr res;
xmlChar *strip;
@@ -6047,7 +6047,7 @@ xmlSchemaPValAttrNodeID(xmlSchemaParserCtxtPtr ctxt, xmlAttrPtr attr)
NULL, NULL, "Duplicate value '%s' of simple "
"type 'xs:ID'", value, NULL);
} else
- attr->atype = XML_ATTRIBUTE_ID;
+ XML_ATTR_SET_ATYPE(attr, XML_ATTRIBUTE_ID);
}
} else if (ret > 0) {
ret = XML_SCHEMAP_S4S_ATTR_INVALID_VALUE;
diff --git a/xmlschemastypes.c b/xmlschemastypes.c
index af31be5..d40da49 100644
--- a/xmlschemastypes.c
+++ b/xmlschemastypes.c
@@ -2867,7 +2867,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
/*
* NOTE: the IDness might have already be declared in the DTD
*/
- if (attr->atype != XML_ATTRIBUTE_ID) {
+ if (XML_ATTR_GET_ATYPE(attr) != XML_ATTRIBUTE_ID) {
xmlIDPtr res;
xmlChar *strip;
@@ -2880,7 +2880,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
if (res == NULL) {
ret = 2;
} else {
- attr->atype = XML_ATTRIBUTE_ID;
+ XML_ATTR_SET_ATYPE(attr, XML_ATTRIBUTE_ID);
}
}
}
@@ -2905,7 +2905,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
xmlFree(strip);
} else
xmlAddRef(NULL, node->doc, value, attr);
- attr->atype = XML_ATTRIBUTE_IDREF;
+ XML_ATTR_SET_ATYPE(attr, XML_ATTRIBUTE_IDREF);
}
goto done;
case XML_SCHEMAS_IDREFS:
@@ -2919,7 +2919,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
(node->type == XML_ATTRIBUTE_NODE)) {
xmlAttrPtr attr = (xmlAttrPtr) node;
- attr->atype = XML_ATTRIBUTE_IDREFS;
+ XML_ATTR_SET_ATYPE(attr, XML_ATTRIBUTE_IDREFS);
}
goto done;
case XML_SCHEMAS_ENTITY:{
@@ -2950,7 +2950,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
(node->type == XML_ATTRIBUTE_NODE)) {
xmlAttrPtr attr = (xmlAttrPtr) node;
- attr->atype = XML_ATTRIBUTE_ENTITY;
+ XML_ATTR_SET_ATYPE(attr, XML_ATTRIBUTE_ENTITY);
}
goto done;
}
@@ -2967,7 +2967,7 @@ xmlSchemaValAtomicType(xmlSchemaTypePtr type, const xmlChar * value,
(node->type == XML_ATTRIBUTE_NODE)) {
xmlAttrPtr attr = (xmlAttrPtr) node;
- attr->atype = XML_ATTRIBUTE_ENTITIES;
+ XML_ATTR_SET_ATYPE(attr, XML_ATTRIBUTE_ENTITIES);
}
goto done;
case XML_SCHEMAS_NOTATION:{
--
2.50.1

View File

@@ -0,0 +1,117 @@
From 6ef8b9f05cc21d3fc28156fe5d1251834c29c7d7 Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnhofer@aevum.de>
Date: Thu, 28 Jul 2022 20:21:24 +0200
Subject: [PATCH] Make XPath depth check work with recursive invocations
EXSLT functions like dyn:map or dyn:evaluate invoke xmlXPathRunEval
recursively. Don't set depth to zero but keep and restore the original
value to avoid stack overflows when abusing these functions.
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/677a42645ef22b5a50741bad5facf9d8a8bc6d21]
CVE: CVE-2025-9714
Signed-off-by: Theo GAIGE <tgaige.opensource@witekio.com>
---
xpath.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/xpath.c b/xpath.c
index c2d845888..028471d53 100644
--- a/xpath.c
+++ b/xpath.c
@@ -13883,12 +13883,11 @@ static int
xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool)
{
xmlXPathCompExprPtr comp;
+ int oldDepth;
if ((ctxt == NULL) || (ctxt->comp == NULL))
return(-1);
- ctxt->context->depth = 0;
-
if (ctxt->valueTab == NULL) {
/* Allocate the value stack */
ctxt->valueTab = (xmlXPathObjectPtr *)
@@ -13942,11 +13941,13 @@ xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool)
"xmlXPathRunEval: last is less than zero\n");
return(-1);
}
+ oldDepth = ctxt->context->depth;
if (toBool)
return(xmlXPathCompOpEvalToBoolean(ctxt,
&comp->steps[comp->last], 0));
else
xmlXPathCompOpEval(ctxt, &comp->steps[comp->last]);
+ ctxt->context->depth = oldDepth;
return(0);
}
@@ -14217,6 +14218,7 @@ xmlXPathCompExprPtr
xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
xmlXPathParserContextPtr pctxt;
xmlXPathCompExprPtr comp;
+ int oldDepth = 0;
#ifdef XPATH_STREAMING
comp = xmlXPathTryStreamCompile(ctxt, str);
@@ -14230,8 +14232,10 @@ xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
if (pctxt == NULL)
return NULL;
if (ctxt != NULL)
- ctxt->depth = 0;
+ oldDepth = ctxt->depth;
xmlXPathCompileExpr(pctxt, 1);
+ if (ctxt != NULL)
+ ctxt->depth = oldDepth;
if( pctxt->error != XPATH_EXPRESSION_OK )
{
@@ -14252,8 +14256,10 @@ xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
comp = pctxt->comp;
if ((comp->nbStep > 1) && (comp->last >= 0)) {
if (ctxt != NULL)
- ctxt->depth = 0;
+ oldDepth = ctxt->depth;
xmlXPathOptimizeExpression(pctxt, &comp->steps[comp->last]);
+ if (ctxt != NULL)
+ ctxt->depth = oldDepth;
}
pctxt->comp = NULL;
}
@@ -14409,6 +14415,7 @@ xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) {
#ifdef XPATH_STREAMING
xmlXPathCompExprPtr comp;
#endif
+ int oldDepth = 0;
if (ctxt == NULL) return;
@@ -14422,8 +14429,10 @@ xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) {
#endif
{
if (ctxt->context != NULL)
- ctxt->context->depth = 0;
+ oldDepth = ctxt->context->depth;
xmlXPathCompileExpr(ctxt, 1);
+ if (ctxt->context != NULL)
+ ctxt->context->depth = oldDepth;
CHECK_ERROR;
/* Check for trailing characters. */
@@ -14432,9 +14441,11 @@ xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) {
if ((ctxt->comp->nbStep > 1) && (ctxt->comp->last >= 0)) {
if (ctxt->context != NULL)
- ctxt->context->depth = 0;
+ oldDepth = ctxt->context->depth;
xmlXPathOptimizeExpression(ctxt,
&ctxt->comp->steps[ctxt->comp->last]);
+ if (ctxt->context != NULL)
+ ctxt->context->depth = oldDepth;
}
}
--
2.43.0

View File

@@ -42,6 +42,8 @@ SRC_URI += "http://www.w3.org/XML/Test/xmlts20080827.tar;subdir=${BP};name=testt
file://CVE-2025-6021.patch \
file://CVE-2025-49794-CVE-2025-49796.patch \
file://CVE-2025-6170.patch \
file://CVE-2025-9714.patch \
file://CVE-2025-7425.patch \
"
SRC_URI[archive.sha256sum] = "60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee"

View File

@@ -0,0 +1,39 @@
From 345d2a053c32f3443dbfdd313f49346ce30b92f8 Mon Sep 17 00:00:00 2001
From: Rich Felker <dalias@aerifal.cx>
Date: Wed, 19 Nov 2025 13:23:38 +0100
Subject: [PATCH] iconv: fix erroneous input validation in EUC-KR decoder
as a result of incorrect bounds checking on the lead byte being
decoded, certain invalid inputs which should produce an encoding
error, such as "\xc8\x41", instead produced out-of-bounds loads from
the ksc table.
in a worst case, the loaded value may not be a valid unicode scalar
value, in which case, if the output encoding was UTF-8, wctomb would
return (size_t)-1, causing an overflow in the output pointer and
remaining buffer size which could clobber memory outside of the output
buffer.
bug report was submitted in private by Nick Wellnhofer on account of
potential security implications.
CVE: CVE-2025-26519
Upstream-Status: Backport [https://git.musl-libc.org/cgit/musl/commit/?id=e5adcd97b5196e29991b524237381a0202a60659]
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
---
src/locale/iconv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/locale/iconv.c b/src/locale/iconv.c
index 3047c27b..1fb66bc8 100644
--- a/src/locale/iconv.c
+++ b/src/locale/iconv.c
@@ -495,7 +495,7 @@ size_t iconv(iconv_t cd, char **restrict in, size_t *restrict inb, char **restri
if (c >= 93 || d >= 94) {
c += (0xa1-0x81);
d += 0xa1;
- if (c >= 93 || c>=0xc6-0x81 && d>0x52)
+ if (c > 0xc6-0x81 || c==0xc6-0x81 && d>0x52)
goto ilseq;
if (d-'A'<26) d = d-'A';
else if (d-'a'<26) d = d-'a'+26;

View File

@@ -0,0 +1,38 @@
From b81230050f6c3348038fe470d260028824b9a9e5 Mon Sep 17 00:00:00 2001
From: Rich Felker <dalias@aerifal.cx>
Date: Wed, 19 Nov 2025 13:27:15 +0100
Subject: [PATCH] iconv: harden UTF-8 output code path against input decoder
bugs
the UTF-8 output code was written assuming an invariant that iconv's
decoders only emit valid Unicode Scalar Values which wctomb can encode
successfully, thereby always returning a value between 1 and 4.
if this invariant is not satisfied, wctomb returns (size_t)-1, and the
subsequent adjustments to the output buffer pointer and remaining
output byte count overflow, moving the output position backwards,
potentially past the beginning of the buffer, without storing any
bytes.
CVE: CVE-2025-26519
Upstream-Status: Backport [https://git.musl-libc.org/cgit/musl/commit/?id=c47ad25ea3b484e10326f933e927c0bc8cded3da]
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
---
src/locale/iconv.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/locale/iconv.c b/src/locale/iconv.c
index 1fb66bc8..fb1d3217 100644
--- a/src/locale/iconv.c
+++ b/src/locale/iconv.c
@@ -538,6 +538,10 @@ size_t iconv(iconv_t cd, char **restrict in, size_t *restrict inb, char **restri
if (*outb < k) goto toobig;
memcpy(*out, tmp, k);
} else k = wctomb_utf8(*out, c);
+ /* This failure condition should be unreachable, but
+ * is included to prevent decoder bugs from translating
+ * into advancement outside the output buffer range. */
+ if (k>4) goto ilseq;
*out += k;
*outb -= k;
break;

View File

@@ -15,7 +15,9 @@ PV = "${BASEVER}+git${SRCPV}"
SRC_URI = "git://git.musl-libc.org/musl;branch=master \
file://0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch \
file://0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch \
"
file://CVE-2025-26519-1.patch \
file://CVE-2025-26519-2.patch \
"
S = "${WORKDIR}/git"

View File

@@ -235,6 +235,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \
-Dmode=release \
-Dsystem-alloc-uid-min=101 \
-Dsystem-uid-max=999 \
-Dtranslations=${@'false' if d.getVar('USE_NLS') == 'no' else 'true'} \
-Dsystem-alloc-gid-min=101 \
-Dsystem-gid-max=999 \
"

View File

@@ -80,5 +80,11 @@ SRC_URI = "\
file://0042-CVE-2025-5245.patch \
file://0043-CVE-2025-7546.patch \
file://0043-CVE-2025-7545.patch \
file://0044-CVE-2025-11082.patch \
file://0045-CVE-2025-11083.patch \
file://0046-CVE-2025-11081.patch \
file://0047-CVE-2025-8225.patch \
file://CVE-2025-11412.patch \
file://CVE-2025-11413.patch \
"
S = "${WORKDIR}/git"

View File

@@ -0,0 +1,46 @@
From ea1a0737c7692737a644af0486b71e4a392cbca8 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Mon, 22 Sep 2025 15:20:34 +0800
Subject: [PATCH] elf: Don't read beyond .eh_frame section size
PR ld/33464
* elf-eh-frame.c (_bfd_elf_parse_eh_frame): Don't read beyond
.eh_frame section size.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
CVE: CVE-2025-11082
Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ea1a0737c7692737a644af0486b71e4a392cbca8]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
bfd/elf-eh-frame.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c
index dc0d2e097f5..30bb313489c 100644
--- a/bfd/elf-eh-frame.c
+++ b/bfd/elf-eh-frame.c
@@ -733,6 +733,7 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info,
if (hdr_id == 0)
{
unsigned int initial_insn_length;
+ char *null_byte;
/* CIE */
this_inf->cie = 1;
@@ -749,10 +750,13 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info,
REQUIRE (cie->version == 1
|| cie->version == 3
|| cie->version == 4);
- REQUIRE (strlen ((char *) buf) < sizeof (cie->augmentation));
+ null_byte = memchr ((char *) buf, 0, end - buf);
+ REQUIRE (null_byte != NULL);
+ REQUIRE ((size_t) (null_byte - (char *) buf)
+ < sizeof (cie->augmentation));
strcpy (cie->augmentation, (char *) buf);
- buf = (bfd_byte *) strchr ((char *) buf, '\0') + 1;
+ buf = (bfd_byte *) null_byte + 1;
this_inf->u.cie.aug_str_len = buf - start - 1;
ENSURE_NO_RELOCS (buf);
if (buf[0] == 'e' && buf[1] == 'h')

View File

@@ -0,0 +1,77 @@
From 9ca499644a21ceb3f946d1c179c38a83be084490 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Thu, 18 Sep 2025 16:59:25 -0700
Subject: [PATCH] elf: Don't match corrupt section header in linker input
Don't swap in nor match corrupt section header in linker input to avoid
linker crash later.
PR ld/33457
* elfcode.h (elf_swap_shdr_in): Changed to return bool. Return
false for corrupt section header in linker input.
(elf_object_p): Reject if elf_swap_shdr_in returns false.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
CVE: CVE-2025-11083
Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=9ca499644a21ceb3f946d1c179c38a83be084490]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
bfd/elfcode.h | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index 9c65852e103..5224a1abee6 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -298,7 +298,7 @@ elf_swap_ehdr_out (bfd *abfd,
/* Translate an ELF section header table entry in external format into an
ELF section header table entry in internal format. */
-static void
+static bool
elf_swap_shdr_in (bfd *abfd,
const Elf_External_Shdr *src,
Elf_Internal_Shdr *dst)
@@ -328,6 +328,9 @@ elf_swap_shdr_in (bfd *abfd,
if (!abfd->read_only)
_bfd_error_handler (_("warning: %pB has a section "
"extending past end of file"), abfd);
+ /* PR ld/33457: Don't match corrupt section header. */
+ if (abfd->is_linker_input)
+ return false;
abfd->read_only = 1;
}
}
@@ -337,6 +340,7 @@ elf_swap_shdr_in (bfd *abfd,
dst->sh_entsize = H_GET_WORD (abfd, src->sh_entsize);
dst->bfd_section = NULL;
dst->contents = NULL;
+ return true;
}
/* Translate an ELF section header table entry in internal format into an
@@ -629,9 +633,9 @@ elf_object_p (bfd *abfd)
/* Read the first section header at index 0, and convert to internal
form. */
- if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
+ if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr)
+ || !elf_swap_shdr_in (abfd, &x_shdr, &i_shdr))
goto got_no_match;
- elf_swap_shdr_in (abfd, &x_shdr, &i_shdr);
/* If the section count is zero, the actual count is in the first
section header. */
@@ -717,9 +721,9 @@ elf_object_p (bfd *abfd)
to internal form. */
for (shindex = 1; shindex < i_ehdrp->e_shnum; shindex++)
{
- if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
+ if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr)
+ || !elf_swap_shdr_in (abfd, &x_shdr, i_shdrp + shindex))
goto got_no_match;
- elf_swap_shdr_in (abfd, &x_shdr, i_shdrp + shindex);
/* Sanity check sh_link and sh_info. */
if (i_shdrp[shindex].sh_link >= num_sec)

View File

@@ -0,0 +1,84 @@
From f87a66db645caf8cc0e6fc87b0c28c78a38af59b Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Tue, 9 Sep 2025 18:32:09 +0930
Subject: [PATCH] PR 33406 SEGV in dump_dwarf_section
Trying to dump .sframe in a PE file results in a segfault accessing
elf_section_data.
* objdump (dump_sframe_section, dump_dwarf_section): Don't access
elf_section_type without first checking the file is ELF.
---
binutils/objdump.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=f87a66db645caf8cc0e6fc87b0c28c78a38af59b]
CVE: CVE-2025-11081
Signed-off-by: Alan Modra <amodra@gmail.com>
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 290f7e51f66..ee8823da05a 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -4418,6 +4418,10 @@
else
match = name;
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+ && elf_section_type (section) == SHT_GNU_SFRAME)
+ match = ".sframe";
+
for (i = 0; i < max; i++)
if ((strcmp (debug_displays [i].section.uncompressed_name, match) == 0
|| strcmp (debug_displays [i].section.compressed_name, match) == 0
@@ -4923,6 +4927,36 @@
}
+static void
+dump_sframe_section (bfd *abfd, const char *sect_name, bool is_mainfile)
+
+{
+ /* Error checking for user provided SFrame section name, if any. */
+ if (sect_name)
+ {
+ asection *sec = bfd_get_section_by_name (abfd, sect_name);
+ if (sec == NULL)
+ {
+ printf (_("No %s section present\n\n"), sanitize_string (sect_name));
+ return;
+ }
+ /* Starting with Binutils 2.45, SFrame sections have section type
+ SHT_GNU_SFRAME. For SFrame sections from Binutils 2.44 or earlier,
+ check explcitly for SFrame sections of type SHT_PROGBITS and name
+ ".sframe" to allow them. */
+ else if (bfd_get_flavour (abfd) != bfd_target_elf_flavour
+ || (elf_section_type (sec) != SHT_GNU_SFRAME
+ && !(elf_section_type (sec) == SHT_PROGBITS
+ && strcmp (sect_name, ".sframe") == 0)))
+ {
+ printf (_("Section %s does not contain SFrame data\n\n"),
+ sanitize_string (sect_name));
+ return;
+ }
+ }
+ dump_dwarf (abfd, is_mainfile);
+}
+
static void
dump_target_specific (bfd *abfd)
{
const struct objdump_private_desc * const *desc;
diff --git a/include/elf/common.h b/include/elf/common.h
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -528,6 +528,8 @@
#define SHT_LOOS 0x60000000 /* First of OS specific semantics */
#define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */
+#define SHT_GNU_SFRAME 0x6ffffff4 /* SFrame stack trace information. */
+
#define SHT_GNU_INCREMENTAL_INPUTS 0x6fff4700 /* incremental build data */
#define SHT_GNU_ATTRIBUTES 0x6ffffff5 /* Object attributes */
#define SHT_GNU_HASH 0x6ffffff6 /* GNU style symbol hash table */

View File

@@ -0,0 +1,47 @@
From e51fdff7d2e538c0e5accdd65649ac68e6e0ddd4 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Wed, 19 Feb 2025 22:45:29 +1030
Subject: [PATCH] binutils/dwarf.c debug_information leak
It is possible with fuzzed files to have num_debug_info_entries zero
after allocating space for debug_information, leading to multiple
allocations.
* dwarf.c (process_debug_info): Don't test num_debug_info_entries
to determine whether debug_information has been allocated,
test alloc_num_debug_info_entries.
---
Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=e51fdff7d2e538c0e5accdd65649ac68e6e0ddd4]
CVE: CVE-2025-8225
binutils/dwarf.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
Signed-off-by: Alan Modra <amodra@gmail.com>
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 8e004cea839..bfbf83ec9f4 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -3807,13 +3807,11 @@ process_debug_info (struct dwarf_section * section,
}
if ((do_loc || do_debug_loc || do_debug_ranges || do_debug_info)
- && num_debug_info_entries == 0
- && ! do_types)
+ && alloc_num_debug_info_entries == 0
+ && !do_types)
{
-
/* Then allocate an array to hold the information. */
- debug_information = (debug_info *) cmalloc (num_units,
- sizeof (* debug_information));
+ debug_information = cmalloc (num_units, sizeof (*debug_information));
if (debug_information == NULL)
{
error (_("Not enough memory for a debug info array of %u entries\n"),
--
2.43.7

View File

@@ -0,0 +1,35 @@
From 047435dd988a3975d40c6626a8f739a0b2e154bc Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Thu, 25 Sep 2025 08:22:24 +0930
Subject: [PATCH] PR 33452 SEGV in bfd_elf_gc_record_vtentry
Limit addends on vtentry relocs, otherwise ld might attempt to
allocate a stupidly large array. This also fixes the expression
overflow leading to pr33452. A vtable of 33M entries on a 64-bit
host is surely large enough, especially considering that VTINHERIT
and VTENTRY relocations are to support -fvtable-gc that disappeared
from gcc over 20 years ago.
PR ld/33452
* elflink.c (bfd_elf_gc_record_vtentry): Sanity check addend.
CVE: CVE-2025-11412
Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=047435dd988a3975d40c6626a8f739a0b2e154bc]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
bfd/elflink.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 54f0d6e957e..0a0456177c2 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -14407,7 +14407,7 @@ bfd_elf_gc_record_vtentry (bfd *abfd, asection *sec,
const struct elf_backend_data *bed = get_elf_backend_data (abfd);
unsigned int log_file_align = bed->s->log_file_align;
- if (!h)
+ if (!h || addend > 1u << 28)
{
/* xgettext:c-format */
_bfd_error_handler (_("%pB: section '%pA': corrupt VTENTRY entry"),

View File

@@ -0,0 +1,38 @@
From 72efdf166aa0ed72ecc69fc2349af6591a7a19c0 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Thu, 25 Sep 2025 10:41:32 +0930
Subject: [PATCH] Re: elf: Disallow the empty global symbol name
sparc64-linux-gnu +FAIL: selective2
sparc64-linux-gnu +FAIL: selective3
PR ld/33456
* elflink.c (elf_link_add_object_symbols): Move new check later
to give the backend add_symbol_hook a chance to remove symbols
with empty names.
CVE: CVE-2025-11413
Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=72efdf166aa0ed72ecc69fc2349af6591a7a19c0]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
bfd/elflink.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 0a0456177c2..5c8b822e36a 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -4931,6 +4931,13 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
continue;
}
+ if (name[0] == '\0')
+ {
+ _bfd_error_handler (_("%pB: corrupt symbol table"), abfd);
+ bfd_set_error (bfd_error_bad_value);
+ goto error_free_vers;
+ }
+
/* Sanity check that all possibilities were handled. */
if (sec == NULL)
abort ();

View File

@@ -0,0 +1,71 @@
From 37e27f71bc356d880c908040cd0cb68fa2c371b8 Mon Sep 17 00:00:00 2001
From: Tyler Yankee <tyler.yankee@kitware.com>
Date: Wed, 13 Aug 2025 15:22:28 -0400
Subject: [PATCH] foreach: Explicitly skip replay without iterations
As written, foreach loops with a trailing `IN` (i.e., no loop
variable(s) given) lead to an assertion error. Handle this case by
exiting early when we know the loop won't execute anything.
Fixes: #27135
CVE: CVE-2025-9301
Upstream-Status: Backport
https://gitlab.kitware.com/cmake/cmake/-/commit/37e27f71bc356d880c908040cd0cb68fa2c371b8
Signed-off-by: Tyler Yankee <tyler.yankee@kitware.com>
Signed-off-by: Saravanan <saravanan.kadambathursubramaniyam@windriver.com>
---
Source/cmForEachCommand.cxx | 3 +++
Tests/RunCMake/foreach/RunCMakeTest.cmake | 1 +
Tests/RunCMake/foreach/TrailingIn-result.txt | 1 +
Tests/RunCMake/foreach/TrailingIn.cmake | 5 +++++
4 files changed, 10 insertions(+)
create mode 100644 Tests/RunCMake/foreach/TrailingIn-result.txt
create mode 100644 Tests/RunCMake/foreach/TrailingIn.cmake
diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx
index dcb36265..35b59960 100644
--- a/Source/cmForEachCommand.cxx
+++ b/Source/cmForEachCommand.cxx
@@ -100,6 +100,9 @@ bool cmForEachFunctionBlocker::ArgumentsMatch(cmListFileFunction const& lff,
bool cmForEachFunctionBlocker::Replay(
std::vector<cmListFileFunction> functions, cmExecutionStatus& inStatus)
{
+ if (this->Args.size() == this->IterationVarsCount) {
+ return true;
+ }
return this->ZipLists ? this->ReplayZipLists(functions, inStatus)
: this->ReplayItems(functions, inStatus);
}
diff --git a/Tests/RunCMake/foreach/RunCMakeTest.cmake b/Tests/RunCMake/foreach/RunCMakeTest.cmake
index 15ca4770..acfc742e 100644
--- a/Tests/RunCMake/foreach/RunCMakeTest.cmake
+++ b/Tests/RunCMake/foreach/RunCMakeTest.cmake
@@ -22,3 +22,4 @@ run_cmake(foreach-RANGE-invalid-test)
run_cmake(foreach-RANGE-out-of-range-test)
run_cmake(foreach-var-scope-CMP0124-OLD)
run_cmake(foreach-var-scope-CMP0124-NEW)
+run_cmake(TrailingIn)
diff --git a/Tests/RunCMake/foreach/TrailingIn-result.txt b/Tests/RunCMake/foreach/TrailingIn-result.txt
new file mode 100644
index 00000000..573541ac
--- /dev/null
+++ b/Tests/RunCMake/foreach/TrailingIn-result.txt
@@ -0,0 +1 @@
+0
diff --git a/Tests/RunCMake/foreach/TrailingIn.cmake b/Tests/RunCMake/foreach/TrailingIn.cmake
new file mode 100644
index 00000000..e2b5b2f2
--- /dev/null
+++ b/Tests/RunCMake/foreach/TrailingIn.cmake
@@ -0,0 +1,5 @@
+foreach(v IN)
+endforeach()
+
+foreach(v1 v2 IN)
+endforeach()
--
2.35.5

View File

@@ -12,6 +12,7 @@ SRC_URI:append:class-nativesdk = " \
file://0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch \
file://0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch \
"
SRC_URI += "file://CVE-2025-9301.patch"
LICENSE:append = " & BSD-1-Clause & MIT"
LIC_FILES_CHKSUM:append = " \

View File

@@ -25,6 +25,8 @@ SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
file://0001-debuginfod-debuginfod-client.c-use-long-for-cache-ti.patch \
file://CVE-2025-1352.patch \
file://CVE-2025-1372.patch \
file://CVE-2025-1376.patch \
file://CVE-2025-1377.patch \
"
SRC_URI:append:libc-musl = " \
file://0003-musl-utils.patch \

View File

@@ -0,0 +1,58 @@
From b16f441cca0a4841050e3215a9f120a6d8aea918 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Thu, 13 Feb 2025 00:02:32 +0100
Subject: [PATCH] libelf: Handle elf_strptr on section without any data
In the unlikely situation that elf_strptr was called on a section with
sh_size already set, but that doesn't have any data yet we could crash
trying to verify the string to return.
This could happen for example when a new section was created with
elf_newscn, but no data having been added yet.
* libelf/elf_strptr.c (elf_strptr): Check strscn->rawdata_base
is not NULL.
https://sourceware.org/bugzilla/show_bug.cgi?id=32672
Signed-off-by: Mark Wielaard <mark@klomp.org>
CVE: CVE-2025-1376
Upstream-Status: Backport [https://sourceware.org/git/?p=elfutils.git;a=commit;h=b16f441cca0a4841050e3215a9f120a6d8aea918]
Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
---
libelf/elf_strptr.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/libelf/elf_strptr.c b/libelf/elf_strptr.c
index c5a94f8..7be7f5e 100644
--- a/libelf/elf_strptr.c
+++ b/libelf/elf_strptr.c
@@ -1,5 +1,6 @@
/* Return string pointer from string section.
Copyright (C) 1998-2002, 2004, 2008, 2009, 2015 Red Hat, Inc.
+ Copyright (C) 2025 Mark J. Wielaard <mark@klomp.org>
This file is part of elfutils.
Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
@@ -183,9 +184,12 @@ elf_strptr (Elf *elf, size_t idx, size_t offset)
// initialized yet (when data_read is zero). So we cannot just
// look at the rawdata.d.d_size.
- /* Make sure the string is NUL terminated. Start from the end,
- which very likely is a NUL char. */
- if (likely (validate_str (strscn->rawdata_base, offset, sh_size)))
+ /* First check there actually is any data. This could be a new
+ section which hasn't had any data set yet. Then make sure
+ the string is at a valid offset and NUL terminated. */
+ if (unlikely (strscn->rawdata_base == NULL))
+ __libelf_seterrno (ELF_E_INVALID_SECTION);
+ else if (likely (validate_str (strscn->rawdata_base, offset, sh_size)))
result = &strscn->rawdata_base[offset];
else
__libelf_seterrno (ELF_E_INVALID_INDEX);
--
2.40.0

View File

@@ -0,0 +1,68 @@
From fbf1df9ca286de3323ae541973b08449f8d03aba Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Thu, 13 Feb 2025 14:59:34 +0100
Subject: [PATCH] strip: Verify symbol table is a real symbol table
We didn't check the symbol table referenced from the relocation table
was a real symbol table. This could cause a crash if that section
happened to be an SHT_NOBITS section without any data. Fix this by
adding an explicit check.
* src/strip.c (INTERNAL_ERROR_MSG): New macro that takes a
message string to display.
(INTERNAL_ERROR): Use INTERNAL_ERROR_MSG with elf_errmsg (-1).
(remove_debug_relocations): Check the sh_link referenced
section is real and isn't a SHT_NOBITS section.
https://sourceware.org/bugzilla/show_bug.cgi?id=32673
Signed-off-by: Mark Wielaard <mark@klomp.org>
CVE: CVE-2025-1377
Upstream-Status: Backport [https://sourceware.org/git/?p=elfutils.git;a=commit;h=fbf1df9ca286de3323ae541973b08449f8d03aba]
Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
---
src/strip.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/strip.c b/src/strip.c
index d5b753d..0cfd8c8 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -127,13 +127,14 @@ static char *tmp_debug_fname = NULL;
/* Close debug file descriptor, if opened. And remove temporary debug file. */
static void cleanup_debug (void);
-#define INTERNAL_ERROR(fname) \
+#define INTERNAL_ERROR_MSG(fname, msg) \
do { \
cleanup_debug (); \
error (EXIT_FAILURE, 0, _("%s: INTERNAL ERROR %d (%s): %s"), \
- fname, __LINE__, PACKAGE_VERSION, elf_errmsg (-1)); \
+ fname, __LINE__, PACKAGE_VERSION, msg); \
} while (0)
+#define INTERNAL_ERROR(fname) INTERNAL_ERROR_MSG(fname, elf_errmsg (-1))
/* Name of the output file. */
static const char *output_fname;
@@ -632,7 +633,13 @@ remove_debug_relocations (Ebl *ebl, Elf *elf, GElf_Ehdr *ehdr,
resolve relocation symbol indexes. */
Elf64_Word symt = shdr->sh_link;
Elf_Data *symdata, *xndxdata;
- Elf_Scn * symscn = elf_getscn (elf, symt);
+ Elf_Scn *symscn = elf_getscn (elf, symt);GElf_Shdr symshdr_mem;
+ GElf_Shdr *symshdr = gelf_getshdr (symscn, &symshdr_mem);
+ if (symshdr == NULL)
+ INTERNAL_ERROR (fname);
+ if (symshdr->sh_type == SHT_NOBITS)
+ INTERNAL_ERROR_MSG (fname, "NOBITS section");
+
symdata = elf_getdata (symscn, NULL);
xndxdata = get_xndxdata (elf, symscn);
if (symdata == NULL)
--
2.40.0

View File

@@ -0,0 +1,97 @@
From 9de345cb273cc7faaeda279c7e07149d8a15a319 Mon Sep 17 00:00:00 2001
From: Taylor Blau <me@ttaylorr.com>
Date: Mon, 19 May 2025 18:30:29 -0400
Subject: [PATCH] wincred: avoid buffer overflow in wcsncat()
The wincred credential helper uses a static buffer ("target") as a
unique key for storing and comparing against internal storage. It does
this by building up a string is supposed to look like:
git:$PROTOCOL://$USERNAME@$HOST/@path
However, the static "target" buffer is declared as a wide string with no
more than 1,024 wide characters. The first call to wcsncat() is almost
correct (it copies no more than ARRAY_SIZE(target) wchar_t's), but does
not account for the trailing NUL, introducing an off-by-one error.
But subsequent calls to wcsncat() have an additional problem on top of
the off-by-one. They do not account for the length of the existing
wide string being built up in 'target'. So the following:
$ perl -e '
my $x = "x" x 1_000;
print "protocol=$x\nhost=$x\nusername=$x\npath=$x\n"
' |
C\:/Program\ Files/Git/mingw64/libexec/git-core/git-credential-wincred.exe get
will result in a segmentation fault from over-filling buffer.
This bug is as old as the wincred helper itself, dating back to
a6253da (contrib: add win32 credential-helper, 2012-07-27). Commit
8b2d219 (wincred: improve compatibility with windows versions,
2013-01-10) replaced the use of strncat() with wcsncat(), but retained
the buggy behavior.
Fix this by using a "target_append()" helper which accounts for both the
length of the existing string within the buffer, as well as the trailing
NUL character.
Reported-by: David Leadbeater <dgl@dgl.cx>
Helped-by: David Leadbeater <dgl@dgl.cx>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
CVE: CVE-2025-48386
Upstream-Status: Backport [https://github.com/git/git/commit/9de345cb273cc7faaeda279c7e07149d8a15a319]
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
---
.../wincred/git-credential-wincred.c | 22 +++++++++++++------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/contrib/credential/wincred/git-credential-wincred.c b/contrib/credential/wincred/git-credential-wincred.c
index 5091048..00ecd87 100644
--- a/contrib/credential/wincred/git-credential-wincred.c
+++ b/contrib/credential/wincred/git-credential-wincred.c
@@ -93,6 +93,14 @@ static void load_cred_funcs(void)
static WCHAR *wusername, *password, *protocol, *host, *path, target[1024];
+static void target_append(const WCHAR *src)
+{
+ size_t avail = ARRAY_SIZE(target) - wcslen(target) - 1; /* -1 for NUL */
+ if (avail < wcslen(src))
+ die("target buffer overflow");
+ wcsncat(target, src, avail);
+}
+
static void write_item(const char *what, LPCWSTR wbuf, int wlen)
{
char *buf;
@@ -304,17 +312,17 @@ int main(int argc, char *argv[])
/* prepare 'target', the unique key for the credential */
wcscpy(target, L"git:");
- wcsncat(target, protocol, ARRAY_SIZE(target));
- wcsncat(target, L"://", ARRAY_SIZE(target));
+ target_append(protocol);
+ target_append(L"://");
if (wusername) {
- wcsncat(target, wusername, ARRAY_SIZE(target));
- wcsncat(target, L"@", ARRAY_SIZE(target));
+ target_append(wusername);
+ target_append(L"@");
}
if (host)
- wcsncat(target, host, ARRAY_SIZE(target));
+ target_append(host);
if (path) {
- wcsncat(target, L"/", ARRAY_SIZE(target));
- wcsncat(target, path, ARRAY_SIZE(target));
+ target_append(L"/");
+ target_append(path);
}
if (!strcmp(argv[1], "get"))
--
2.50.1

View File

@@ -28,6 +28,7 @@ SRC_URI = "${KERNELORG_MIRROR}/software/scm/git/git-${PV}.tar.gz;name=tarball \
file://CVE-2024-52006.patch \
file://CVE-2025-27614-CVE-2025-27613-CVE-2025-46334-CVE-2025-46835.patch \
file://CVE-2025-48384.patch \
file://CVE-2025-48386.patch \
"
S = "${WORKDIR}/git-${PV}"

View File

@@ -4,67 +4,76 @@ FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/go-1.21:${FILE_DIRNAME}/go-1.20:${FI
LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
SRC_URI += "\
file://0001-allow-CC-and-CXX-to-have-multiple-words.patch \
file://0002-cmd-go-make-content-based-hash-generation-less-pedan.patch \
file://0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch \
file://0004-ld-add-soname-to-shareable-objects.patch \
file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \
file://0006-cmd-dist-separate-host-and-target-builds.patch \
file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \
file://0001-exec.go-do-not-write-linker-flags-into-buildids.patch \
file://0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
file://0010-net-Fix-issue-with-DNS-not-being-updated.patch \
file://CVE-2022-27664.patch \
file://0001-net-http-httputil-avoid-query-parameter-smuggling.patch \
file://CVE-2022-41715.patch \
file://CVE-2022-41717.patch \
file://CVE-2022-2879.patch \
file://CVE-2022-41720.patch \
file://CVE-2022-41723.patch \
file://cve-2022-41724.patch \
file://add_godebug.patch \
file://cve-2022-41725.patch \
file://CVE-2022-41722.patch \
file://CVE-2023-24537.patch \
file://CVE-2023-24534.patch \
file://CVE-2023-24538_1.patch \
file://CVE-2023-24538_2.patch \
file://CVE-2023-24540.patch \
file://CVE-2023-24539.patch \
file://CVE-2023-29404.patch \
file://CVE-2023-29405.patch \
file://CVE-2023-29402.patch \
file://CVE-2023-29400.patch \
file://CVE-2023-29406-1.patch \
file://CVE-2023-29406-2.patch \
file://CVE-2023-24536_1.patch \
file://CVE-2023-24536_2.patch \
file://CVE-2023-24536_3.patch \
file://CVE-2023-24531_1.patch \
file://CVE-2023-24531_2.patch \
file://CVE-2023-29409.patch \
file://CVE-2023-39319.patch \
file://CVE-2023-39318.patch \
file://CVE-2023-39326.patch \
file://CVE-2023-45285.patch \
file://CVE-2023-45287.patch \
file://CVE-2023-45289.patch \
file://CVE-2023-45290.patch \
file://CVE-2024-24784.patch \
file://CVE-2024-24785.patch \
file://CVE-2023-45288.patch \
file://CVE-2024-24789.patch \
file://CVE-2024-24791.patch \
file://CVE-2024-34155.patch \
file://CVE-2024-34156.patch \
file://CVE-2024-34158.patch \
file://CVE-2024-45336.patch \
file://CVE-2025-22871.patch \
file://CVE-2025-4673.patch \
"
SRC_URI = "https://golang.org/dl/go${PV}.src.tar.gz;name=main \
file://0001-allow-CC-and-CXX-to-have-multiple-words.patch \
file://0002-cmd-go-make-content-based-hash-generation-less-pedan.patch \
file://0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch \
file://0004-ld-add-soname-to-shareable-objects.patch \
file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \
file://0006-cmd-dist-separate-host-and-target-builds.patch \
file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \
file://0001-exec.go-do-not-write-linker-flags-into-buildids.patch \
file://0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
file://0010-net-Fix-issue-with-DNS-not-being-updated.patch \
file://CVE-2022-27664.patch \
file://0001-net-http-httputil-avoid-query-parameter-smuggling.patch \
file://CVE-2022-41715.patch \
file://CVE-2022-41717.patch \
file://CVE-2022-2879.patch \
file://CVE-2022-41720.patch \
file://CVE-2022-41723.patch \
file://cve-2022-41724.patch \
file://add_godebug.patch \
file://cve-2022-41725.patch \
file://CVE-2022-41722.patch \
file://CVE-2023-24537.patch \
file://CVE-2023-24534.patch \
file://CVE-2023-24538_1.patch \
file://CVE-2023-24538_2.patch \
file://CVE-2023-24540.patch \
file://CVE-2023-24539.patch \
file://CVE-2023-29404.patch \
file://CVE-2023-29405.patch \
file://CVE-2023-29402.patch \
file://CVE-2023-29400.patch \
file://CVE-2023-29406-1.patch \
file://CVE-2023-29406-2.patch \
file://CVE-2023-24536_1.patch \
file://CVE-2023-24536_2.patch \
file://CVE-2023-24536_3.patch \
file://CVE-2023-24531_1.patch \
file://CVE-2023-24531_2.patch \
file://CVE-2023-29409.patch \
file://CVE-2023-39319.patch \
file://CVE-2023-39318.patch \
file://CVE-2023-39326.patch \
file://CVE-2023-45285.patch \
file://CVE-2023-45287.patch \
file://CVE-2023-45289.patch \
file://CVE-2023-45290.patch \
file://CVE-2024-24784.patch \
file://CVE-2024-24785.patch \
file://CVE-2023-45288.patch \
file://CVE-2024-24789.patch \
file://CVE-2024-24791.patch \
file://CVE-2024-34155.patch \
file://CVE-2024-34156.patch \
file://CVE-2024-34158.patch \
file://CVE-2024-45336.patch \
file://CVE-2025-22871.patch \
file://CVE-2025-4673.patch \
file://CVE-2025-47907-pre-0001.patch \
file://CVE-2025-47907-pre-0002.patch \
file://CVE-2025-47907.patch \
file://CVE-2025-47906.patch \
file://CVE-2024-24783.patch \
file://CVE-2025-58187.patch \
file://CVE-2025-58189.patch \
file://CVE-2025-61723.patch \
file://CVE-2025-61724.patch \
"
SRC_URI[main.sha256sum] = "a1a48b23afb206f95e7bbaa9b898d965f90826f6f1d1fc0c1d784ada0cd300fd"
# Upstream don't believe it is a signifiant real world issue and will only

View File

@@ -0,0 +1,349 @@
From f334417e71f8b078ad64035bddb6df7f8910da6c Mon Sep 17 00:00:00 2001
From: Neal Patel <nealpatel@google.com>
Date: Mon, 15 Sep 2025 16:31:22 -0400
Subject: [PATCH] crypto/x509: improve domain name verification
Don't use domainToReverseLabels to check if domain names are valid,
since it is not particularly performant, and can contribute to DoS
vectors. Instead just iterate over the name and enforce the properties
we care about.
This also enforces that DNS names, both in SANs and name constraints,
are valid. We previously allowed invalid SANs, because some
intermediates had these weird names (see #23995), but there are
currently no trusted intermediates that have this property, and since we
target the web PKI, supporting this particular case is not a high
priority.
Thank you to Jakub Ciolek for reporting this issue.
Fixes CVE-2025-58187
For #75681
Fixes #75714
Change-Id: I6ebce847dcbe5fc63ef2f9a74f53f11c4c56d3d1
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2820
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2982
Reviewed-by: Nicholas Husin <husin@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/709839
Auto-Submit: Michael Pratt <mpratt@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
TryBot-Bypass: Michael Pratt <mpratt@google.com>
CVE: CVE-2025-58187
Upstream-Status: Backport [https://github.com/golang/go/commit/f334417e71f8b078ad64035bddb6df7f8910da6c]
Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
---
src/crypto/x509/name_constraints_test.go | 66 ++------------------
src/crypto/x509/parser.go | 77 ++++++++++++++----------
src/crypto/x509/parser_test.go | 43 +++++++++++++
src/crypto/x509/verify.go | 1 +
4 files changed, 95 insertions(+), 92 deletions(-)
diff --git a/src/crypto/x509/name_constraints_test.go b/src/crypto/x509/name_constraints_test.go
index c59a7dc..d4f7d41 100644
--- a/src/crypto/x509/name_constraints_test.go
+++ b/src/crypto/x509/name_constraints_test.go
@@ -1452,63 +1452,7 @@ var nameConstraintsTests = []nameConstraintsTest{
requestedEKUs: []ExtKeyUsage{ExtKeyUsageServerAuth},
},
- // An invalid DNS SAN should be detected only at validation time so
- // that we can process CA certificates in the wild that have invalid SANs.
- // See https://github.com/golang/go/issues/23995
-
- // #77: an invalid DNS or mail SAN will not be detected if name constraint
- // checking is not triggered.
- {
- roots: make([]constraintsSpec, 1),
- intermediates: [][]constraintsSpec{
- {
- {},
- },
- },
- leaf: leafSpec{
- sans: []string{"dns:this is invalid", "email:this @ is invalid"},
- },
- },
-
- // #78: an invalid DNS SAN will be detected if any name constraint checking
- // is triggered.
- {
- roots: []constraintsSpec{
- {
- bad: []string{"uri:"},
- },
- },
- intermediates: [][]constraintsSpec{
- {
- {},
- },
- },
- leaf: leafSpec{
- sans: []string{"dns:this is invalid"},
- },
- expectedError: "cannot parse dnsName",
- },
-
- // #79: an invalid email SAN will be detected if any name constraint
- // checking is triggered.
- {
- roots: []constraintsSpec{
- {
- bad: []string{"uri:"},
- },
- },
- intermediates: [][]constraintsSpec{
- {
- {},
- },
- },
- leaf: leafSpec{
- sans: []string{"email:this @ is invalid"},
- },
- expectedError: "cannot parse rfc822Name",
- },
-
- // #80: if several EKUs are requested, satisfying any of them is sufficient.
+ // #77: if several EKUs are requested, satisfying any of them is sufficient.
{
roots: make([]constraintsSpec, 1),
intermediates: [][]constraintsSpec{
@@ -1523,7 +1467,7 @@ var nameConstraintsTests = []nameConstraintsTest{
requestedEKUs: []ExtKeyUsage{ExtKeyUsageClientAuth, ExtKeyUsageEmailProtection},
},
- // #81: EKUs that are not asserted in VerifyOpts are not required to be
+ // #78: EKUs that are not asserted in VerifyOpts are not required to be
// nested.
{
roots: make([]constraintsSpec, 1),
@@ -1542,7 +1486,7 @@ var nameConstraintsTests = []nameConstraintsTest{
},
},
- // #82: a certificate without SANs and CN is accepted in a constrained chain.
+ // #79: a certificate without SANs and CN is accepted in a constrained chain.
{
roots: []constraintsSpec{
{
@@ -1559,7 +1503,7 @@ var nameConstraintsTests = []nameConstraintsTest{
},
},
- // #83: a certificate without SANs and with a CN that does not parse as a
+ // #80: a certificate without SANs and with a CN that does not parse as a
// hostname is accepted in a constrained chain.
{
roots: []constraintsSpec{
@@ -1578,7 +1522,7 @@ var nameConstraintsTests = []nameConstraintsTest{
},
},
- // #84: a certificate with SANs and CN is accepted in a constrained chain.
+ // #81: a certificate with SANs and CN is accepted in a constrained chain.
{
roots: []constraintsSpec{
{
diff --git a/src/crypto/x509/parser.go b/src/crypto/x509/parser.go
index 635e74b..0788210 100644
--- a/src/crypto/x509/parser.go
+++ b/src/crypto/x509/parser.go
@@ -391,10 +391,14 @@ func parseSANExtension(der cryptobyte.String) (dnsNames, emailAddresses []string
if err := isIA5String(email); err != nil {
return errors.New("x509: SAN rfc822Name is malformed")
}
+ parsed, ok := parseRFC2821Mailbox(email)
+ if !ok || (ok && !domainNameValid(parsed.domain, false)) {
+ return errors.New("x509: SAN rfc822Name is malformed")
+ }
emailAddresses = append(emailAddresses, email)
case nameTypeDNS:
name := string(data)
- if err := isIA5String(name); err != nil {
+ if err := isIA5String(name); err != nil || (err == nil && !domainNameValid(name, false)) {
return errors.New("x509: SAN dNSName is malformed")
}
dnsNames = append(dnsNames, string(name))
@@ -404,14 +408,9 @@ func parseSANExtension(der cryptobyte.String) (dnsNames, emailAddresses []string
return errors.New("x509: SAN uniformResourceIdentifier is malformed")
}
uri, err := url.Parse(uriStr)
- if err != nil {
+ if err != nil || (err == nil && uri.Host != "" && !domainNameValid(uri.Host, false)) {
return fmt.Errorf("x509: cannot parse URI %q: %s", uriStr, err)
}
- if len(uri.Host) > 0 {
- if _, ok := domainToReverseLabels(uri.Host); !ok {
- return fmt.Errorf("x509: cannot parse URI %q: invalid domain", uriStr)
- }
- }
uris = append(uris, uri)
case nameTypeIP:
switch len(data) {
@@ -551,15 +550,7 @@ func parseNameConstraintsExtension(out *Certificate, e pkix.Extension) (unhandle
return nil, nil, nil, nil, errors.New("x509: invalid constraint value: " + err.Error())
}
- trimmedDomain := domain
- if len(trimmedDomain) > 0 && trimmedDomain[0] == '.' {
- // constraints can have a leading
- // period to exclude the domain
- // itself, but that's not valid in a
- // normal domain name.
- trimmedDomain = trimmedDomain[1:]
- }
- if _, ok := domainToReverseLabels(trimmedDomain); !ok {
+ if !domainNameValid(domain, true) {
return nil, nil, nil, nil, fmt.Errorf("x509: failed to parse dnsName constraint %q", domain)
}
dnsNames = append(dnsNames, domain)
@@ -600,12 +591,7 @@ func parseNameConstraintsExtension(out *Certificate, e pkix.Extension) (unhandle
return nil, nil, nil, nil, fmt.Errorf("x509: failed to parse rfc822Name constraint %q", constraint)
}
} else {
- // Otherwise it's a domain name.
- domain := constraint
- if len(domain) > 0 && domain[0] == '.' {
- domain = domain[1:]
- }
- if _, ok := domainToReverseLabels(domain); !ok {
+ if !domainNameValid(constraint, true) {
return nil, nil, nil, nil, fmt.Errorf("x509: failed to parse rfc822Name constraint %q", constraint)
}
}
@@ -621,15 +607,7 @@ func parseNameConstraintsExtension(out *Certificate, e pkix.Extension) (unhandle
return nil, nil, nil, nil, fmt.Errorf("x509: failed to parse URI constraint %q: cannot be IP address", domain)
}
- trimmedDomain := domain
- if len(trimmedDomain) > 0 && trimmedDomain[0] == '.' {
- // constraints can have a leading
- // period to exclude the domain itself,
- // but that's not valid in a normal
- // domain name.
- trimmedDomain = trimmedDomain[1:]
- }
- if _, ok := domainToReverseLabels(trimmedDomain); !ok {
+ if !domainNameValid(domain, true) {
return nil, nil, nil, nil, fmt.Errorf("x509: failed to parse URI constraint %q", domain)
}
uriDomains = append(uriDomains, domain)
@@ -1011,3 +989,40 @@ func ParseCertificates(der []byte) ([]*Certificate, error) {
}
return certs, nil
}
+
+// domainNameValid does minimal domain name validity checking. In particular it
+// enforces the following properties:
+// - names cannot have the trailing period
+// - names can only have a leading period if constraint is true
+// - names must be <= 253 characters
+// - names cannot have empty labels
+// - names cannot labels that are longer than 63 characters
+//
+// Note that this does not enforce the LDH requirements for domain names.
+func domainNameValid(s string, constraint bool) bool {
+ if len(s) == 0 && constraint {
+ return true
+ }
+ if len(s) == 0 || (!constraint && s[0] == '.') || s[len(s)-1] == '.' || len(s) > 253 {
+ return false
+ }
+ lastDot := -1
+ if constraint && s[0] == '.' {
+ s = s[1:]
+ }
+
+ for i := 0; i <= len(s); i++ {
+ if i == len(s) || s[i] == '.' {
+ labelLen := i
+ if lastDot >= 0 {
+ labelLen -= lastDot + 1
+ }
+ if labelLen == 0 || labelLen > 63 {
+ return false
+ }
+ lastDot = i
+ }
+ }
+
+ return true
+}
diff --git a/src/crypto/x509/parser_test.go b/src/crypto/x509/parser_test.go
index d7cf7ea..95ed116 100644
--- a/src/crypto/x509/parser_test.go
+++ b/src/crypto/x509/parser_test.go
@@ -5,6 +5,7 @@ package x509
import (
"encoding/asn1"
+ "strings"
"testing"
cryptobyte_asn1 "golang.org/x/crypto/cryptobyte/asn1"
@@ -100,3 +101,45 @@ func TestParseASN1String(t *testing.T) {
})
}
}
+
+func TestDomainNameValid(t *testing.T) {
+ for _, tc := range []struct {
+ name string
+ dnsName string
+ constraint bool
+ valid bool
+ }{
+ {"empty name, name", "", false, false},
+ {"empty name, constraint", "", true, true},
+ {"empty label, name", "a..a", false, false},
+ {"empty label, constraint", "a..a", true, false},
+ {"period, name", ".", false, false},
+ {"period, constraint", ".", true, false}, // TODO(roland): not entirely clear if this is a valid constraint (require at least one label?)
+ {"valid, name", "a.b.c", false, true},
+ {"valid, constraint", "a.b.c", true, true},
+ {"leading period, name", ".a.b.c", false, false},
+ {"leading period, constraint", ".a.b.c", true, true},
+ {"trailing period, name", "a.", false, false},
+ {"trailing period, constraint", "a.", true, false},
+ {"bare label, name", "a", false, true},
+ {"bare label, constraint", "a", true, true},
+ {"254 char label, name", strings.Repeat("a.a", 84) + "aaa", false, false},
+ {"254 char label, constraint", strings.Repeat("a.a", 84) + "aaa", true, false},
+ {"253 char label, name", strings.Repeat("a.a", 84) + "aa", false, false},
+ {"253 char label, constraint", strings.Repeat("a.a", 84) + "aa", true, false},
+ {"64 char single label, name", strings.Repeat("a", 64), false, false},
+ {"64 char single label, constraint", strings.Repeat("a", 64), true, false},
+ {"63 char single label, name", strings.Repeat("a", 63), false, true},
+ {"63 char single label, constraint", strings.Repeat("a", 63), true, true},
+ {"64 char label, name", "a." + strings.Repeat("a", 64), false, false},
+ {"64 char label, constraint", "a." + strings.Repeat("a", 64), true, false},
+ {"63 char label, name", "a." + strings.Repeat("a", 63), false, true},
+ {"63 char label, constraint", "a." + strings.Repeat("a", 63), true, true},
+ } {
+ t.Run(tc.name, func(t *testing.T) {
+ if tc.valid != domainNameValid(tc.dnsName, tc.constraint) {
+ t.Errorf("domainNameValid(%q, %t) = %v; want %v", tc.dnsName, tc.constraint, !tc.valid, tc.valid)
+ }
+ })
+ }
+}
diff --git a/src/crypto/x509/verify.go b/src/crypto/x509/verify.go
index 3e95808..fb2f4b2 100644
--- a/src/crypto/x509/verify.go
+++ b/src/crypto/x509/verify.go
@@ -357,6 +357,7 @@ func parseRFC2821Mailbox(in string) (mailbox rfc2821Mailbox, ok bool) {
// domainToReverseLabels converts a textual domain name like foo.example.com to
// the list of labels in reverse order, e.g. ["com", "example", "foo"].
func domainToReverseLabels(domain string) (reverseLabels []string, ok bool) {
+ reverseLabels = make([]string, 0, strings.Count(domain, ".")+1)
for len(domain) > 0 {
if i := strings.LastIndexByte(domain, '.'); i == -1 {
reverseLabels = append(reverseLabels, domain)
--
2.40.0

View File

@@ -0,0 +1,51 @@
From 2e1e356e33b9c792a9643749a7626a1789197bb9 Mon Sep 17 00:00:00 2001
From: Roland Shoemaker <roland@golang.org>
Date: Mon, 29 Sep 2025 10:11:56 -0700
Subject: [PATCH] crypto/tls: quote protocols in ALPN error message
Quote the protocols sent by the client when returning the ALPN
negotiation error message.
Fixes CVE-2025-58189
Updates #75652
Fixes #75660
Change-Id: Ie7b3a1ed0b6efcc1705b71f0f1e8417126661330
Reviewed-on: https://go-review.googlesource.com/c/go/+/707776
Auto-Submit: Roland Shoemaker <roland@golang.org>
Reviewed-by: Neal Patel <nealpatel@google.com>
Reviewed-by: Nicholas Husin <nsh@golang.org>
Auto-Submit: Nicholas Husin <nsh@golang.org>
Reviewed-by: Nicholas Husin <husin@google.com>
TryBot-Bypass: Roland Shoemaker <roland@golang.org>
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
(cherry picked from commit 4e9006a716533fe1c7ee08df02dfc73078f7dc19)
Reviewed-on: https://go-review.googlesource.com/c/go/+/708096
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
CVE: CVE-2025-58189
Upstream-Status: Backport [https://github.com/golang/go/commit/2e1e356e33b9c792a9643749a7626a1789197bb9]
Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
---
src/crypto/tls/handshake_server.go | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/crypto/tls/handshake_server.go b/src/crypto/tls/handshake_server.go
index 4e84aa9..17b6891 100644
--- a/src/crypto/tls/handshake_server.go
+++ b/src/crypto/tls/handshake_server.go
@@ -312,7 +312,7 @@ func negotiateALPN(serverProtos, clientProtos []string, quic bool) (string, erro
if http11fallback {
return "", nil
}
- return "", fmt.Errorf("tls: client requested unsupported application protocols (%s)", clientProtos)
+ return "", fmt.Errorf("tls: client requested unsupported application protocols (%q)", clientProtos)
}
// supportsECDHE returns whether ECDHE key exchanges can be used with this
--
2.40.0

View File

@@ -0,0 +1,221 @@
From 74d4d836b91318a8764b94bc2b4b66ff599eb5f2 Mon Sep 17 00:00:00 2001
From: Roland Shoemaker <bracewell@google.com>
Date: Tue, 30 Sep 2025 11:16:56 -0700
Subject: [PATCH] encoding/pem: make Decode complexity linear Because Decode
scanned the input first for the first BEGIN line, and then the first END
line, the complexity of Decode is quadratic. If the input contained a large
number of BEGINs and then a single END right at the end of the input, we
would find the first BEGIN, and then scan the entire input for the END, and
fail to parse the block, so move onto the next BEGIN, scan the entire input
for the END, etc.
Instead, look for the first END in the input, and then the first BEGIN
that precedes the found END. We then process the bytes between the BEGIN
and END, and move onto the bytes after the END for further processing.
This gives us linear complexity.
Fixes CVE-2025-61723
For #75676
Fixes #75708
Change-Id: I813c4f63e78bca4054226c53e13865c781564ccf
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2921
Reviewed-by: Nicholas Husin <husin@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2986
Reviewed-on: https://go-review.googlesource.com/c/go/+/709842
TryBot-Bypass: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
CVE: CVE-2025-61723
Upstream-Status: Backport [https://github.com/golang/go/commit/74d4d836b91318a8764b94bc2b4b66ff599eb5f2]
Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
---
src/encoding/pem/pem.go | 67 +++++++++++++++++++-----------------
src/encoding/pem/pem_test.go | 13 +++----
2 files changed, 43 insertions(+), 37 deletions(-)
diff --git a/src/encoding/pem/pem.go b/src/encoding/pem/pem.go
index 1bee1c1..01bed75 100644
--- a/src/encoding/pem/pem.go
+++ b/src/encoding/pem/pem.go
@@ -35,7 +35,7 @@ type Block struct {
// line bytes. The remainder of the byte array (also not including the new line
// bytes) is also returned and this will always be smaller than the original
// argument.
-func getLine(data []byte) (line, rest []byte) {
+func getLine(data []byte) (line, rest []byte, consumed int) {
i := bytes.IndexByte(data, '\n')
var j int
if i < 0 {
@@ -47,7 +47,7 @@ func getLine(data []byte) (line, rest []byte) {
i--
}
}
- return bytes.TrimRight(data[0:i], " \t"), data[j:]
+ return bytes.TrimRight(data[0:i], " \t"), data[j:], j
}
// removeSpacesAndTabs returns a copy of its input with all spaces and tabs
@@ -88,19 +88,29 @@ func Decode(data []byte) (p *Block, rest []byte) {
// the byte array, we'll accept the start string without it.
rest = data
for {
- if bytes.HasPrefix(rest, pemStart[1:]) {
- rest = rest[len(pemStart)-1:]
- } else if i := bytes.Index(rest, pemStart); i >= 0 {
- rest = rest[i+len(pemStart) : len(rest)]
- } else {
+ // Find the first END line, and then find the last BEGIN line before
+ // the end line. This lets us skip any repeated BEGIN lines that don't
+ // have a matching END.
+ endIndex := bytes.Index(rest, pemEnd)
+ if endIndex < 0 {
return nil, data
}
-
+ endTrailerIndex := endIndex + len(pemEnd)
+ beginIndex := bytes.LastIndex(rest[:endIndex], pemStart[1:])
+ if beginIndex < 0 || beginIndex > 0 && rest[beginIndex-1] != '\n' {
+ return nil, data
+ }
+ rest = rest[beginIndex+len(pemStart)-1:]
+ endIndex -= beginIndex + len(pemStart) - 1
+ endTrailerIndex -= beginIndex + len(pemStart) - 1
var typeLine []byte
- typeLine, rest = getLine(rest)
+ var consumed int
+ typeLine, rest, consumed = getLine(rest)
if !bytes.HasSuffix(typeLine, pemEndOfLine) {
continue
}
+ endIndex -= consumed
+ endTrailerIndex -= consumed
typeLine = typeLine[0 : len(typeLine)-len(pemEndOfLine)]
p = &Block{
@@ -114,7 +124,7 @@ func Decode(data []byte) (p *Block, rest []byte) {
if len(rest) == 0 {
return nil, data
}
- line, next := getLine(rest)
+ line, next, consumed := getLine(rest)
i := bytes.IndexByte(line, ':')
if i == -1 {
@@ -127,21 +137,13 @@ func Decode(data []byte) (p *Block, rest []byte) {
val = bytes.TrimSpace(val)
p.Headers[string(key)] = string(val)
rest = next
+ endIndex -= consumed
+ endTrailerIndex -= consumed
}
- var endIndex, endTrailerIndex int
-
- // If there were no headers, the END line might occur
- // immediately, without a leading newline.
- if len(p.Headers) == 0 && bytes.HasPrefix(rest, pemEnd[1:]) {
- endIndex = 0
- endTrailerIndex = len(pemEnd) - 1
- } else {
- endIndex = bytes.Index(rest, pemEnd)
- endTrailerIndex = endIndex + len(pemEnd)
- }
-
- if endIndex < 0 {
+ // If there were headers, there must be a newline between the headers
+ // and the END line, so endIndex should be >= 0.
+ if len(p.Headers) > 0 && endIndex < 0 {
continue
}
@@ -161,21 +163,24 @@ func Decode(data []byte) (p *Block, rest []byte) {
}
// The line must end with only whitespace.
- if s, _ := getLine(restOfEndLine); len(s) != 0 {
+ if s, _, _ := getLine(restOfEndLine); len(s) != 0 {
continue
}
- base64Data := removeSpacesAndTabs(rest[:endIndex])
- p.Bytes = make([]byte, base64.StdEncoding.DecodedLen(len(base64Data)))
- n, err := base64.StdEncoding.Decode(p.Bytes, base64Data)
- if err != nil {
- continue
+ p.Bytes = []byte{}
+ if endIndex > 0 {
+ base64Data := removeSpacesAndTabs(rest[:endIndex])
+ p.Bytes = make([]byte, base64.StdEncoding.DecodedLen(len(base64Data)))
+ n, err := base64.StdEncoding.Decode(p.Bytes, base64Data)
+ if err != nil {
+ continue
+ }
+ p.Bytes = p.Bytes[:n]
}
- p.Bytes = p.Bytes[:n]
// the -1 is because we might have only matched pemEnd without the
// leading newline if the PEM block was empty.
- _, rest = getLine(rest[endIndex+len(pemEnd)-1:])
+ _, rest, _ = getLine(rest[endIndex+len(pemEnd)-1:])
return p, rest
}
}
diff --git a/src/encoding/pem/pem_test.go b/src/encoding/pem/pem_test.go
index c94b5ca..a326f9b 100644
--- a/src/encoding/pem/pem_test.go
+++ b/src/encoding/pem/pem_test.go
@@ -34,7 +34,7 @@ var getLineTests = []GetLineTest{
func TestGetLine(t *testing.T) {
for i, test := range getLineTests {
- x, y := getLine([]byte(test.in))
+ x, y, _ := getLine([]byte(test.in))
if string(x) != test.out1 || string(y) != test.out2 {
t.Errorf("#%d got:%+v,%+v want:%s,%s", i, x, y, test.out1, test.out2)
}
@@ -46,6 +46,7 @@ func TestDecode(t *testing.T) {
if !reflect.DeepEqual(result, certificate) {
t.Errorf("#0 got:%#v want:%#v", result, certificate)
}
+
result, remainder = Decode(remainder)
if !reflect.DeepEqual(result, privateKey) {
t.Errorf("#1 got:%#v want:%#v", result, privateKey)
@@ -68,7 +69,7 @@ func TestDecode(t *testing.T) {
}
result, remainder = Decode(remainder)
- if result == nil || result.Type != "HEADERS" || len(result.Headers) != 1 {
+ if result == nil || result.Type != "VALID HEADERS" || len(result.Headers) != 1 {
t.Errorf("#5 expected single header block but got :%v", result)
}
@@ -381,15 +382,15 @@ ZWAaUoVtWIQ52aKS0p19G99hhb+IVANC4akkdHV4SP8i7MVNZhfUmg==
# This shouldn't be recognised because of the missing newline after the
headers.
------BEGIN HEADERS-----
+-----BEGIN INVALID HEADERS-----
Header: 1
------END HEADERS-----
+-----END INVALID HEADERS-----
# This should be valid, however.
------BEGIN HEADERS-----
+-----BEGIN VALID HEADERS-----
Header: 1
------END HEADERS-----`)
+-----END VALID HEADERS-----`)
var certificate = &Block{Type: "CERTIFICATE",
Headers: map[string]string{},
--
2.40.0

View File

@@ -0,0 +1,74 @@
From a402f4ad285514f5f3db90516d72047d591b307a Mon Sep 17 00:00:00 2001
From: Damien Neil <dneil@google.com>
Date: Tue, 30 Sep 2025 15:11:16 -0700
Subject: [PATCH] net/textproto: avoid quadratic complexity in
Reader.ReadResponse Reader.ReadResponse constructed a response string from
repeated string concatenation, permitting a malicious sender to cause
excessive memory allocation and CPU consumption by sending a response
consisting of many short lines.
Use a strings.Builder to construct the string instead.
Thanks to Jakub Ciolek for reporting this issue.
Fixes CVE-2025-61724
For #75716
Fixes #75717
Change-Id: I1a98ce85a21b830cb25799f9ac9333a67400d736
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2940
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-by: Nicholas Husin <husin@google.com>
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2980
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/709837
Reviewed-by: Carlos Amedee <carlos@golang.org>
TryBot-Bypass: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
CVE: CVE-2025-61724
Upstream-Status: Backport [https://github.com/golang/go/commit/a402f4ad285514f5f3db90516d72047d591b307a]
Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
---
src/net/textproto/reader.go | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/net/textproto/reader.go b/src/net/textproto/reader.go
index 3ac4d4d..a996257 100644
--- a/src/net/textproto/reader.go
+++ b/src/net/textproto/reader.go
@@ -288,8 +288,10 @@ func (r *Reader) ReadCodeLine(expectCode int) (code int, message string, err err
// An expectCode <= 0 disables the check of the status code.
//
func (r *Reader) ReadResponse(expectCode int) (code int, message string, err error) {
- code, continued, message, err := r.readCodeLine(expectCode)
+ code, continued, first, err := r.readCodeLine(expectCode)
multi := continued
+ var messageBuilder strings.Builder
+ messageBuilder.WriteString(first)
for continued {
line, err := r.ReadLine()
if err != nil {
@@ -300,12 +302,15 @@ func (r *Reader) ReadResponse(expectCode int) (code int, message string, err err
var moreMessage string
code2, continued, moreMessage, err = parseCodeLine(line, 0)
if err != nil || code2 != code {
- message += "\n" + strings.TrimRight(line, "\r\n")
+ messageBuilder.WriteByte('\n')
+ messageBuilder.WriteString(strings.TrimRight(line, "\r\n"))
continued = true
continue
}
- message += "\n" + moreMessage
+ messageBuilder.WriteByte('\n')
+ messageBuilder.WriteString(moreMessage)
}
+ message = messageBuilder.String()
if err != nil && multi && message != "" {
// replace one line error message with all lines (full message)
err = &Error{code, message}
--
2.40.0

View File

@@ -0,0 +1,83 @@
From be5b52bea674190ef7de272664be6c7ae93ec5a0 Mon Sep 17 00:00:00 2001
From: Roland Shoemaker <bracewell@google.com>
Date: Thu, 18 Jan 2024 12:51:13 -0800
Subject: [PATCH] [release-branch.go1.21] crypto/x509: make sure pub key is
non-nil before interface conversion
alreadyInChain assumes all keys fit a interface which contains the
Equal method (which they do), but this ignores that certificates may
have a nil key when PublicKeyAlgorithm is UnknownPublicKeyAlgorithm. In
this case alreadyInChain panics.
Check that the key is non-nil as part of considerCandidate (we are never
going to build a chain containing UnknownPublicKeyAlgorithm anyway).
For #65390
Fixes #65392
Fixes CVE-2024-24783
Change-Id: Ibdccc0a487e3368b6812be35daad2512220243f3
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/2137282
Reviewed-by: Damien Neil <dneil@google.com>
Run-TryBot: Roland Shoemaker <bracewell@google.com>
Reviewed-by: Tatiana Bradley <tatianabradley@google.com>
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/2173774
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-by: Carlos Amedee <amedee@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/569238
Auto-Submit: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
CVE: CVE-2024-24783
Upstream-Status: Backport [https://github.com/golang/go/commit/be5b52bea674190ef7de272664be6c7ae93ec5a0]
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
---
src/crypto/x509/verify.go | 3 +++
src/crypto/x509/verify_test.go | 19 +++++++++++++++++++
2 files changed, 22 insertions(+)
diff --git a/src/crypto/x509/verify.go b/src/crypto/x509/verify.go
index 9ef1146..3e95808 100644
--- a/src/crypto/x509/verify.go
+++ b/src/crypto/x509/verify.go
@@ -819,6 +819,9 @@ func (c *Certificate) buildChains(cache map[*Certificate][][]*Certificate, curre
)
considerCandidate := func(certType int, candidate *Certificate) {
+ if candidate.PublicKey == nil {
+ return
+ }
for _, cert := range currentChain {
if cert.Equal(candidate) {
return
diff --git a/src/crypto/x509/verify_test.go b/src/crypto/x509/verify_test.go
index 9954a67..9da39ca 100644
--- a/src/crypto/x509/verify_test.go
+++ b/src/crypto/x509/verify_test.go
@@ -1968,3 +1968,22 @@ func TestSystemRootsErrorUnwrap(t *testing.T) {
t.Error("errors.Is failed, wanted success")
}
}
+
+func TestVerifyNilPubKey(t *testing.T) {
+ c := &Certificate{
+ RawIssuer: []byte{1, 2, 3},
+ AuthorityKeyId: []byte{1, 2, 3},
+ }
+ opts := &VerifyOptions{}
+ opts.Roots = NewCertPool()
+ r := &Certificate{
+ RawSubject: []byte{1, 2, 3},
+ SubjectKeyId: []byte{1, 2, 3},
+ }
+ opts.Roots.AddCert(r)
+
+ _, err := c.buildChains(nil, []*Certificate{r}, nil, opts)
+ if _, ok := err.(UnknownAuthorityError); !ok {
+ t.Fatalf("buildChains returned unexpected error, got: %v, want %v", err, UnknownAuthorityError{})
+ }
+}
--
2.50.1

View File

@@ -0,0 +1,171 @@
From 8fa31a2d7d9e60c50a3a94080c097b6e65773f4b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Olivier=20Mengu=C3=A9?= <olivier.mengue@gmail.com>
Date: Mon, 30 Jun 2025 16:58:59 +0200
Subject: [PATCH] [release-branch.go1.23] os/exec: fix incorrect expansion of
"", "." and ".." in LookPath Fix incorrect expansion of "" and "." when $PATH
contains an executable file or, on Windows, a parent directory of a %PATH%
element contains an file with the same name as the %PATH% element but with
one of the %PATHEXT% extension (ex: C:\utils\bin is in PATH, and
C:\utils\bin.exe exists).
Fix incorrect expansion of ".." when $PATH contains an element which is
an the concatenation of the path to an executable file (or on Windows
a path that can be expanded to an executable by appending a %PATHEXT%
extension), a path separator and a name.
"", "." and ".." are now rejected early with ErrNotFound.
Fixes CVE-2025-47906
Fixes #74803
Change-Id: Ie50cc0a660fce8fbdc952a7f2e05c36062dcb50e
Reviewed-on: https://go-review.googlesource.com/c/go/+/685755
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Damien Neil <dneil@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
(cherry picked from commit e0b07dc)
Reviewed-on: https://go-review.googlesource.com/c/go/+/691855
Reviewed-by: Michael Knyszek <mknyszek@google.com>
CVE: CVE-2025-47906
Upstream-Status: Backport [https://github.com/golang/go/commit/8fa31a2d7d9e60c50a3a94080c097b6e65773f4b]
Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
---
src/internal/execabs/execabs_test.go | 55 ++++++++++++++++++++++++++++
src/os/exec/exec.go | 9 +++++
src/os/exec/lp_plan9.go | 4 ++
src/os/exec/lp_unix.go | 4 ++
src/os/exec/lp_windows.go | 4 ++
5 files changed, 76 insertions(+)
diff --git a/src/internal/execabs/execabs_test.go b/src/internal/execabs/execabs_test.go
index 97a3f39..99fd64b 100644
--- a/src/internal/execabs/execabs_test.go
+++ b/src/internal/execabs/execabs_test.go
@@ -100,4 +100,59 @@ func TestLookPath(t *testing.T) {
} else if err.Error() != expectedErr {
t.Errorf("LookPath returned unexpected error: want %q, got %q", expectedErr, err.Error())
}
+ checker := func(test string) func(t *testing.T) {
+ return func(t *testing.T) {
+ t.Helper()
+ t.Logf("PATH=%s", os.Getenv("PATH"))
+ p, err := LookPath(test)
+ if err == nil {
+ t.Errorf("%q: error expected, got nil", test)
+ }
+ if p != "" {
+ t.Errorf("%q: path returned should be \"\". Got %q", test, p)
+ }
+ }
+ }
+
+ // Reference behavior for the next test
+ t.Run(pathVar+"=$OTHER2", func(t *testing.T) {
+ t.Run("empty", checker(""))
+ t.Run("dot", checker("."))
+ t.Run("dotdot1", checker("abc/.."))
+ t.Run("dotdot2", checker(".."))
+ })
+
+ // Test the behavior when PATH contains an executable file which is not a directory
+ t.Run(pathVar+"=exe", func(t *testing.T) {
+ // Inject an executable file (not a directory) in PATH.
+ // Use our own binary os.Args[0].
+ testenv.MustHaveExec(t)
+ exe, err := os.Executable()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ t.Setenv(pathVar, exe)
+ t.Run("empty", checker(""))
+ t.Run("dot", checker("."))
+ t.Run("dotdot1", checker("abc/.."))
+ t.Run("dotdot2", checker(".."))
+ })
+
+ // Test the behavior when PATH contains an executable file which is not a directory
+ t.Run(pathVar+"=exe/xx", func(t *testing.T) {
+ // Inject an executable file (not a directory) in PATH.
+ // Use our own binary os.Args[0].
+ testenv.MustHaveExec(t)
+ exe, err := os.Executable()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ t.Setenv(pathVar, filepath.Join(exe, "xx"))
+ t.Run("empty", checker(""))
+ t.Run("dot", checker("."))
+ t.Run("dotdot1", checker("abc/.."))
+ t.Run("dotdot2", checker(".."))
+ })
}
diff --git a/src/os/exec/exec.go b/src/os/exec/exec.go
index 505de58..84fd82f 100644
--- a/src/os/exec/exec.go
+++ b/src/os/exec/exec.go
@@ -790,3 +790,12 @@ func addCriticalEnv(env []string) []string {
}
return append(env, "SYSTEMROOT="+os.Getenv("SYSTEMROOT"))
}
+// validateLookPath excludes paths that can't be valid
+// executable names. See issue #74466 and CVE-2025-47906.
+func validateLookPath(s string) error {
+ switch s {
+ case "", ".", "..":
+ return ErrNotFound
+ }
+ return nil
+}
diff --git a/src/os/exec/lp_plan9.go b/src/os/exec/lp_plan9.go
index e8826a5..ed9f6e3 100644
--- a/src/os/exec/lp_plan9.go
+++ b/src/os/exec/lp_plan9.go
@@ -33,6 +33,10 @@ func findExecutable(file string) error {
// The result may be an absolute path or a path relative to the current directory.
func LookPath(file string) (string, error) {
// skip the path lookup for these prefixes
+ if err := validateLookPath(file); err != nil {
+ return "", &Error{file, err}
+ }
+
skip := []string{"/", "#", "./", "../"}
for _, p := range skip {
diff --git a/src/os/exec/lp_unix.go b/src/os/exec/lp_unix.go
index d1d246a..1b27f2b 100644
--- a/src/os/exec/lp_unix.go
+++ b/src/os/exec/lp_unix.go
@@ -38,6 +38,10 @@ func LookPath(file string) (string, error) {
// (only bypass the path if file begins with / or ./ or ../)
// but that would not match all the Unix shells.
+ if err := validateLookPath(file); err != nil {
+ return "", &Error{file, err}
+ }
+
if strings.Contains(file, "/") {
err := findExecutable(file)
if err == nil {
diff --git a/src/os/exec/lp_windows.go b/src/os/exec/lp_windows.go
index e7a2cdf..7a1d6fb 100644
--- a/src/os/exec/lp_windows.go
+++ b/src/os/exec/lp_windows.go
@@ -58,6 +58,10 @@ func findExecutable(file string, exts []string) (string, error) {
// a suitable candidate.
// The result may be an absolute path or a path relative to the current directory.
func LookPath(file string) (string, error) {
+ if err := validateLookPath(file); err != nil {
+ return "", &Error{file, err}
+ }
+
var exts []string
x := os.Getenv(`PATHEXT`)
if x != "" {
--
2.40.0

View File

@@ -0,0 +1,354 @@
From 298fe517a9333c05143a8a8e1f9d5499f0c6e59b Mon Sep 17 00:00:00 2001
From: Brad Fitzpatrick <bradfitz@golang.org>
Date: Tue, 23 May 2023 15:12:47 -0700
Subject: [PATCH] database/sql: make RawBytes safely usable with contexts
sql.RawBytes was added the very first Go release, Go 1. Its docs
say:
> RawBytes is a byte slice that holds a reference to memory owned by
> the database itself. After a Scan into a RawBytes, the slice is only
> valid until the next call to Next, Scan, or Close.
That "only valid until the next call" bit was true at the time,
until contexts were added to database/sql in Go 1.8.
In the past ~dozen releases it's been unsafe to use QueryContext with
a context that might become Done to get an *sql.Rows that's scanning
into a RawBytes. The Scan can succeed, but then while the caller's
reading the memory, a database/sql-managed goroutine can see the
context becoming done and call Close on the database/sql/driver and
make the caller's view of the RawBytes memory no longer valid,
introducing races, crashes, or database corruption. See #60304
and #53970 for details.
This change does the minimal surgery on database/sql to make it safe
again: Rows.Scan was already acquiring a mutex to check whether the
rows had been closed, so this change make Rows.Scan notice whether
*RawBytes was used and, if so, doesn't release the mutex on exit
before returning. That mean it's still locked while the user code
operates on the RawBytes memory and the concurrent context-watching
goroutine to close the database still runs, but if it fires, it then
gets blocked on the mutex until the next call to a Rows method (Next,
NextResultSet, Err, Close).
Updates #60304
Updates #53970 (earlier one I'd missed)
Change-Id: Ie41c0c6f32c24887b2f53ec3686c2aab73a1bfff
Reviewed-on: https://go-review.googlesource.com/c/go/+/497675
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
CVE: CVE-2025-47907
Upstream-Status: Backport [https://github.com/golang/go/commit/298fe517a9333c05143a8a8e1f9d5499f0c6e59b]
Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
---
src/database/sql/fakedb_test.go | 13 +++++-
src/database/sql/sql.go | 72 ++++++++++++++++++++++++++++++++-
src/database/sql/sql_test.go | 58 ++++++++++++++++++++++++++
3 files changed, 141 insertions(+), 2 deletions(-)
diff --git a/src/database/sql/fakedb_test.go b/src/database/sql/fakedb_test.go
index 4b68f1c..33c57b9 100644
--- a/src/database/sql/fakedb_test.go
+++ b/src/database/sql/fakedb_test.go
@@ -15,6 +15,7 @@ import (
"strconv"
"strings"
"sync"
+ "sync/atomic"
"testing"
"time"
)
@@ -90,6 +91,8 @@ func (cc *fakeDriverCtx) OpenConnector(name string) (driver.Connector, error) {
type fakeDB struct {
name string
+ useRawBytes atomic.Bool
+
mu sync.Mutex
tables map[string]*table
badConn bool
@@ -680,6 +683,8 @@ func (c *fakeConn) PrepareContext(ctx context.Context, query string) (driver.Stm
switch cmd {
case "WIPE":
// Nothing
+ case "USE_RAWBYTES":
+ c.db.useRawBytes.Store(true)
case "SELECT":
stmt, err = c.prepareSelect(stmt, parts)
case "CREATE":
@@ -783,6 +788,9 @@ func (s *fakeStmt) ExecContext(ctx context.Context, args []driver.NamedValue) (d
case "WIPE":
db.wipe()
return driver.ResultNoRows, nil
+ case "USE_RAWBYTES":
+ s.c.db.useRawBytes.Store(true)
+ return driver.ResultNoRows, nil
case "CREATE":
if err := db.createTable(s.table, s.colName, s.colType); err != nil {
return nil, err
@@ -912,6 +920,7 @@ func (s *fakeStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (
txStatus = "transaction"
}
cursor := &rowsCursor{
+ db: s.c.db,
parentMem: s.c,
posRow: -1,
rows: [][]*row{
@@ -1008,6 +1017,7 @@ func (s *fakeStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (
}
cursor := &rowsCursor{
+ db: s.c.db,
parentMem: s.c,
posRow: -1,
rows: setMRows,
@@ -1050,6 +1060,7 @@ func (tx *fakeTx) Rollback() error {
}
type rowsCursor struct {
+ db *fakeDB
parentMem memToucher
cols [][]string
colType [][]string
@@ -1121,7 +1132,7 @@ func (rc *rowsCursor) Next(dest []driver.Value) error {
// messing up conversions or doing them differently.
dest[i] = v
- if bs, ok := v.([]byte); ok {
+ if bs, ok := v.([]byte); ok && !rc.db.useRawBytes.Load() {
if rc.bytesClone == nil {
rc.bytesClone = make(map[*byte][]byte)
}
diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go
index 68fb392..ef49e70 100644
--- a/src/database/sql/sql.go
+++ b/src/database/sql/sql.go
@@ -2879,6 +2879,8 @@ type Rows struct {
cancel func() // called when Rows is closed, may be nil.
closeStmt *driverStmt // if non-nil, statement to Close on close
+ contextDone atomic.Value // error that awaitDone saw; set before close attempt
+
// closemu prevents Rows from closing while there
// is an active streaming result. It is held for read during non-close operations
// and exclusively during close.
@@ -2891,6 +2893,15 @@ type Rows struct {
// lastcols is only used in Scan, Next, and NextResultSet which are expected
// not to be called concurrently.
lastcols []driver.Value
+
+ // closemuScanHold is whether the previous call to Scan kept closemu RLock'ed
+ // without unlocking it. It does that when the user passes a *RawBytes scan
+ // target. In that case, we need to prevent awaitDone from closing the Rows
+ // while the user's still using the memory. See go.dev/issue/60304.
+ //
+ // It is only used by Scan, Next, and NextResultSet which are expected
+ // not to be called concurrently.
+ closemuScanHold bool
}
// lasterrOrErrLocked returns either lasterr or the provided err.
@@ -2928,7 +2939,11 @@ func (rs *Rows) awaitDone(ctx, txctx context.Context) {
}
select {
case <-ctx.Done():
+ err := ctx.Err()
+ rs.contextDone.Store(&err)
case <-txctxDone:
+ err := txctx.Err()
+ rs.contextDone.Store(&err)
}
rs.close(ctx.Err())
}
@@ -2940,6 +2955,15 @@ func (rs *Rows) awaitDone(ctx, txctx context.Context) {
//
// Every call to Scan, even the first one, must be preceded by a call to Next.
func (rs *Rows) Next() bool {
+ // If the user's calling Next, they're done with their previous row's Scan
+ // results (any RawBytes memory), so we can release the read lock that would
+ // be preventing awaitDone from calling close.
+ rs.closemuRUnlockIfHeldByScan()
+
+ if rs.contextDone.Load() != nil {
+ return false
+ }
+
var doClose, ok bool
withLock(rs.closemu.RLocker(), func() {
doClose, ok = rs.nextLocked()
@@ -2994,6 +3018,11 @@ func (rs *Rows) nextLocked() (doClose, ok bool) {
// scanning. If there are further result sets they may not have rows in the result
// set.
func (rs *Rows) NextResultSet() bool {
+ // If the user's calling NextResultSet, they're done with their previous
+ // row's Scan results (any RawBytes memory), so we can release the read lock
+ // that would be preventing awaitDone from calling close.
+ rs.closemuRUnlockIfHeldByScan()
+
var doClose bool
defer func() {
if doClose {
@@ -3030,6 +3059,10 @@ func (rs *Rows) NextResultSet() bool {
// Err returns the error, if any, that was encountered during iteration.
// Err may be called after an explicit or implicit Close.
func (rs *Rows) Err() error {
+ if errp := rs.contextDone.Load(); errp != nil {
+ return *(errp.(*error))
+ }
+
rs.closemu.RLock()
defer rs.closemu.RUnlock()
return rs.lasterrOrErrLocked(nil)
@@ -3223,6 +3256,11 @@ func rowsColumnInfoSetupConnLocked(rowsi driver.Rows) []*ColumnType {
// If any of the first arguments implementing Scanner returns an error,
// that error will be wrapped in the returned error
func (rs *Rows) Scan(dest ...interface{}) error {
+ if rs.closemuScanHold {
+ // This should only be possible if the user calls Scan twice in a row
+ // without calling Next.
+ return fmt.Errorf("sql: Scan called without calling Next (closemuScanHold)")
+ }
rs.closemu.RLock()
if rs.lasterr != nil && rs.lasterr != io.EOF {
@@ -3234,23 +3272,50 @@ func (rs *Rows) Scan(dest ...interface{}) error {
rs.closemu.RUnlock()
return err
}
- rs.closemu.RUnlock()
+
+ if scanArgsContainRawBytes(dest) {
+ rs.closemuScanHold = true
+ } else {
+ rs.closemu.RUnlock()
+ }
if rs.lastcols == nil {
+ rs.closemuRUnlockIfHeldByScan()
return errors.New("sql: Scan called without calling Next")
}
if len(dest) != len(rs.lastcols) {
+ rs.closemuRUnlockIfHeldByScan()
return fmt.Errorf("sql: expected %d destination arguments in Scan, not %d", len(rs.lastcols), len(dest))
}
+
for i, sv := range rs.lastcols {
err := convertAssignRows(dest[i], sv, rs)
if err != nil {
+ rs.closemuRUnlockIfHeldByScan()
return fmt.Errorf(`sql: Scan error on column index %d, name %q: %w`, i, rs.rowsi.Columns()[i], err)
}
}
return nil
}
+// closemuRUnlockIfHeldByScan releases any closemu.RLock held open by a previous
+// call to Scan with *RawBytes.
+func (rs *Rows) closemuRUnlockIfHeldByScan() {
+ if rs.closemuScanHold {
+ rs.closemuScanHold = false
+ rs.closemu.RUnlock()
+ }
+}
+
+func scanArgsContainRawBytes(args []interface{}) bool {
+ for _, a := range args {
+ if _, ok := a.(*RawBytes); ok {
+ return true
+ }
+ }
+ return false
+}
+
// rowsCloseHook returns a function so tests may install the
// hook through a test only mutex.
var rowsCloseHook = func() func(*Rows, *error) { return nil }
@@ -3260,6 +3325,11 @@ var rowsCloseHook = func() func(*Rows, *error) { return nil }
// the Rows are closed automatically and it will suffice to check the
// result of Err. Close is idempotent and does not affect the result of Err.
func (rs *Rows) Close() error {
+ // If the user's calling Close, they're done with their previous row's Scan
+ // results (any RawBytes memory), so we can release the read lock that would
+ // be preventing awaitDone from calling the unexported close before we do so.
+ rs.closemuRUnlockIfHeldByScan()
+
return rs.close(nil)
}
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go
index f771dee..53b38d1 100644
--- a/src/database/sql/sql_test.go
+++ b/src/database/sql/sql_test.go
@@ -4255,6 +4255,64 @@ func TestRowsScanProperlyWrapsErrors(t *testing.T) {
}
}
+// From go.dev/issue/60304
+func TestContextCancelDuringRawBytesScan(t *testing.T) {
+ db := newTestDB(t, "people")
+ defer closeDB(t, db)
+
+ if _, err := db.Exec("USE_RAWBYTES"); err != nil {
+ t.Fatal(err)
+ }
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
+ r, err := db.QueryContext(ctx, "SELECT|people|name|")
+ if err != nil {
+ t.Fatal(err)
+ }
+ numRows := 0
+ var sink byte
+ for r.Next() {
+ numRows++
+ var s RawBytes
+ err = r.Scan(&s)
+ if !r.closemuScanHold {
+ t.Errorf("expected closemu to be held")
+ }
+ if err != nil {
+ t.Fatal(err)
+ }
+ t.Logf("read %q", s)
+ if numRows == 2 {
+ cancel() // invalidate the context, which used to call close asynchronously
+ }
+ for _, b := range s { // some operation reading from the raw memory
+ sink += b
+ }
+ }
+ if r.closemuScanHold {
+ t.Errorf("closemu held; should not be")
+ }
+
+ // There are 3 rows. We canceled after reading 2 so we expect either
+ // 2 or 3 depending on how the awaitDone goroutine schedules.
+ switch numRows {
+ case 0, 1:
+ t.Errorf("got %d rows; want 2+", numRows)
+ case 2:
+ if err := r.Err(); err != context.Canceled {
+ t.Errorf("unexpected error: %v (%T)", err, err)
+ }
+ default:
+ // Made it to the end. This is rare, but fine. Permit it.
+ }
+
+ if err := r.Close(); err != nil {
+ t.Fatal(err)
+ }
+}
+
// badConn implements a bad driver.Conn, for TestBadDriver.
// The Exec method panics.
type badConn struct{}

View File

@@ -0,0 +1,232 @@
From c23579f031ecd09bf37c644723b33736dffa8b92 Mon Sep 17 00:00:00 2001
From: Damien Neil <dneil@google.com>
Date: Tue, 23 Jan 2024 15:59:47 -0800
Subject: [PATCH] database/sql: avoid clobbering driver-owned memory in
RawBytes
Depending on the query, a RawBytes can contain memory owned by the
driver or by database/sql:
If the driver provides the column as a []byte,
RawBytes aliases that []byte.
If the driver provides the column as any other type,
RawBytes contains memory allocated by database/sql.
Prior to this CL, Rows.Scan will reuse existing capacity in a
RawBytes to permit a single allocation to be reused across rows.
When a RawBytes is reused across queries, this can result
in database/sql writing to driver-owned memory.
Add a buffer to Rows to store RawBytes data, and reuse this
buffer across calls to Rows.Scan.
Fixes #65201
Change-Id: Iac640174c7afa97eeb39496f47dec202501b2483
Reviewed-on: https://go-review.googlesource.com/c/go/+/557917
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
CVE: CVE-2025-47907
Upstream-Status: Backport [https://github.com/golang/go/commit/c23579f031ecd09bf37c644723b33736dffa8b92]
Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
---
src/database/sql/convert.go | 8 +++---
src/database/sql/convert_test.go | 14 +++++++---
src/database/sql/sql.go | 34 +++++++++++++++++++++++
src/database/sql/sql_test.go | 47 ++++++++++++++++++++++++++++++++
4 files changed, 95 insertions(+), 8 deletions(-)
diff --git a/src/database/sql/convert.go b/src/database/sql/convert.go
index b966ef9..3a581f6 100644
--- a/src/database/sql/convert.go
+++ b/src/database/sql/convert.go
@@ -237,7 +237,7 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
if d == nil {
return errNilPtr
}
- *d = append((*d)[:0], s...)
+ *d = rows.setrawbuf(append(rows.rawbuf(), s...))
return nil
}
case []byte:
@@ -285,7 +285,7 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
if d == nil {
return errNilPtr
}
- *d = s.AppendFormat((*d)[:0], time.RFC3339Nano)
+ *d = rows.setrawbuf(s.AppendFormat(rows.rawbuf(), time.RFC3339Nano))
return nil
}
case decimalDecompose:
@@ -366,8 +366,8 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
}
case *RawBytes:
sv = reflect.ValueOf(src)
- if b, ok := asBytes([]byte(*d)[:0], sv); ok {
- *d = RawBytes(b)
+ if b, ok := asBytes(rows.rawbuf(), sv); ok {
+ *d = rows.setrawbuf(b)
return nil
}
case *bool:
diff --git a/src/database/sql/convert_test.go b/src/database/sql/convert_test.go
index 2668a5e..23a70bf 100644
--- a/src/database/sql/convert_test.go
+++ b/src/database/sql/convert_test.go
@@ -357,9 +357,10 @@ func TestRawBytesAllocs(t *testing.T) {
{"time", time.Unix(2, 5).UTC(), "1970-01-01T00:00:02.000000005Z"},
}
- buf := make(RawBytes, 10)
- test := func(name string, in interface{}, want string) {
- if err := convertAssign(&buf, in); err != nil {
+ var buf RawBytes
+ rows := &Rows{}
+ test := func(name string, in interface{}, want string) {
+ if err := convertAssignRows(&buf, in, rows); err != nil {
t.Fatalf("%s: convertAssign = %v", name, err)
}
match := len(buf) == len(want)
@@ -378,6 +379,7 @@ func TestRawBytesAllocs(t *testing.T) {
n := testing.AllocsPerRun(100, func() {
for _, tt := range tests {
+ rows.raw = rows.raw[:0]
test(tt.name, tt.in, tt.want)
}
})
@@ -386,7 +388,11 @@ func TestRawBytesAllocs(t *testing.T) {
// and gc. With 32-bit words there are more convT2E allocs, and
// with gccgo, only pointers currently go in interface data.
// So only care on amd64 gc for now.
- measureAllocs := runtime.GOARCH == "amd64" && runtime.Compiler == "gc"
+ measureAllocs := false
+ switch runtime.GOARCH {
+ case "amd64", "arm64":
+ measureAllocs = runtime.Compiler == "gc"
+ }
if n > 0.5 && measureAllocs {
t.Fatalf("allocs = %v; want 0", n)
diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go
index ef49e70..e25447c 100644
--- a/src/database/sql/sql.go
+++ b/src/database/sql/sql.go
@@ -2894,6 +2894,13 @@ type Rows struct {
// not to be called concurrently.
lastcols []driver.Value
+ // raw is a buffer for RawBytes that persists between Scan calls.
+ // This is used when the driver returns a mismatched type that requires
+ // a cloning allocation. For example, if the driver returns a *string and
+ // the user is scanning into a *RawBytes, we need to copy the string.
+ // The raw buffer here lets us reuse the memory for that copy across Scan calls.
+ raw []byte
+
// closemuScanHold is whether the previous call to Scan kept closemu RLock'ed
// without unlocking it. It does that when the user passes a *RawBytes scan
// target. In that case, we need to prevent awaitDone from closing the Rows
@@ -3068,6 +3075,32 @@ func (rs *Rows) Err() error {
return rs.lasterrOrErrLocked(nil)
}
+// rawbuf returns the buffer to append RawBytes values to.
+// This buffer is reused across calls to Rows.Scan.
+//
+// Usage:
+//
+// rawBytes = rows.setrawbuf(append(rows.rawbuf(), value...))
+func (rs *Rows) rawbuf() []byte {
+ if rs == nil {
+ // convertAssignRows can take a nil *Rows; for simplicity handle it here
+ return nil
+ }
+ return rs.raw
+}
+
+// setrawbuf updates the RawBytes buffer with the result of appending a new value to it.
+// It returns the new value.
+func (rs *Rows) setrawbuf(b []byte) RawBytes {
+ if rs == nil {
+ // convertAssignRows can take a nil *Rows; for simplicity handle it here
+ return RawBytes(b)
+ }
+ off := len(rs.raw)
+ rs.raw = b
+ return RawBytes(rs.raw[off:])
+}
+
var errRowsClosed = errors.New("sql: Rows are closed")
var errNoRows = errors.New("sql: no Rows available")
@@ -3275,6 +3308,7 @@ func (rs *Rows) Scan(dest ...interface{}) error {
if scanArgsContainRawBytes(dest) {
rs.closemuScanHold = true
+ rs.raw = rs.raw[:0]
} else {
rs.closemu.RUnlock()
}
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go
index 53b38d1..6aa9bf0 100644
--- a/src/database/sql/sql_test.go
+++ b/src/database/sql/sql_test.go
@@ -4313,6 +4313,53 @@ func TestContextCancelDuringRawBytesScan(t *testing.T) {
}
}
+// Issue #65201.
+//
+// If a RawBytes is reused across multiple queries,
+// subsequent queries shouldn't overwrite driver-owned memory from previous queries.
+func TestRawBytesReuse(t *testing.T) {
+ db := newTestDB(t, "people")
+ defer closeDB(t, db)
+
+ if _, err := db.Exec("USE_RAWBYTES"); err != nil {
+ t.Fatal(err)
+ }
+
+ var raw RawBytes
+
+ // The RawBytes in this query aliases driver-owned memory.
+ rows, err := db.Query("SELECT|people|name|")
+ if err != nil {
+ t.Fatal(err)
+ }
+ rows.Next()
+ rows.Scan(&raw) // now raw is pointing to driver-owned memory
+ name1 := string(raw)
+ rows.Close()
+
+ // The RawBytes in this query does not alias driver-owned memory.
+ rows, err = db.Query("SELECT|people|age|")
+ if err != nil {
+ t.Fatal(err)
+ }
+ rows.Next()
+ rows.Scan(&raw) // this must not write to the driver-owned memory in raw
+ rows.Close()
+
+ // Repeat the first query. Nothing should have changed.
+ rows, err = db.Query("SELECT|people|name|")
+ if err != nil {
+ t.Fatal(err)
+ }
+ rows.Next()
+ rows.Scan(&raw) // raw points to driver-owned memory again
+ name2 := string(raw)
+ rows.Close()
+ if name1 != name2 {
+ t.Fatalf("Scan read name %q, want %q", name2, name1)
+ }
+}
+
// badConn implements a bad driver.Conn, for TestBadDriver.
// The Exec method panics.
type badConn struct{}

View File

@@ -0,0 +1,327 @@
From 8a924caaf348fdc366bab906424616b2974ad4e9 Mon Sep 17 00:00:00 2001
From: Damien Neil <dneil@google.com>
Date: Wed, 23 Jul 2025 14:26:54 -0700
Subject: [PATCH] database/sql: avoid closing Rows while scan is in progress
A database/sql/driver.Rows can return database-owned data
from Rows.Next. The driver.Rows documentation doesn't explicitly
document the lifetime guarantees for this data, but a reasonable
expectation is that the caller of Next should only access it
until the next call to Rows.Close or Rows.Next.
Avoid violating that constraint when a query is cancelled while
a call to database/sql.Rows.Scan (note the difference between
the two different Rows types!) is in progress. We previously
took care to avoid closing a driver.Rows while the user has
access to driver-owned memory via a RawData, but we could still
close a driver.Rows while a Scan call was in the process of
reading previously-returned driver-owned data.
Update the fake DB used in database/sql tests to invalidate
returned data to help catch other places we might be
incorrectly retaining it.
Updates #74831
Fixes #74832
Change-Id: Ice45b5fad51b679c38e3e1d21ef39156b56d6037
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2540
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-by: Neal Patel <nealpatel@google.com>
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2601
Reviewed-on: https://go-review.googlesource.com/c/go/+/693558
TryBot-Bypass: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Mark Freeman <markfreeman@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@google.com>
CVE: CVE-2025-47907
Upstream-Status: Backport [https://github.com/golang/go/commit/8a924caaf348fdc366bab906424616b2974ad4e9]
Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
---
src/database/sql/convert.go | 2 --
src/database/sql/fakedb_test.go | 47 ++++++++++++--------------
src/database/sql/sql.go | 26 +++++++-------
src/database/sql/sql_test.go | 60 ++++++++++++++++++++++++++++++---
4 files changed, 90 insertions(+), 45 deletions(-)
diff --git a/src/database/sql/convert.go b/src/database/sql/convert.go
index 3a581f6..5b0c6f0 100644
--- a/src/database/sql/convert.go
+++ b/src/database/sql/convert.go
@@ -324,7 +324,6 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
if rows == nil {
return errors.New("invalid context to convert cursor rows, missing parent *Rows")
}
- rows.closemu.Lock()
*d = Rows{
dc: rows.dc,
releaseConn: func(error) {},
@@ -340,7 +339,6 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
parentCancel()
}
}
- rows.closemu.Unlock()
return nil
}
}
diff --git a/src/database/sql/fakedb_test.go b/src/database/sql/fakedb_test.go
index 33c57b9..9f3d517 100644
--- a/src/database/sql/fakedb_test.go
+++ b/src/database/sql/fakedb_test.go
@@ -5,6 +5,7 @@
package sql
import (
+ "bytes"
"context"
"database/sql/driver"
"errors"
@@ -15,7 +16,6 @@ import (
"strconv"
"strings"
"sync"
- "sync/atomic"
"testing"
"time"
)
@@ -91,8 +91,6 @@ func (cc *fakeDriverCtx) OpenConnector(name string) (driver.Connector, error) {
type fakeDB struct {
name string
- useRawBytes atomic.Bool
-
mu sync.Mutex
tables map[string]*table
badConn bool
@@ -683,8 +681,6 @@ func (c *fakeConn) PrepareContext(ctx context.Context, query string) (driver.Stm
switch cmd {
case "WIPE":
// Nothing
- case "USE_RAWBYTES":
- c.db.useRawBytes.Store(true)
case "SELECT":
stmt, err = c.prepareSelect(stmt, parts)
case "CREATE":
@@ -788,9 +784,6 @@ func (s *fakeStmt) ExecContext(ctx context.Context, args []driver.NamedValue) (d
case "WIPE":
db.wipe()
return driver.ResultNoRows, nil
- case "USE_RAWBYTES":
- s.c.db.useRawBytes.Store(true)
- return driver.ResultNoRows, nil
case "CREATE":
if err := db.createTable(s.table, s.colName, s.colType); err != nil {
return nil, err
@@ -1073,10 +1066,9 @@ type rowsCursor struct {
errPos int
err error
- // a clone of slices to give out to clients, indexed by the
- // original slice's first byte address. we clone them
- // just so we're able to corrupt them on close.
- bytesClone map[*byte][]byte
+ // Data returned to clients.
+ // We clone and stash it here so it can be invalidated by Close and Next.
+ driverOwnedMemory [][]byte
// Every operation writes to line to enable the race detector
// check for data races.
@@ -1090,9 +1082,19 @@ func (rc *rowsCursor) touchMem() {
rc.line++
}
+func (rc *rowsCursor) invalidateDriverOwnedMemory() {
+ for _, buf := range rc.driverOwnedMemory {
+ for i := range buf {
+ buf[i] = 'x'
+ }
+ }
+ rc.driverOwnedMemory = nil
+}
+
func (rc *rowsCursor) Close() error {
rc.touchMem()
rc.parentMem.touchMem()
+ rc.invalidateDriverOwnedMemory()
rc.closed = true
return nil
}
@@ -1123,6 +1125,8 @@ func (rc *rowsCursor) Next(dest []driver.Value) error {
if rc.posRow >= len(rc.rows[rc.posSet]) {
return io.EOF // per interface spec
}
+ // Corrupt any previously returned bytes.
+ rc.invalidateDriverOwnedMemory()
for i, v := range rc.rows[rc.posSet][rc.posRow].cols {
// TODO(bradfitz): convert to subset types? naah, I
// think the subset types should only be input to
@@ -1130,20 +1134,13 @@ func (rc *rowsCursor) Next(dest []driver.Value) error {
// a wider range of types coming out of drivers. all
// for ease of drivers, and to prevent drivers from
// messing up conversions or doing them differently.
- dest[i] = v
-
- if bs, ok := v.([]byte); ok && !rc.db.useRawBytes.Load() {
- if rc.bytesClone == nil {
- rc.bytesClone = make(map[*byte][]byte)
- }
- clone, ok := rc.bytesClone[&bs[0]]
- if !ok {
- clone = make([]byte, len(bs))
- copy(clone, bs)
- rc.bytesClone[&bs[0]] = clone
- }
- dest[i] = clone
+ if bs, ok := v.([]byte); ok {
+ // Clone []bytes and stash for later invalidation.
+ bs = bytes.Clone(bs)
+ rc.driverOwnedMemory = append(rc.driverOwnedMemory, bs)
+ v = bs
}
+ dest[i] = v
}
return nil
}
diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go
index e25447c..a428e29 100644
--- a/src/database/sql/sql.go
+++ b/src/database/sql/sql.go
@@ -3294,38 +3294,36 @@ func (rs *Rows) Scan(dest ...interface{}) error {
// without calling Next.
return fmt.Errorf("sql: Scan called without calling Next (closemuScanHold)")
}
+
rs.closemu.RLock()
+ rs.raw = rs.raw[:0]
+ err := rs.scanLocked(dest...)
+ if err == nil && scanArgsContainRawBytes(dest) {
+ rs.closemuScanHold = true
+ } else {
+ rs.closemu.RUnlock()
+ }
+ return err
+}
+func (rs *Rows) scanLocked(dest ...interface{}) error {
if rs.lasterr != nil && rs.lasterr != io.EOF {
- rs.closemu.RUnlock()
return rs.lasterr
}
if rs.closed {
- err := rs.lasterrOrErrLocked(errRowsClosed)
- rs.closemu.RUnlock()
- return err
- }
-
- if scanArgsContainRawBytes(dest) {
- rs.closemuScanHold = true
- rs.raw = rs.raw[:0]
- } else {
- rs.closemu.RUnlock()
+ return rs.lasterrOrErrLocked(errRowsClosed)
}
if rs.lastcols == nil {
- rs.closemuRUnlockIfHeldByScan()
return errors.New("sql: Scan called without calling Next")
}
if len(dest) != len(rs.lastcols) {
- rs.closemuRUnlockIfHeldByScan()
return fmt.Errorf("sql: expected %d destination arguments in Scan, not %d", len(rs.lastcols), len(dest))
}
for i, sv := range rs.lastcols {
err := convertAssignRows(dest[i], sv, rs)
if err != nil {
- rs.closemuRUnlockIfHeldByScan()
return fmt.Errorf(`sql: Scan error on column index %d, name %q: %w`, i, rs.rowsi.Columns()[i], err)
}
}
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go
index 6aa9bf0..6aec7ec 100644
--- a/src/database/sql/sql_test.go
+++ b/src/database/sql/sql_test.go
@@ -5,6 +5,7 @@
package sql
import (
+ "bytes"
"context"
"database/sql/driver"
"errors"
@@ -4321,10 +4322,6 @@ func TestRawBytesReuse(t *testing.T) {
db := newTestDB(t, "people")
defer closeDB(t, db)
- if _, err := db.Exec("USE_RAWBYTES"); err != nil {
- t.Fatal(err)
- }
-
var raw RawBytes
// The RawBytes in this query aliases driver-owned memory.
@@ -4469,6 +4466,61 @@ func TestTypedString(t *testing.T) {
}
}
+type testScanner struct {
+ scanf func(src any) error
+}
+
+func (ts testScanner) Scan(src any) error { return ts.scanf(src) }
+
+func TestContextCancelDuringScan(t *testing.T) {
+ db := newTestDB(t, "people")
+ defer closeDB(t, db)
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
+ scanStart := make(chan any)
+ scanEnd := make(chan error)
+ scanner := &testScanner{
+ scanf: func(src any) error {
+ scanStart <- src
+ return <-scanEnd
+ },
+ }
+
+ // Start a query, and pause it mid-scan.
+ want := []byte("Alice")
+ r, err := db.QueryContext(ctx, "SELECT|people|name|name=?", string(want))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !r.Next() {
+ t.Fatalf("r.Next() = false, want true")
+ }
+ go func() {
+ r.Scan(scanner)
+ }()
+ got := <-scanStart
+ defer close(scanEnd)
+ gotBytes, ok := got.([]byte)
+ if !ok {
+ t.Fatalf("r.Scan returned %T, want []byte", got)
+ }
+ if !bytes.Equal(gotBytes, want) {
+ t.Fatalf("before cancel: r.Scan returned %q, want %q", gotBytes, want)
+ }
+
+ // Cancel the query.
+ // Sleep to give it a chance to finish canceling.
+ cancel()
+ time.Sleep(10 * time.Millisecond)
+
+ // Cancelling the query should not have changed the result.
+ if !bytes.Equal(gotBytes, want) {
+ t.Fatalf("after cancel: r.Scan result is now %q, want %q", gotBytes, want)
+ }
+}
+
func BenchmarkConcurrentDBExec(b *testing.B) {
b.ReportAllocs()
ct := new(concurrentDBExecTest)

File diff suppressed because it is too large Load Diff

View File

@@ -5,6 +5,8 @@ LIC_FILES_CHKSUM = "file://LICENSE.md;md5=239668a7c6066d9e0c5382e9c8c6c0e1"
SRC_URI[sha256sum] = "9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"
SRC_URI += " file://CVE-2024-3651.patch"
inherit pypi setuptools3
# Remove bundled egg-info

View File

@@ -4,7 +4,7 @@ HOMEPAGE = "https://pypi.org/project/Jinja2/"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5dc88300786f1c214c1e9827a5229462"
SRC_URI[sha256sum] = "4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"
SRC_URI[sha256sum] = "0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"
PYPI_PACKAGE = "jinja2"
@@ -22,6 +22,9 @@ SRC_URI += " \
do_install_ptest() {
install -d ${D}${PTEST_PATH}/tests
cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
# test_async items require trio module
rm -f ${D}${PTEST_PATH}/tests/test_async.py ${D}${PTEST_PATH}/tests/test_async_filters.py
}
RDEPENDS:${PN}-ptest += " \

View File

@@ -15,7 +15,7 @@ DEPENDS += "python3 glib-2.0"
SRCNAME="pygobject"
SRC_URI = " \
http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
${GNOME_MIRROR}/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
file://0001-Do-not-build-tests.patch \
"
SRC_URI[sha256sum] = "9b12616e32cfc792f9dc841d9c472a41a35b85ba67d3a6eb427e307a6fe4367b"

View File

@@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/shazow/urllib3"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c2823cb995439c984fd62a973d79815c"
SRC_URI[sha256sum] = "f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"
SRC_URI[sha256sum] = "40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"
inherit pypi setuptools3

View File

@@ -16,7 +16,7 @@ diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 3bbbcaa..473167d 100755
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -2675,7 +2675,8 @@ class TarFile(object):
@@ -2678,7 +2678,8 @@ class TarFile(object):
os.lchown(targetpath, u, g)
else:
os.chown(targetpath, u, g)

View File

@@ -0,0 +1,364 @@
From 892747b4cf0f95ba8beb51c0d0658bfaa381ebca Mon Sep 17 00:00:00 2001
From: Łukasz Langa <lukasz@langa.pl>
Date: Fri, 31 Oct 2025 17:51:32 +0100
Subject: [PATCH] gh-136065: Fix quadratic complexity in os.path.expandvars()
(GH-134952) (GH-140851)
(cherry picked from commit f029e8db626ddc6e3a3beea4eff511a71aaceb5c)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
CVE: CVE-2025-6075
Upstream-Status: Backport [https://github.com/python/cpython/commit/892747b4cf0f95ba8beb51c0d0658bfaa381ebca]
Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
---
Lib/ntpath.py | 126 ++++++------------
Lib/posixpath.py | 43 +++---
Lib/test/test_genericpath.py | 14 ++
Lib/test/test_ntpath.py | 20 ++-
...-05-30-22-33-27.gh-issue-136065.bu337o.rst | 1 +
5 files changed, 93 insertions(+), 111 deletions(-)
create mode 100644 Misc/NEWS.d/next/Security/2025-05-30-22-33-27.gh-issue-136065.bu337o.rst
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index 9b0cca4..bd2b4e2 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -374,17 +374,23 @@ def expanduser(path):
# XXX With COMMAND.COM you can use any characters in a variable name,
# XXX except '^|<>='.
+_varpattern = r"'[^']*'?|%(%|[^%]*%?)|\$(\$|[-\w]+|\{[^}]*\}?)"
+_varsub = None
+_varsubb = None
+
def expandvars(path):
"""Expand shell variables of the forms $var, ${var} and %var%.
Unknown variables are left unchanged."""
path = os.fspath(path)
+ global _varsub, _varsubb
if isinstance(path, bytes):
if b'$' not in path and b'%' not in path:
return path
- import string
- varchars = bytes(string.ascii_letters + string.digits + '_-', 'ascii')
- quote = b'\''
+ if not _varsubb:
+ import re
+ _varsubb = re.compile(_varpattern.encode(), re.ASCII).sub
+ sub = _varsubb
percent = b'%'
brace = b'{'
rbrace = b'}'
@@ -393,94 +399,44 @@ def expandvars(path):
else:
if '$' not in path and '%' not in path:
return path
- import string
- varchars = string.ascii_letters + string.digits + '_-'
- quote = '\''
+ if not _varsub:
+ import re
+ _varsub = re.compile(_varpattern, re.ASCII).sub
+ sub = _varsub
percent = '%'
brace = '{'
rbrace = '}'
dollar = '$'
environ = os.environ
- res = path[:0]
- index = 0
- pathlen = len(path)
- while index < pathlen:
- c = path[index:index+1]
- if c == quote: # no expansion within single quotes
- path = path[index + 1:]
- pathlen = len(path)
- try:
- index = path.index(c)
- res += c + path[:index + 1]
- except ValueError:
- res += c + path
- index = pathlen - 1
- elif c == percent: # variable or '%'
- if path[index + 1:index + 2] == percent:
- res += c
- index += 1
- else:
- path = path[index+1:]
- pathlen = len(path)
- try:
- index = path.index(percent)
- except ValueError:
- res += percent + path
- index = pathlen - 1
- else:
- var = path[:index]
- try:
- if environ is None:
- value = os.fsencode(os.environ[os.fsdecode(var)])
- else:
- value = environ[var]
- except KeyError:
- value = percent + var + percent
- res += value
- elif c == dollar: # variable or '$$'
- if path[index + 1:index + 2] == dollar:
- res += c
- index += 1
- elif path[index + 1:index + 2] == brace:
- path = path[index+2:]
- pathlen = len(path)
- try:
- index = path.index(rbrace)
- except ValueError:
- res += dollar + brace + path
- index = pathlen - 1
- else:
- var = path[:index]
- try:
- if environ is None:
- value = os.fsencode(os.environ[os.fsdecode(var)])
- else:
- value = environ[var]
- except KeyError:
- value = dollar + brace + var + rbrace
- res += value
- else:
- var = path[:0]
- index += 1
- c = path[index:index + 1]
- while c and c in varchars:
- var += c
- index += 1
- c = path[index:index + 1]
- try:
- if environ is None:
- value = os.fsencode(os.environ[os.fsdecode(var)])
- else:
- value = environ[var]
- except KeyError:
- value = dollar + var
- res += value
- if c:
- index -= 1
+
+ def repl(m):
+ lastindex = m.lastindex
+ if lastindex is None:
+ return m[0]
+ name = m[lastindex]
+ if lastindex == 1:
+ if name == percent:
+ return name
+ if not name.endswith(percent):
+ return m[0]
+ name = name[:-1]
else:
- res += c
- index += 1
- return res
+ if name == dollar:
+ return name
+ if name.startswith(brace):
+ if not name.endswith(rbrace):
+ return m[0]
+ name = name[1:-1]
+
+ try:
+ if environ is None:
+ return os.fsencode(os.environ[os.fsdecode(name)])
+ else:
+ return environ[name]
+ except KeyError:
+ return m[0]
+
+ return sub(repl, path)
# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A\B.
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index b8dd563..75020ee 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -279,42 +279,41 @@ def expanduser(path):
# This expands the forms $variable and ${variable} only.
# Non-existent variables are left unchanged.
-_varprog = None
-_varprogb = None
+_varpattern = r'\$(\w+|\{[^}]*\}?)'
+_varsub = None
+_varsubb = None
def expandvars(path):
"""Expand shell variables of form $var and ${var}. Unknown variables
are left unchanged."""
path = os.fspath(path)
- global _varprog, _varprogb
+ global _varsub, _varsubb
if isinstance(path, bytes):
if b'$' not in path:
return path
- if not _varprogb:
+ if not _varsubb:
import re
- _varprogb = re.compile(br'\$(\w+|\{[^}]*\})', re.ASCII)
- search = _varprogb.search
+ _varsubb = re.compile(_varpattern.encode(), re.ASCII).sub
+ sub = _varsubb
start = b'{'
end = b'}'
environ = getattr(os, 'environb', None)
else:
if '$' not in path:
return path
- if not _varprog:
+ if not _varsub:
import re
- _varprog = re.compile(r'\$(\w+|\{[^}]*\})', re.ASCII)
- search = _varprog.search
+ _varsub = re.compile(_varpattern, re.ASCII).sub
+ sub = _varsub
start = '{'
end = '}'
environ = os.environ
- i = 0
- while True:
- m = search(path, i)
- if not m:
- break
- i, j = m.span(0)
- name = m.group(1)
- if name.startswith(start) and name.endswith(end):
+
+ def repl(m):
+ name = m[1]
+ if name.startswith(start):
+ if not name.endswith(end):
+ return m[0]
name = name[1:-1]
try:
if environ is None:
@@ -322,13 +321,11 @@ def expandvars(path):
else:
value = environ[name]
except KeyError:
- i = j
+ return m[0]
else:
- tail = path[j:]
- path = path[:i] + value
- i = len(path)
- path += tail
- return path
+ return value
+
+ return sub(repl, path)
# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A/B.
diff --git a/Lib/test/test_genericpath.py b/Lib/test/test_genericpath.py
index 1ff7f75..b0a1326 100644
--- a/Lib/test/test_genericpath.py
+++ b/Lib/test/test_genericpath.py
@@ -7,6 +7,7 @@ import os
import sys
import unittest
import warnings
+from test import support
from test.support import os_helper
from test.support import warnings_helper
from test.support.script_helper import assert_python_ok
@@ -430,6 +431,19 @@ class CommonTest(GenericTest):
os.fsencode('$bar%s bar' % nonascii))
check(b'$spam}bar', os.fsencode('%s}bar' % nonascii))
+ @support.requires_resource('cpu')
+ def test_expandvars_large(self):
+ expandvars = self.pathmodule.expandvars
+ with os_helper.EnvironmentVarGuard() as env:
+ env.clear()
+ env["A"] = "B"
+ n = 100_000
+ self.assertEqual(expandvars('$A'*n), 'B'*n)
+ self.assertEqual(expandvars('${A}'*n), 'B'*n)
+ self.assertEqual(expandvars('$A!'*n), 'B!'*n)
+ self.assertEqual(expandvars('${A}A'*n), 'BA'*n)
+ self.assertEqual(expandvars('${'*10*n), '${'*10*n)
+
def test_abspath(self):
self.assertIn("foo", self.pathmodule.abspath("foo"))
with warnings.catch_warnings():
diff --git a/Lib/test/test_ntpath.py b/Lib/test/test_ntpath.py
index f790f77..161e57d 100644
--- a/Lib/test/test_ntpath.py
+++ b/Lib/test/test_ntpath.py
@@ -5,8 +5,8 @@ import sys
import unittest
import warnings
from ntpath import ALLOW_MISSING
+from test import support
from test.support import os_helper
-from test.support import TestFailed
from test.support.os_helper import FakePath
from test import test_genericpath
from tempfile import TemporaryFile
@@ -56,7 +56,7 @@ def tester(fn, wantResult):
fn = fn.replace("\\", "\\\\")
gotResult = eval(fn)
if wantResult != gotResult and _norm(wantResult) != _norm(gotResult):
- raise TestFailed("%s should return: %s but returned: %s" \
+ raise support.TestFailed("%s should return: %s but returned: %s" \
%(str(fn), str(wantResult), str(gotResult)))
# then with bytes
@@ -72,7 +72,7 @@ def tester(fn, wantResult):
warnings.simplefilter("ignore", DeprecationWarning)
gotResult = eval(fn)
if _norm(wantResult) != _norm(gotResult):
- raise TestFailed("%s should return: %s but returned: %s" \
+ raise support.TestFailed("%s should return: %s but returned: %s" \
%(str(fn), str(wantResult), repr(gotResult)))
@@ -689,6 +689,19 @@ class TestNtpath(NtpathTestCase):
check('%spam%bar', '%sbar' % nonascii)
check('%{}%bar'.format(nonascii), 'ham%sbar' % nonascii)
+ @support.requires_resource('cpu')
+ def test_expandvars_large(self):
+ expandvars = ntpath.expandvars
+ with os_helper.EnvironmentVarGuard() as env:
+ env.clear()
+ env["A"] = "B"
+ n = 100_000
+ self.assertEqual(expandvars('%A%'*n), 'B'*n)
+ self.assertEqual(expandvars('%A%A'*n), 'BA'*n)
+ self.assertEqual(expandvars("''"*n + '%%'), "''"*n + '%')
+ self.assertEqual(expandvars("%%"*n), "%"*n)
+ self.assertEqual(expandvars("$$"*n), "$"*n)
+
def test_expanduser(self):
tester('ntpath.expanduser("test")', 'test')
@@ -923,6 +936,7 @@ class TestNtpath(NtpathTestCase):
self.assertIsInstance(b_final_path, bytes)
self.assertGreater(len(b_final_path), 0)
+
class NtCommonTest(test_genericpath.CommonTest, unittest.TestCase):
pathmodule = ntpath
attributes = ['relpath']
diff --git a/Misc/NEWS.d/next/Security/2025-05-30-22-33-27.gh-issue-136065.bu337o.rst b/Misc/NEWS.d/next/Security/2025-05-30-22-33-27.gh-issue-136065.bu337o.rst
new file mode 100644
index 0000000..1d152bb
--- /dev/null
+++ b/Misc/NEWS.d/next/Security/2025-05-30-22-33-27.gh-issue-136065.bu337o.rst
@@ -0,0 +1 @@
+Fix quadratic complexity in :func:`os.path.expandvars`.
--
2.40.0

View File

@@ -1,219 +0,0 @@
From c9d9f78feb1467e73fd29356c040bde1c104f29f Mon Sep 17 00:00:00 2001
From: "Miss Islington (bot)"
<31488909+miss-islington@users.noreply.github.com>
Date: Mon, 4 Aug 2025 13:45:06 +0200
Subject: [PATCH] [3.12] gh-130577: tarfile now validates archives to ensure
member offsets are non-negative (GH-137027) (#137171)
(cherry picked from commit 7040aa54f14676938970e10c5f74ea93cd56aa38)
Co-authored-by: Alexander Urieles <aeurielesn@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
CVE: CVE-2025-8194
Upstream-Status: Backport [https://github.com/python/cpython/commit/c9d9f78feb1467e73fd29356c040bde1c104f29f]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
Lib/tarfile.py | 3 +
Lib/test/test_tarfile.py | 156 ++++++++++++++++++
...-07-23-00-35-29.gh-issue-130577.c7EITy.rst | 3 +
3 files changed, 162 insertions(+)
create mode 100644 Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 9999a99d54..59d3f6e5cc 100755
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -1613,6 +1613,9 @@ class TarInfo(object):
"""Round up a byte count by BLOCKSIZE and return it,
e.g. _block(834) => 1024.
"""
+ # Only non-negative offsets are allowed
+ if count < 0:
+ raise InvalidHeaderError("invalid offset")
blocks, remainder = divmod(count, BLOCKSIZE)
if remainder:
blocks += 1
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index a184ba75a8..759fa03ead 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -49,6 +49,7 @@ bz2name = os.path.join(TEMPDIR, "testtar.tar.bz2")
xzname = os.path.join(TEMPDIR, "testtar.tar.xz")
tmpname = os.path.join(TEMPDIR, "tmp.tar")
dotlessname = os.path.join(TEMPDIR, "testtar")
+SPACE = b" "
sha256_regtype = (
"e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ce"
@@ -4273,6 +4274,161 @@ class TestExtractionFilters(unittest.TestCase):
self.expect_exception(TypeError) # errorlevel is not int
+class OffsetValidationTests(unittest.TestCase):
+ tarname = tmpname
+ invalid_posix_header = (
+ # name: 100 bytes
+ tarfile.NUL * tarfile.LENGTH_NAME
+ # mode, space, null terminator: 8 bytes
+ + b"000755" + SPACE + tarfile.NUL
+ # uid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # gid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # size, space: 12 bytes
+ + b"\xff" * 11 + SPACE
+ # mtime, space: 12 bytes
+ + tarfile.NUL * 11 + SPACE
+ # chksum: 8 bytes
+ + b"0011407" + tarfile.NUL
+ # type: 1 byte
+ + tarfile.REGTYPE
+ # linkname: 100 bytes
+ + tarfile.NUL * tarfile.LENGTH_LINK
+ # magic: 6 bytes, version: 2 bytes
+ + tarfile.POSIX_MAGIC
+ # uname: 32 bytes
+ + tarfile.NUL * 32
+ # gname: 32 bytes
+ + tarfile.NUL * 32
+ # devmajor, space, null terminator: 8 bytes
+ + tarfile.NUL * 6 + SPACE + tarfile.NUL
+ # devminor, space, null terminator: 8 bytes
+ + tarfile.NUL * 6 + SPACE + tarfile.NUL
+ # prefix: 155 bytes
+ + tarfile.NUL * tarfile.LENGTH_PREFIX
+ # padding: 12 bytes
+ + tarfile.NUL * 12
+ )
+ invalid_gnu_header = (
+ # name: 100 bytes
+ tarfile.NUL * tarfile.LENGTH_NAME
+ # mode, null terminator: 8 bytes
+ + b"0000755" + tarfile.NUL
+ # uid, null terminator: 8 bytes
+ + b"0000001" + tarfile.NUL
+ # gid, space, null terminator: 8 bytes
+ + b"0000001" + tarfile.NUL
+ # size, space: 12 bytes
+ + b"\xff" * 11 + SPACE
+ # mtime, space: 12 bytes
+ + tarfile.NUL * 11 + SPACE
+ # chksum: 8 bytes
+ + b"0011327" + tarfile.NUL
+ # type: 1 byte
+ + tarfile.REGTYPE
+ # linkname: 100 bytes
+ + tarfile.NUL * tarfile.LENGTH_LINK
+ # magic: 8 bytes
+ + tarfile.GNU_MAGIC
+ # uname: 32 bytes
+ + tarfile.NUL * 32
+ # gname: 32 bytes
+ + tarfile.NUL * 32
+ # devmajor, null terminator: 8 bytes
+ + tarfile.NUL * 8
+ # devminor, null terminator: 8 bytes
+ + tarfile.NUL * 8
+ # padding: 167 bytes
+ + tarfile.NUL * 167
+ )
+ invalid_v7_header = (
+ # name: 100 bytes
+ tarfile.NUL * tarfile.LENGTH_NAME
+ # mode, space, null terminator: 8 bytes
+ + b"000755" + SPACE + tarfile.NUL
+ # uid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # gid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # size, space: 12 bytes
+ + b"\xff" * 11 + SPACE
+ # mtime, space: 12 bytes
+ + tarfile.NUL * 11 + SPACE
+ # chksum: 8 bytes
+ + b"0010070" + tarfile.NUL
+ # type: 1 byte
+ + tarfile.REGTYPE
+ # linkname: 100 bytes
+ + tarfile.NUL * tarfile.LENGTH_LINK
+ # padding: 255 bytes
+ + tarfile.NUL * 255
+ )
+ valid_gnu_header = tarfile.TarInfo("filename").tobuf(tarfile.GNU_FORMAT)
+ data_block = b"\xff" * tarfile.BLOCKSIZE
+
+ def _write_buffer(self, buffer):
+ with open(self.tarname, "wb") as f:
+ f.write(buffer)
+
+ def _get_members(self, ignore_zeros=None):
+ with open(self.tarname, "rb") as f:
+ with tarfile.open(
+ mode="r", fileobj=f, ignore_zeros=ignore_zeros
+ ) as tar:
+ return tar.getmembers()
+
+ def _assert_raises_read_error_exception(self):
+ with self.assertRaisesRegex(
+ tarfile.ReadError, "file could not be opened successfully"
+ ):
+ self._get_members()
+
+ def test_invalid_offset_header_validations(self):
+ for tar_format, invalid_header in (
+ ("posix", self.invalid_posix_header),
+ ("gnu", self.invalid_gnu_header),
+ ("v7", self.invalid_v7_header),
+ ):
+ with self.subTest(format=tar_format):
+ self._write_buffer(invalid_header)
+ self._assert_raises_read_error_exception()
+
+ def test_early_stop_at_invalid_offset_header(self):
+ buffer = self.valid_gnu_header + self.invalid_gnu_header + self.valid_gnu_header
+ self._write_buffer(buffer)
+ members = self._get_members()
+ self.assertEqual(len(members), 1)
+ self.assertEqual(members[0].name, "filename")
+ self.assertEqual(members[0].offset, 0)
+
+ def test_ignore_invalid_archive(self):
+ # 3 invalid headers with their respective data
+ buffer = (self.invalid_gnu_header + self.data_block) * 3
+ self._write_buffer(buffer)
+ members = self._get_members(ignore_zeros=True)
+ self.assertEqual(len(members), 0)
+
+ def test_ignore_invalid_offset_headers(self):
+ for first_block, second_block, expected_offset in (
+ (
+ (self.valid_gnu_header),
+ (self.invalid_gnu_header + self.data_block),
+ 0,
+ ),
+ (
+ (self.invalid_gnu_header + self.data_block),
+ (self.valid_gnu_header),
+ 1024,
+ ),
+ ):
+ self._write_buffer(first_block + second_block)
+ members = self._get_members(ignore_zeros=True)
+ self.assertEqual(len(members), 1)
+ self.assertEqual(members[0].name, "filename")
+ self.assertEqual(members[0].offset, expected_offset)
+
+
def setUpModule():
os_helper.unlink(TEMPDIR)
os.makedirs(TEMPDIR)
diff --git a/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst b/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
new file mode 100644
index 0000000000..342cabbc86
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
@@ -0,0 +1,3 @@
+:mod:`tarfile` now validates archives to ensure member offsets are
+non-negative. (Contributed by Alexander Enrique Urieles Nieto in
+:gh:`130577`.)

View File

@@ -37,7 +37,7 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
file://0001-Avoid-shebang-overflow-on-python-config.py.patch \
file://0001-test_storlines-skip-due-to-load-variability.patch \
file://0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch \
file://CVE-2025-8194.patch \
file://CVE-2025-6075.patch \
"
SRC_URI:append:class-native = " \
@@ -46,7 +46,7 @@ SRC_URI:append:class-native = " \
file://12-distutils-prefix-is-inside-staging-area.patch \
file://0001-Don-t-search-system-for-headers-libraries.patch \
"
SRC_URI[sha256sum] = "ae665bc678abd9ab6a6e1573d2481625a53719bc517e9a634ed2b9fefae3817f"
SRC_URI[sha256sum] = "c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076"
# exclude pre-releases for both python 2.x and 3.x
UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"

View File

@@ -128,6 +128,7 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
file://CVE-2024-3446-0005.patch \
file://CVE-2024-3446-0006.patch \
file://CVE-2024-3447.patch \
file://CVE-2024-8354.patch \
"
UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"

Some files were not shown because too many files have changed in this diff Show More