Compare commits

..

105 Commits

Author SHA1 Message Date
Kristiyan Chakarov
02c15addea overview-manual: escape wildcard in inline markup
This change escapes the wildcard in 'recipes-*' to properly italicize
the string

(From yocto-docs rev: 025ef10f4472082069a3237e21aa773354fa5ad9)

Signed-off-by: Kristiyan Chakarov <kichakarov0@gmail.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit b5a4dca823bcc04c0254a0f53a28f61969fb6c31)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-03-16 10:25:59 +00:00
Antonin Godard
ed80e89d57 ref-manual/system-requirements.rst: update end-of-life distros
Fedora 41 was made obsolete on 2025-12-15 [1].

[1]: https://docs.fedoraproject.org/en-US/releases/eol/

(From yocto-docs rev: 244e1f73d6c402ecb7872337f9850ded87f0154c)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-03-16 10:25:59 +00:00
Yoann Congal
8334e82e1d poky.conf: add fedora-41, debian-12, rocky-8&9 to SANITY_TESTED_DISTROS
Those are already documented as supported:
https://git.yoctoproject.org/yocto-docs/tree/documentation/ref-manual/system-requirements.rst?h=kirkstone#n65

Actually support them in sanity check.

(From meta-yocto rev: 1d3874a383023a5e2433e0fcfd87ac5d1e6d341d)

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-28 10:22:50 +00:00
Paul Barker
3f5e203cbf build-appliance-image: Update to kirkstone head revision
(From OE-Core rev: 7b6c9faa301a6d058ca34e230586f6a81ffa3ffb)

Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 16:00:35 +00:00
Paul Barker
974e67818b poky.conf: Bump version for 4.0.34 release
(From meta-yocto rev: 30367a5e4c0bf2d5c1b335efd252036ee131a154)

Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:03 +00:00
Antonin Godard
79851c1eb5 what-i-wish-id-known.rst: replace figure by the new SVG
We have a new SVG figure for the Yocto Project workflow figure, which
was updated with d2aaf54bee49 ("overview-manual: convert
YP-flow-diagram.png to SVG"). The one in the "What I wish I’d known
about Yocto Project" is the same. Remove the PNG and make a reference to
the new one.

(From yocto-docs rev: 7c348dd67cfd169b1a56bf969606b03dccb76c56)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 4023c47cb6628971b0a142067c4a910420408bb9)
[Antonin Godard: fix conflicts]
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:03 +00:00
Michael Opdenacker
5479a272a7 ref-manual/classes.rst: fix broken links to U-Boot documentation
In the chapter describing the "uboot-sign" class

(From yocto-docs rev: 72024530cefd4265036f83ead61030862a13b245)

Signed-off-by: Michael Opdenacker <michael.opdenacker@rootcommit.com>
Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 7d1caa1d3229fb49d6d08ca4952b046c3164e628)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:03 +00:00
Yoann Congal
3588c550b1 ref-manual/system-requirements.rst: update untested distros
Some distros were removed from the autobuilder 5 months ago:
* 070e6bf (config.py: Drop ubuntu2004 workers, 2025-10-01)
* 8238327 (config.py: ubuntu24010 was replaced with ubuntu2504, 2025-10-01)

Update their status in the supported distros list.

(From yocto-docs rev: cca4e1c6127f06d63124c67a14a8921dbb3a5409)

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 2c9de0d74659fef6d7b0054dfd76905fba6ef81d)
[AG: fix cherry-pick conflicts]
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:03 +00:00
Scott Murray
3255405278 u-boot: move CVE patch out of u-boot-common.inc
Commit f5b980ad added CVE-2024-42040.patch to the base U-Boot
SRC_URI in u-boot-common.inc as opposed to adding it in the
u-boot recipe where all the other patch additions are. This
breaks at least one downstream BSP that reuses u-boot-common.inc
(meta-sifive), so move that patch addition to the recipe file
with all the others.

(From OE-Core rev: 5db1bffe13ec881b7fa4ebf4ed30493e8714d7f2)

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:03 +00:00
Hugo SIMELIERE
fd88d8cc35 libtasn1: Fix CVE-2025-13151
Upstream-Status: Backport from d276cc495a

(From OE-Core rev: 9ec3d69433e1c9d01fc0a140322e5e3cb1496483)

Signed-off-by: Bruno VERNAY <bruno.vernay@se.com>
Signed-off-by: Hugo SIMELIERE <hsimeliere.opensource@witekio.com>
[YC: pick the merged commit from the MR linked from the NVD report]
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:03 +00:00
Peter Marko
caac6c06bb glibc: stable 2.35 branch updates
git log --oneline 4e50046821f05ada5f14c76803845125ddb3ed7d..bb59339d02faebac534a87eea50c83c948f35b77
bb59339d02 (HEAD -> release/2.35/master, origin/release/2.35/master) posix: Reset wordexp_t fields with WRDE_REUSE (CVE-2025-15281 / BZ 33814)
66f0cb057c resolv: Fix NSS DNS backend for getnetbyaddr (CVE-2026-0915)
499d1ccafc memalign: reinstate alignment overflow check (CVE-2026-0861)
9e1a305028 nptl: Optimize trylock for high cache contention workloads (BZ #33704)
a94467ce05 ppc64le: Power 10 rawmemchr clobbers v20 (bug #33091)

Testing Results:
             Before     After   Diff
PASS         4774      4770     -4
XPASS        6         6         0
FAIL         149       154      +5
XFAIL        16        16        0
UNSUPPORTED  246       246       0

Changes in failed testcases:

testcase-name                                    before  after
malloc/tst-malloc-fork-deadlock-malloc-hugetlb2  FAIL    PASS
posix/tst-wait4                                  FAIL    PASS
malloc/tst-malloc-too-large                      PASS    FAIL
malloc/tst-malloc-too-large-malloc-check         PASS    FAIL
malloc/tst-malloc-too-large-malloc-hugetlb1      PASS    FAIL
malloc/tst-malloc-too-large-malloc-hugetlb2      PASS    FAIL
malloc/tst-malloc-too-large-mcheck               PASS    FAIL
malloc/tst-mallocfork2                           PASS    FAIL
malloc/tst-mallocfork3                           PASS    FAIL

(From OE-Core rev: 8102d2252d50a52fbf48810226bcff92a925a39e)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:03 +00:00
Peter Marko
822c6db93e harfbuzz: ignore CVE-2026-22693
Patch [1] linked in NVD report fixes issue in cache code introduced only
in v6.0.0 (as can be seen in tags containind that commit).

[1] 1265ff8d99
[2] 7a004a7ac2

(From OE-Core rev: 1d7c87fa2e499927cb6a26e4b2ad99e6127b6e33)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:03 +00:00
Yoann Congal
b5f43fb19e pseudo: Update to include a fix for systems with kernel <5.6
$ git log --oneline --no-decorate  9ab513512d8b5180a430ae4fa738cb531154cdef..43cbd8fb4914328094ccdb4bb827d74b1bac2046
43cbd8f ports/linux: define __NR_openat2 if missing

(From OE-Core rev: 61c7d9337d63fa6e022c047bc7c21004b038f697)

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e9a35f32b983de724d2c2e436c017b49d5b70469)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Richard Purdie
56e5f34c39 pseudo: Update to include an openat2 fix
We're seeing occasional autobuilder failures with tar issues related to openat2.
It appears there are definitions missing on debian 11 and opensuse 15.5 systems
which mean the openat2 syscall intercept isn't compiled in. This then triggers
on systems using the openat2 syscall, such as alma9 where it is used in a tar
CVE fix.

This updates to include the fix from upstream pseudo (along with a compile warning
fix).

This was tested by taking sstate for pseudo-native from a debian 11 system and using
it in a build of "bitbake nativesdk-git -c install" on a alma9 system where that task
failed. After this fix, it completes.

(From OE-Core rev: 2759db87db7529d60a5b2344dc1db7720e3518d6)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2c20c05b324e5d6564c8554381019170839509bb)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Richard Purdie
c129bb9b7e pseudo: Update to 1.9.3 release
Pulls in the following changes:

  Makefile.in: Bump version to 1.9.3
  configure: Minor code quality changes
  pseudo: code quality scan - resolved various potential issues
  makewrappers: improve error handling and robustness
  Update COPYRIGHT files
  ports/linux/pseudo_wrappers.c: Call the wrappers where possible
  ports/linux/pseudo_wrappers.c: Workaround compile error on Debian 11
  ports/linux/pseudo_wrappers.c: Reorder the syscall operations
  ports/unix/guts/realpath.c: Fix indents
  pseudo_util.c: Skip realpath like expansion for /proc on Linux
  test/test-proc-pipe.sh: Add test case for proc pipes
  ports/unix/guts/realpath.c: realpath fails if the resolved path doesn't exist

(From OE-Core rev: 322ce7900cf25f3a8d96a75360af56815e32ad7e)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 524f4bbb11f9c7e0126e8bd46af217b452d48f5e)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Ankur Tyagi
b600216fd2 avahi: patch CVE-2026-24401
Details https://nvd.nist.gov/vuln/detail/CVE-2026-24401

(From OE-Core rev: 6930162c44ae94824ff66b0a0fcb02a0a92c02e8)

Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.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>
(cherry picked from commit 183d0ee54f1c194e245a7bbf243c19b3c2acf4f5)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Amaury Couderc
e7763a1e0a avahi: patch CVE-2025-68471
(From OE-Core rev: 1786f154563c68739d7dc306b0e332d058ccd3f0)

Signed-off-by: Amaury Couderc <amaury.couderc@est.tech>
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>
(cherry picked from commit 5ec4156330c765bc52dbce28dbba6def9868d30f)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Amaury Couderc
8b83d6e2f9 avahi: patch CVE-2025-68468
(From OE-Core rev: 7bb3001ce034af29b3b09624cf692d8c0e3346f9)

Signed-off-by: Amaury Couderc <amaury.couderc@est.tech>
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>
(cherry picked from commit 9f2ed8adc37a42b561b3c4853cf8106fba39889e)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Ankur Tyagi
c63dd35b57 avahi: patch CVE-2025-68276
Backport the patch[1] from the PR[2] mentioned in the nvd[3].

[1] 2d48e42d44
[2] https://github.com/avahi/avahi/pull/806
[3] https://nvd.nist.gov/vuln/detail/CVE-2025-68276

Dropped CI changes from the original PR during backport.

(From OE-Core rev: a0768998acf23a7d00a5fdbc6fa5302eb144a850)

Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Peter Marko
e19fc15027 vim: ignore CVE-2025-66476
Details https://nvd.nist.gov/vuln/detail/CVE-2025-66476

(From OE-Core rev: a94b793da4e41bd5a31d6ce32860d01e00ca05b0)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Peter Marko
f61eb0f68d ffmpeg: set status of CVE-2025-25468 and CVE-2025-25469
These CVEs have the same fix commit per NVD report [3].
Blaming the fix [1] is showing that the return without freeing memory
was introduced in [2].

[1] d5873be583
[2] d38fc25519
[3] https://nvd.nist.gov/vuln/detail/CVE-2025-25468

(From OE-Core rev: 67d722ea17ef92e70bfcffbeaba52ddf55d5888a)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Peter Marko
2c14074be7 glib-2.0: patch CVE-2026-1489
Pick patch from [1] linked from [2].

[1] https://gitlab.gnome.org/GNOME/glib/-/issues/3872
[2] https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4984

(From OE-Core rev: ad9c57c36f6afa675468426da4ba1263eaeee2c5)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Peter Marko
ad4c2759f0 glib-2.0: patch CVE-2026-1485
Pick patch from [1] linked from [2].

[1] https://gitlab.gnome.org/GNOME/glib/-/issues/3871
[2] https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4981

(From OE-Core rev: 1996441fcebaa2e08eecceb3cf00d39fda8cff35)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Peter Marko
69d100e7f0 glib-2.0: patch CVE-2026-1484
Pick patches from [1] linked from [2].

[1] https://gitlab.gnome.org/GNOME/glib/-/issues/3870
[2] https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4979

(From OE-Core rev: 045f902fd570df65f6ed2534d8885cee26fb6ef1)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Peter Marko
3825d4306a glib-2.0: patch CVE-2026-0988
Pick relevant commit from [2] linked from [1].

[1] https://gitlab.gnome.org/GNOME/glib/-/issues/3851
[2] https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4944

(From OE-Core rev: bb6a6ab6d948ce5a8a86479c68af43f7f86b98a5)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Fabio Berton
b249264a0c classes/buildhistory: Do not sign buildhistory commits
This change adds the --no-gpg-sign option to prevent buildhistory
commits from failing due to GPG signing issues. Depending on the setup,
buildhistory may fail to create a commit if the user has the
commit.gpgsign option enabled.

For example, if the user creates a signing key that requires a password,
the commit won't be created and will fail with the following error:

/
|error: Enter passphrase: Load key "/home/<user>/.ssh/id_ed25519":
|incorrect passphrase supplied to decrypt private key?
|fatal: failed to write commit object
\

The bitbake command won't fail, but buildhistory won't have a commit.
Also, the commit may silently fail when building inside a container due
to missing packages or issues with accessing the GPG agent.

This is similar to [1], and signing the buildhistory commit
should be avoided to prevent such issues.

1 - https://git.openembedded.org/openembedded-core/commit/?id=7595a0a63a933af9dd9d1e458dc34a4ba80d9eae

(From OE-Core rev: 5294d15737e176ee96d9b590808ded2164386362)

Signed-off-by: Fabio Berton <fabio.berton@ctw.bmwgroup.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>
(cherry picked from commit a5e18714aee52db898aaf9d222fb5a4168bde96e)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Peter Marko
f210d0fc05 libpng: patch CVE-2026-25646
Backport patch mentioned in NVD CVE report.

(From OE-Core rev: 4d628c57c60dd53b71bb63d00225a7a6e2259442)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Peter Marko
67e8e2cc2f libpng: patch CVE-2026-22801
Pick comit per [1].

[1] https://github.com/pnggroup/libpng/security/advisories/GHSA-vgjq-8cw5-ggw8

(From OE-Core rev: e7e48abaee6e6e566ef4e5f075b89038bf284714)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Peter Marko
4597dd50ee libpng: patch CVE-2026-22695
Pick commit per [1].
This CVE is regression of fix for CVE-2025-65018.

[1] https://security-tracker.debian.org/tracker/CVE-2026-22695

(From OE-Core rev: 078627f4a208623bc236887682f8a1f0c88f2626)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Vijay Anusuri
a3d6476e85 bind: Upgrade 9.18.41 -> 9.18.44
This upgrade fixes CVE-2025-13878

Changelog
==========
https://downloads.isc.org/isc/bind9/9.18.44/doc/arm/html/notes.html

(From OE-Core rev: d8e70bd838c3b399a2b7a0a7672d8f57a0315e5a)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Bruce Ashfield
82329c1ced linux-yocto/5.15: update to v5.15.199
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    7b232985052fc Linux 5.15.199
    7e6040853f5b5 wifi: cfg80211: init wiphy_work before allocating rfkill fails
    c6d143fc945f7 wifi: cfg80211: fully move wiphy work to unbound workqueue
    8930a3e1568cf wifi: cfg80211: cancel wiphy_work before freeing wiphy
    d81ebee178731 wifi: cfg80211: fix wiphy delayed work queueing
    4737cc74b2fd8 wifi: cfg80211: use system_unbound_wq for wiphy work
    c8b15b0d2eec3 team: Move team device type change at the end of team_port_add
    9b32d72687cfb pinctrl: meson: mark the GPIO controller as sleeping
    2ccfb37ef544f mptcp: avoid dup SUB_CLOSED events after disconnect
    e69e435ec6e68 writeback: fix 100% CPU usage when dirtytime_expire_interval is 0
    52755c5680ce3 drm/imx/tve: fix probe device leak
    28f5cbcce5d9d pinctrl: lpass-lpi: implement .get_direction() for the GPIO driver
    46933b9bc76f4 net/sched: act_ife: convert comma to semicolon
    ffac9893ce8d0 btrfs: prevent use-after-free on page private data in btrfs_subpage_clear_uptodate()
    e11e8a29b304c drm/amdkfd: fix a memory leak in device_queue_manager_init()
    dc934d9667399 can: esd_usb: esd_usb_read_bulk_callback(): fix URB memory leak
    186df821de0f3 genirq/irq_sim: Initialize work context pointers properly
    00d52b2fa6083 HID: uclogic: Add NULL check in uclogic_input_configured()
    51f49e3927ad5 HID: uclogic: Correct devm device reference for hidinput input_dev name
    c3a2e803b24eb wifi: mac80211: move TDLS work to wiphy work
    9ac16e7b0b828 wifi: mac80211: use wiphy work for sdata->work
    ddb1bfbf4ab5c wifi: cfg80211: add a work abstraction with special semantics
    e1fa25a91091b Bluetooth: Fix hci_suspend_sync crash
    b15c9a21950e1 net: stmmac: make sure that ptp_rate is not 0 before configuring EST
    65d04291adf7c usbnet: Fix using smp_processor_id() in preemptible code warnings
    49b57b98fa601 NFSD: fix race between nfsd registration and exports_proc
    98fc9c2cc45cf ext4: fix memory leaks in ext4_fname_{setup_filename,prepare_lookup}
    05db2b850a2b8 espintcp: fix skb leaks
    0561aa6033dd1 blk-cgroup: Reinit blkg_iostat_set after clearing in blkcg_reset_stats()
    bdf38063fd15f fs/ntfs3: Initialize allocated memory before use
    446beed646b2e ksmbd: fix use-after-free in ksmbd_tree_connect_put under concurrency
    c4079a34c0ade drm/ttm: fix undefined behavior in bit shift for TTM_TT_FLAG_PRIV_POPULATED
    10644e8839544 ksm: use range-walk function to jump over holes in scan_get_next_rmap_item
    f87f4de092c7a mm/pagewalk: add walk_page_range_vma()
    f569f5b8bfd51 ksmbd: smbd: fix dma_unmap_sg() nents
    2c34622d9c724 mei: trace: treat reg parameter as string
    d5e80d1f97ae5 ALSA: scarlett2: Fix buffer overflow in config retrieval
    95ab26bc462d7 nvme: fix PCIe subsystem reset controller state transition
    886d98fa48580 nvme-pci: do not directly handle subsys reset fallout
    25c6804cbde4b nvme-fc: rename free_ctrl callback to match name pattern
    937309b52ca26 xfs: set max_agbno to allow sparse alloc of last full inode chunk
    6393da54dcb34 dmaengine: stm32: dmamux: fix device leak on route allocation
    7ff0a6402741e dmaengine: stm32: dmamux: fix OF node leak on route allocation failure
    060b08d72a38b w1: therm: Fix off-by-one buffer overflow in alarms_store
    fb6fcdc03fce4 w1: w1_therm: use swap() to make code cleaner
    7b94e4650020e arm64: dts: rockchip: remove redundant max-link-speed from nanopi-r4s
    427b0fb30ddec scsi: xen: scsiback: Fix potential memory leak in scsiback_remove()
    600894c7a2363 iio: adc: exynos_adc: fix OF populate on driver rebind
    f6b672daaca1c of: platform: Use default match table for /firmware
    16c806d04be13 comedi: Fix getting range information for subdevices 16 to 255
    2b1bef126bbb8 tls: Use __sk_dst_get() and dst_dev_rcu() in get_netdev_for_sock().
    10d1b3cf657d5 net: Add locking to protect skb->dev access in ip_output
    aade7df55e12e mptcp: only reset subflow errors when propagated
    461f1832a6d1c scsi: qla2xxx: edif: Fix dma_free_coherent() size
    f8cd47294b4bf scsi: be2iscsi: Fix a memory leak in beiscsi_boot_get_sinfo()
    df13548c0a94f ASoC: fsl: imx-card: Do not force slot width to sample width
    a4181b228db3b dma/pool: distinguish between missing and exhausted atomic pools
    1dd15630fc633 gpiolib: acpi: use BIT_ULL() for u64 mask in address space handler
    65ba13a5b3d05 scsi: firewire: sbp-target: Fix overflow in sbp_make_tpg()
    478873f7324f7 net: bridge: fix static key check
    eaa5da5130ded nfc: nci: Fix race between rfkill and nci_unregister_device().
    1d8ae83e1c61b net/mlx5e: Account for netdev stats in ndo_get_stats64
    138dbe22d8854 net/mlx5e: Report rx_discards_phy via rx_dropped
    ba253d322e536 net/mlx5e: Expose rx_oversize_pkts_buffer counter
    b3f0dab4f9682 net/mlx5: Add HW definitions of vport debug counters
    5b47b402f5833 ice: stop counting UDP csum mismatch as rx_errors
    65e976e1f474a nfc: llcp: Fix memleak in nfc_llcp_send_ui_frame().
    b11e6f926480a rocker: fix memory leak in rocker_world_port_post_fini()
    9fe793a779ce8 ipv6: use the right ifindex when replying to icmpv6 from localhost
    94ae00a809c07 net: mvpp2: cls: Fix memory leak in mvpp2_ethtool_cls_rule_ins()
    2b65e3ae33818 net/mlx5: Fix memory leak in esw_acl_ingress_lgcy_setup()
    ccc683f597ceb Bluetooth: hci_uart: fix null-ptr-deref in hci_uart_write_work
    feae34c992eb7 bpf: Reject narrower access to pointer ctx fields
    e0ffb64a2d72c bpf: Do not let BPF test infra emit invalid GSO types to stack
    ad97b9a55246e migrate: correct lock ordering for hugetlb file folios
    ef6e608e5ee71 can: usb_8dev: usb_8dev_read_bulk_callback(): fix URB memory leak
    b5a1ccdc63b71 can: mcba_usb: mcba_usb_read_bulk_callback(): fix URB memory leak
    40a3334ffda47 can: kvaser_usb: kvaser_usb_read_bulk_callback(): fix URB memory leak
    f48eabd15194b can: ems_usb: ems_usb_read_bulk_callback(): fix URB memory leak
    e2f9c751f73a2 irqchip/gic-v3-its: Avoid truncating memory addresses
    ede8ce83c2184 perf/x86/intel: Do not enable BTS for guests
    6e0110ea90313 netrom: fix double-free in nr_route_frame()
    8b57bf1d3b1db uacce: ensure safe queue release with state management
    ebfa85658a39b uacce: implement mremap in uacce_vm_ops to return -EPERM
    1bc3e51367c42 uacce: fix cdev handling in the cleanup path
    64015cbf06e8b intel_th: fix device leak on output open()
    948615429c9f2 slimbus: core: fix device reference leak on report present
    00cf6f7478c9f slimbus: core: fix runtime PM imbalance on report present
    6c77ce4da447a octeontx2: Fix otx2_dma_map_page() error return code
    361df59ad0130 arm64: Set __nocfi on swsusp_arch_resume()
    0d7c9e793e351 wifi: rsi: Fix memory corruption due to not set vif driver data size
    de34a80e0d6ec wifi: mwifiex: Fix a loop in mwifiex_update_ampdu_rxwinsize()
    fc8da65f9fe1b wifi: ath10k: fix dma_free_coherent() pointer
    c1c758ecd68bf mmc: rtsx_pci_sdmmc: implement sdmmc_card_busy function
    56fb6efd5d04c ALSA: usb-audio: Fix use-after-free in snd_usb_mixer_free()
    afca7ff5d5d4d ALSA: ctxfi: Fix potential OOB access in audio mixer handling
    029efb5adffb1 iio: dac: ad5686: add AD5695R to ad5686_chip_info_tbl
    fdc8c835c637a iio: adc: at91-sama5d2_adc: Fix potential use-after-free in sama5d2_adc driver
    92a2745aa0f66 iio: adc: ad9467: fix ad9434 vref mask
    fb396ee1bc53a of: fix reference count leak in of_alias_scan()
    d117fdcb21b05 leds: led-class: Only Add LED to leds_list when it is fully ready
    f775881f99fa7 x86: make page fault handling disable interrupts properly
    dd9442aedbeae net/sched: act_ife: avoid possible NULL deref
    669bd7a54e626 octeontx2-af: Fix error handling
    3be945abdd228 bonding: provide a net pointer to __skb_flow_dissect()
    92c6dc181a18e be2net: Fix NULL pointer dereference in be_cmd_get_mac_from_list
    9d02de4b2fd6d drm/amd/pm: Workaround SI powertune issue on Radeon 430 (v2)
    078c6eef1db5f drm/amd/pm: Don't clear SI SMC table when setting power limit
    b339601c238af usbnet: limit max_mtu based on device's hard_mtu
    4630897eb1a03 ipv6: annotate data-race in ndisc_router_discovery()
    13f3b3b870688 mISDN: annotate data-race around dev->work
    bd495244dec6e net: hns3: fix the HCLGE_FD_AD_NXT_KEY error setting issue
    7d203254f04ff net: hns3: fix wrong GENMASK() for HCLGE_FD_AD_COUNTER_NUM_M
    435c3bd709642 ALSA: usb: Increase volume range that triggers a warning
    766e243ae8c8b regmap: Fix race condition in hwspinlock irqsave routine
    e18ce45f5c809 iio: adc: ad7280a: handle spi_setup() errors in probe()
    bea5c8df16866 staging:iio:adc:ad7280a: Register define cleanup.
    7023a74cdb01d x86/kfence: avoid writing L1TF-vulnerable PTEs
    4daf82511496a scsi: storvsc: Process unsupported MODE_SENSE_10
    e85531cefe175 Input: i8042 - add quirk for ASUS Zenbook UX425QA_UM425QA
    d303e5d338672 Input: i8042 - add quirks for MECHREVO Wujie 15X Pro
    7b673faac4784 Revert "nfc/nci: Add the inconsistency check between the input data length and count"
    c49b1646cc50f w1: fix redundant counter decrement in w1_attach_slave_device()
    2081f7ba69c7b comedi: dmm32at: serialize use of paged registers
    fee86edf5803f crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec
    b8c24cf5268fb net/sched: qfq: Use cl_is_active to determine whether class is active in qfq_rm_from_ag
    ae810e6a8ac4f net/sched: Enforce that teql can only be used as root qdisc
    70feb16e3fbfb ipvlan: Make the addrs_lock be per port
    36c40a80109f1 l2tp: avoid one data-race in l2tp_tunnel_del_work()
    611ef4bd9c73d fou: Don't allow 0 for FOU_ATTR_IPPROTO.
    8568171dec862 net: fou: use policy and operation tables generated from the spec
    9e470606c4448 net: fou: rename the source for linking
    cef28f55a515b netlink: add a proto specification for FOU
    380a82d36e37d gue: Fix skb memleak with inner IP protocol 0.
    8f4e8887d43d4 amd-xgbe: avoid misleading per-packet error log
    784428ab1889e sctp: move SCTP_CMD_ASSOC_SHKEY right after SCTP_CMD_PEER_INIT
    72925dbb0c8c7 bonding: limit BOND_MODE_8023AD to Ethernet devices
    e85cf62f75505 net: usb: dm9601: remove broken SR9700 support
    bef3a83a9a67c testptp: Add option to open PHC in readonly mode
    6b32d042aa825 selftest/ptp: update ptp selftest to exercise the gettimex options
    8510559c0fa1e ptp: add testptp mask test
    3d4f2eda35897 selftests/ptp: Add -X option for testing PTP_SYS_OFFSET_PRECISE
    3d58f0709a292 selftests/ptp: Add -x option for testing PTP_SYS_OFFSET_EXTENDED
    3cc43c9b568a5 testptp: Add support for testing ptp_clock_info .adjphase callback
    f33c4d3f4b3f3 testptp: add option to shift clock by nanoseconds
    7d9aa9032d0a9 ptp: Add PHC file mode checks. Allow RO adjtime() without FMODE_WRITE.
    9c46bf50b676f posix-clock: Store file pointer in struct posix_clock_context
    62a5adf57b56e Fix memory leak in posix_clock_open()
    a006fc4485159 posix-clock: introduce posix_clock_context concept
    dc84036c173cf btrfs: fix deadlock in wait_current_trans() due to ignored transaction type
    41aac90212612 dmaengine: ti: k3-udma: fix device leak on udma lookup
    c933aa74d9f8d dmaengine: ti: dma-crossbar: fix device leak on am335x route allocation
    1d8478b31a3da dmaengine: ti: dma-crossbar: fix device leak on dra7x route allocation
    68ed0d88d1a70 dmaengine: sh: rz-dmac: Fix rz_dmac_terminate_all()
    4532f18e4ab36 dmaengine: qcom: gpi: Fix memory leak in gpi_peripheral_config()
    499ddae78c4ba dmaengine: lpc18xx-dmamux: fix device leak on route allocation
    b7bd948f89271 dmaengine: idxd: fix device leaks on compat bind and unbind
    4730f12a192d7 dmaengine: bcm-sba-raid: fix device leak on probe
    4c67b4f45c854 dmaengine: at_hdmac: fix device leak on of_dma_xlate()
    e8758f114a922 drm/vmwgfx: Fix an error return check in vmw_compat_shader_add()
    bb309377eece5 drm/panel-simple: fix connector type for DataImage SCF0700C48GGU18 panel
    c775abb6cd82a drm/nouveau/disp/nv50-: Set lock_core in curs507a_prepare
    eda99622e6f39 mm/page_alloc: make percpu_pagelist_high_fraction reads lock-free
    c85c550eff812 x86/resctrl: Fix memory bandwidth counter width for Hygon
    fa226f722e2fe x86/resctrl: Add missing resctrl initialization for Hygon
    d35365d8f8888 EDAC/i3200: Fix a resource leak in i3200_probe1()
    123a6bbe87cc1 EDAC/x38: Fix a resource leak in x38_probe1()
    6cf35964a8150 hrtimer: Fix softirq base check in update_needs_ipi()
    6241cd1d0acc2 ext4: fix iloc.bh leak in ext4_xattr_inode_update_ref
    e306c64bd2c56 nvme-pci: disable secondary temp for Wodposit WPBSNM8
    2e8ea7257c5fd USB: serial: ftdi_sio: add support for PICAXE AXE027 cable
    7e4c68838c605 USB: serial: option: add Telit LE910 MBIM composition
    23defd20f98f3 USB: OHCI/UHCI: Add soft dependencies on ehci_platform
    14739a3543c8d usb: dwc3: Check for USB4 IP_NAME
    742ff37b51270 phy: tegra: xusb: Explicitly configure HS_DISCON_LEVEL to 0x7
    e7e87af627449 phy: rockchip: inno-usb2: fix communication disruption in gadget mode
    53b1ed2f400ee phy: rockchip: inno-usb2: fix disconnection in gadget mode
    b6923f0ffb981 x86/kaslr: Recognize all ZONE_DEVICE users as physaddr consumers
    adabf01c19561 net: can: j1939: j1939_xtp_rx_rts_session_active(): deactivate session upon receiving the second rts
    aab3a76c03b7c ALSA: pcm: Improve the fix for race of buffer access at PCM OSS layer
    7d76380e98bfa HID: usbhid: paper over wrong bNumDescriptor field
    2b29f38f4f966 dmaengine: omap-dma: fix dma_pool resource leak in error paths
    23a52bffe415f phy: broadcom: ns-usb3: Fix Wvoid-pointer-to-enum-cast warning (again)
    fb9d513cdf161 phy: stm32-usphyc: Fix off by one in probe()
    d8f1e61238799 dmaengine: xilinx_dma: Fix uninitialized addr_width when "xlnx,addrwidth" property is missing
    76992310f8077 dmaengine: tegra-adma: Fix use-after-free
    b36b4c0dd281b mm, kfence: describe @slab parameter in __kfence_obj_info()
    ea46adfe5cc03 textsearch: describe @list member in ts_ops search
    209f350326c8d ASoC: tlv320adcx140: fix word length
    cff6cd703f41d net/sched: sch_qfq: do not free existing class in qfq_change_class()
    0badf6ffd2c39 selftests: drv-net: fix RPS mask handling for high CPU numbers
    bf1dfd389b6ae net/mlx5e: Restore destroying state bit after profile cleanup
    014ba8f2953c0 vsock/test: add a final full barrier after run all tests
    8d5b6b2d79c1c ipv4: ip_gre: make ipgre_header() robust
    484919832e2db macvlan: fix possible UAF in macvlan_forward_source()
    45126b1249757 net: update netdev_lock_{type,name}
    64c71d60a21a9 ip6_tunnel: use skb_vlan_inet_prepare() in __ip6_tnl_rcv()
    76abc83a9d255 nvme-tcp: fix NULL pointer dereferences in nvmet_tcp_build_pdu_iovec
    4fcde4590de2d nvmet-tcp: remove boilerplate code
    97250eb05e4b6 can: etas_es58x: allow partial RX URB allocation to succeed
    27c90d8ed81e7 pnfs/flexfiles: Fix memory leak in nfs4_ff_alloc_deviceid_node()

(From OE-Core rev: 79dfd0a547e1c56e11360c774489bae39ae0c3c1)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Bruce Ashfield
b232dd23d6 linux-yocto/5.15: update to v5.15.198
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    9eec9a14ee10 Linux 5.15.198
    72d750886b21 NFS: add barriers when testing for NFS_FSDATA_BLOCKED
    7981cff2bee1 NFS: unlink/rmdir shouldn't call d_delete() twice on ENOENT
    220a5ee395e0 efi/cper: Fix cper_bits_to_str buffer handling and return value
    b82594248af1 firmware: imx: scu-irq: Set mu_resource_id before get handle
    bbd35608330d scsi: sg: Fix occasional bogus elapsed time that exceeds timeout
    5517e2497d11 ASoC: fsl_sai: Add missing registers to cache default
    c3a4316e3c74 can: j1939: make j1939_session_activate() fail if device is no longer registered
    c618c4ccb79b powercap: fix sscanf() error return value handling
    7b78832aa94f powercap: fix race condition in register_control_type()
    047ea38d41d9 blk-throttle: Set BIO_THROTTLED when bio has been throttled
    7f7080c51410 pinctrl: qcom: lpass-lpi: mark the GPIO controller as sleeping
    3dc4b3bb4e0a pinctrl: qcom: lpass-lpi: Remove duplicate assignment of of_gpio_n_cells
    ef668c9a2261 counter: interrupt-cnt: Drop IRQF_NO_THREAD flag
    e8bfa2401d4c nfsd: provide locking for v4_end_grace
    061158d27c46 NFSD: Remove NFSERR_EAGAIN
    530476199947 nfs_common: factor out nfs_errtbl and nfs_stat_to_errno
    eb204a6d8bad NFS: trace: show TIMEDOUT instead of 0x6e
    393525dee5c3 arp: do not assume dev_hard_header() does not change skb->head
    2caa31d02c73 net: enetc: fix build warning when PAGE_SIZE is greater than 128K
    a40af9a2904a net: usb: pegasus: fix memory leak in update_eth_regs_async()
    0809c4bc06c9 net/sched: sch_qfq: Fix NULL deref when deactivating inactive aggregate in qfq_reset
    303987beb595 HID: quirks: work around VID/PID conflict for appledisplay
    b4bfc8d26b96 bnxt_en: Fix potential data corruption with HW GRO/LRO
    4248fb36df8d eth: bnxt: move and rename reset helpers
    0e9a7c61978e net/mlx5e: Don't print error message due to invalid module
    ac1fd8362346 netdev: preserve NETIF_F_ALL_FOR_ALL across TSO updates
    c655d2167bf0 net: sock: fix hardened usercopy panic in sock_recv_errqueue
    bee569f5fcf7 inet: ping: Fix icmp out counting
    8767f238b0e6 net: mscc: ocelot: Fix crash when adding interface under a lag
    bf1ffe5e95bd bridge: fix C-VLAN preservation in 802.1ad vlan_tunnel egress
    8a4333b2818f net: marvell: prestera: fix NULL dereference on devlink_alloc() failure
    c4cde57c8aff netfilter: nf_conncount: update last_gc only when GC has been performed
    92d17b97479c netfilter: nf_tables: fix memory leak in nf_tables_newrule()
    d65b19f34c2a netfilter: nft_synproxy: avoid possible data-race on update operation
    ddd097698d8b ARM: dts: imx6q-ba16: fix RTC interrupt level
    e91cffed1c58 arm64: dts: add off-on-delay-us for usdhc2 regulator
    274dfe3b1801 scsi: Revert "scsi: libsas: Fix exp-attached device scan after probe failure scanned in again after probe failed"
    ebabaddab72c scsi: ipr: Enable/disable IRQD_NO_BALANCING during reset
    5ef4392495a8 NFS: Fix up the automount fs_context to use the correct cred
    f269abad66bd NFSv4: ensure the open stateid seqid doesn't go backwards
    d4d09d18059a alpha: don't reference obsolete termio struct for TC* constants
    8c97b0183923 ARM: 9461/1: Disable HIGHPTE on PREEMPT_RT kernels
    df9967c3b757 csky: fix csky_cmpxchg_fixup not working
    b374e9ecc92a ext4: fix out-of-bound read in ext4_xattr_inode_dec_ref_all()
    6c94fd068ba2 ext4: introduce ITAIL helper
    5d0dc83cb9a6 libceph: make calc_target() set t->paused, not just clear it
    77229551f2cf libceph: return the handler error from mon_handle_auth_done()
    851241d3f78a libceph: make free_choose_arg_map() resilient to partial allocation
    4b106fbb1c7b libceph: replace overzealous BUG_ON in osdmap_apply_incremental()
    194cfe2af4d2 libceph: prevent potential out-of-bounds reads in handle_auth_done()
    a3827e310b5a wifi: avoid kernel-infoleak from struct iw_point
    6a0cceb1a8b9 drm/pl111: Fix error handling in pl111_amba_probe
    250e1f9f911d lib/crypto: aes: Fix missing MMU protection for AES S-box
    e57137354d85 mei: me: add nova lake point S DID
    6cff14b831db net: 3com: 3c59x: fix possible null dereference in vortex_probe1()
    02b79361cf97 atm: Fix dma_free_coherent() size
    7f696f15c18b usb: gadget: lpc32xx_udc: fix clock imbalance in error path
    c3ba0557ab2e net: ethtool: fix the error condition in ethtool_get_phy_stats_ethtool()
    f3cc921c237c Revert "iommu/amd: Skip enabling command/event buffers for kdump"
    0b956f79b2f8 firmware: arm_scmi: Fix unused notifier-block in unregister
    3079bf04d35f ext4: fix error message when rejecting the default hash
    bfac7e3ff587 ext4: factor out ext4_hash_info_init()
    86b81d4eab1c ext4: filesystems without casefold feature cannot be mounted with siphash
    e1b826e10ff9 pwm: stm32: Always program polarity
    69e4c711d3f5 x86: remove __range_not_ok()
    dd6d10e00cf4 selftests: net: test_vxlan_under_vrf: fix HV connectivity test
    20d3eb00ab81 ipv4: Fix uninit-value access in __ip_make_skb()
    40e5444a3ac3 ipv6: Fix potential uninit-value access in __ip6_make_skb()
    ef2fe0c6353b KVM: arm64: sys_regs: disable -Wuninitialized-const-pointer warning
    eeeaba737919 HID: core: Harden s32ton() against conversion to 0 bits
    5f35099fa3d5 KVM: x86: Acquire kvm->srcu when handling KVM_SET_VCPU_EVENTS
    d69f28ef7cda page_pool: Fix use-after-free in page_pool_recycle_in_ring
    aec6a1be0be1 drm/i915/selftests: fix subtraction overflow bug
    0f55ac683b27 mmc: core: use sysfs_emit() instead of sprintf()
    f51e471cb157 net: Remove RTNL dance for SIOCBRADDIF and SIOCBRDELIF.
    32ffca069d20 drm/gma500: Remove unused helper psb_fbdev_fb_setcolreg()
    0a59a3895f80 wifi: mac80211: Discard Beacon frames to non-broadcast address
    7daa50a2157e ASoC: stm32: sai: fix OF node leak on probe
    ecd91855dd4f lockd: fix vfs_test_lock() calls
    86d91420bbe3 powerpc/pseries/cmm: adjust BALLOON_MIGRATE when migrating pages
    325fd00621d5 mm/balloon_compaction: convert balloon_page_delete() to balloon_page_finalize()
    ed920d0feafb mm/balloon_compaction: we cannot have isolated pages in the balloon list
    f16e78225eda mm/balloon_compaction: make balloon page compaction callbacks static
    1e3a5fec4917 ASoC: stm32: sai: fix clk prepare imbalance on probe failure
    a93887d284a6 ASoC: stm32: sai: Use the devm_clk_get_optional() helper
    39e5b2de0207 ASoC: stm: Use dev_err_probe() helper
    6009167915d5 r8169: fix RTL8117 Wake-on-Lan in DASH mode
    4c0278938c36 iommu/qcom: fix device leak on of_xlate()
    2e9a95d60f1d powerpc/64s/slb: Fix SLB multihit issue during SLB preload
    374f9984edc8 PCI: brcmstb: Fix disabling L0s capability
    bf03a56d6af9 powerpc/pseries/cmm: call balloon_devinfo_init() also without CONFIG_BALLOON_COMPACTION
    4141049144b3 media: renesas: rcar_drif: fix device node reference leak in rcar_drif_bond_enabled
    3ccce30e5919 media: samsung: exynos4-is: fix potential ABBA deadlock on init
    75f91534f9ac NFSD: NFSv4 file creation neglects setting ACL
    2e6f384b4e6c media: verisilicon: Protect G2 HEVC decoder against invalid DPB index
    b425cd5bc54e media: vpif_capture: fix section mismatch
    61d19d81485d media: mediatek: vcodec: Fix a reference leak in mtk_vcodec_fw_vpu_init()
    4dedb6a11243 SUNRPC: svcauth_gss: avoid NULL deref on zero length gss_token in gss_read_proxy_verf
    610ef5893628 KVM: SVM: Mark VMCB_NPT as dirty on nested VMRUN
    543bf004e4ea crypto: af_alg - zero initialize memory allocated via sock_kmalloc
    a22316f5e9a2 svcrdma: bound check rq_pages index in inline path
    c80b58581fad ARM: dts: microchip: sama7g5: fix uart fifo size to 32
    cbbf3f1bb9f8 fuse: fix readahead reclaim deadlock
    a6c208695220 usb: ohci-nxp: fix device leak on probe failure
    0928573aeccb usb: ohci-nxp: Use helper function devm_clk_get_enabled()
    50ee04e0ae62 mptcp: pm: ignore unknown endpoint flags
    2cf9e72ec9a4 usb: dwc3: keep susphy enabled during exit to avoid controller faults
    72c58a82e6fb f2fs: fix to avoid updating zero-sized extent in extent cache
    671910d2e5b8 f2fs: fix to propagate error from f2fs_enable_checkpoint()
    474cc3ed3743 f2fs: use global inline_xattr_slab instead of per-sb slab cache
    f30ea4a9e793 f2fs: fix to detect recoverable inode during dryrun of find_fsync_dnodes()
    0e8bddb3e081 xfs: fix a memory leak in xfs_buf_item_init()
    06cad7ba5c7b KVM: nVMX: Immediately refresh APICv controls as needed on nested VM-Exit
    fa2dd45ce8ae NFSD: Clear SECLABEL in the suppattr_exclcreat bitmap
    d2f5d8cf1ead ALSA: wavefront: Fix integer overflow in sample size validation
    73d7bfacc5ca ALSA: wavefront: Use standard print API
    151c632b9162 ALSA: wavefront: Clear substream pointers on close
    214a854d0d99 wifi: mt76: Fix DTS power-limits on little endian systems
    8a589c56b0d6 btrfs: don't rewrite ret from inode_permission
    275c686f1e3c tpm: Cap the number of PCR banks
    ed7441ffe3fd jbd2: fix the inconsistency between checksum and data in memory for journal sb
    ee199d259349 xhci: dbgtty: fix device unregister
    4b4315ab4a14 xhci: dbgtty: use IDR to support several dbc instances.
    eee16f3ff08e usb: gadget: udc: fix use-after-free in usb_gadget_state_work
    8b586de6f03c usb: xhci: Apply the link chain quirk on NEC isoc endpoints
    d16a2857ad17 usb: xhci: move link chain bit quirk checks into one helper function.
    86aae7053d2d drm/vmwgfx: Fix a null-ptr access in the cursor snooper
    cfb82ea9cccc virtio_console: fix order of fields cols and rows
    6161d0d62351 kbuild: Use CRC32 and a 1MiB dictionary for XZ compressed modules
    94b45fddc261 mm/damon/tests/core-kunit: handle memory alloc failure from damon_test_aggregate()
    554b17dc14d0 mm/damon/tests/core-kunit: handle alloc failures on damon_test_split_regions_of()
    77ec39ad0ceb mm/damon/tests/core-kunit: handle memory failure from damon_test_target()
    233409d46dc5 mm/damon/tests/core-kunit: handle alloc failures on damon_test_merge_two()
    3f7668f4ffd5 mm/damon/tests/core-kunit: handle alloc failures on dasmon_test_merge_regions_of()
    db10496b2797 mm/damon/tests/core-kunit: handle alloc failures on damon_test_split_at()
    df458acf79c6 mm/damon/tests/core-kunit: handle allocation failures in damon_test_regions()
    c6895612b1e4 mm/damon/tests/vaddr-kunit: handle alloc failures on damon_test_split_evenly_succ()
    5629064f92f0 RDMA/core: Fix "KASAN: slab-use-after-free Read in ib_register_device" problem
    483b541b7ee3 mm/damon/tests/vaddr-kunit: handle alloc failures on damon_do_test_apply_three_regions()
    5ff02cf6c74d mm/damon/tests/vaddr-kunit: handle alloc failures in damon_test_split_evenly_fail()
    87caa0d35aab drm/nouveau/dispnv50: Don't call drm_atomic_get_crtc_state() in prepare_fb
    47a85604a761 drm/ttm: Avoid NULL pointer deref for evicted BOs
    d376aea5f101 drm/msm/a6xx: Fix out of bound IO access in a6xx_get_gmu_registers
    e02a1c33f10a net: nfc: fix deadlock between nfc_unregister_device and rfkill_fop_write
    66d3d821a27f net: usb: sr9700: fix incorrect command used to write single register
    02a02eb93cec nfsd: Drop the client reference in client_states_open()
    96e9b4b4eebe fjes: Add missing iounmap in fjes_hw_init()
    278b7cfe0d4d e1000: fix OOB in e1000_tbi_should_accept()
    abf38398724e RDMA/cm: Fix leaking the multicast GID table reference
    bfe10318fc23 RDMA/core: Check for the presence of LS_NLA_TYPE_DGID correctly
    adca36b7312f idr: fix idr_alloc() returning an ID out of range
    ec9fd10b4803 media: i2c: adv7842: Remove redundant cancel_delayed_work in probe
    d80c606877e3 media: i2c: ADV7604: Remove redundant cancel_delayed_work in probe
    3de6afefd37e media: TDA1997x: Remove redundant cancel_delayed_work in probe
    faf38cced019 media: msp3400: Avoid possible out-of-bounds array accesses in msp3400c_thread()
    718fd69207b6 media: cec: Fix debugfs leak on bus_register() failure
    c3548c44c3c2 fbdev: tcx.c fix mem_map to correct smem_start offset
    37fa1e7e4884 fbdev: pxafb: Fix multiple clamped values in pxafb_adjust_timing
    51fd9c20a530 fbdev: gbefb: fix to use physical address instead of dma address
    c9d6fc7d60c6 dm-ebs: Mark full buffer dirty even on partial write
    f913b9a2ccd6 media: adv7842: Avoid possible out-of-bounds array accesses in adv7842_cp_log_status()
    6a483e56c1ad parisc: entry: set W bit for !compat tasks in syscall_restore_rfi()
    0a476ed7bc87 parisc: entry.S: fix space adjustment on interruption for 64-bit userspace
    76bbb99a030f media: rc: st_rc: Fix reset control resource leak
    f69506115f61 mfd: max77620: Fix potential IRQ chip conflict when probing two devices
    ef97d93d0775 mfd: altera-sysmgr: Fix device leak on sysmgr regmap lookup
    a357f04e6c47 leds: leds-lp50xx: LP5009 supports 3 modules for a total of 9 LEDs
    e24cad510abc leds: leds-lp50xx: Allow LED 0 to be added to module bank
    c9f0eac5745d PCI/PM: Reinstate clearing state_saved in legacy and !PM codepaths
    f0ae659c9652 HID: logitech-dj: Remove duplicate error logging
    3f50e9dbfe9d iommu/tegra: fix device leak on probe_device()
    157b01742a68 iommu/sun50i: fix device leak on of_xlate()
    fa4e003b8fcf iommu/omap: fix device leaks on probe_device()
    6705d63820c6 iommu/mediatek: fix device leak on of_xlate()
    e6b0e3882ab0 iommu/mediatek-v1: fix device leak on probe_device()
    cadf7c83302f iommu/ipmmu-vmsa: fix device leak on of_xlate()
    f62661f577b3 iommu/exynos: fix device leak on of_xlate()
    ac0c50cc85ed iommu/apple-dart: fix device leak on of_xlate()
    fdb64bba6a46 ASoC: qcom: qdsp6: q6asm-dai: set 10 ms period and buffer alignment.
    d543ddcecc93 ASoC: qcom: q6adm: the the copp device only during last instance
    47587d958185 ASoC: qcom: q6asm-dai: perform correct state check before closing
    938117827bca ASoC: stm32: sai: fix device leak on probe
    d739270d09e0 selftests/ftrace: traceonoff_triggers: strip off names
    1f29db2cfb01 RDMA/bnxt_re: fix dma_free_coherent() pointer
    2d34cffaf8c9 RDMA/rtrs: Fix clt_path::max_pages_per_mr calculation
    19682d51e1b6 RDMA/bnxt_re: Fix to use correct page size for PDE table
    b299f01e464d RDMA/bnxt_re: Fix IB_SEND_IP_CSUM handling in post_send
    8165f064641c RDMA/bnxt_re: Fix incorrect BAR check in bnxt_qplib_map_creq_db()
    af9a938b087d RDMA/core: Fix logic error in ib_get_gids_from_rdma_hdr()
    c8002b3a098a RDMA/efa: Remove possible negative shift
    db93ae6fa66f RDMA/irdma: avoid invalid read in irdma_net_event
    ed2639414d43 net: rose: fix invalid array index in rose_kill_by_device()
    33ff5c207c87 ipv4: Fix reference count leak when using error routes with nexthop objects
    6b7522424529 ipv6: BUG() in pskb_expand_head() as part of calipso_skbuff_setattr()
    4cc4cfe4d23c octeontx2-pf: fix "UBSAN: shift-out-of-bounds error"
    6b3a6cb3493f net: bridge: Describe @tunnel_hash member in net_bridge_vlan_group struct
    fc96018f09f8 net: usb: asix: validate PHY address before use
    b3c214ac512e net: dsa: b53: skip multicast entries for fdb_dump()
    d55b060b6c56 firewire: nosy: Fix dma_free_coherent() size
    1fc0c943e445 genalloc.h: fix htmldocs warning
    1c4cb705e733 smc91x: fix broken irq-context in PREEMPT_RT
    2f966186b995 net: usb: rtl8150: fix memory leak on usb_submit_urb() failure
    f820e438b8ec team: fix check for port enabled in team_queue_override_port_prio_changed()
    6f935c0f549f platform/x86: ibm_rtl: fix EBDA signature search pointer arithmetic
    1c423f0fcb08 platform/x86: msi-laptop: add missing sysfs_remove_group()
    41a1a3140aff ip6_gre: make ip6gre_header() robust
    052e5db5be45 net: openvswitch: Avoid needlessly taking the RTNL on vport destroy
    214802e4caaa net: mdio: aspeed: add dummy read to avoid read-after-write issue
    6ff75a5132df net: mdio: aspeed: move reg accessing part into separate functions
    fff9206b0907 Bluetooth: btusb: revert use of devm_kzalloc in btusb
    baf0e2d1e03d crypto: seqiv - Do not use req->iv after crypto_aead_encrypt
    5bb18bfd505c iavf: fix off-by-one issues in iavf_config_rss_reg()
    cfddf4af22a3 i40e: validate ring_len parameter against hardware-specific values
    0daf39ee1e4e i40e: Refactor argument of i40e_detect_recover_hung()
    3fec9e1bad69 i40e: Refactor argument of several client notification functions
    4f28b415a483 i40e: fix scheduling in set_rx_mode
    f7455c5f9218 hwmon: (w83l786ng) Convert macros to functions to avoid TOCTOU
    bf5b03227f2e hwmon: (w83791d) Convert macros to functions to avoid TOCTOU
    5082cdce4344 hwmon: (max16065) Use local variable to avoid TOCTOU
    ac45b270ea28 i2c: amd-mp2: fix reference leak in MP2 PCI device
    24fd02c3a479 rpmsg: glink: fix rpmsg device leak
    dd86de8f8573 soc: amlogic: canvas: fix device leak on lookup
    5527dde9ff12 soc: qcom: ocmem: fix device leak on lookup
    53693b3268c2 amba: tegra-ahb: Fix device leak on SMMU enable
    5ba8ba12920c drm/amd/display: Use GFP_ATOMIC in dc_create_plane_state()
    2420ef01b2e8 io_uring: fix filename leak in __io_openat_prep()
    685889472f29 svcrdma: return 0 on success from svc_rdma_copy_inline_range
    8564deae5375 nfsd: Mark variable __maybe_unused to avoid W=1 build break
    859bdf438f01 fsnotify: do not generate ACCESS/MODIFY events on child for special files
    323e203a944b PM: runtime: Do not clear needs_force_resume with enabled runtime PM
    6d15f08e6d8d tracing: Do not register unsupported perf events
    fd4c14c7b772 KVM: nSVM: Clear exit_code_hi in VMCB when synthesizing nested VM-Exits
    d8c44d566187 KVM: nSVM: Set exit_code_hi to -1 when synthesizing SVM_EXIT_ERR (failed VMRUN)
    30c71d9b4d76 KVM: nSVM: Propagate SVM_EXIT_CR0_SEL_WRITE correctly for LMSW emulation
    d2da0df7bbc4 KVM: x86: Fix VM hard lockup after prolonged inactivity with periodic HV timer
    6ae727f72be0 KVM: x86: Explicitly set new periodic hrtimer expiration in apic_timer_fn()
    fa0c3fbc4bb5 KVM: x86: WARN if hrtimer callback for periodic APIC timer fires with period=0
    145d140abda8 libceph: make decode_pool() more resilient against corrupted osdmaps
    7a146f34e5be parisc: Do not reprogram affinitiy on ASP chip
    cfdf6250b63b scs: fix a wrong parameter in __scs_magic
    e1da6e399df9 platform/chrome: cros_ec_ishtp: Fix UAF after unbinding driver
    d0fd1f732ea8 ocfs2: fix kernel BUG in ocfs2_find_victim_chain
    12ab6ebb3778 media: vidtv: initialize local pointers upon transfer of memory ownership
    04e5abccf5a3 tools/testing/nvdimm: Use per-DIMM device handle
    0de4977a1eea f2fs: fix return value of f2fs_recover_fsync_data()
    3d95ed8cf980 f2fs: invalidate dentry cache on failed whiteout creation
    45fd86b44410 scsi: target: Reset t_task_cdb pointer in error case
    fc3ab9b2cce5 NFSD: use correct reservation type in nfsd4_scsi_fence_client
    278455a82245 scsi: aic94xx: fix use-after-free in device removal path
    50b097d92c99 scsi: Revert "scsi: qla2xxx: Perform lockless command completion in abort path"
    47e7c7496f5a cpufreq: nforce2: fix reference count leak in nforce2
    4f3e0af0d9a8 intel_th: Fix error handling in intel_th_output_open
    d1b045228002 char: applicom: fix NULL pointer dereference in ac_ioctl
    677f382acab1 usb: renesas_usbhs: Fix a resource leak in usbhs_pipe_malloc()
    439c8d0425bb usb: dwc3: of-simple: fix clock resource leak in dwc3_of_simple_probe
    43e58abad6c0 usb: phy: isp1301: fix non-OF device reference imbalance
    0c2b0e747010 USB: lpc32xx_udc: Fix error handling in probe
    76b52ed875d5 phy: broadcom: bcm63xx-usbh: fix section mismatches
    424dd7ef4109 media: pvrusb2: Fix incorrect variable used in trace message
    c2305b4c5fc1 media: dvb-usb: dtv5100: fix out-of-bounds in dtv5100_i2c_msg()
    d14c800ec300 usb: usb-storage: Maintain minimal modifications to the bcdDevice range.
    0ea5763a6ced media: v4l2-mem2mem: Fix outdated documentation
    048f29c90275 jbd2: use a weaker annotation in journal handling
    a973d037229b ext4: align max orphan file size with e2fsprogs limit
    2930d9cb9cd3 ext4: fix incorrect group number assertion in mb_check_buddy
    331d6f52201b ext4: clear i_state_flags when alloc inode
    3d8d22e75f7e ext4: xattr: fix null pointer deref in ext4_raw_inode()
    ea4e2ad6f612 ktest.pl: Fix uninitialized var in config-bisect.pl
    1c0e2617b51c fs/ntfs3: fix mount failure for sparse runs in run_unpack()
    7f24094db7af floppy: fix for PAGE_SIZE != 4KB
    2f945c9892b0 block: rate-limit capacity change info log
    3c35608d6577 lib/crypto: x86/blake2s: Fix 32-bit arg treated as 64-bit
    d685237855bf mmc: sdhci-msm: Avoid early clock doubling during HS400 transition
    3fd7df4636d8 KEYS: trusted: Fix a memory leak in tpm2_load_cmd
    8a69b95bc8c4 vhost/vsock: improve RCU read sections around vhost_vsock_get()
    94476ed97e38 platform/x86/intel/hid: Add Dell Pro Rugged 10/12 tablet to VGBS DMI quirks
    4099d8f057f2 nvme-fc: don't hold rport lock when putting ctrl
    8cb8a84f7af3 serial: sprd: Return -EPROBE_DEFER when uart clock is not ready
    db963adebdf5 usb: usb-storage: No additional quirks need to be added to the EL-R12 optical drive.
    6ddc1cf758b2 usb: xhci: limit run_graceperiod for only usb 3.0 devices
    58941bbb0050 usb: typec: ucsi: Handle incorrect num_connectors capability
    f3f0303b5330 usbip: Fix locking bug in RT-enabled kernels
    c4034574f87a exfat: fix remount failure in different process environments
    c7b986adc9e9 via_wdt: fix critical boot hang due to unnamed resource allocation
    36fe06f5a292 scsi: qla2xxx: Use reinit_completion on mbx_intr_comp
    8416236b992f scsi: qla2xxx: Fix initiator mode with qlini_mode=exclusive
    80e898a3c614 scsi: qla2xxx: Fix lost interrupts with qlini_mode=disabled
    46778b34e021 powerpc/addnote: Fix overflow on 32-bit builds
    c49300043e7b clk: mvebu: cp110 add CLK_IGNORE_UNUSED to pcie_x10, pcie_x11 & pcie_x4
    a5622f46f4fc ti-sysc: allow OMAP2 and OMAP4 timers to be reserved on AM33xx
    92f285834099 firmware: imx: scu-irq: Init workqueue before request mbox channel
    22292508e1c9 ipmi: Fix __scan_channels() failing to rescan channels
    5c7d972756d4 ipmi: Fix the race between __scan_channels() and deliver_response()
    2168866396bd ALSA: usb-mixer: us16x08: validate meter packet indices
    19b626d36aed ALSA: pcmcia: Fix resource leak in snd_pdacf_probe error path
    9f490d2f5dc9 ALSA: vxpocket: Fix resource leak in vxpocket_probe error path
    c851e43b88b4 net/hsr: fix NULL pointer dereference in prp_get_untagged_frame()
    2b4aa7f24820 mmc: sdhci-esdhc-imx: add alternate ARCH_S32 dependency to Kconfig
    9c34a4a2ead0 spi: fsl-cpm: Check length parity before switching to 16 bit mode
    b5e70e7fa904 ACPI: CPPC: Fix missing PCC check for guaranteed_perf
    d16cc7a2b3ed Input: i8042 - add TUXEDO InfinityBook Max Gen10 AMD to i8042 quirk table
    136abe173a3c Input: ti_am335x_tsc - fix off-by-one error in wire_order validation
    ac6b3033d1e5 HID: input: map HID_GD_Z to ABS_DISTANCE for stylus/pen
    42c91dfa772c net: hns3: add VLAN id validation before using
    c9bbeca124e9 net: hns3: using the num_tqps to check whether tqp_index is out of range when vf get ring info from mbx
    de631a0f9872 net: hns3: Align type of some variables with their print type
    bcefdb288eed net: hns3: using the num_tqps in the vf driver to apply for resources
    42406760b28c net/mlx5: fw_tracer, Handle escaped percent properly
    768d559f466c net/mlx5: fw_tracer, Validate format string parameters
    a59e9812aca1 net/mlx5: fw_tracer, Add support for unrecognized string
    f9dc0f45d2cd ethtool: Avoid overflowing userspace buffer on stats query
    72d1c4a07780 net/ethtool/ioctl: split ethtool_get_phy_stats into multiple helpers
    c8666be7c338 net/ethtool/ioctl: remove if n_stats checks from ethtool_get_phy_stats
    78f0d7353bdf ethtool: use phydev variable
    7bf3910b82f6 nfc: pn533: Fix error code in pn533_acr122_poweron_rdr()
    02783a37cb1c net/sched: ets: Remove drr class from the active list if it changes to strict
    c54091eec6fe caif: fix integer underflow in cffrml_receive()
    312d7cd88882 ipvs: fix ipv4 null-ptr-deref in route error path
    e1ac8dce3a89 netfilter: nf_conncount: fix leaked ct in error paths
    a94493dd78b4 broadcom: b44: prevent uninitialized value usage
    3bc2efff20a3 net: openvswitch: fix middle attribute validation in push_nsh() action
    6e367c361a52 mlxsw: spectrum_mr: Fix use-after-free when updating multicast route stats
    9e0a0d9eeb0d mlxsw: spectrum_router: Fix neighbour use-after-free
    194cd36ec05d ipvlan: Ignore PACKET_LOOPBACK in handle_mode_l2()
    c7f6e7cc14df net/sched: ets: Always remove class from active list before deleting in ets_qdisc_change
    09efbf54eeae netrom: Fix memory leak in nr_sendmsg()
    e0f859d5035a Bluetooth: btusb: Add new VID/PID 13d3/3533 for RTL8821CE
    ca91db4f8979 btrfs: scrub: always update btrfs_scrub_progress::last_physical
    eb6a4e7e3d04 hfsplus: fix volume corruption issue for generic/073
    d92333c7a358 hfsplus: Verify inode mode when loading from disk
    39e149d58ef4 hfsplus: fix missing hfs_bnode_get() in __hfs_bnode_create
    1432a4819917 hfsplus: fix volume corruption issue for generic/070
    f6ca2faa3f3e fs/ntfs3: Support timestamps prior to epoch
    3d4e15ef5ccb livepatch: Match old_sympos 0 and 1 in klp_find_func()
    a0f5ffc01af5 cpufreq: s5pv210: fix refcount leak
    08ba2b9983ad ACPI: property: Use ACPI functions in acpi_graph_get_next_endpoint() only
    ecb296286c87 ACPICA: Avoid walking the Namespace if start_node is NULL
    0144d18dd96d x86/ptrace: Always inline trivial accessors
    9019e399684e sched/deadline: only set free_cpus for online runqueues
    fe293b7b0759 btrfs: fix memory leak of fs_devices in degraded seed device path
    b3f937e8912d bpf, arm64: Do not audit capability check in do_jit()
    2ed5e0ca5d9a spi: tegra210-quad: Fix X1_X2_X4 encoding and support x4 transfers
    36cb73c557d1 spi: tegra210-quad: Fix validate combined sequence
    fcf4ad3208e9 coresight: etm4x: Correct polling IDLE bit
    754512b096b9 netfilter: nf_conncount: garbage collection is not skipped when jiffies wrap around
    460fd9a9e820 NFS: Fix missing unlock in nfs_unlink()
    434b84ecb8ff ASoC: fsl_xcvr: get channel status data when PHY is not exists
    3cf854cec0eb ALSA: dice: fix buffer overflow in detect_stream_formats()
    ce205e480799 usb: phy: Initialize struct usb_phy list_head
    b3c4465f2519 usb: gadget: tegra-xudc: Always reinitialize data toggle when clear halt
    8877bbb620a9 ocfs2: fix memory leak in ocfs2_merge_rec_left()
    c5a352071f83 efi/cper: align ARM CPER type with UEFI 2.9A/2.10 specs
    ec7b34401123 efi/cper: Adjust infopfx size to accept an extra space
    095ebf8277b5 efi/cper: Add a new helper function to print bitmasks
    de9f85fdf7eb dm log-writes: Add missing set_freezable() for freezable kthread
    8d656002fa38 dm-raid: fix possible NULL dereference with undefined raid type
    a9bfe4eb0103 ARM: 9464/1: fix input-only operand modification in load_unaligned_zeropad()
    ceb5dff91c86 ALSA: uapi: Fix typo in asound.h comment
    7f031777be02 dma/pool: eliminate alloc_pages warning in atomic_pool_expand
    d8b52fa40fc8 block: fix comment for op_is_zone_mgmt() to include RESET_ALL
    8fe7de5d1c7f blk-mq: Abort suspend when wakeup events are pending
    f123e1fad3a8 ASoC: ak5558: Disable regulator when error happens
    8cb3ed1b5669 ASoC: ak4458: Disable regulator when error happens
    5a38a44815e0 ASoC: bcm: bcm63xx-pcm-whistler: Check return value of of_dma_configure()
    97044043d531 platform/x86: asus-wmi: use brightness_set_blocking() for kbd led
    680f72890147 fs/nls: Fix inconsistency between utf8_to_utf32() and utf32_to_utf8()
    ba1495aefd22 NFS: Automounted filesystems should inherit ro,noexec,nodev,sync flags
    1b44528bf4a1 fs_context: drop the unused lsm_flags member
    ce578fbf8e83 Revert "nfs: ignore SB_RDONLY when mounting nfs"
    8e921550cc85 Revert "nfs: clear SB_RDONLY before getting superblock"
    dca481c17f81 Revert "nfs: ignore SB_RDONLY when remounting nfs"
    b6e4e3a08c03 NFSv4/pNFS: Clear NFS_INO_LAYOUTCOMMIT in pnfs_mark_layout_stateid_invalid
    3dc5156ad61a NFS: Initialise verifiers for visible dentries in nfs_atomic_open()
    e77419cbb547 NFS: Fix the verifier for case sensitive filesystem in nfs_atomic_open()
    19bac87dd821 NFSv4: Add some support for case insensitive filesystems
    3e367777b69c fs/nls: Fix utf16 to utf8 conversion
    2093051b4698 NFS: Avoid changing nlink when file removes and attribute updates race
    777564417810 NFS: don't unhash dentry during unlink/rename
    186072b7a23c NFS: Label the dentry with a verifier in nfs_rmdir() and nfs_unlink()
    5f1bc99ea831 fbdev: ssd1307fb: fix potential page leak in ssd1307fb_probe()
    007408ab8449 pinctrl: single: Fix incorrect type for error return variable
    184146300f78 pinctrl: single: Fix PIN_CONFIG_BIAS_DISABLE handling
    8609287a2646 perf tools: Fix split kallsyms DSO counting
    38abf6e931b1 net/sched: sch_cake: Fix incorrect qlen reduction in cake_drop
    140e6cd7b092 remoteproc: qcom_q6v5_wcss: fix parsing of qcom,halt-regs
    0d39bd3ef77a mtd: lpddr_cmds: fix signed shifts in lpddr_cmds
    1d6155900a69 net: stmmac: fix rx limit check in stmmac_rx_zc()
    53bc0ac47f4f netfilter: nft_connlimit: update the count if add was skipped
    b160895d6bc9 netfilter: nf_conncount: rework API to use sk_buff directly
    be69850b461e netfilter: nf_conncount: reduce unnecessary GC
    aea811b4cf6c netfilter: flowtable: check for maximum number of encapsulations in bridge vlan
    9d041a7ba13f regulator: core: Protect regulator_supply_alias_list with regulator_list_mutex
    4a79a1d496b9 ASoC: Intel: catpt: Fix error path in hw_params()
    c6035886b9d8 virtio: fix virtqueue_set_affinity() docs
    9410895c0e5f virtio_vdpa: fix misleading return in void function
    a9f01f0776f0 vdpa: Sync calls set/get config/status with cf_mutex
    447092100c7e vdpa: Introduce query of device config layout
    3ca8c7a6f9a0 vdpa: Introduce and use vdpa device get, set config helpers
    eed1541ff09d ext4: improve integrity checking in __mb_check_buddy by enhancing order-0 validation
    c082093313c0 ext4: remove unused return value of __mb_check_buddy
    99e011a78210 ACPI: processor_core: fix map_x2apic_id for amd-pstate on am4
    1e8124068c93 drm/amd/display: Fix logical vs bitwise bug in get_embedded_panel_info_v2_1()
    212825c1c8cb ASoC: fsl_xcvr: clear the channel status control memory
    650127b100b1 ASoC: fsl_xcvr: Add support for i.MX93 platform
    c464a9e42def ASoC: fsl_xcvr: Add Counter registers
    9cfb946f51ce RDMA/irdma: Fix data race in irdma_free_pble
    04050bf1a767 RDMA/irdma: Fix data race in irdma_sc_ccq_arm
    5c494997d09e iommu/arm-smmu-qcom: Enable use of all SMR groups when running bare-metal
    342b2c26e5ac backlight: lp855x: Fix lp855x.h kernel-doc warnings
    cd01a24b3e52 backlight: led-bl: Add devlink to supplier LEDs
    d0deba37ac85 backlight: led_bl: Take led_access lock when required
    53072791efe8 wifi: ieee80211: correct FILS status codes
    67d15b5ea082 PCI: dwc: Fix wrong PORT_LOGIC_LTSSM_STATE_MASK definition
    7547755997b3 staging: fbtft: core: fix potential memory leak in fbtft_probe_common()
    d6c91fc73269 mt76: mt7615: Fix memory leak in mt7615_mcu_wtbl_sta_add()
    f57925f0c498 crypto: ccree - Correctly handle return of sg_nents_for_len
    76fc288ce114 selftests/bpf: Improve reliability of test_perf_branches_no_hw()
    1d2e267f4331 selftests/bpf: skip test_perf_branches_hw() on unsupported platforms
    90bb940f1c2f usb: raw-gadget: cap raw_io transfer length to KMALLOC_MAX_SIZE
    7b1766b525da usb: dwc2: fix hang during suspend if set as peripheral
    316a067b2769 usb: dwc2: fix hang during shutdown if set as peripheral
    16514b403f0a usb: dwc2: disable platform lowlevel hw resources during shutdown
    5c94f6e84aec usb: chaoskey: fix locking for O_NONBLOCK
    f2f4627b74c1 ima: Handle error code returned by ima_filter_rule_match()
    6a96bd0d9430 wifi: rtl818x: rtl8187: Fix potential buffer underflow in rtl8187_rx_cb()
    81f087859c97 mfd: mt6358-irq: Fix missing irq_domain_remove() in error path
    68715d885bb6 mfd: mt6397-irq: Fix missing irq_domain_remove() in error path
    d705f1c35080 pwm: bcm2835: Make sure the channel is enabled after pwm_request()
    9a76b3b33e52 drm/mediatek: Fix CCORR mtk_ctm_s31_32_to_s1_n function issue
    e1c7bb405edc fs/ntfs3: Prevent memory leaks in add sub record
    e910114bdbd8 fs/ntfs3: out1 also needs to put mi
    925e825f0c8e fs/ntfs3: Make ni_ins_new_attr return error
    83177ae96486 fs/ntfs3: Add new argument is_mft to ntfs_mark_rec_free
    d29f1ea12adf fs/ntfs3: Remove unused mi_mark_free
    e0a6dcbb8ce5 powerpc/64s/ptdump: Fix kernel_hash_pagetable dump for ISA v3.00 HPTE format
    89caaeee8dd9 wifi: rtl818x: Fix potential memory leaks in rtl8180_init_rx_ring()
    01f1e3015a77 NFSD/blocklayout: Fix minlength check in proc_layoutget
    dbeddfaaa3c0 watchdog: wdat_wdt: Fix ACPI table leak in probe function
    dbe2bb24ac4c watchdog: wdat_wdt: Stop watchdog when uninstalling module
    f93b75779dc0 selftests/bpf: Fix failure paths in send_signal test
    cf31d9fc454f ps3disk: use memcpy_{from,to}_bvec index
    4174c6409e51 PCI: keystone: Exit ks_pcie_probe() for invalid mode
    b6fa2843b30f leds: netxbig: Fix GPIO descriptor leak in error paths
    6682d122e88e scsi: sim710: Fix resource leak by adding missing ioport_unmap() calls
    b9f141eb4182 ACPI: property: Fix fwnode refcount leak in acpi_fwnode_graph_parse_endpoint()
    08b93c1c12c6 ocfs2: relax BUG() to ocfs2_error() in __ocfs2_move_extent()
    3e764e8a055b lib/vsprintf: Check pointer before dereferencing in time_and_date()
    a6189b555ccc clk: renesas: r9a06g032: Fix memory leak in error path
    8368be8a5072 coresight: etm4x: Add context synchronization before enabling trace
    368466234b54 coresight: etm4x: Extract the trace unit controlling
    d4b7290c1b5f coresight-etm4x: add isb() before reading the TRCSTATR
    35d756da2d7e coresight: etm4x: Use Trace Filtering controls dynamically
    53511743c5a8 coresight: etm4x: Save restore TRFCR_EL1
    cd93db1b1b44 nbd: defer config unlock in nbd_genl_connect
    40e6a1ebe430 wifi: cw1200: Fix potential memory leak in cw1200_bh_rx_helper()
    14c209835e47 macintosh/mac_hid: fix race condition in mac_hid_toggle_emumouse
    3061b299fced powerpc/32: Fix unpaired stwcx. on interrupt exit
    79c8a77b1782 ntfs3: init run lock for extend inode
    9794c1a99a3a RDMA/rtrs: server: Fix error handling in get_or_create_srv
    5e9a106883c6 dt-bindings: PCI: amlogic: Fix the register name of the DBI region
    558222badffe dt-bindings: PCI: convert amlogic,meson-pcie.txt to dt-schema
    f0988e776c64 scsi: stex: Fix reboot_notifier leak in probe error path
    d3ba31267591 nbd: defer config put in recv_work
    6b4b2d939537 nbd: partition nbd_read_stat() into nbd_read_reply() and nbd_handle_reply()
    41ecdc2097b1 nbd: clean up return value checking of sock_xmit()
    85db50d9662b regulator: core: disable supply if enabling main regulator fails
    c0763fe31cfe perf/x86/intel: Correct large PEBS flag check
    de33b4593b81 ext4: correct the checking of quota files before moving extents
    8de56b96de2d ext4: minor defrag code improvements
    c23ea1f28855 mfd: da9055: Fix missing regmap_del_irq_chip() in error path
    88db8bb7ed1b spi: tegra210-quad: Fix timeout handling
    f603efe72a28 spi: tegra210-quad: modify chip select (CS) deactivation
    c6d33b46ce13 spi: tegra210-quad: combined sequence mode
    f64a36c44896 spi: tegra210-quad: add new chips to compatible
    036d15dbee1a spi: tegra210-quad: use device_reset method
    5a26b3e8b811 scsi: target: Do not write NUL characters into ASCII configfs output
    43428053153f power: supply: apm_power: only unset own apm_get_power_status
    7158890e3692 power: supply: wm831x: Check wm831x_set_bits() return value
    bf5e04401a10 i3c: master: svc: Prevent incomplete IBI transaction
    763d194b13be i3c: fix refcount inconsistency in i3c_master_register
    fe067c65f760 pinctrl: stm32: fix hwspinlock resource leak in probe function
    9ff4cea267ef x86/dumpstack: Prevent KASAN false positive warnings in __show_regs()
    898581813aaf x86: kmsan: don't instrument stack walking functions
    49c6b5e1e7fa kmsan: introduce __no_sanitize_memory and __no_kmsan_checks
    bd4bcf2d97a8 compiler-gcc.h: Define __SANITIZE_ADDRESS__ under hwaddress sanitizer
    4af48d5cb642 sctp: Defer SCTP_DBG_OBJCNT_DEC() to sctp_destroy_sock().
    59a797709dcb phy: mscc: Fix PTP for VSC8574 and VSC8572
    3c149ffe83d5 firmware: imx: scu-irq: fix OF node leak in
    9c5c10b32f48 s390/ap: Don't leak debug feature files if AP instructions are not available
    fc09726c9213 s390/smp: Fix fallback CPU detection
    0049c460c57c crypto: hisilicon/qm - restore original qos values
    c13c6e9de91d crypto: asymmetric_keys - prevent overflow in asymmetric_key_generate_id
    5c56bbed31e4 uio: uio_fsl_elbc_gpcm:: Add null pointer check to uio_fsl_elbc_gpcm_probe
    d27289e628bf arm64: dts: imx8mm-venice-gw72xx: remove unused sdhc1 pinctrl
    15c09dad9a82 iio: imu: st_lsm6dsx: Fix measurement unit for odr struct member
    5fbae4ee1d2a iio: imu: st_lsm6dsx: discard samples during filters settling time
    830c8336db60 iio: imu: st_lsm6dsx: introduce st_lsm6dsx_device_set_enable routine
    0314de967578 inet: Avoid ehash lookup race in inet_ehash_insert()
    1600b14e3c41 rculist: Add hlist_nulls_replace_rcu() and hlist_nulls_replace_init_rcu()
    90e23db1a859 ntfs3: Fix uninit buffer allocated by __getname()
    afb144bc8e92 ntfs3: fix uninit memory after failed mi_read in mi_format_new
    7bf22893398e irqchip/qcom-irq-combiner: Fix section mismatch
    50fde089fb8a USB: Fix descriptor count when handling invalid MBIM extended descriptor
    489b2158aec9 drm/vgem-fence: Fix potential deadlock on release
    ea0fd5535b0b drm/panel: visionox-rm69299: Don't clear all mode flags
    ca9388fba50d gpu: host1x: Fix race in syncpt alloc/free
    6b1e45e13546 smack: fix bug: unprivileged task can create labels
    c03cb1116289 staging: rtl8723bs: fix out-of-bounds read in OnBeacon ESR IE parsing
    4445adedae77 staging: rtl8723bs: fix stack buffer overflow in OnAssocReq IE parsing
    7141915bf0c4 comedi: check device's attached status in compat ioctls
    4cde9a7e025c comedi: multiq3: sanitize config options in multiq3_attach()
    f7fa1f4670c3 comedi: c6xdigio: Fix invalid PNP driver unregistration
    606f57e57267 HID: elecom: Add support for ELECOM M-XT3URBK (018F)
    2aa1485eff98 platform/x86: huawei-wmi: add keys for HONOR models
    090003de3f6c platform/x86: acer-wmi: Ignore backlight event
    d8dcf8e8852b pinctrl: qcom: msm: Fix deadlock in pinmux configuration
    aeccd6743ee4 bfs: Reconstruct file type when loading from disk
    93536b1d8478 spi: imx: keep dma request disabled before dma transfer setup
    9106a929628f spi: xilinx: increase number of retries before declaring stall
    e86288cb0a8c USB: serial: kobil_sct: fix TIOCMBIS and TIOCMBIC
    5882a3fe61d3 USB: serial: belkin_sa: fix TIOCMBIS and TIOCMBIC
    c032ddd06fe1 serial: add support of CPCI cards
    999138bc35b8 USB: serial: ftdi_sio: match on interface number for jtag
    141ed16ab9b7 USB: serial: option: move Telit 0x10c7 composition in the right place
    2d5855509140 USB: serial: option: add Telit Cinterion FE910C04 new compositions
    97c9ba42d178 USB: serial: option: add Foxconn T99W760
    b2a5b172dc05 comedi: pcl818: fix null-ptr-deref in pcl818_ai_cancel()
    61e03dc3794e ext4: add i_data_sem protection in ext4_destroy_inline_data_nolock()
    c228cb699a07 locking/spinlock/debug: Fix data-race in do_raw_write_lock
    43bf001f0fe4 ext4: refresh inline data size before write operations
    ed62fd8c15d4 jbd2: avoid bug_on in jbd2_journal_get_create_access() when file system corrupted
    5821b648480a Documentation: process: Also mention Sasha Levin as stable tree maintainer
    d76c2063db44 leds: spi-byte: Use devm_led_classdev_register_ext()
    fdcf33b9738c leds: Replace all non-returning strlcpy with strscpy
    799e37e49cb6 drm/i915/selftests: Fix inconsistent IS_ERR and PTR_ERR
    a647db560793 dpaa2-mac: bail if the dpmacs fwnode is not found
    e1d414c5719a xfrm: flush all states in xfrm_state_fini
    1dad653643f2 xfrm: also call xfrm_state_delete_tunnel at destroy time for states that were never added
    9f2d85ead8ff Revert "xfrm: destroy xfrm_state synchronously on net exit path"
    4b2c17d0f9be xfrm: delete x->tunnel as we delete x

(From OE-Core rev: 9d8037c4c28478fb8d3686648db423f0261dfe87)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:02 +00:00
Bruce Ashfield
bcf7200a12 linux-yocto/5.15: update to v5.15.197
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    68efe5a6c16a Linux 5.15.197
    3b7841a78357 libbpf: Fix invalid return address register in s390
    46d78c07ce40 libbpf, riscv: Use a0 for RC register
    9e11d30ab096 libbpf: Fix riscv register names
    aadc10434cd1 selftests/bpf: Don't rely on preserving volatile in PT_REGS macros in loop3
    a5d954802bda scsi: pm80xx: Set phy->enable_completion only when we
    f7b814a132c5 Bluetooth: Add more enc key size check
    4df96f1f47a4 usb: typec: ucsi: psy: Set max current to zero when disconnected
    cd5e86e34c66 usb: renesas_usbhs: Fix synchronous external abort on unbind
    bd6a1b29fa31 usb: renesas_usbhs: Convert to platform remove callback returning void
    d146e96fef87 smb: client: fix memory leak in cifs_construct_tcon()
    7ee8f015eb47 mptcp: Fix proto fallback detection with BPF
    dad1e44ed940 mptcp: avoid unneeded subflow-level drops
    5bd1d0ca17f0 selftests: mptcp: join: rm: set backup flag
    85cc2f990287 staging: rtl8712: Remove driver using deprecated API wext
    f22c55a20a2d libceph: prevent potential out-of-bounds writes in handle_auth_session_key()
    05ec43e9a9de libceph: fix potential use-after-free in have_mon_and_osd_map()
    09092269cb76 drm/amd/display: Check NULL before accessing
    c9a315a56da2 drm: sti: fix device leaks at component probe
    6176101b519f USB: serial: option: add support for Rolling RW101R-GL
    6738408111c2 USB: serial: ftdi_sio: add support for u-blox EVK-M101
    593d93b871dc xhci: dbgtty: Fix data corruption when transmitting data form DbC to host
    67192e8cb7f9 usb: dwc3: Fix race condition between concurrent dwc3_remove_requests() call paths
    66ac05e7b0d6 usb: uas: fix urb unmapping issue when the uas device is remove during ongoing data transfer
    26e9b5da3231 usb: storage: sddr55: Reject out-of-bound new_pba
    4aa7426f5326 USB: storage: Remove subclass and protocol overrides from Novatek quirk
    4ba515dfff7e usb: storage: Fix memory leak in USB bulk transport
    5a1628283cd9 usb: gadget: f_eem: Fix memory leak in eem_unwrap
    7fb4b54bbf07 usb: cdns3: Fix double resource release in cdns3_pci_probe
    a4c4118c2af2 most: usb: fix double free on late probe failure
    1f9ba65b019f serial: amba-pl011: prefer dma_mapping_error() over explicit address checking
    354fb03002da firmware: stratix10-svc: fix bug in saving controller data
    113f10c86d7d slimbus: ngd: Fix reference count leak in qcom_slim_ngd_notify_slaves
    db0835dfac45 thunderbolt: Add support for Intel Wildcat Lake
    5a0dcabc8a14 drivers/usb/dwc3: fix PCI parent check
    ed69c3db499c dm-verity: fix unreliable memory allocation
    6fdcd310f92a can: sun4i_can: sun4i_can_interrupt(): fix max irq loop handling
    e36369dfa2e7 can: sja1000: fix max irq loop handling
    bd1415efbab5 atm/fore200e: Fix possible data race in fore200e_open()
    19f3ace94943 MIPS: mm: Prevent a TLB shutdown on initial uniquification
    aad9d048a321 iio: accel: bmc150: Fix irq assumption regression
    17a38b85226c iio:common:ssp_sensors: Fix an error handling path ssp_probe()
    57f759d399e7 iio: imu: st_lsm6dsx: fix array size for st_lsm6dsx_settings fields
    5b9790d2009e Revert "perf/x86: Always store regs->ip in perf_callchain_kernel()"
    891775b1b4ed spi: bcm63xx: fix premature CS deassertion on RX-only transactions
    f231314b64c5 mailbox: mailbox-test: Fix debugfs_create_dir error checking
    b0c4d5135b04 net: atlantic: fix fragment overflow handling in RX path
    05c51c116e0b net: dsa: sja1105: fix SGMII linking at 10M or 100M but not passing traffic
    0bd2b12b3ca9 net: dsa: sja1105: simplify static configuration reload
    1989e6ecee91 net: dsa: sja1105: Convert to mdiobus_c45_read
    18ef3ad1bb57 net: sxgbe: fix potential NULL dereference in sxgbe_rx()
    3c11ac20b5fd net/mlx5e: Fix validation logic in rate limiting
    58a8e250d5b6 net: aquantia: Add missing descriptor cache invalidation on ATL2
    15d560cdf5b3 platform/x86: intel: punit_ipc: fix memory corruption
    4475bac8224c Bluetooth: SMP: Fix not generating mackey and ltk when repairing
    69c7825df64e can: kvaser_usb: leaf: Fix potential infinite loop in command parsers
    0e2d3a8d9fff Revert "block: don't add or resize partition on the disk with GENHD_FL_NO_PART"
    91db2663893a Revert "block: Move checking GENHD_FL_NO_PART to bdev_add_partition()"
    0b6a100efd9b mptcp: do not fallback when OoO is present
    e2d1ad207174 mptcp: fix a race in mptcp_pm_del_add_timer()
    2cc425276ccb mptcp: fix premature close in case of fallback
    4c3d91386d18 mptcp: fix ack generation for fallback msk
    fab9232b3f27 dt-bindings: pinctrl: toshiba,visconti: Fix number of items in groups
    444c875c347c ata: libata-scsi: Fix system suspend for a security locked drive
    015b71996269 Input: pegasus-notetaker - fix potential out-of-bounds access
    7bf70ce0a08e Input: remove third argument of usb_maxpacket()
    78acf73dfc30 usb: deprecate the third argument of usb_maxpacket()
    c22cedbc18dd mptcp: Disallow MPTCP subflows from sockmap
    4a4f32f3185a selftests: mptcp: connect: fix fallback note due to OoO
    f3737fc3b8d9 pmdomain: samsung: plug potential memleak during probe
    582f48d22eb5 pmdomain: arm: scmi: Fix genpd leak on provider registration failure
    1d3f3d4c1faf pmdomain: imx: Fix reference count leak in imx_gpc_remove
    890472d6fbf0 net: netpoll: fix incorrect refcount handling causing incorrect cleanup
    e9af27d1880a mmc: sdhci-of-dwcmshc: Change DLL_STRBIN_TAPNUM_DEFAULT to 0x4
    e24a45da635b net: qede: Initialize qede_ll_ops with designated initializer
    c993fd02ba47 btrfs: fix crash on racing fsync and size-extending write into prealloc
    bff4d06c38a7 btrfs: add helper to truncate inode items when logging inode
    707d49dd441a Makefile.compiler: replace cc-ifversion with compiler-specific macros
    4c019e93f0e5 uio_hv_generic: Set event for all channels on the device
    80fe72069168 tracing/tools: Fix incorrcet short option in usage text for --threads
    3afeb909c3e2 net: ethernet: ti: netcp: Standardize knav_dma_open_channel to return NULL on error
    75ccdb4afe41 ALSA: usb-audio: fix uac2 clock source at terminal parser
    bb1c19636aed mm/secretmem: fix use-after-free race in fault handler
    2ef178413183 mm/mm_init: fix hash table order logging in alloc_large_system_hash()
    dcf80cb1bf88 kconfig/nconf: Initialize the default locale at startup
    87297ab1e783 kconfig/mconf: Initialize the default locale at startup
    699c6cc0f18e net: tls: Cancel RX async resync request on rcd_delta overflow
    fbbcd769c800 selftests: net: use BASH for bareudp testing
    804b5b8e3545 scsi: core: Fix a regression triggered by scsi_host_busy()
    674329151458 vsock: Ignore signal/timeout on connect() if already established
    ecbb12caf399 net: qlogic/qede: fix potential out-of-bounds read in qede_tpa_cont() and qede_tpa_end()
    597bbbe023d9 kernel.h: Move ARRAY_SIZE() to a separate header
    ca4452aa69ab platform/x86/intel/speed_select_if: Convert PCIBIOS_* return codes to errnos
    7616e2eee679 s390/ctcm: Fix double-kfree
    f95bef5ba0b8 net: openvswitch: remove never-working support for setting nsh fields
    20d7e6bce8e2 net: dsa: hellcreek: fix missing error handling in LED registration
    ba8d3df04c00 mlxsw: spectrum: Fix memory leak in mlxsw_sp_flower_stats()
    5fb232c76334 drm/tegra: dc: Fix reference leak in tegra_dc_couple()
    99908e2d6012 mptcp: fix race condition in mptcp_schedule_work()
    7536472a4575 MIPS: Malta: Fix !EVA SOC-it PCI MMIO
    f449a1edd7a1 scsi: target: tcm_loop: Fix segfault in tcm_loop_tpg_address_show()
    109afbd88ecc scsi: sg: Do not sleep in atomic context
    60ba31330faf nvme: nvme-fc: Ensure ->ioerr_work is cancelled in nvme_fc_delete_ctrl()
    4ce5218b1012 Input: imx_sc_key - fix memory corruption on unload
    729d21c82c1b Input: cros_ec_keyb - fix an invalid memory access
    630360c6724e be2net: pass wrb_params in case of OS2BMC
    f2e52a9d10d8 exfat: check return value of sb_min_blocksize in exfat_read_boot_sector
    9c58c64ec412 mtd: rawnand: cadence: fix DMA device NULL pointer dereference
    de9dc8cbeea0 HID: quirks: work around VID/PID conflict for 0x4c4a/0x4155
    652b24f07bae net/sched: act_connmark: handle errno on tcf_idr_check_alloc
    b70c24827e11 isdn: mISDN: hfcsusb: fix memory leak in hfcsusb_probe()
    bf51f26c5bcc EDAC/altera: Use INTTEST register for Ethernet and USB SBE injection
    76eb3ac2f01a EDAC/altera: Handle OCRAM ECC enable after warm reset
    4b63d3858a1e spi: Try to get ACPI GPIO IRQ earlier
    8af069dc2fbf ALSA: usb-audio: Fix missing unlock at error path of maxpacksize check
    217d47255a2e ALSA: usb-audio: Fix potential overflow of PCM transfer buffer
    4cba73c4c892 fs/proc: fix uaf in proc_readdir_de()
    298f1e0694ab ipv4: route: Prevent rt_bind_exception() from rebinding stale fnhe
    5fb4722507b7 strparser: Fix signed/unsigned mismatch bug
    3b9447e68777 gcov: add support for GCC 15
    b114996a095d NFSD: free copynotify stateid in nfs4_free_ol_stateid()
    d0ee0b42a9c0 HID: hid-ntrig: Prevent memory leak in ntrig_report_version()
    4681960bc0f4 netfilter: nf_tables: reject duplicate device on updates
    cbbe9170ca2a mtd: onenand: Pass correct pointer to IRQ handler
    20067f737dc0 lib/crypto: arm/curve25519: Disable on CPU_BIG_ENDIAN
    b69f19244c2b mm/ksm: fix flag-dropping behavior in ksm_madvise
    1a6ed803c4b1 mptcp: pm: in-kernel: C-flag: handle late ADD_ADDR
    c4cdd143c359 bpf: Add bpf_prog_run_data_pointers()
    9f282104627b ALSA: usb-audio: Fix NULL pointer dereference in snd_usb_mixer_controls_badd
    6ec3bfe0ad73 NFSv4: Fix an incorrect parameter when calling nfs4_call_sync()
    709e5c088f9c drm/vmwgfx: Validate command header size against SVGA_CMD_MAX_DATASIZE
    bfa4f33f0a43 ASoC: cs4271: Fix regulator leak on probe failure
    ee29c2319ee8 regulator: fixed: fix GPIO descriptor leak on register failure
    5c1fd2b81e13 acpi,srat: Fix incorrect device handle check for Generic Initiator
    9d1d7858fc5b Bluetooth: L2CAP: export l2cap_chan_hold for modules
    8b1551cacb66 hsr: Fix supervision frame sending on HSRv0
    f8706e15710f net_sched: limit try_bulk_dequeue_skb() batches
    5af7ec404e85 net/mlx5e: Fix wraparound in rate limiting for values above 255 Gbps
    727f158d9a8a net/mlx5e: Fix maxrate wraparound in threshold between units
    37f0680887c5 net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
    218b67c8c824 net: sched: act_connmark: initialize struct tc_ife to fix kernel leak
    def0860b2caf net_sched: act_connmark: use RCU in tcf_connmark_dump()
    0d14e8ba20cf net/sched: act_connmark: transition to percpu stats and rcu
    b99642817f60 net: sched: act_connmark: get rid of tcf_connmark_walker and tcf_connmark_search
    6a45a97e0099 net: sched: act: move global static variable net_id to tc_action_ops
    659e94c35a3f wifi: mac80211: skip rate verification for not captured PSDUs
    1040834078ac net: mdio: fix resource leak in mdiobus_register_device()
    51b8f0ab888f tipc: Fix use-after-free in tipc_mon_reinit_self().
    8a695769c1e8 net/smc: fix mismatch between CLC header and proposal
    abb086b9a95d sctp: prevent possible shift-out-of-bounds in sctp_transport_update_rto
    17ef29586b76 Bluetooth: 6lowpan: Don't hold spin lock over sleeping functions
    2f2b940e7fa3 Bluetooth: 6lowpan: fix BDADDR_LE vs ADDR_LE_DEV address type confusion
    d566e9a2bfc8 Bluetooth: 6lowpan: reset link-local header on ipv6 recv path
    7a6d1e740220 Bluetooth: btusb: reorder cleanup in btusb_disconnect to avoid UAF
    d11c10bce6f4 net: fec: correct rx_bytes statistic for the case SHIFT16 is set
    dd60d0ba60f8 ASoC: max98090/91: fixed max98091 ALSA widget powering up/down
    652585576866 NFS: check if suid/sgid was cleared after a write as needed
    9727b5dc98c3 HID: quirks: avoid Cooler Master MM712 dongle wakeup bug
    d2560884113c NFS4: Fix state renewals missing after boot
    e5d5b4228e05 RISC-V: clear hot-unplugged cores from all task mm_cpumasks to avoid rfence errors
    be5a8537b2b9 compiler_types: Move unused static inline functions warning to W=2
    e988634d7aae drm/i915: Avoid lock inversion when pinning to GGTT on CHV/BXT+VTD
    7d316c3c9e53 selftests: netdevsim: set test timeout to 10 minutes
    3694a618609b extcon: adc-jack: Cleanup wakeup source only if it was enabled
    d3eaf1052cd8 lib/crypto: curve25519-hacl64: Fix older clang KASAN workaround for GCC
    3a9f46f5d467 rtc: rx8025: fix incorrect register reference
    38771ab159d9 tracing: Fix memory leaks in create_field_var()
    a304aa581895 bnxt_en: Fix a possible memory leak in bnxt_ptp_init
    25979f34feec bnxt_en: PTP: Refactor PTP initialization functions
    4e6b9004f01d net: usb: qmi_wwan: initialize MAC header offset in qmimux_rx_fixup
    82b5ddac0843 sctp: Hold sock lock while iterating over address list
    72e3fea68eac sctp: Prevent TOCTOU out-of-bounds write
    ad5ddc33af9f sctp: Hold RCU read lock while iterating over address list
    6618c36f6d86 net: dsa: b53: stop reading ARL entries if search is done
    ae52ba1ad2ed net: dsa: b53: fix enabling ip multicast
    cd8c2419b50b net: dsa: b53: fix resetting speed and pause on forced link
    48df5cc7fd7c net: vlan: sync VLAN features with lower device
    82acad39d05c selftests: netdevsim: Fix ethtool-coalesce.sh fail by installing ethtool-common.sh
    f3903664c883 netdevsim: add Makefile for selftests
    c2ce8d37e49e selftests/net: use destination options instead of hop-by-hop
    32c3e1cbc2e6 selftests/net: fix GRO coalesce test and add ext header coalesce tests
    e4603c1c4fd1 selftests/net: fix out-of-order delivery of FIN in gro:tcp test
    a8d549eb5aca net: dsa: tag_brcm: legacy: fix untagged rx on unbridged ports for bcm63xx
    f8d974a0e8c2 riscv: ptdump: use seq_puts() in pt_dump_seq_puts() macro
    53c7a2110285 Revert "wifi: ath10k: avoid unnecessary wait for service ready message"
    b345e06f2d35 ALSA: hda/realtek: Audio disappears on HP 15-fc000 after warm boot again
    676ee2061f72 ceph: add checking of wait_for_completion_killable() return value
    8bff07a8fc0a ASoC: meson: aiu-encoder-i2s: fix bit clock polarity
    1943b69e87b0 fbdev: Add bounds checking in bit_putcs to fix vmalloc-out-of-bounds
    6da480c32392 ACPI: property: Return present device nodes only on fwnode interface
    a66596cf5643 9p: sysfs_init: don't hardcode error to ENOMEM
    879f6a7e75c3 cpufreq: tegra186: Initialize all cores to max frequencies
    435b42a10995 9p: fix /sys/fs/9p/caches overwriting itself
    66f257db400a clk: ti: am33xx: keep WKUP_DEBUGSS_CLKCTRL enabled
    c50651c205f6 clk: at91: clk-master: Add check for divide by 3
    e7322da6c50f ARM: at91: pm: save and restore ACR during PLL disable/enable
    a02f2dbdd77a rtc: pcf2127: clear minute/second interrupt
    cebc9f5ee3e3 um: Fix help message for ssl-non-raw
    64ef62fb1c4a fs/hpfs: Fix error code for new_inode() failure in mkdir/create/mknod/symlink
    f7af3813ccff btrfs: mark dirty extent range for out of bound prealloc extents
    8a139fe903f3 RDMA/hns: Fix wrong WQE data when QP wraps around
    63bb04cda173 RDMA/irdma: Set irdma_cq cq_num field during CQ create
    e8805e90ff0c RDMA/irdma: Remove unused struct irdma_cq fields
    2380d634959a RDMA/irdma: Fix SD index calculation
    cc9ab6e1a375 ACPICA: Update dsmethod.c to get rid of unused variable warning
    15afebb95974 orangefs: fix xattr related buffer overflow...
    c12ebeacfbae page_pool: Clamp pool size to max 16K pages
    2acf073edeb7 exfat: limit log print for IO error
    c70926971b36 ALSA: usb-audio: add mono main switch to Presonus S1824c
    b65ca9708bfb Bluetooth: bcsp: receive data only if registered
    d2850f037c2a Bluetooth: SCO: Fix UAF on sco_conn_free
    d4d90a419b55 net: macb: avoid dealing with endianness in macb_set_hwaddr()
    bb7d0d13c6e1 fs: ext4: change GFP_KERNEL to GFP_NOFS to avoid deadlock
    b2eef65a3be2 scsi: libfc: Fix potential buffer overflow in fc_ct_ms_fill()
    fa4daf7d11e4 nfs4_setup_readdir(): insufficient locking for ->d_parent->d_inode dereferencing
    a8a97e0d0b60 NFSv4.1: fix mount hang after CREATE_SESSION failure
    679fd67bac26 NFSv4: handle ERR_GRACE on delegation recalls
    ca806ebc497b remoteproc: qcom: q6v5: Avoid handling handover twice
    e50066336660 sparc/module: Add R_SPARC_UA64 relocation handling
    eb3d29ca0820 PCI: cadence: Check for the existence of cdns_pcie::ops before using it
    c3f99fd7ed17 r8169: set EEE speed down ratio to 1
    826ad86e1270 net: intel: fm10k: Fix parameter idx set but not used
    eb0c150d0279 wifi: ath10k: Fix connection after GTK rekeying
    0f7f34292071 iommu/vt-d: Replace snprintf with scnprintf in dmar_latency_snapshot()
    f878bfd2c14c net: ethernet: microchip: sparx5: make it selectable for ARCH_LAN969X
    a2aa97cde985 jfs: fix uninitialized waitqueue in transaction manager
    46c76cfa17d1 jfs: Verify inode mode when loading from disk
    14b6f0b3cfe2 ipv6: np->rxpmtu race annotation
    318aeeb3f8fe usb: xhci: plat: Facilitate using autosuspend for xhci plat devices
    7a219cbbc9e8 usb: mon: Increase BUFF_MAX to 64 MiB to support multi-MB URBs
    311df10cca0e allow finish_no_open(file, ERR_PTR(-E...))
    ffae0417168e scsi: lpfc: Define size of debugfs entry for xri rebalancing
    57225d17cd8d scsi: lpfc: Remove ndlp kref decrement clause for F_Port_Ctrl in lpfc_cleanup
    430e3ca0a53d scsi: lpfc: Check return status of lpfc_reset_flush_io_context during TGT_RESET
    41cd00665c99 selftests/Makefile: include $(INSTALL_DEP_TARGETS) in clean target to clean net/lib dependency
    0ec2cd5c5879 page_pool: always add GFP_NOWARN for ATOMIC allocations
    a58098c6b91c drm/amdgpu: Use memdup_array_user in amdgpu_cs_wait_fences_ioctl
    fd62e1a94cff net/cls_cgroup: Fix task_get_classid() during qdisc run
    45e4e4a8772f udp_tunnel: use netdev_warn() instead of netdev_WARN()
    d276a6c3bb74 selftests: Replace sleep with slowwait
    fbf410aafc85 eth: 8139too: Make 8139TOO_PIO depend on !NO_IOPORT_MAP
    ff4cd9564dc3 selftests: Disable dad for ipv6 in fcnal-test.sh
    b16a010338bf x86/kvm: Prefer native qspinlock for dedicated vCPUs irrespective of PV_UNHALT
    56c832864e5e netfilter: nf_reject: don't reply to icmp error messages
    0858b8e38884 selftests: traceroute: Use require_command()
    9d2e3da0a0e8 media: redrat3: use int type to store negative error codes
    ffb663e41dde net: sh_eth: Disable WoL if system can not suspend
    eab8d5e5e1d0 phy: rockchip: phy-rockchip-inno-csidphy: allow writes to grf register 0
    04f057e4c156 phy: cadence: cdns-dphy: Enable lower resolutions in dphy
    63eb6730ce06 ntfs3: pretend $Extend records as regular files
    8a8d07553583 net: phy: marvell: Fix 88e1510 downshift counter errata
    0f30019f5a58 drm/msm: make sure to not queue up recovery more than once
    0cf9a50af91f usb: cdns3: gadget: Use-after-free during failed initialization and exit of cdnsp gadget
    2dc7bcc0b112 usb: gadget: f_hid: Fix zero length packet transfer
    bb8f9de71c9b iommu/amd: Skip enabling command/event buffers for kdump
    66bcd6c577d8 net: call cond_resched() less often in __release_sock()
    07ae8cc64557 net: nfc: nci: Increase NCI_DATA_TIMEOUT to 3000 ms
    fdfd91ac1f44 ipv6: Add sanity checks on ipv6_devconf.rpl_seg_enabled
    1452d49956d9 drm/msm/dsi/phy_7nm: Fix missing initial VCO rate
    b4a4bf4b4452 drm/msm/dsi/phy: Toggle back buffer resync after preparing PLL
    bda8e00b354a dmaengine: dw-edma: Set status for callback_result
    35e42324c21f dmaengine: mv_xor: match alloc_wc and free_wc
    e12a50e3621f dmaengine: sh: setup_xref error handling
    774e8d44ac88 ptp: Limit time setting of PTP clocks
    48c1d49c64d0 scsi: pm8001: Use int instead of u32 to store error codes
    7ce10ef9a9b6 mips: lantiq: xway: sysctrl: rename stp clock
    e1f79a12bd62 mips: lantiq: danube: add missing device_type in pci node
    a39c88bedb0f mips: lantiq: danube: add missing properties to cpu node
    69f04cdd1a50 media: fix uninitialized symbol warnings
    b751b7f87acb drm/amdkfd: Tie UNMAP_LATENCY to queue_preemption
    92071a422131 extcon: adc-jack: Fix wakeup source leaks on device unbind
    62443e7d827a scsi: pm80xx: Fix race condition caused by static variables
    866d93632daa scsi: mpi3mr: Fix controller init failure on fault during queue creation
    9650cd59f4e1 rds: Fix endianness annotation for RDS_MPATH_HASH
    fb4f59e66952 ALSA: usb-audio: Add validation of UAC2/UAC3 effect units
    30cc10a05b22 PCI/P2PDMA: Fix incorrect pointer usage in devm_kfree() call
    38edfa2a5a7a net: Call trace_sock_exceed_buf_limit() for memcg failure with SK_MEM_RECV.
    f80a71a29f2d net: When removing nexthops, don't call synchronize_net if it is not necessary
    d2ee1c7fc9c2 char: misc: Does not request module for miscdevice with dynamic minor
    e14d3af189de usb: gadget: f_ncm: Fix MAC assignment NCM ethernet
    f979f913b99c iio: adc: spear_adc: mask SPEAR_ADC_STATUS channel and avg sample before setting register
    ad22eebd7177 drm/bridge: display-connector: don't set OP_DETECT for DisplayPorts
    26f6a1dd5d81 media: imon: make send_packet() more robust
    0bf756ae1e69 net: ipv6: fix field-spanning memcpy warning in AH output
    15def75e75a7 bridge: Redirect to backup port when port is administratively down
    a65cbffb0e81 powerpc/eeh: Use result of error_detected() in uevent
    e269b500b23f thunderbolt: Use is_pciehp instead of is_hotplug_bridge
    157b7b41a5d2 net: stmmac: Check stmmac_hw_setup() in stmmac_resume()
    d178723da249 x86/vsyscall: Do not require X86_PF_INSTR to emulate vsyscall
    5ba991865cee drm/tidss: Set crtc modesetting parameters with adjusted mode
    603c103f9e30 drm/tidss: Use the crtc_* timings when programming the HW
    965813f1afaf media: pci: ivtv: Don't create fake v4l2_fh
    556da2856798 drm/amdkfd: return -ENOTTY for unsupported IOCTLs
    e04e3165bc8b selftests/net: Ensure assert() triggers in psock_tpacket.c
    634d43ee1d23 selftests/net: Replace non-standard __WORDSIZE with sizeof(long) * 8
    be80a71699b4 PCI: Disable MSI on RDC PCI to PCIe bridges
    31caf9efba7e drm/nouveau: replace snprintf() with scnprintf() in nvkm_snprintbf()
    19096bddf873 drm/amdgpu/jpeg: Hold pg_lock before jpeg poweroff
    b9d1d32766d3 drm/amd/pm: Use cached metrics data on arcturus
    89af20042ea5 drm/amd/pm: Use cached metrics data on aldebaran
    446631df0714 mfd: da9063: Split chip variant reading in two bus transactions
    adde0c657c90 mfd: madera: Work around false-positive -Wininitialized warning
    d7bc1931a256 mfd: stmpe-i2c: Add missing MODULE_LICENSE
    72f7a31793bb mfd: stmpe: Remove IRQ domain upon removal
    fa0d842eea8c tools/power x86_energy_perf_policy: Prefer driver HWP limits
    1c0eb3211e17 tools/power x86_energy_perf_policy: Enhance HWP enable
    87de7b4213c1 tools/power x86_energy_perf_policy: Fix incorrect fopen mode usage
    2ba32bd019cf tools/cpupower: Fix incorrect size in cpuidle_state_disable()
    481e609c7854 hwmon: (dell-smm) Add support for Dell OptiPlex 7040
    2617ae62f086 uprobe: Do not emulate/sstep original instruction when ip is changed
    cf3e51d388e1 clocksource/drivers/vf-pit: Replace raw_readl/writel to readl/writel
    39805c732891 cpuidle: Fail cpuidle device registration if there is one already
    7f6993bd3224 tools/cpupower: fix error return value in cpupower_write_sysfs()
    6e9e9558da65 video: backlight: lp855x_bl: Set correct EPROM start for LP8556
    e8cde03de867 nvme-fc: use lock accessing port_state and rport state
    2f4852db87e2 nvmet-fc: avoid scheduling association deletion twice
    75a98126757e tee: allow a driver to allocate a tee_device without a pool
    5a7e2d5d1b68 ACPICA: dispatcher: Use acpi_ds_clear_operands() in acpi_ds_call_control_method()
    13257496a496 mmc: sdhci-msm: Enable tuning for SDR50 mode for SD card
    e3f7173df91b power: supply: sbs-charger: Support multiple devices
    a59c9c1370db hwmon: (sbtsi_temp) AMD CPU extended temperature range support
    9545f5ef8258 ACPI: scan: Add Intel CVS ACPI HIDs to acpi_ignore_dep_ids[]
    799f75a894a6 ACPI: PRM: Skip handlers with NULL handler_address or NULL VA
    2ca16b41e88b irqchip/gic-v2m: Handle Multiple MSI base IRQ Alignment
    1ba13dde6a45 arc: Fix __fls() const-foldability via __builtin_clzl()
    55cf586b9556 cpufreq/longhaul: handle NULL policy in longhaul_exit
    916f62bf6964 selftests/bpf: Fix bpf_prog_detach2 usage in test_lirc_mode2
    76ab1edadf69 ACPI: video: force native for Lenovo 82K8
    edc0b38f26fc memstick: Add timeout to prevent indefinite waiting
    9e18372fcf17 mmc: host: renesas_sdhi: Fix the actual clock
    fd031d98081e pinctrl: single: fix bias pull up/down handling in pin_config_set
    13ce905f0777 bpf: Don't use %pK through printk
    49be75e00d21 soc: ti: pruss: don't use %pK through printk
    ed7b7fbf2d5f spi: loopback-test: Don't use %pK through printk
    d06bbd6f5cd8 soc: qcom: smem: Fix endian-unaware access of num_entries
    9a0d4017a138 soc: aspeed: socinfo: Add AST27xx silicon IDs
    04dde9a7cb73 block: make REQ_OP_ZONE_OPEN a write operation
    6abeff03cb79 drm/sysfb: Do not dereference NULL pointer in plane reset
    afd6e9fe377f drm/sched: Fix race in drm_sched_entity_select_rq()
    9ec40fba7357 usb: gadget: f_fs: Fix epfile null pointer access after ep enable.
    e6f1413b1cfb Revert "docs/process/howto: Replace C89 with C11"
    518eadd15f7e arch: back to -std=gnu89 in < v5.18
    f28b14d235a8 x86/boot: Compile boot code with -std=gnu11 too
    8050bbc2a2b9 xhci: dbc: fix bogus 1024 byte prefix if ttyDBC read races with stall event
    fe9092c42877 xhci: dbc: Avoid event polling busyloop if pending rx transfers are inactive.
    79d7094ecd75 xhci: dbc: Improve performance by removing delay in transfer event polling.
    2f5c3743466f xhci: dbc: Allow users to modify DbC poll interval via sysfs
    d596d39e16e3 xhci: dbc: poll at different rate depending on data transfer activity
    902f900b46e9 xhci: dbc: Provide sysfs option to configure dbc descriptors
    42ccfa662c2e x86/resctrl: Fix miscount of bandwidth event when reactivating previously unavailable RMID
    12a895faa0c9 net: phy: dp83867: Disable EEE support as not implemented
    56612e80a80b can: gs_usb: increase max interface to U8_MAX
    941285def6f6 net: ravb: Enforce descriptor type ordering
    6664de2a13b5 ravb: Exclude gPTP feature support for RZ/G2L
    381eb91874a6 dt-bindings: usb: dwc3-imx8mp: dma-range is required only for imx8mp
    bfb5e825c206 serial: 8250_dw: handle reset control deassert error
    3299a39f9a09 serial: 8250_dw: Use devm_add_action_or_reset()
    d979639f099c regmap: slimbus: fix bus_context pointer in regmap init calls
    c5279b8c91c9 block: fix op_is_zone_mgmt() to handle REQ_OP_ZONE_RESET_ALL
    c674a191ada3 drm/amd/pm/powerplay/smumgr: Fix PCIeBootLinkLevel value on Iceland
    f64e5bdde3be drm/amd/pm/powerplay/smumgr: Fix PCIeBootLinkLevel value on Fiji
    ca8cc1ae1425 drm/amd/pm: fix smu table id bound check issue in smu_cmn_update_table()
    e5e712518b29 net: hns3: return error code when function fails
    8814f060d364 drm/etnaviv: fix flush sequence logic
    43005002b60e usbnet: Prevents free active kevent
    18652ab01a20 libbpf: Fix powerpc's stack register definition in bpf_tracing.h
    e5996b15ab1d libbpf: Normalize PT_REGS_xxx() macro definitions
    82a674170040 riscv, libbpf: Add RISC-V (RV64) support to bpf_tracing.h
    9450d2fe01d0 bpf: Do not audit capability check in do_jit()
    de2ce6b14bc3 bpf: Sync pending IRQ work before freeing ring buffer
    29b6987bdea3 ALSA: usb-audio: fix control pipe direction
    ea48293df43b drm/msm/a6xx: Fix GMU firmware parser
    488f3206325e wifi: ath10k: Fix memory leak on unsupported WMI command
    641e47ea2831 ASoC: qdsp6: q6asm: do not sleep while atomic
    cca3958c5565 mptcp: restore window probe
    90d835caf3eb fbdev: valkyriefb: Fix reference count leak in valkyriefb_init
    9c78e8179a14 fbdev: pvr2fb: Fix leftover reference to ONCHIP_NR_DMA_CHANNELS
    55f60a72a178 wifi: brcmfmac: fix crash while sending Action Frames in standalone AP Mode
    db5c9a162d2f fbdev: bitblit: bound-check glyph index in bit_putcs*
    bc78a4f51d54 ACPI: video: Fix use-after-free in acpi_video_switch_brightness()
    4b05bd1d75d3 fbdev: atyfb: Check if pll_ops->init_pll failed
    c7bf258321a1 net: usb: asix_devices: Check return value of usbnet_get_endpoints
    375fdd8993ce NFSD: Fix crash in nfsd4_read_release()
    5fa8b4382c01 btrfs: use smp_mb__after_atomic() when forcing COW in create_pending_snapshot()
    5a6f9727ae78 btrfs: always drop log root tree reference in btrfs_replay_log()
    f5c926c9e7fe btrfs: scrub: replace max_t()/min_t() with clamp() in scrub_throttle_dev_io()
    a740e71c2344 x86/bugs: Fix reporting of LFENCE retpoline
    1bed56f089f0 net/sched: sch_qfq: Fix null-deref in agg_dequeue

(From OE-Core rev: 873cfb3c627738d4ab03eb3a5e1e3fb42f9f32b9)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Bruce Ashfield
ff90622dfc linux-yocto/5.15: update to v5.15.196
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    cc5ec87693063 Linux 5.15.196
    59c78e8fddc1f PCI: rcar: Demote WARN() to dev_warn_ratelimited() in rcar_pcie_wakeup()
    83a563fab563f net: rtnetlink: fix module reference count leak issue in rtnetlink_rcv_msg
    c5d116862dd3e usb: gadget: f_acm: Refactor bind path to use __free()
    185193a4714aa usb: gadget: f_ncm: Refactor bind path to use __free()
    d44e82f46cd0e usb: gadget: Introduce free_usb_request helper
    97fc7aa654e30 usb: gadget: Store endpoint pointer in usb_request
    02fbea0864fd4 arch_topology: Fix incorrect error check in topology_parse_cpu_capacity()
    9b82da54a0305 xfs: always warn about deprecated mount options
    b57a3760d12bd devcoredump: Fix circular locking dependency with devcd->mutex.
    11300f645870a PCI: tegra194: Reset BARs when running in PCIe endpoint mode
    61d6249ea441b PCI: rcar-host: Drop PMSR spinlock
    9e14fb714ebf5 PCI: rcar: Finish transition to L1 state in rcar_pcie_config_access()
    97ab6a90c72d9 PCI: tegra194: Handle errors in BPMP response
    13981b0555ab4 f2fs: fix wrong block mapping for multi-devices
    ba88a53d7f5df NFSD: Define a proc_layoutcommit for the FlexFiles layout type
    8004d4b8cbf1b vfs: Don't leak disconnected dentries on umount
    0157c469edac2 drm/amdgpu: use atomic functions with memory barriers for vm fault info
    c6fa15fa94016 PCI: rcar-host: Convert struct rcar_msi mask_lock into raw spinlock
    0e143e87264db wifi: ath11k: HAL SRNG: don't deinitialize and re-initialize again
    ddcfc52965c19 PCI: j721e: Fix programming sequence of "strap" settings
    2ddb51e228192 PCI: j721e: Enable ACSPCIE Refclk if "ti,syscon-acspcie-proxy-ctrl" exists
    cfd1aa3e2b71f fuse: fix livelock in synchronous file put from fuseblk workers
    a39f70d63f437 fuse: allocate ff->release_args only if release is needed
    6012804a77860 padata: Reset next CPU when reorder sequence wraps around
    38d702a06487c iio: imu: inv_icm42600: Simplify pm_runtime setup
    be16df3c3c5dd PM: runtime: Add new devm functions
    0f9f51390c866 iio: imu: inv_icm42600: Avoid configuring if already pm_runtime suspended
    f35ab1ba853ab iio: imu: inv_icm42600: use = { } instead of memset()
    8e69c8f3ae1c5 NFSD: Fix last write offset handling in layoutcommit
    0570c78e6c707 NFSD: Minor cleanup in layoutcommit processing
    68d615f4b00ab NFSD: Rework encoding and decoding of nfsd4_deviceid
    2dc2bc27578c3 xfs: fix log CRC mismatches between i386 and other architectures
    71f9402044636 xfs: rename the old_crc variable in xlog_recover_process
    6e7f06895db6e s390/cio: Update purge function to unregister the unused subchannels
    dc9f91f849860 arm64: errata: Apply workarounds for Neoverse-V3AE
    a6ef05314d5a8 arm64: cputype: Add Neoverse-V3AE definitions
    1bff561ebe700 serial: 8250_exar: add support for Advantech 2 port card with Device ID 0x0018
    ad2be44882716 most: usb: hdm_probe: Fix calling put_device() before device initialization
    578eb18cd111a most: usb: Fix use-after-free in hdm_disconnect
    cee4ab233f895 mei: me: add wildcat lake P DID
    2670932f24657 comedi: fix divide-by-zero in comedi_buf_munge()
    97a71d277e759 binder: remove "invalid inc weak" check
    55c7290b1a2af xhci: dbc: enable back DbC in resume if it was enabled before suspend
    6d0edbdb0bf72 usb: raw-gadget: do not limit transfer length
    f9bfb3fc7ffa3 usb/core/quirks: Add Huawei ME906S to wakeup quirk
    1a5afa2b586ee USB: serial: option: add Telit FN920C04 ECM compositions
    443bc87ec125a USB: serial: option: add Quectel RG255C
    57bb21f4e7b1d USB: serial: option: add UNISOC UIS7720
    2c651b835b9f6 net: ravb: Ensure memory write completes before ringing TX doorbell
    a63ab2c3c48a2 net: usb: rtl8150: Fix frame padding
    09bba278ccde2 vsock: fix lock inversion in vsock_assign_transport()
    93b1ab422f196 ocfs2: clear extent cache after moving/defragmenting extents
    f2ef52fbdc5f0 MIPS: Malta: Fix keyboard resource preventing i8042 driver from registering
    5666bcc3c00f7 Revert "cpuidle: menu: Avoid discarding useful information"
    f49962e51a428 net: bonding: fix possible peer notify event loss or dup issue
    03e80a4b04ef1 sctp: avoid NULL dereference when chunk data buffer is missing
    8a2375b0e9b89 arm64, mm: avoid always making PTE dirty in pte_mkwrite()
    c42dbdcde7220 dpaa2-eth: fix the pointer passed to PTR_ALIGN on Tx path
    00daafde87d2e net: enetc: correct the value of ENETC_RXB_TRUESIZE
    e7a8c57671a1f rtnetlink: Allow deleting FDB entries in user namespace
    bde6afe89ac15 net: rtnetlink: add NLM_F_BULK support to rtnl_fdb_del
    7cd416cc0220c net: add ndo_fdb_del_bulk
    31017cda9928e net: rtnetlink: add bulk delete support flag
    a36130f7921c9 net: netlink: add NLM_F_BULK delete request modifier
    40ffa6a8c1907 net: rtnetlink: use BIT for flag values
    fc69b00561e49 net: rtnetlink: add helper to extract msg type's kind
    a6c202c341624 m68k: bitops: Fix find_*_bit() signatures
    1701af4d10b4f hfsplus: return EIO when type of hidden directory mismatch in hfsplus_fill_super()
    2a112cdd66f5a hfs: fix KMSAN uninit-value issue in hfs_find_set_zero_bits()
    450ac1c490f8d dlm: check for defined force value in dlm_lockspace_release
    9df3c241fbf69 hfsplus: fix KMSAN uninit-value issue in hfsplus_delete_cat()
    418e48cab99c5 hfs: validate record offset in hfsplus_bmap_alloc
    c135b8dca6552 hfsplus: fix KMSAN uninit-value issue in __hfsplus_ext_cache_extent()
    725522af093ff hfs: make proper initalization of struct hfs_find_data
    b92904866b9f3 hfs: clear offset and space out of valid records in b-tree node
    25f09699edd36 nios2: ensure that memblock.current_limit is set when setting pfn limits
    45ec13d6ce557 exec: Fix incorrect type for ret
    3324e5e3ac97a Revert "perf test: Don't leak workload gopipe in PERF_RECORD_*"
    ae9ad3b673252 PCI/sysfs: Ensure devices are powered for config reads (part 2)
    7ab44236b32ed hfsplus: fix slab-out-of-bounds read in hfsplus_strcasecmp()
    736159f7b296d ALSA: usb-audio: Fix NULL pointer deference in try_to_register_card
    3c77e994e4ecd ALSA: firewire: amdtp-stream: fix enum kernel-doc warnings
    fdccb3adc59d7 sched/fair: Fix pelt lost idle time detection
    15fda76f7a57a sched/balancing: Rename newidle_balance() => sched_balance_newidle()
    343e991e2596a drm/amd/powerplay: Fix CIK shutdown temperature
    d38aec7cd3502 riscv: kprobes: Fix probe address validation
    6a90c8381c333 net: usb: lan78xx: fix use of improperly initialized dev->chipid in lan78xx_reset
    50b2fb48a4733 net: usb: lan78xx: Add error handling to lan78xx_init_mac_address
    a6b33d9edf260 net: usb: use eth_hw_addr_set() instead of ether_addr_copy()
    bab04baafc1c5 tls: don't rely on tx_work during send()
    09b1c01df5d46 tls: always set record_type in tls_process_cmsg
    669d389ed231b tls: wait for async encrypt in case of error during latter iterations of sendmsg
    2cb75c87428e0 net: tls: wait for async completion on last message
    4de9057aebb15 splice, net: Add a splice_eof op to file-ops and socket-ops
    01abf7b445062 tg3: prevent use of uninitialized remote_adv and local_adv variables
    c43fe40e67d69 tcp: fix tcp_tso_should_defer() vs large RTT
    14c9047ad5165 amd-xgbe: Avoid spurious link down messages during interface toggle
    402b6985e872b net/ip6_tunnel: Prevent perpetual tunnel growth
    1095322a7e014 r8169: fix packet truncation after S4 resume on RTL8168H/RTL8111H
    5b9c949c66846 doc: fix seg6_flowlabel path
    06477bbe26e04 net: dlink: handle dma_map_single() failure properly
    97760193e892b can: m_can: m_can_plat_remove(): add missing pm_runtime_disable()
    aca91cae0c917 dax: skip read lock assertion for read-only filesystems
    77711d850bed7 HID: multitouch: fix sticky fingers
    a510364e8cac0 cpufreq: CPPC: Avoid using CPUFREQ_ETERNAL as transition delay
    9699fd9e13df2 crypto: rockchip - Fix dma_unmap_sg() nents value
    df808a1f1550b drm/exynos: exynos7_drm_decon: remove ctx->suspended
    d6a3c53eebd1f drm/exynos: exynos7_drm_decon: properly clear channels during bind
    0e212fdcea59c drm/exynos: exynos7_drm_decon: fix uninitialized crtc reference in functions
    4b354a29166a3 blk-crypto: fix missing blktrace bio split events
    5918d914a3a67 media: lirc: Fix error handling in lirc_register()
    ddb9a92a999b6 media: rc: Directly use ida_free()
    723e7084497ef media: s5p-mfc: remove an unused/uninitialized variable
    78f6eaf14fe3d btrfs: fix clearing of BTRFS_FS_RELOC_RUNNING if relocation already running
    2e9e10657b041 ext4: detect invalid INLINE_DATA + EXTENTS flag combination
    14476553253b2 jbd2: ensure that all ongoing I/O complete before freeing blocks
    34033f75d0ccb r8152: add error handling in rtl8152_driver_init

(From OE-Core rev: 35316957236f12cda3a164d85177ecb4dc5fa434)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Bruce Ashfield
f1a1393dd0 linux-yocto/5.15: update to v5.15.195
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    ac56c046adf41 Linux 5.15.195
    636e7d6bdf205 selftests: mptcp: join: validate C-flag + def limit
    4b9b376856a95 mptcp: pm: in-kernel: usable client side with C-flag
    946771c2a2b11 mm/slab: make __free(kfree) accept error pointers
    81d0664bed91a media: pci: ivtv: Add check for DMA map result
    71285c029dcc4 xen/events: Update virq_to_irq on migration
    9c1df18612fbb media: pci: ivtv: Add missing check after DMA map
    66c8a83bf1de2 media: pci/ivtv: switch from 'pci_' to 'dma_' API
    55a954a54ffc8 arm64: mte: Do not flag the zero page as PG_mte_tagged
    26ea9b6a93a54 media: cx18: Add missing check after DMA map
    cb044864188cc media: switch from 'pci_' to 'dma_' API
    9339cf38762ce writeback: Avoid excessively long inode switching times
    6483eabc195dc writeback: Avoid softlockup when switching many inodes
    9b902f370b93e cramfs: Verify inode mode when loading from disk
    5c64e8be2a7ef fs: Add 'initramfs_options' to set initramfs mount options
    c3b654021931d pid: Add a judgment for ns null in pid_nr_ns
    1d144b4cdde08 minixfs: Verify inode mode when loading from disk
    3fb4c19233a0e minmax.h: remove some #defines that are only expanded once
    092036da9b6d5 minmax.h: simplify the variants of clamp()
    64394017d091a minmax.h: move all the clamp() definitions after the min/max() ones
    4942fcc84a1ee minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi test in clamp()
    5011c410f9670 minmax.h: reduce the #define expansion of min(), max() and clamp()
    b7ae5d8baa5ca minmax.h: update some comments
    2524736951b23 minmax.h: add whitespace around operators and after commas
    82b39b1090b0e minmax: fix up min3() and max3() too
    b1094b4b54b0f minmax: improve macro expansion and type checking
    3854a23090858 minmax: simplify min()/max()/clamp() implementation
    89f6bf22d039a minmax: don't use max() in situations that want a C constant expression
    e035ca130ff7f minmax: make generic MIN() and MAX() macros available everywhere
    4b5dda7f8b02a minmax: simplify and clarify min_t()/max_t() implementation
    3d1169785a9c1 minmax: add a few more MIN_T/MAX_T users
    e73a9333cdaee minmax: avoid overly complicated constant expressions in VM code
    9ed1e4221cb67 minmax: fix indentation of __cmp_once() and __clamp_once()
    d16b73f6c5939 minmax: deduplicate __unconst_integer_typeof()
    e3774f3281ed1 minmax: Introduce {min,max}_array()
    9c88de0e0c1e5 arm64: dts: qcom: sdm845: Fix slimbam num-channels/ees
    d238fee82dd83 btrfs: fix the incorrect max_bytes value for find_lock_delalloc_range()
    f2bd5493ef501 fscontext: do not consume log entries when returning -EMSGSIZE
    f550466949e82 locking: Introduce __cleanup() based infrastructure
    a0e54bd8d7ea7 dm: fix NULL pointer dereference in __dm_suspend()
    95dd33361061f tracing: Fix race condition in kprobe initialization causing NULL pointer dereference
    41acc922c7811 ksmbd: fix error code overwriting in smb2_get_info_filesystem()
    71a0ba7fdaf8d net: usb: asix: hold PM usage ref to avoid PM/MDIO + RTNL deadlock
    32097a08ab5de mfd: intel_soc_pmic_chtdc_ti: Set use_single_read regmap_config flag
    21d79eac5f953 mfd: intel_soc_pmic_chtdc_ti: Drop unneeded assignment for cache_type
    715f4914fdd3e mfd: intel_soc_pmic_chtdc_ti: Fix invalid regmap-config max_register value
    5d327391f9faf media: mc: Clear minor number before put device
    fbfc745db628d Squashfs: reject negative file sizes in squashfs_read_inode()
    2ec88c3d9f8fe Squashfs: add additional inode sanity checking
    49f3a867d948c ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data()
    44cee8ef325c0 ASoC: codecs: wcd934x: Simplify with dev_err_probe
    e0ce3ed1048a4 KVM: x86: Don't (re)check L1 intercepts when completing userspace I/O
    6836714a08756 lib/crypto/curve25519-hacl64: Disable KASAN with clang-17 and older
    a4e7273a45e85 ext4: free orphan info with kvfree
    505e69f76ac49 ext4: guard against EA inode refcount underflow in xattr update
    b975b3607605f ext4: correctly handle queries for metadata mappings
    32702f1ce389f ext4: increase i_disksize to offset + len in ext4_update_disksize_before_punch()
    95a21611b14ae ext4: verify orphan file size is not too big
    550e0bccec100 nfsd: nfserr_jukebox in nlm_fopen should lead to a retry
    8c5b1200596ce NFSD: Fix destination buffer size in nfsd4_ssc_setup_dul()
    735457683e235 mm/page_alloc: only set ALLOC_HIGHATOMIC for __GPF_HIGH allocations
    fff24a9c116d2 x86/umip: Fix decoding of register forms of 0F 01 (SGDT and SIDT aliases)
    46a986888a149 x86/umip: Check that the instruction opcode is at least two bytes
    eaa16de419692 spi: cadence-quadspi: Flush posted register writes before DAC access
    5a6c760bc332f spi: cadence-quadspi: Flush posted register writes before INDAC access
    f104a67b28053 PCI: tegra194: Fix broken tegra_pcie_ep_raise_msi_irq()
    870457e7b7229 PCI: keystone: Use devm_request_irq() to free "ks-pcie-error-irq" on exit
    5533169bb2539 PCI/AER: Support errors introduced by PCIe r6.0
    09adece72b8c8 PCI/AER: Fix missing uevent on recovery when a reset is requested
    1f06b4864177b PCI/ERR: Fix uevent on failure to recover
    a645ca21de09e PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV
    690f307a81954 PCI/sysfs: Ensure devices are powered for config reads
    b167bfa432e3c rseq/selftests: Use weak symbol reference, not definition, to link with glibc
    aaaa92ab55f13 rtc: interface: Fix long-standing race when setting alarm
    fa1bdbefe1f46 rtc: interface: Ensure alarm irq is enabled when UIE is enabled
    c19b29291f21c memory: samsung: exynos-srom: Fix of_iomap leak in exynos_srom_probe
    e5caecea44a7a mmc: core: SPI mode remove cmd7
    e614975f9b5df mtd: rawnand: fsmc: Default to autodetect buswidth
    971009a25fb8b sparc: fix error handling in scan_one_device()
    365282fc60155 sparc64: fix hugetlb for sun4u
    1cd60e0d0fb8f sctp: Fix MAC comparison to be constant-time
    d906e61d4d81b scsi: hpsa: Fix potential memory leak in hpsa_big_passthru_ioctl()
    9ee5eb3d09217 pwm: berlin: Fix wrong register in suspend/resume
    40c86afc81b51 powerpc/pseries/msi: Fix potential underflow and leak issue
    7bb05500a3ad3 powerpc/powernv/pci: Fix underflow and leak issue
    aa18f55365e93 nvme-pci: Add TUXEDO IBS Gen8 to Samsung sleep quirk
    6195d15fe4888 parisc: don't reference obsolete termio struct for TC* constants
    ef84ddf89dab4 openat2: don't trigger automounts with RESOLVE_NO_XDEV
    c2b88b66bc359 lib/genalloc: fix device leak in of_gen_pool_get()
    4ce6902cc67d7 KEYS: trusted_tpm1: Compare HMAC values in constant time
    e94c99c026179 iommu/vt-d: PRS isn't usable if PDS isn't supported
    d202d1ac609bc iio: imu: inv_icm42600: Drop redundant pm_runtime reinitialization in resume
    3ed42a6686f4f init: handle bootloader identifier in kernel parameters
    06d81ce319242 iio: frequency: adf4350: Fix prescaler usage.
    0016356ebd6a3 iio: dac: ad5421: use int type to store negative error codes
    c71fd8dcb7ae6 iio: dac: ad5360: use int type to store negative error codes
    8df273ef0f5ad fs/ntfs3: Fix a resource leak bug in wnd_extend()
    459d819648fe6 crypto: atmel - Fix dma_unmap_sg() direction
    ad4e8f9bdbef1 cpufreq: intel_pstate: Fix object lifecycle issue in update_qos_request()
    83b594504d64f copy_sighand: Handle architectures where sizeof(unsigned long) < sizeof(u64)
    816bb8b4e5c46 bus: mhi: host: Do not use uninitialized 'dev' pointer in mhi_init_irq_setup()
    d3a9a8e1275eb btrfs: avoid potential out-of-bounds in btrfs_encode_fh()
    184b0aab791a5 drm/nouveau: fix bad ret code in nouveau_bo_move_prep
    a812fc67d8855 media: i2c: mt9v111: fix incorrect type for ret
    e57d98c02ec84 firmware: meson_sm: fix device leak at probe
    0c2ac5a03a209 xen/manage: Fix suspend error path
    6f8e37bff9119 xen/events: Cleanup find_virq() return codes
    846f911295b2a ARM: OMAP2+: pm33xx-core: ix device node reference leaks in amx3_idle_init
    267801317911b arm64: dts: qcom: msm8916: Add missing MDSS reset
    3a0f197dd8e5f ACPI: debug: fix signedness issues in read/write helpers
    85580cbac5d4b ACPI: TAD: Add missing sysfs_remove_group() for ACPI_TAD_RT
    e28616ca3d67e bpf: Avoid RCU context warning when unpinning htab with internal structs
    28112b3d86b15 gpio: wcd934x: mark the GPIO controller as sleeping
    512aa949666ef gpio: wcd934x: Remove duplicate assignment of of_gpio_n_cells
    33e49de5dc09b tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single
    df58651968f82 crypto: essiv - Check ssize for decryption and in-place encryption
    4331a0ba2d15c bridge: br_vlan_fill_forward_path_pvid: use br_vlan_group_rcu()
    fa391f17a819f drm/amd/display: Properly disable scaling on DCE6
    cc857ceb2b3b4 drm/amd/display: Properly clear SCL_*_FILTER_CONTROL on DCE6
    736153f3c4933 drm/amd/display: Add missing DCE6 SCL_HORZ_FILTER_INIT* SRIs
    32ee65934d6b7 drm/amdgpu: Add additional DCE6 SCL registers
    057764172fcc6 bpf: Fix metadata_dst leak __bpf_redirect_neigh_v{4,6}
    b2986d63303d3 mailbox: zynqmp-ipi: Remove dev.parent check in zynqmp_ipi_free_mboxes
    e3602ddfcc2f9 mailbox: zynqmp-ipi: Remove redundant mbox_controller_unregister() call
    325425b0d066f tools build: Align warning options with perf
    b1d073728ef60 net: fsl_pq_mdio: Fix device node reference leak in fsl_pq_mdio_probe
    eb85ad5f23268 tcp: Don't call reqsk_fastopen_remove() in tcp_conn_request().
    dbceedc0213e7 net/sctp: fix a null dereference in sctp_disposition sctp_sf_do_5_1D_ce()
    4c918f9d1cccc drm/vmwgfx: Fix Use-after-free in validation
    fb5df8006adde drm/vmwgfx: Copy DRM hash-table code into driver
    4139b1e435e3f s390/cio: unregister the subchannel while purging
    2dbf27f672c03 net/mlx4: prevent potential use after free in mlx4_en_do_uc_filter()
    6ba7e73cafd15 scsi: mvsas: Fix use-after-free bugs in mvs_work_queue
    c1f8a7e6efe58 scsi: mvsas: Use sas_task_find_rq() for tagging
    77798c6e94fd2 scsi: mvsas: Delete mvs_tag_init()
    43c3e8ce2f5f0 scsi: libsas: Add sas_task_find_rq()
    9ecd496233772 cpufreq: tegra186: Set target frequency for all cpus in policy
    bb78ef6dc7470 clk: nxp: Fix pll0 rate check condition in LPC18xx CGU driver
    7d9eee92ed67a clk: nxp: lpc18xx-cgu: convert from round_rate() to determine_rate()
    b7e5c59f3b097 perf test: Don't leak workload gopipe in PERF_RECORD_*
    24e296d087f7d perf session: Fix handling when buffer exceeds 2 GiB
    3e97394445a0f rtc: x1205: Fix Xicor X1205 vendor prefix
    8dac32c17b01c perf util: Fix compression checks returning -1 as bool
    250cd976bbda0 clk: at91: peripheral: fix return value
    fcb3b7c30486d libperf event: Ensure tracing data is multiple of 8 sized
    1450bbb0ccd7f perf evsel: Avoid container_of on a NULL leader
    2977f02ee25a1 iio: frequency: adf4350: Fix ADF4350_REG3_12BIT_CLKDIV_MODE
    86e23d78ec177 clocksource/drivers/clps711x: Fix resource leaks in error paths
    ed43bf13a6ac8 fs: always return zero on success from replace_fd()
    70322caf9f193 usb: cdns3: cdnsp-pci: remove redundant pci_disable_device() call
    8a4dd74fe413d bus: fsl-mc: Check return value of platform_get_resource()
    d77ef2f621cd1 pinctrl: check the return value of pinmux_ops::get_function_name()
    e63aade22a33e Input: uinput - zero-initialize uinput_ff_upload_compat to avoid info leak
    9eed157e5e27f Input: atmel_mxt_ts - allow reset GPIO to sleep
    972cbba5cd384 nvdimm: ndtest: Return -ENOMEM if devm_kcalloc() fails in ndtest_probe()
    547e123e9d342 mm: hugetlb: avoid soft lockup when mprotect to large memory area
    26b1bfbd84172 ext4: fix checks for orphan inodes
    3901ae3c75a11 mfd: vexpress-sysreg: Check the return value of devm_gpiochip_add_data()
    8fcc7315a10a8 net: nfc: nci: Add parameter validation for packet data
    1d1847812a1a5 fs: udf: fix OOB read in lengthAllocDescs handling
    a44f61f878f32 uio_hv_generic: Let userspace take care of interrupt mask
    61d38b5ce2782 Squashfs: fix uninit-value in squashfs_get_parent
    21c58835634df Revert "net/mlx5e: Update and set Xon/Xoff upon MTU set"
    5aa9b88560281 net: dlink: handle copy_thresh allocation failure
    7973555560eb0 net: ena: return 0 in ena_get_rxfh_key_size() when RSS hash key is not configurable
    3fa52104e4797 nfp: fix RSS hash key size when RSS is not supported
    0eddc0e5aebcc drivers/base/node: fix double free in register_one_node()
    827c8efa0d1af ocfs2: fix double free in user_cluster_connect()
    d76b099011fa0 hwrng: ks-sa - fix division by zero in ks_sa_rng_init
    eb682b765533d Bluetooth: MGMT: Fix not exposing debug UUID on MGMT_OP_READ_EXP_FEATURES_INFO
    54f8ef1a970a8 net: usb: Remove disruptive netif_wake_queue in rtl8150_set_multicast
    5c06bc0b44ed8 RDMA/siw: Always report immediate post SQ errors
    8f67d2506f0ca usb: vhci-hcd: Prevent suspending virtually attached devices
    a89253eb4e648 scsi: mpt3sas: Fix crash in transport port remove by using ioc_info()
    1d79471414d7b ipvs: Defer ip_vs_ftp unregister during netns cleanup
    eb5da8e9db25a NFSv4.1: fix backchannel max_resp_sz verification check
    cef047e0a55cb coresight: trbe: Return NULL pointer for allocation failures
    0e9ec3bab4622 remoteproc: qcom: q6v5: Avoid disabling handover IRQ twice
    58ce0b1bc2711 sparc: fix accurate exception reporting in copy_{from,to}_user for M7
    b43c208c40179 sparc: fix accurate exception reporting in copy_to_user for Niagara 4
    37547d8e6eba8 sparc: fix accurate exception reporting in copy_{from_to}_user for Niagara
    1857cdca12c4a sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC III
    59424dc0d0e04 sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC
    4acb786042da4 wifi: ath10k: avoid unnecessary wait for service ready message
    c6d3da43b8540 Documentation: trace: historgram-design: Separate sched_waking histogram section heading and the following diagram
    c15829a1fb0b0 IB/sa: Fix sa_local_svc_timeout_ms read race
    d77fb0bdce411 RDMA/core: Resolve MAC of next-hop device without ARP support
    77edaeb4dde29 Revert "usb: xhci: Avoid Stop Endpoint retry loop if the endpoint seems Running"
    523d184a495be scsi: qla2xxx: Fix incorrect sign of error code in START_SP_W_RETRIES()
    ce75dfd1748e7 scsi: qla2xxx: edif: Fix incorrect sign of error code
    54ded576045ef ACPI: NFIT: Fix incorrect ndr_desc being reportedin dev_err message
    248776651cef4 wifi: mt76: fix potential memory leak in mt76_wmac_probe()
    795c8dbc82827 RDMA/cm: Rate limit destroy CM ID timeout error message
    1bdb3bc5bfd33 drivers/base/node: handle error properly in register_one_node()
    eeeaa4b5a5f52 watchdog: mpc8xxx_wdt: Reload the watchdog timer when enabling the watchdog
    6a9c2fcf6de54 netfilter: ipset: Remove unused htable_bits in macro ahash_region
    581ba44117ed7 iio: consumers: Fix offset handling in iio_convert_raw_to_processed()
    f6b36cfd25cba fs: ntfs3: Fix integer overflow in run_unpack()
    95e29db33b5f7 ASoC: Intel: bytcr_rt5651: Fix invalid quirk input mapping
    dea9c8c9028c9 ASoC: Intel: bytcr_rt5640: Fix invalid quirk input mapping
    fbd79072f1cab ASoC: Intel: bytcht_es8316: Fix invalid quirk input mapping
    125527db41805 pps: fix warning in pps_register_cdev when register device fail
    f77e91b4283b5 misc: genwqe: Fix incorrect cmd field being reported in error
    c2024c8abd742 usb: gadget: configfs: Correctly set use_os_string at bind
    fe9fdc066c8cf usb: phy: twl6030: Fix incorrect type for ret
    650368aacbc78 drm/amdkfd: Fix error code sign for EINVAL in svm_ioctl()
    82448110ee625 tcp: fix __tcp_close() to only send RST when required
    14ebe743b9647 PCI: tegra: Fix devm_kcalloc() argument order for port->phys allocation
    94aa9bf2ddfcb wifi: mwifiex: send world regulatory domain to driver
    8b3589d7a763a drm/amdgpu: Power up UVD 3 for FW validation (v2)
    e00d07d780b3d ALSA: lx_core: use int type to store negative error codes
    39d0e7fd73efb media: rj54n1cb0c: Fix memleak in rj54n1_probe()
    916c7891b59b9 scsi: myrs: Fix dma_alloc_coherent() error check
    eef5ef400893f scsi: pm80xx: Fix array-index-out-of-of-bounds on rmmod
    e0e0ce06f3571 usb: host: max3421-hcd: Fix error pointer dereference in probe cleanup
    2cd9c97ad5529 drm/radeon/r600_cs: clean up of dead code in r600_cs
    666da97c49c2d i2c: designware: Add disabling clocks when probe fails
    90fb83f7863b6 i2c: mediatek: fix potential incorrect use of I2C_MASTER_WRRD
    31660d4d93057 thermal/drivers/qcom/lmh: Add missing IRQ includes
    32240232b2a3b thermal/drivers/qcom: Make LMH select QCOM_SCM
    ae7b1443f4746 tools/nolibc: make time_t robust if __kernel_old_time_t is missing in host headers
    0b515a2839980 smp: Fix up and expand the smp_call_function_many() kerneldoc
    6d8b1a21fd5c3 bpf: Explicitly check accesses to bpf_sock_addr
    e822f368f758a selftests: watchdog: skip ping loop if WDIOF_KEEPALIVEPING not supported
    7ac8f7a186451 i3c: master: svc: Recycle unused IBI slot
    11269c08013f4 nvmet-fc: move lsop put work to nvmet_fc_ls_req_op
    ebf97395b0a0b pwm: tiehrpwm: Fix corner case in clock divisor calculation
    cc2b2a8c18a96 arm64: dts: mediatek: mt8516-pumpkin: Fix machine compatible
    3c8ceb2d4dbdb firmware: firmware: meson-sm: fix compile-test default
    5cfaadc902249 pinctrl: renesas: Use int type to store negative error codes
    45052d922054c PM: sleep: core: Clear power.must_resume in noirq suspend error path
    22863772e94fd block: use int to store blk_stack_limits() return value
    a04120b2d187b regulator: scmi: Use int type to store negative error codes
    2927ef93169a0 ARM: at91: pm: fix MCKx restore routine
    4b97e99b87a77 blk-mq: check kobject state_in_sysfs before deleting in blk_mq_unregister_hctx
    29db98243205b pinctrl: meson-gxl: add missing i2c_d pinmux
    8b063076fa7e1 soc: qcom: rpmh-rsc: Unconditionally clear _TRIGGER bit for TCS
    1955c776a6077 ACPI: processor: idle: Fix memory leak when register cpuidle device failed
    ce780f740cf44 cpufreq: scmi: Account for malformed DT in scmi_dev_used_by_cpus()
    3a502b0eefcfc libbpf: Fix reuse of DEVMAP
    c6552fac71990 regmap: Remove superfluous check for !config in __regmap_init()
    64f14b1ab6f39 x86/vdso: Fix output operand size of RDPID
    5d01f2b815682 perf: arm_spe: Prevent overflow in PERF_IDX2OFF()
    90ea4c0484ebb coresight: trbe: Prevent overflow in PERF_IDX2OFF()
    0ddd59d58b597 selftests: arm64: Check fread return value in exec_target
    cf038b6bb9ed5 filelock: add FL_RECLAIM to show_fl_flags() macro
    c1db864270eb7 net/9p: fix double req put in p9_fd_cancelled
    3fe58fa612052 minmax: add in_range() macro
    bd903c25b652c crypto: rng - Ensure set_ent is always present
    46263a0b687a0 platform/x86: int3472: Check for adev == NULL
    823671bb8b05d driver core/PM: Set power.no_callbacks along with power.no_pm
    53dab62cda6e7 staging: axis-fifo: flush RX FIFO on read errors
    82e0bb28a060c staging: axis-fifo: fix maximum TX packet length check
    e18cfcb828ed2 serial: stm32: allow selecting console when the driver is module
    48685b39f2fed hid: fix I2C read buffer overflow in raw_event() for mcp2221
    c094712e40488 perf subcmd: avoid crash in exclude_cmds when excludes is empty
    0eb762f420b25 dm-integrity: limit MAX_TAG_SIZE to 255
    8ed134c2520d7 wifi: rtlwifi: rtl8192cu: Don't claim USB ID 07b8:8188
    6c7c5b465a7b8 USB: serial: option: add SIMCom 8230C compositions
    663faf1179db9 media: i2c: tc358743: Fix use-after-free bugs caused by orphan timer in probe
    3f876cd47ed8b media: tuner: xc5000: Fix use-after-free in xc5000_release
    3fdeb807b93d0 media: tunner: xc5000: Refactor firmware load
    c3ad8c30b6b10 udp: Fix memory accounting leak.
    20fc1431bcdf4 KVM: arm64: Fix softirq masking in FPSIMD register saving sequence
    71c52b073922d media: rc: fix races with imon_disconnect()
    120e221b4bbe9 media: b2c2: Fix use-after-free causing by irq_check_work in flexcop_pci_remove
    ddc79fba132b8 scsi: target: target_core_configfs: Add length check to avoid buffer overflow
    9407809b44dc6 iommu/amd: Add map/unmap_pages() iommu_domain_ops callback support

(From OE-Core rev: a6b566b362d8d4f200d48bfa4c97297c45c9443e)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Aleksandar Nikolic
1d5c8af9c4 scripts/install-buildtools: Update to 4.0.32
Update to the 4.0.32 release of the 4.0 series for buildtools

(From OE-Core rev: 7c3f192e5f29eb54c1aa64d31b92255d13e4605a)

Signed-off-by: Aleksandar Nikolic <aleksandar.nikolic22@pm.me>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Peter Marko
9a24d18f40 inetutils: patch CVE-2026-24061
Pick patches per [1].

[1] https://security-tracker.debian.org/tracker/CVE-2026-24061

(From OE-Core rev: 042f02ff7072e9cf4b02a335d1d3186d68ba669b)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Vijay Anusuri
7cdc92f5cb openssl: upgrade 3.0.18 -> 3.0.19
This release incorporates the following bug fixes and mitigations:

Fixed Stack buffer overflow in CMS AuthEnvelopedData parsing. (CVE-2025-15467)
Fixed Heap out-of-bounds write in BIO_f_linebuffer on short writes. (CVE-2025-68160)
Fixed Unauthenticated/unencrypted trailing bytes with low-level OCB function calls. (CVE-2025-69418)
Fixed Out of bounds write in PKCS12_get_friendlyname() UTF-8 conversion. (CVE-2025-69419)
Fixed Missing ASN1_TYPE validation in TS_RESP_verify_response() function. (CVE-2025-69420)
Fixed NULL Pointer Dereference in PKCS12_item_decrypt_d2i_ex() function. (CVE-2025-69421)
Fixed Missing ASN1_TYPE validation in PKCS#12 parsing. (CVE-2026-22795)
Fixed ASN1_TYPE Type Confusion in the PKCS7_digest_from_attributes() function. (CVE-2026-22796)

Changelog:
https://github.com/openssl/openssl/blob/openssl-3.0.19/NEWS.md

Refreshed CVE-2023-50781 patches for openssl-3.0.19

Reference: https://openssl-library.org/news/secadv/20260127.txt

(From OE-Core rev: 9b419ead79a1c137ba98d86969fd29808d6da49e)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Peter Marko
99c192aae2 expat: patch CVE-2026-25210
Pick patches from [1].

[1] https://github.com/libexpat/libexpat/pull/1075

(From OE-Core rev: 406471f765fd1ce6bc5aab51c724476684e40d21)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Peter Marko
3a7aa79ca2 expat: patch CVE-2026-24515
Pick fix commit from PR linked in NVD report.

(From OE-Core rev: e3c0ac137e50d35e83e8e4ed2c4e09f2eb9d3bca)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Peter Marko
a8c5e5e573 libxml2: add follow-up patch for CVE-2026-0992
References:
* https://gitlab.gnome.org/GNOME/libxml2/-/issues/1019
* https://gitlab.gnome.org/GNOME/libxml2/-/merge_requests/377

(From OE-Core rev: 957244b2861f394237b8a3ec4d549d5118627955)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Peter Marko
9998d74d24 libxml2: patch CVE-2026-0992
Pick patch which closed [1].
Adapt for missing xmlCatalogPrintDebug per [2].

[1] https://gitlab.gnome.org/GNOME/libxml2/-/issues/1019
[2] 728869809e

(From OE-Core rev: efef4d450500eb3a43b9f1f399ca84f9ca837d8b)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Peter Marko
bd6c85cfa6 libxml2: patch CVE-2026-0990
Pick patch which closed [1].

[1] https://gitlab.gnome.org/GNOME/libxml2/-/issues/1018

(From OE-Core rev: 3af64204dec407546bed8f1dc0cb8b4a1501e471)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Peter Marko
e7b549ecaa python3: patch CVE-2025-12084
Pick patch for this CVE merged into 3.10 branch.

(From OE-Core rev: 8888cd14eb102574d530b6c683ce5beaad1aaa39)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Peter Marko
4ad238e9c1 python3: patch CVE-2025-13837
Pick patch from 3.12 branch per NVD report.

(From OE-Core rev: cfbac1d5edae4b0204ec4c01b5f710d100ceb2ad)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Peter Marko
ad756dec39 zlib: ignore CVE-2026-22184
This is CVE for example tool contrib/untgz.
This is not compiled in Yocto zlib recipe.

This CVE has controversial CVSS3 score of 9.8.

(From OE-Core rev: 1bdcd62d34b0b060b0e1e5142c5f3e7075f21cc2)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
2026-02-27 15:54:01 +00:00
Lee Chee Yang
58f9b898da migration-guides: add release notes for 4.0.32
(From yocto-docs rev: 398a2a080361eb22b9c447dbde31fca58bf4e0bb)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 095981c08b9d63905472df5d1d60c07af96f0250)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-12 17:00:21 +00:00
Antonin Godard
e60019c6eb dev-manual/packages.rst: fix example recipe version
The example recipe taken above is hello-world on version 1.0 (because
PV equals "1.0+git". Fix this issue.

(From yocto-docs rev: a48ab61034d50be1026b939112f4a5c58bed7b88)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 411122812ced4ec32127a823896a73aacf6eb97c)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-12 17:00:21 +00:00
Antonin Godard
7794952de8 dev-manual/packages.rst: rename r0.0 to r0 when PR server is not enabled
When we don't have a PR server enabled, we don't have leading ".0" to
the PKGR variable, as this is added by the PR server.

(From yocto-docs rev: 4c64db73fa68b6dbc11fe4b64452b0d6b7ee0280)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 7a0324b6a10e64ee250945747db10ca88040b1ce)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-12 17:00:21 +00:00
Antonin Godard
7bb35f44d9 dev-manual/packages.rst: pr server: fix and explain why r0.X increments on SRCREV change
The current example of the SRCREV change triggering a gitX bump is
wrong, as both gitX and r0.X get incremented.

Why this is happening is explained in bug 15729, which I copy here:

> +gitX+ is indeed related to changes in the source code.
>
> r0.X is bumped each time the checksum of the do_package task of the
> simple-hello-world-git recipe changes. This happens here:
> https://git.openembedded.org/openembedded-core/tree/meta/classes-global/package.bbclass?id=235e6d49e5888ad04416219e10b6df91a738661a#n306
>
> This line sets the value of PRAUTO and represents the number X found in
> r0.X. It will in the end make it into EXTENDPRAUTO, which itself makes
> to PKGR == r0.X.
>
> This line calls getPR(version, pkgarch, checksum). Between test case 5
> and 6, only the checksum changes. This checksum is the checksum of the
> do_package task (gotten from get_do_package_hash() above).
>
> Now, let's dump what changed with regards to this task between two
> consecutive runs, using the sigdata file in build/tmp/stamps/:
>
> ```
> [...]
> Variable fetcher_hashes_dummyfunc value changed from '2650ad6714c3f3248abfe9d3daf1196f307ed494' to '4af682a50174f5deb0397847da97d7cdba4ad067'
> ```
>
> The last line shows that the value of fetcher_hashes_dummyfunc changed
> from '2650ad6714c3f3248abfe9d3daf1196f307ed494' to
> '4af682a50174f5deb0397847da97d7cdba4ad067'. Those are the commit hashes
> in the git history of the simple-hello-world-git repository.
>
> Now you can see why this 0.X gets bumped, is because of the SRCREV change.

Fix the example, and detail what gets changed and why.

[YOCTO #15729]

Cc: Robert Berger <pokylinux@reliableembeddedsystems.com>
(From yocto-docs rev: 8d7b549d095c2ca04d4c7ff5a92f6de9fceb8496)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 09f0430bc69024b9854c31ba6783ddd807aa4f19)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-12 17:00:21 +00:00
Richard Purdie
c3b734f0a7 build-appliance-image: Update to kirkstone head revision
(From OE-Core rev: e2994ca0076ec99038790e7a40936236a5078135)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-12 17:00:21 +00:00
Antonin Godard
ff118ede82 contributor-guide/recipe-style-guide.rst: explain difference between layer and recipe license(s)
Explain that the LICENSE set in a recipe does not apply to the recipe
file itself, but to the underlying software. The license of the recipe
file is the license provided in the layer itself. Give OpenEmbedded-Core
as an example for this.

Fixes [YOCTO #14410]

(From yocto-docs rev: 6799b1be5d48f4bf5dcd0b16c2dbc2e297d4ecd9)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit b8a56b8b2e8c0417b2f7204f80c79b05d95e9ce4)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
d5bcc413d0 ref-manual/variables.rst: document the CCACHE_TOP_DIR variable
Added by commit 35d7fe73bba1 ("ccache.bbclass: Make it can be shared
between different builds") in OE-Core.

Fixes [YOCTO #16052]

(From yocto-docs rev: e4f5ba7bb34586cd7bee7f0fe69c39b36dabb357)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 550ef8340b550f8d4e9c3d0672190dc09592c621)
Fix conflicts: CCLD variable in master not on kirkstone.
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
72eb266009 overview-manual: convert YP-flow-diagram.png to SVG
Based on diagrams/poky-buildprocess/Pokyarch_diag.svg, replace the PNG
graphic for the YP flow to an SVG graphic.

(From yocto-docs rev: 2983418bec7a2faeaae4e831b8f642ff0cd95980)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit d2aaf54bee49295bdf81021648cb27499930edc6)
Fix conflicts (different alignment on master, keep one from kirkstone)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
d66f9ee0ef overview-manual/yp-intro.rst: fix SDK type in bullet list
The YP generates an SDK by default, which can be meta-toolchain, an
image-specific one, or an extensible SDK (eSDK). Don't be specific in
this bullet list.

(From yocto-docs rev: 3c455c5a2892611d2323610170f9600ceb953f6c)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit f02c64286504353e97c7e5fe5c0d193776469ad1)
Fix conflict (#. on master, 7. on kirkstone)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
5489d2b5b6 ref-manual/release-process.rst: add a "Development Cycle" section
Add a new section to release-process.rst to document the development
cycle of each release and namely the milestones and feature freeze
occuring after M3.

Fixes [YOCTO #15979]

(From yocto-docs rev: f7888e3c3267ec7c39374f694f86088598bea649)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 77c04cc5944acda7575546a7434e014e4a75ba58)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
e3fdce60c0 test-manual/ptest.rst: detail the exit code and output requirements
A ptest must emit at least one test result on the console, as this is
required by the testimage class (which ignores the exit code).
ptest-runner on the other hand, ignore the output and only cares about
the exit code.

Add these two items as requirements for a ptest to be valid.

Fixes [YOCTO #15832]

Reviewed-by: Yoann Congal <yoann.congal@smile.fr>
(From yocto-docs rev: 916be11467d87d39e4ad5ea218237258523f3953)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 9292f61d7ba89598c89033ea7ee3b11a20d873f3)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
a4aa1bc237 ref-manual/classes.rst: document the image-container class
Add documentation for the image-container class, which is a simple class
to generate an image suitable for creating a container.

This answers in part to questions asked in [YOCTO #14368].

It also adds documentation for IMAGE_CONTAINER_NO_DUMMY, which was added
in OE-Core with commit f0645e172bb8 ("image-container.bbclass: Error if
not using linux-dummy").

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

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 6ce00e5875eb3469fefd55cc22acaaeaf620053a)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
cb99d0b1c5 Add a new "Security" section
The current security-related documentation is a bit hard to find and
hidden within the development manual. However these are processes that
are not part of a development task but is rather a vulnerability
reporting process.

Create a new "Security" section in the documentation to gather this
information. This will be directly visible in the sidebar when opening
the documentation.

Split the previous security-subjects.rst document into 2 documents:

- security-team.rst: defines the roles of the security teams and its
  members.

- reporting-vulnerabilities.rst: guide to report vulnerabilities to the
  security team.

The plan is to backport these documents to active releases. As a
consequence, this section should be free of instructions and information
that only make sense for a specific release. It should _not_ contain
documents on how to enable security features with Yocto on target
devices, this is unrelated and can be left in the development manual
(for example: dev-manual/vulnerabilities.rst to deal with CVEs).

(From yocto-docs rev: 3fd0f37d708d88534dd6dbb51dc264911c349352)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 81e14ca2d5cff9e2104c556655144b069633790c)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
e1c9a5d58f ref-manual/svg/releases.svg: mark whinlatter as current release
Whinlatter is the new current Yocto Project release, mark it as an
active one. Move it as released in December 2025.

(From yocto-docs rev: 7f6dff5c3d549cbd5040c15261bdb38a54dbd69e)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 6f8e97c6e529f3c47f45f34d9e04e3ad7bddd587)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
0071164ce8 ref-manual/svg/releases.svg: mark styhead and walnascar EOL
Walnascar has stopped being updated a while ago, and Styhead is EOL
since May 2025.

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

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 834de77b543de43ee3c1c12ca1d6277e67e126de)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
10233e97f7 overview-manual/yp-intro.rst: link to YP members and participants
Instead of a fixed list of commercial vendors, link to existing lists on
the YP website.

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

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 9d394db4f88b66500e4d5a2a518d25f08a0c9472)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Antonin Godard
941d1d47c1 overview-manual/yp-intro.rst: change removed ECOSYSTEM to ABOUT
The ABOUT tab is where the members/participants are listed now.

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

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit a8a8d810f0505529aaaa90678e03152c8ac0c00b)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 18:54:18 +00:00
Richard Purdie
5abd143cb5 build-appliance-image: Update to kirkstone head revision
(From OE-Core rev: 036f76ea35c49a78d612093dcd8eb1fac7ded8d7)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:50:42 +00:00
Paul Barker
71ae82a596 poky.conf: Bump version for 4.0.33 release
(From meta-yocto rev: 677379f21941363d50f9d946963542b4ccb7e27c)

Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:50:26 +00:00
Khem Raj
6f2c1098a6 oeqa: Use 2.14 release of cpio instead of 2.13
2.13 may not be buildable with latest compilers without patching

(From OE-Core rev: 64d56cf416b31ae92438deefe4028402120ed998)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

(cherry picked from commit 406a33f896accc35a9cb6ab156f1e0f42dda67d8)
Backport: Fix [YOCTO #16137] by using the same archive as the cpio
recipe, ensuring the archive is in DL_DIR and so, avoiding reaching
unreliable upstream server.
This upgrade is safe to do because this archive is only use to test that
it compiles.

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Richard Purdie
74924f0891 pseudo: Update to pull in 'makewrappers: Fix EFAULT implementation'
The pseudo update was causing hangs in builds, pull in the fix.

(From OE-Core rev: e514b1ac74ae8a69b15e3459cb3b327a35cabff8)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 8acdbefd0a148c8b7713f46066ae8489984c5d2d)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Richard Purdie
d087748248 pseudo: Update to pull in openat2 and efault return code changes
Pulls in the following fixes:

 * makewrappers: Enable a new efault option
 * ports/linux/openat2: Add dummy wrapper
 * test-syscall: Add a syscall test
 * ports/linux/pseudo_wrappers: Avoid openat2 usage via syscall

which should fix issues with the tar CVE fix on Centos/Alma/Rocky 9 distros
that uses openat2 as well as the efault issue breaking rust based uutils.

(From OE-Core rev: edc8c8e0ae511b03cb9d0501d472bb42fbea2c8b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

(cherry picked from commit 51f1388dd1679a28ec3ca468cf16aa0ea32bccf9)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Paul Barker
401a9cdd7d pseudo: Add hard sstate dependencies for pseudo-native
Where a task (such as do_package) runs under fakeroot, the corresponding
setscene task (do_package_setscene) will also run under fakeroot when
restoring from sstate. Assuming pseudo is used as the fakeroot
implementation, we need pseudo-native and all its runtime dependencies
to be available in the sysroot before running any setscene tasks under
fakeroot.

We already add a hard dependency from all do_package_setscene tasks to
virtual/fakeroot-native:do_populate_sysroot in base.bbclass, but this
does not cover transitive dependencies. So, extend the dependencies of
pseudo-native:do_populate_sysroot_setscene to ensure that the sqlite3
library is also available in the sysroot before running fakeroot
setscene tasks.

[YOCTO #15963]

(From OE-Core rev: e3c07672d22343cd7ac68cb84716b05ec7cd438b)

Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2c146ca657440550e00bc5e53d13502ef7aa945b)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Richard Purdie
42eb45b3a0 pseudo: Update to pull in memleak fix
(From OE-Core rev: d789b03d33d9a0fce335080f667c29ed45515726)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 42137b6f97da0672af365cd841678f39ce5907d2)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Robert Yang
3a3b526edb pseudo: 1.9.0 -> 1.9.2
(From OE-Core rev: 2093a9c80e391795abbac8766569583a3547e43b)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 48a42747fd280ce68283e1491971d22273e3bdf2)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Richard Purdie
8a6b3d82f6 pseudo: Upgrade to version 1.9.1
This brings in:
 * nftw, nftw64: add wrapper
 * ftw, nftw, ftw64, nftw64: add tests
 * Move ftw and ftw64 to calling ntfw and nftw64
 * makewrappers: Introduce 'array' support
 * pseudo_util.c: Avoid warning when we intentionally discard const
 * pseudo_client.c: Fix warning
 * yocto-older-glibc-symbols.path: Add as a reference patch
 * pseudo/pseudo_client: Add wrapper functions to operate correctly with glibc 2.38 onwards
 * configure: Prune PIE flags
 * test/test-parallel-rename.sh: Add parallel rename test
 * test/test-parallel-symlinks.sh: Add parallel symlink test
 * ports/linux/guts: Add .gitignore to ignore generated files

(From OE-Core rev: b3140c624504b19a2b2faec8df89f57a99cefce1)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 994e508b2a0ede8b5cc4fe39444cf25dc9a53faf)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Vijay Anusuri
2c23fc4f0e binutils: Fix CVE-2025-1181
import patch from ubuntu to fix
 CVE-2025-1181

Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/binutils/tree/debian/patches?h=ubuntu/jammy-security
Upstream commit
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=931494c9a89558acb36a03a340c01726545eef24
&
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=18cc11a2771d9e40180485da9a4fb660c03efac3]

(From OE-Core rev: 55d4b81b15b6eb2e221ff69dc791d2e319fad234)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>

[Yoann Congal: Corrected the second patch SHA1 in URLs "18cc11a..."]
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
71966f1bad gnupg: patch CVE-2025-68973
Pick patch from 2.4 branch per [1].

[1] https://security-tracker.debian.org/tracker/CVE-2025-68973

(From OE-Core rev: 403a9bc3da3574d828cfbce805df48d0181eafed)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
cd8f4444b2 curl: patch CVE-2025-15224
Pick patch per [1].

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

(From OE-Core rev: db87200a8ae19d40e7a8f038d9fe4e426f159ad3)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
2bf97e4e41 curl: patch CVE-2025-15079
Pick patch per [1].

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

(From OE-Core rev: 8ce2a761c2f00e9c7782654cf6d6384ccd3f6e16)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
fd21399bac curl: patch CVE-2025-14017
Pick patch per [1].

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

(From OE-Core rev: ae23e163f7399e957a100dc13d9cd0b829eef2f4)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
2654f4f66c libarchive: fix CVE-2025-60753 regression
Pick patch from PR mentioned in v3.8.5 release notes.

(From OE-Core rev: dc3d99c419a913e66cb73bf098291c21985b0432)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Hitendra Prajapati
cfb6825c35 python3: fix CVE-2025-13836
Upstream-Status: Backport from 289f29b0fe

(From OE-Core rev: d3bcb5ded27003612ad591764f648e83e91c27ca)

Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
51201f6c54 libpcap: patch CVE-2025-11964
Pick patch per [1].

[1] https://nvd.nist.gov/vuln/detail/CVE-2025-11964

(From OE-Core rev: 026c6e7ee386ae09b9a2ef22d69730fc838ddf4f)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
a12f120831 libpcap: patch CVE-2025-11961
Pick patch per [1].
Also pick additional preparation patch to apply it cleanly.

[1] https://nvd.nist.gov/vuln/detail/CVE-2025-11961

(From OE-Core rev: 714fb7c711b414407598e3a94b0600fe7f857e38)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
4c8419bebe python3-urllib3: patch CVE-2025-66418
Pick patch per [1].

[1] https://nvd.nist.gov/vuln/detail/CVE-2025-66418

(From OE-Core rev: 469fcdd5f07635fa9e308c968126807c1ca09647)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
842275784a dropbear: patch CVE-2019-6111
Pick patch mentioning this CVE number.

(From OE-Core rev: 3a8effd37b83cab3421ee1fe59da232cdf338743)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
46bfac5bd7 cups: allow unknown directives in conf files
Patch for CVE-2025-61915 by mistake causes fatal error on unknown
directives in configuration files.
The default configuration already contains unknown directive in
non-systemd setups:
Unknown directive IdleExitTimeout on line 32 of /etc/cups/cupsd.conf

Backport fix for this from 2.4.x branch which reverts this behavior.

(From OE-Core rev: 6faf1266813efa21503511834cbb12f0d63c82fe)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
17f7dd686d cups: patch CVE-2025-61915
Pick patch per [1].

[1] https://nvd.nist.gov/vuln/detail/CVE-2025-61915

(From OE-Core rev: 522d8a64335bb3faa7a2ed492fca1bdd665fb236)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
3f703ca1c4 cups: patch CVE-2025-58436
Pick patch from branch 2.4.x corresponding to patch mentioned in [1].

[1] https://nvd.nist.gov/vuln/detail/CVE-2025-58436

(From OE-Core rev: f1014ff6d886312afd55473497934590bc9c78ac)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
15ea9a3dcb qemu: ignore CVE-2025-54566 and CVE-2025-54567
These CVEs are not applicable to version 6.2.x as the vulnerable code
was introduced inly in 10.0.0.

Debian made the analysis, reuse their work.
* https://security-tracker.debian.org/tracker/CVE-2025-54566
* https://security-tracker.debian.org/tracker/CVE-2025-54567

(From OE-Core rev: 616e6c793bd025337aa8b66450408829fdfe59d5)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
b06df1f496 glib-2.0: patch CVE-2025-14512
Pick patch from [1] linked from [2].

[1] https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4935
[2] https://gitlab.gnome.org/GNOME/glib/-/issues/3845

(From OE-Core rev: 2fb84f36c77e0d049a71dcfa597a67d297cbfd0a)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
32417b8ef7 glib-2.0: patch CVE-2025-14087
Pick commits from [1] linked from [2].

[1] https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4933
[2] https://gitlab.gnome.org/GNOME/glib/-/issues/3834

(From OE-Core rev: 6e1ce2de818d647d69f652ab67c0c2d13860e77b)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
0092f97678 glib-2.0: patch CVE-2025-13601
Pick commits from [1] per [2].

[1] https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4914
[2] https://nvd.nist.gov/vuln/detail/CVE-2025-13601

(From OE-Core rev: eb0e4e0fce9378100e4482fc91d6886d84ef7ec2)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Peter Marko
0736fb2025 util-linux: patch CVE-2025-14104
Pick patches per [1].

[1] https://security-tracker.debian.org/tracker/CVE-2025-14104

(From OE-Core rev: 8f7f1562f6cba3b67cc4301702c03ab31551a155)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:49:25 +00:00
Vijay Anusuri
c942cdb057 go: Fix CVE-2025-61729
Upstream-Status: Backport from 3a842bd5c6

(From OE-Core rev: 0057fc49725db8637656fac10631d8f89799bad3)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2026-01-02 07:21:42 -08:00
Vijay Anusuri
690dcd2621 go: Fix CVE-2025-61727
Upstream-Status: Backport from 04db77a423

(From OE-Core rev: dc1d95e3edfeaa5458fc564910ae5c9445a6f942)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2026-01-02 07:21:42 -08:00
Vijay Anusuri
084488d13f go: Update CVE-2025-58187
Upstream-Status: Backport from ca6a5545ba

(From OE-Core rev: 43b3d2b2ef77c97b323b86bd6ee54996c38e46ed)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2026-01-02 07:21:42 -08:00
Jiaying Song
5e7ac0aa43 grub: fix CVE-2025-61661 CVE-2025-61662 CVE-2025-61663 CVE-2025-61664
References:
https://nvd.nist.gov/vuln/detail/CVE-2025-61661
https://nvd.nist.gov/vuln/detail/CVE-2025-61662
https://nvd.nist.gov/vuln/detail/CVE-2025-61663
https://nvd.nist.gov/vuln/detail/CVE-2025-61664

(From OE-Core rev: f2031f39e423b764ccf4003bdee05f30d66fb7ce)

Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2026-01-02 07:21:42 -08:00
Martin Jansa
37dc9a476a cross.bbclass: Propagate dependencies to outhash
Similar to what native and staging is doing since:
https://git.openembedded.org/openembedded-core/commit/meta/classes/native.bbclass?id=d6c7b9f4f0e61fa6546d3644e27abe3e96f597e2
https://git.openembedded.org/openembedded-core/commit/meta/classes/staging.bbclass?id=1cf62882bbac543960e4815d117ffce0e53bda07

Cross task outputs can call native dependencies and even when cross
recipe output doesn't change it might produce different results when
the called native dependency is changed, e.g. clang-cross-${TARGET_ARCH}
contains symlink to clang binary from clang-native, but when clang-native
outhash is changed, clang-cross-${TARGET_ARCH} will still be considered
equivalent and target recipes aren't rebuilt with new clang binary, see
work around in https://github.com/kraj/meta-clang/pull/1140 to make target
recipes to depend directly not only on clang-cross-${TARGET_ARCH} but
clang-native as well.

I have added a small testcase in meta-selftest which demostrates this issue.
Not included in this change, but will send it if useful.

openembedded-core $ ls -1 meta-selftest/recipes-devtools/hashequiv-test/
print-datetime-link-cross.bb
print-datetime-link-native.bb
print-datetime-native.bb
print-datetime-usecross.bb
print-datetime-usenative.bb

print-datetime-native provides script which prints defined PRINT_DATETIME variable.

print-datetime-link-native and print-datetime-link-cross both provide a symlink to
the script from print-datetime-native.

print-datetime-usenative and print-datetime-usecross are target recipes using the
native and cross versions of print-datetime-link-* recipe.

  # clean build all is rebuilt:
  $ bitbake -k print-datetime-usenative print-datetime-usecross
  WARNING: print-datetime-native-1.0-r0 do_install: print-datetime-native current DATETIME in script is 2025-11-13_20_05
  WARNING: print-datetime-link-native-1.0-r0 do_install: print-datetime-link-native current DATETIME in symlink is 2025-11-13_20_05
  WARNING: print-datetime-link-cross-x86_64-1.0-r0 do_install: print-datetime-link-cross-x86_64 current DATETIME in symlink is 2025-11-13_20_05
  WARNING: print-datetime-usenative-1.0-r0 do_install: print-datetime-usenative current DATETIME from print-datetime-link is 2025-11-13_20_05
  WARNING: print-datetime-usecross-1.0-r0 do_install: print-datetime-usecross current DATETIME from print-datetime-link is 2025-11-13_20_05

  # keep sstate-cache and hashserv.db:
  # print-datetime-usenative is correctly rebuilt, because print-datetime-link-native has different hash (because print-datetime-native hash changed)
  # print-datetime-usecross wasn't rebuilt, because print-datetime-link-cross-x86_64 doesn't include the changed hash of print-datetime-native
  $ bitbake -k print-datetime-usenative print-datetime-usecross
  WARNING: print-datetime-native-1.0-r0 do_install: print-datetime-native current DATETIME in script is 2025-11-13_20_07
  WARNING: print-datetime-link-native-1.0-r0 do_install: print-datetime-link-native current DATETIME in symlink is 2025-11-13_20_07
  WARNING: print-datetime-link-cross-x86_64-1.0-r0 do_install: print-datetime-link-cross-x86_64 current DATETIME in symlink is 2025-11-13_20_07
  WARNING: print-datetime-usenative-1.0-r0 do_install: print-datetime-usenative current DATETIME from print-datetime-link is 2025-11-13_20_07

It's because print-datetime-link-cross-x86_64 depsig doesn't include print-datetime-native signature:

$ cat tmp/work/x86_64-linux/print-datetime-link-cross-x86_64/1.0/temp/depsig.do_populate_sysroot
OEOuthashBasic
18
SSTATE_PKGSPEC=sstate:print-datetime-link-cross-x86_64:x86_64-oe-linux:1.0:r0:x86_64:14:
task=populate_sysroot
drwx                                                                                       .
drwx                                                                                       ./recipe-sysroot-native
drwx                                                                                       ./recipe-sysroot-native/sysroot-providers
-rw-                   32 19fbeb373f781c2504453c1ca04dab018a7bc8388c87f4bbc59589df31523d07 ./recipe-sysroot-native/sysroot-providers/print-datetime-link-cross-x86_64
drwx                                                                                       ./recipe-sysroot-native/usr
drwx                                                                                       ./recipe-sysroot-native/usr/bin
drwx                                                                                       ./recipe-sysroot-native/usr/bin/x86_64-oe-linux
lrwx                                                                                       ./recipe-sysroot-native/usr/bin/x86_64-oe-linux/print-datetime-link -> ../print-datetime

While print-datetime-link-native doesn't have this issue, because print-datetime-native signature is there:

$ cat tmp/work/x86_64-linux/print-datetime-link-native/1.0/temp/depsig.do_populate_sysroot
OEOuthashBasic
18
print-datetime-native: 60f2734a63d708489570ca719413b4662f8368abc9f4760a279a0a5481e4a17b
quilt-native: 65d78a7a5b5cbbf0969798efe558ca28e7ef058f4232fcff266912d16f67a8b8
SSTATE_PKGSPEC=sstate:print-datetime-link-native:x86_64-linux:1.0:r0:x86_64:14:
task=populate_sysroot
drwx                                                                                       .
drwx                                                                                       ./recipe-sysroot-native
drwx                                                                                       ./recipe-sysroot-native/sysroot-providers
-rw-                   26 3d5458be834b2d0e4c65466b9b877d6028ae2210a56399284a23144818666f10 ./recipe-sysroot-native/sysroot-providers/print-datetime-link-native
drwx                                                                                       ./recipe-sysroot-native/usr
drwx                                                                                       ./recipe-sysroot-native/usr/bin
lrwx                                                                                       ./recipe-sysroot-native/usr/bin/print-datetime-link -> print-datetime

With the cross.bbclass fix the link-cross recipe has a checksum from native recipe as well:

$ cat tmp/work/x86_64-linux/print-datetime-link-cross-x86_64/1.0/temp/depsig.do_populate_sysroot
OEOuthashBasic
18
print-datetime-native: 9ceb6c27342eae6b8da86c84685af38fb8927ccc19979aae75b8b1e444b11c5c
quilt-native: 65d78a7a5b5cbbf0969798efe558ca28e7ef058f4232fcff266912d16f67a8b8
SSTATE_PKGSPEC=sstate:print-datetime-link-cross-x86_64:x86_64-oe-linux:1.0:r0:x86_64:14:
task=populate_sysroot
drwx                                                                                       .
drwx                                                                                       ./recipe-sysroot-native
drwx                                                                                       ./recipe-sysroot-native/sysroot-providers
-rw-                   32 19fbeb373f781c2504453c1ca04dab018a7bc8388c87f4bbc59589df31523d07 ./recipe-sysroot-native/sysroot-providers/print-datetime-link-cross-x86_64
drwx                                                                                       ./recipe-sysroot-native/usr
drwx                                                                                       ./recipe-sysroot-native/usr/bin
drwx                                                                                       ./recipe-sysroot-native/usr/bin/x86_64-oe-linux
lrwx                                                                                       ./recipe-sysroot-native/usr/bin/x86_64-oe-linux/print-datetime-link -> ../print-datetime

And print-datetime-usecross is correctly rebuilt whenever print-datetime-native output is different.

(From OE-Core rev: c15faee8854e85e02693a041d88326f30b24ee92)

Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:54 -08:00
Aleksandar Nikolic
1e47a3035c scripts/install-buildtools: Update to 4.0.31
Update to the 4.0.31 release of the 4.0 series for buildtools

(From OE-Core rev: c0dacba480b02ea591915f8afbe0b48c10b8be43)

Signed-off-by: Aleksandar Nikolic <aleksandar.nikolic@zeiss.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:54 -08:00
Changqing Li
d35837e3cd libsoup: fix CVE-2025-12105
Refer:
https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/481

(From OE-Core rev: caa6f192df558d5f46c8a0968f72f08c6e59df1d)

Signed-off-by: Changqing Li <changqing.li@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:54 -08:00
Mingli Yu
33cffc4716 libxslt: Fix CVE-2025-11731
Backport patch [1] to fix CVE-2025-11731.

[1] fe508f201e

(From OE-Core rev: 7196077d84cc8d49652b0d6b54963df579ab1a0b)

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:54 -08:00
Yash Shinde
df858d86ed binutils: fix CVE-2025-11840
CVE-2025-11840

PR 33455
[BUG] A SEGV in vfinfo at ldmisc.c:527
A reloc howto set up with EMPTY_HOWTO has a NULL name.  More than one
place emitting diagnostics assumes a reloc howto won't have a NULL
name.

https://sourceware.org/bugzilla/show_bug.cgi?id=33455

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

(From OE-Core rev: 85e62aad46eb096cf92907288a3eb1b6f76072c4)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:54 -08:00
Yash Shinde
c1f7fcc84f binutils: fix CVE-2025-11839
CVE-2025-11839

PR 33448
[BUG] Aborted in tg_tag_type at prdbg.c:2452
Remove call to abort in the DGB debug format printing code, thus allowing
the display of a fuzzed input file to complete without triggering an abort.

https://sourceware.org/bugzilla/show_bug.cgi?id=33448

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

(From OE-Core rev: d99979ea5fa475a59d3c21859d3bbbd81e0cdba4)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:54 -08:00
Libo Chen
9af12b047e go: Fix CVE-2023-39323
Line directives ("//line") can be used to bypass the restrictions on
"//go:cgo_" directives, allowing blocked linker and compiler flags to
be passed during compilation. This can result in unexpected execution
of arbitrary code when running "go build". The line directive requires
the absolute path of the file in which the directive lives, which makes
exploiting this issue significantly more complex.

Made below changes for Go 1.17 backport:
- drop the modifications of test codes

References:
https://nvd.nist.gov/vuln/detail/CVE-2023-39323

Upstream-patch:
e7c142a19d

(From OE-Core rev: 62f4c3aec8f80a259472ce19104596d08741c101)

Signed-off-by: Libo Chen <libo.chen.cn@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:54 -08:00
Liyin Zhang
652e8fc3b9 rsync: fix CVE-2025-10158
CVE-2025-10158:
A malicious client acting as the receiver of an rsync file transfer can trigger an out of bounds read of a heap based buffer, via a negative array index. The malicious rsync client requires at least read access to the remote rsync module in order to trigger the issue.

Reference:
[https://nvd.nist.gov/vuln/detail/CVE-2025-10158]

Upstream patch:
[797e17fc4a]

(From OE-Core rev: fe4bea86b27551edbe7440ff47041b6d45b2f4e1)

Signed-off-by: Liyin Zhang <liyin.zhang.cn@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:54 -08:00
Kai Kang
cde4ddcfd1 qemu: fix CVE-2025-12464
Backport patch to fix CVE-2025-12464.

Reference: https://gitlab.com/qemu-project/qemu/-/commit/a01344d9d7

(From OE-Core rev: 7ef40090719cab3fb9bda3f87a9d700d9b503e3e)

Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:54 -08:00
Deepesh Varatharajan
0183740845 binutils: Fix CVE-2025-11494
Since x86 .eh_frame section may reference _GLOBAL_OFFSET_TABLE_, keep
_GLOBAL_OFFSET_TABLE_ if there is dynamic section and the output
.eh_frame section is non-empty.

Backport a patch from upstream to fix CVE-2025-11494
Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=b6ac5a8a5b82f0ae6a4642c8d7149b325f4cc60a]

(From OE-Core rev: aa67c21a07dc180a0582be46e239dafd40017ba0)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-12-31 07:24:53 -08:00
142 changed files with 9200 additions and 465 deletions

View File

@@ -221,6 +221,20 @@ Recipes need to define both the :term:`LICENSE` and
``meta/files/common-licenses/`` or the :term:`SPDXLICENSEMAP` flag names
defined in ``meta/conf/licenses.conf``.
.. note::
Setting a :term:`LICENSE` in a recipe applies to the software to be built
by this recipe, not to the recipe file itself. The license of recipes,
configuration files and scripts should also be clearly specified, for
example via comments or via a license found in the :term:`layer` that
holds these files. These license files are usually found at the root of
the layer. Exceptions should be clearly stated in the layer README or
LICENSE file.
For example, the :term:`OpenEmbedded-Core (OE-Core)` layer provides both
the GPL-2.0-only and MIT license files, and a "LICENSE" file to explain
how these two licenses are attributed to files found in the layer.
- :term:`LIC_FILES_CHKSUM`: The OpenEmbedded build system uses this
variable to make sure the license text has not changed. If it has,
the build produces an error and it affords you the chance to figure

View File

@@ -41,7 +41,6 @@ Yocto Project Development Tasks Manual
build-quality
debugging
licenses
security-subjects
vulnerabilities
sbom
error-reporting-tool

View File

@@ -279,8 +279,23 @@ with a number. The number used depends on the state of the PR Service:
.. code-block:: none
hello-world-git_0.0+git0+b6558dd387-r0.0_armv7a-neon.ipk
hello-world-git_0.0+git1+dd2f5c3565-r0.0_armv7a-neon.ipk
hello-world-git_1.0+git0+b6558dd387-r0.0_armv7a-neon.ipk
hello-world-git_1.0+git1+dd2f5c3565-r0.1_armv7a-neon.ipk
Two numbers got incremented here:
- ``gitX`` changed from ``git0`` to ``git1``. This is because there was a
change in the source code (``SRCREV``).
- ``r0.X`` changed from ``r0.0`` to ``r0.1``. This is because the hash of
the :ref:`ref-tasks-package` task changed.
The reason for this change can be many. To understand why the hash of the
:ref:`ref-tasks-package` task changed, you can run the following command:
.. code-block:: console
$ bitbake-diffsigs -t hello-world package
- If PR Service is not enabled, the build system replaces the
``AUTOINC`` placeholder with zero (i.e. "0"). This results in
@@ -290,8 +305,8 @@ with a number. The number used depends on the state of the PR Service:
.. code-block:: none
hello-world-git_0.0+git0+b6558dd387-r0.0_armv7a-neon.ipk
hello-world-git_0.0+git0+dd2f5c3565-r0.0_armv7a-neon.ipk
hello-world-git_1.0+git0+b6558dd387-r0_armv7a-neon.ipk
hello-world-git_1.0+git0+dd2f5c3565-r0_armv7a-neon.ipk
In summary, the OpenEmbedded build system does not track the history of
binary package versions for this purpose. ``AUTOINC``, in this case, is

View File

@@ -1,194 +0,0 @@
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
Dealing with Vulnerability Reports
**********************************
The Yocto Project and OpenEmbedded are open-source, community-based projects
used in numerous products. They assemble multiple other open-source projects,
and need to handle security issues and practices both internal (in the code
maintained by both projects), and external (maintained by other projects and
organizations).
This manual assembles security-related information concerning the whole
ecosystem. It includes information on reporting a potential security issue,
the operation of the YP Security team and how to contribute in the
related code. It is written to be useful for both security researchers and
YP developers.
How to report a potential security vulnerability?
=================================================
If you would like to report a public issue (for example, one with a released
CVE number), please report it using the
:yocto_bugs:`Security Bugzilla </enter_bug.cgi?product=Security>`.
If you are dealing with a not-yet-released issue, or an urgent one, please send
a message to security AT yoctoproject DOT org, including as many details as
possible: the layer or software module affected, the recipe and its version,
and any example code, if available. This mailing list is monitored by the
Yocto Project Security team.
For each layer, you might also look for specific instructions (if any) for
reporting potential security issues in the specific ``SECURITY.md`` file at the
root of the repository. Instructions on how and where submit a patch are
usually available in ``README.md``. If this is your first patch to the
Yocto Project/OpenEmbedded, you might want to have a look into the
Contributor's Manual section
":ref:`contributor-guide/submit-changes:preparing changes for submission`".
Branches maintained with security fixes
---------------------------------------
See the
:ref:`Release process <ref-manual/release-process:Stable Release Process>`
documentation for details regarding the policies and maintenance of stable
branches.
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
-------------------------------------------------
We have set up two security-related emails/mailing lists:
- Public Mailing List: yocto [dash] security [at] yoctoproject[dot] org
This is a public mailing list for anyone to subscribe to. This list is an
open list to discuss public security issues/patches and security-related
initiatives. For more information, including subscription information,
please see the :yocto_lists:`yocto-security mailing list info page
</g/yocto-security>`.
This list requires moderator approval for new topics to be posted, to avoid
private security reports to be posted by mistake.
- Yocto Project Security Team: security [at] yoctoproject [dot] org
This is an email for reporting non-published potential vulnerabilities.
Emails sent to this address are forwarded to the Yocto Project Security
Team members.
What you should do if you find a security vulnerability
-------------------------------------------------------
If you find a security flaw: a crash, an information leakage, or anything that
can have a security impact if exploited in any Open Source software built or
used by the Yocto Project, please report this to the Yocto Project Security
Team. If you prefer to contact the upstream project directly, please send a
copy to the security team at the Yocto Project as well. If you believe this is
highly sensitive information, please report the vulnerability in a secure way,
i.e. encrypt the email and send it to the private list. This ensures that
the exploit is not leaked and exploited before a response/fix has been generated.
Security team
=============
The Yocto Project/OpenEmbedded security team coordinates the work on security
subjects in the project. All general discussion takes place publicly. The
Security Team only uses confidential communication tools to deal with private
vulnerability reports before they are released.
Security team appointment
-------------------------
The Yocto Project Security Team consists of at least three members. When new
members are needed, the Yocto Project Technical Steering Committee (YP TSC)
asks for nominations by public channels including a nomination deadline.
Self-nominations are possible. When the limit time is
reached, the YP TSC posts the list of candidates for the comments of project
participants and developers. Comments may be sent publicly or privately to the
YP and OE TSCs. The candidates are approved by both YP TSC and OpenEmbedded
Technical Steering Committee (OE TSC) and the final list of the team members
is announced publicly. The aim is to have people representing technical
leadership, security knowledge and infrastructure present with enough people
to provide backup/coverage but keep the notification list small enough to
minimize information risk and maintain trust.
YP Security Team members may resign at any time.
Security Team Operations
------------------------
The work of the Security Team might require high confidentiality. Team members
are individuals selected by merit and do not represent the companies they work
for. They do not share information about confidential issues outside of the team
and do not hint about ongoing embargoes.
Team members can bring in domain experts as needed. Those people should be
added to individual issues only and adhere to the same standards as the YP
Security Team.
The YP security team organizes its meetings and communication as needed.
When the YP Security team receives a report about a potential security
vulnerability, they quickly analyze and notify the reporter of the result.
They might also request more information.
If the issue is confirmed and affects the code maintained by the YP, they
confidentially notify maintainers of that code and work with them to prepare
a fix.
If the issue is confirmed and affects an upstream project, the YP security team
notifies the project. Usually, the upstream project analyzes the problem again.
If they deem it a real security problem in their software, they develop and
release a fix following their security policy. They may want to include the
original reporter in the loop. There is also sometimes some coordination for
handling patches, backporting patches etc, or just understanding the problem
or what caused it.
When the fix is publicly available, the YP security team member or the
package maintainer sends patches against the YP code base, following usual
procedures, including public code review.
What Yocto Security Team does when it receives a security vulnerability
-----------------------------------------------------------------------
The YP Security Team team performs a quick analysis and would usually report
the flaw to the upstream project. Normally the upstream project analyzes the
problem. If they deem it a real security problem in their software, they
develop and release a fix following their own security policy. They may want
to include the original reporter in the loop. There is also sometimes some
coordination for handling patches, backporting patches etc, or just
understanding the problem or what caused it.
The security policy of the upstream project might include a notification to
Linux distributions or other important downstream projects in advance to
discuss coordinated disclosure. These mailing lists are normally non-public.
When the upstream project releases a version with the fix, they are responsible
for contacting `Mitre <https://www.cve.org/>`__ to get a CVE number assigned and
the CVE record published.
If an upstream project does not respond quickly
-----------------------------------------------
If an upstream project does not fix the problem in a reasonable time,
the Yocto's Security Team will contact other interested parties (usually
other distributions) in the community and together try to solve the
vulnerability as quickly as possible.
The Yocto Project Security team adheres to the 90 days disclosure policy
by default. An increase of the embargo time is possible when necessary.
Current Security Team members
-----------------------------
For secure communications, please send your messages encrypted using the GPG
keys. Remember, message headers are not encrypted so do not include sensitive
information in the subject line.
- Ross Burton: <ross@burtonini.com> `Public key <https://keys.openpgp.org/search?q=ross%40burtonini.com>`__
- Michael Halstead: <mhalstead [at] linuxfoundation [dot] org>
`Public key <https://pgp.mit.edu/pks/lookup?op=vindex&search=0x3373170601861969>`__
or `Public key <https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xd1f2407285e571ed12a407a73373170601861969>`__
- Richard Purdie: <richard.purdie@linuxfoundation.org> `Public key <https://keys.openpgp.org/search?q=richard.purdie%40linuxfoundation.org>`__
- Marta Rybczynska: <marta DOT rybczynska [at] syslinbit [dot] com> `Public key <https://keys.openpgp.org/search?q=marta.rybczynska@syslinbit.com>`__
- Steve Sakoman: <steve [at] sakoman [dot] com> `Public key <https://keys.openpgp.org/search?q=steve%40sakoman.com>`__

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

View File

@@ -20,7 +20,6 @@ Welcome to the Yocto Project Documentation
Yocto Project Software Overview <https://www.yoctoproject.org/software-overview/>
Tips and Tricks Wiki <https://wiki.yoctoproject.org/wiki/TipsAndTricks>
.. toctree::
:maxdepth: 1
:caption: Manuals
@@ -37,6 +36,12 @@ Welcome to the Yocto Project Documentation
Test Environment Manual <test-manual/index>
bitbake
.. toctree::
:maxdepth: 1
:caption: Security
Yocto Project Security Reference <security-reference/index>
.. toctree::
:maxdepth: 1
:caption: Release Manuals

View File

@@ -38,3 +38,4 @@ Release 4.0 (kirkstone)
release-notes-4.0.29
release-notes-4.0.30
release-notes-4.0.31
release-notes-4.0.32

View File

@@ -0,0 +1,194 @@
Release notes for Yocto-4.0.32 (Kirkstone)
------------------------------------------
Security Fixes in Yocto-4.0.32
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- bind: Fix :cve_nist:`2025-8677`, :cve_nist:`2025-40778` and :cve_nist:`2025-40780`
- binutils: Fix :cve_nist:`2025-11412` and :cve_nist:`2025-11413`
- curl: Ignore :cve_nist:`2025-10966`
- elfutils: Fix :cve_nist:`2025-1376` and :cve_nist:`2025-1377`
- gnutls: Fix :cve_nist:`2025-9820`
- go: Fix :cve_nist:`2024-24783`, :cve_nist:`2025-58187`, :cve_nist:`2025-58189`,
:cve_nist:`2025-61723` and :cve_nist:`2025-61724`
- libarchive: Fix :cve_nist:`2025-60753`
- libarchive: Fix 2 security issue (https://github.com/libarchive/libarchive/pull/2753 and
https://github.com/libarchive/libarchive/pull/2768)
- libpng: Fix :cve_nist:`2025-64505`, :cve_nist:`2025-64506`, :cve_nist:`2025-64720`,
:cve_nist:`2025-65018` and :cve_nist:`2025-66293`
- libxml2: Fix :cve_nist:`2025-7425`
- musl: Fix :cve_nist:`2025-26519`
- openssh: Fix :cve_nist:`2025-61984` and :cve_nist:`2025-61985`
- python3-idna: Fix :cve_nist:`2024-3651`
- python3-urllib3: Fix :cve_nist:`2024-37891`
- python3: fix :cve_nist:`2025-6075`
- ruby: Fix :cve_nist:`2024-35176`, :cve_nist:`2024-39908` and :cve_nist:`2024-41123`
- rust-cross-canadian: Ignore :cve_nist:`2024-43402`
- u-boot: Fix :cve_nist:`2024-42040`
- wpa-supplicant: Fix :cve_nist:`2025-24912`
- xserver-xorg: Fix :cve_nist:`2025-62229`, :cve_nist:`2025-62230` and :cve_nist:`2025-62231`
- xwayland: Fix :cve_nist:`2025-62229`, :cve_nist:`2025-62230` and :cve_nist:`2025-62231`
Fixes in Yocto-4.0.32
~~~~~~~~~~~~~~~~~~~~~
- babeltrace2: fetch with https protocol
- bind: upgrade to 9.18.41
- build-appliance-image: Update to kirkstone head revision
- dev-manual/layers.rst: document "bitbake-layers show-machines"
- dev-manual/new-recipe.rst: replace 'bitbake -e' with 'bitbake-getvar'
- dev-manual/new-recipe.rst: typo, "whith" -> "which"
- dev-manual/new-recipe.rst: update "recipetool -h" output
- dev-manual: debugging: use bitbake-getvar in Viewing Variable Values section
- documentation: link to the Releases page on yoctoproject.org instead of wiki
- efibootmgr: update :term:`SRC_URI` branch
- flac: patch seeking bug
- goarch.bbclass: do not leak :term:`TUNE_FEATURES` into crosssdk task signatures
- kernel-dev: add disable config example
- kernel-dev: common: migrate bitbake -e to bitbake-getvar
- libmicrohttpd: disable experimental code by default
- migration-guides: add release notes for 4.0.31
- oe-build-perf-report: relax metadata matching rules
- overview-manual: migrate to SVG + fix typo
- poky.conf: bump version for 4.0.32
- python3-urllib3: upgrade to 1.26.20
- recipes: Don't use ftp.gnome.org
- ref-manual: variables: migrate the :term:`OVERRIDES` note to bitbake-getvar
- systemd-bootchart: update :term:`SRC_URI` branch
- xf86-video-intel: correct :term:`SRC_URI` as freedesktop anongit is down
Known Issues in Yocto-4.0.32
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- N/A
Contributors to Yocto-4.0.32
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thanks to the following people who contributed to this release:
- Alexander Kanavin
- Archana Polampalli
- Divya Chellam
- Gyorgy Sarvari
- Hitendra Prajapati
- Hongxu Jia
- Jason Schonberg
- Lee Chee Yang
- Peter Marko
- Praveen Kumar
- Quentin Schulz
- Richard Purdie
- Robert P. J. Day
- Ross Burton
- Saquib Iltaf
- Soumya Sambu
- Steve Sakoman
- Vijay Anusuri
- Walter Werner SCHNEIDER
Repositories / Downloads for Yocto-4.0.32
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yocto-docs
- Repository Location: :yocto_git:`/yocto-docs`
- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.32 </yocto-docs/log/?h=yocto-4.0.32>`
- Git Revision: :yocto_git:`4b9df539fa06fb19ed8b51ef2d46e5c56779de81 </yocto-docs/commit/?id=4b9df539fa06fb19ed8b51ef2d46e5c56779de81>`
- Release Artefact: yocto-docs-4b9df539fa06fb19ed8b51ef2d46e5c56779de81
- sha: 70ee2caf576683c5f31ac5a592cde1c0650ece25cfcd5ff3cc7eedf531575611
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.32/yocto-docs-4b9df539fa06fb19ed8b51ef2d46e5c56779de81.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.32/yocto-docs-4b9df539fa06fb19ed8b51ef2d46e5c56779de81.tar.bz2
poky
- Repository Location: :yocto_git:`/poky`
- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.32 </poky/log/?h=yocto-4.0.32>`
- Git Revision: :yocto_git:`2c05660b21c7cc1082aeac8b75d8a2d82e249f63 </poky/commit/?id=2c05660b21c7cc1082aeac8b75d8a2d82e249f63>`
- Release Artefact: poky-2c05660b21c7cc1082aeac8b75d8a2d82e249f63
- sha: d7a55a18a597a7b140a81586b7ca6379c208ebbb3285de36c48fde10882947d8
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.32/poky-2c05660b21c7cc1082aeac8b75d8a2d82e249f63.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.32/poky-2c05660b21c7cc1082aeac8b75d8a2d82e249f63.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.32 </openembedded-core/log/?h=yocto-4.0.32>`
- Git Revision: :oe_git:`2ed3f8b938579dbbb804e04c45a968cc57761db7 </openembedded-core/commit/?id=2ed3f8b938579dbbb804e04c45a968cc57761db7>`
- Release Artefact: oecore-2ed3f8b938579dbbb804e04c45a968cc57761db7
- sha: 11b9632586dfbf3f0ef69eca2014a8002f25ca8d53cfe9424e27361ba3a20831
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.32/oecore-2ed3f8b938579dbbb804e04c45a968cc57761db7.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.32/oecore-2ed3f8b938579dbbb804e04c45a968cc57761db7.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.32 </meta-yocto/log/?h=yocto-4.0.32>`
- Git Revision: :yocto_git:`77b40877c179ea3ce5c37c7ba1831e9c0e289266 </meta-yocto/commit/?id=77b40877c179ea3ce5c37c7ba1831e9c0e289266>`
- Release Artefact: meta-yocto-77b40877c179ea3ce5c37c7ba1831e9c0e289266
- sha: e908d42690881cd6e07b9ca18a21eb8761a0ec72d940b12905622e75ba913974
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.32/meta-yocto-77b40877c179ea3ce5c37c7ba1831e9c0e289266.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.32/meta-yocto-77b40877c179ea3ce5c37c7ba1831e9c0e289266.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.32 </meta-mingw/log/?h=yocto-4.0.32>`
- 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.32/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.32/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.32 </meta-gplv2/log/?h=yocto-4.0.32>`
- 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.32/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.32/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.32 </bitbake/log/?h=yocto-4.0.32>`
- 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.32/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.32/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2

View File

@@ -165,7 +165,7 @@ The following diagram represents the high-level workflow of a build. The
remainder of this section expands on the fundamental input, output,
process, and metadata logical blocks that make up the workflow.
.. image:: figures/YP-flow-diagram.png
.. image:: svg/yp-flow-diagram.*
:align: center
In general, the build's workflow consists of several functional areas:
@@ -454,7 +454,7 @@ typically find in the distribution layer:
(``conf/distro/distro.conf``), and any distribution-wide include
files.
- *recipes-*:* Recipes and append files that affect common
- *recipes-\*:* Recipes and append files that affect common
functionality across the distribution. This area could include
recipes and append files to add distribution-specific configuration,
initialization scripts, custom image recipes, and so forth. Examples

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

View File

@@ -0,0 +1,950 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<svg
version="1.1"
id="Layer_1"
x="0px"
y="0px"
width="760.50098"
height="352.582"
viewBox="0 0 760.50095 352.582"
enable-background="new 0 0 758.189 424.276"
xml:space="preserve"
sodipodi:docname="yp-flow-diagram.svg"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
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"><defs
id="defs86">
</defs><sodipodi:namedview
id="namedview86"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.8284271"
inkscape:cx="296.80807"
inkscape:cy="212.83914"
inkscape:window-width="1906"
inkscape:window-height="934"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" />
<g
id="g17"
transform="matrix(1,0,0,1.0035497,-2.0824824,-11.037238)"><rect
style="opacity:1;fill:#00b6de;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11"
width="484.25"
height="249"
x="90"
y="112.5" /><rect
style="fill:#00b6de;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-8"
width="12"
height="12"
x="507.56818"
y="-301.10004"
ry="0"
transform="rotate(44.313856)" /><rect
style="fill:#e6e6e6;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-8-1"
width="12"
height="12"
x="361.46231"
y="-89.463524"
ry="0"
transform="rotate(44.313856)" /><rect
style="fill:#e6e6e6;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-8-1-1"
width="12"
height="12"
x="389.40585"
y="-60.842598"
ry="0"
transform="rotate(44.313856)" /><rect
style="fill:#e6e6e6;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-8-1-1-0"
width="12"
height="12"
x="416.47607"
y="-33.116081"
ry="0"
transform="rotate(44.313856)" /></g><rect
style="fill:#e6e6e6;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-9"
width="87"
height="216"
x="193.91776"
y="119.24599" /><rect
style="fill:#e6e6e6;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-8-1-4"
width="12"
height="12"
x="487.27533"
y="-296.15897"
ry="0"
transform="rotate(44.313856)" /><rect
style="fill:#e6e6e6;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-9-3"
width="85.75"
height="219.75"
x="470.16751"
y="119.49599" /><g
id="g2"
transform="translate(2.3119996,-71.694)">
<g
id="g1">
<polygon
fill="#00b6de"
points="703.77,340.194 712.852,349.277 721.934,340.194 758.189,340.194 758.189,256.861 723.582,256.861 713.171,267.274 702.758,256.861 628.582,256.861 618.171,267.274 607.758,256.861 561.523,256.861 561.523,340.194 609.104,340.194 618.186,349.277 627.268,340.194 "
id="polygon1" />
</g>
</g>
<g
id="g4"
transform="translate(2.3119996,-71.694)">
<g
id="g3">
<polygon
fill="#e6e6e6"
points="712.837,278.274 707.221,272.658 676.557,272.658 676.557,333.657 706.983,333.657 713.055,339.729 719.128,333.657 751.557,333.657 751.557,272.658 718.452,272.658 "
id="polygon2" />
</g>
</g>
<g
id="g6"
transform="translate(2.3119996,-71.694)">
<g
id="g5">
<polygon
fill="#e6e6e6"
points="618.171,278.274 611.555,271.658 581.558,271.658 581.558,332.657 611.983,332.657 618.056,338.729 624.128,332.657 656.558,332.657 656.558,271.658 624.786,271.658 "
id="polygon4" />
</g>
</g>
<g
id="g8"
transform="translate(2.3119996,-71.694)"
style="fill:#000080">
<g
id="g7"
style="fill:#000080">
<polygon
fill="#ed1849"
points="722.166,349.277 712.504,358.941 702.84,349.277 670.523,349.277 670.523,424.276 757.523,424.276 757.523,349.277 "
id="polygon6"
style="fill:#000080" />
</g>
</g>
<g
id="g10"
transform="translate(2.3119996,-71.694)"
style="fill:#000080">
<g
id="g9"
style="fill:#000080">
<polygon
fill="#ed1849"
points="628.371,348.611 618.043,358.941 607.713,348.611 575.523,348.611 575.523,423.61 662.523,423.61 662.523,348.611 "
id="polygon8"
style="fill:#000080" />
</g>
</g>
<g
id="g14"
transform="translate(2.3119996,-71.694)">
<g
id="g13">
<polygon
fill="#c1d82f"
points="575.428,217.35 575.428,250.526 610.09,250.526 618.171,258.607 626.251,250.526 705.09,250.526 713.171,258.607 721.251,250.526 757.427,250.526 757.427,173.527 575.428,173.527 575.428,199.703 584.252,208.525 "
id="polygon12" />
</g>
</g>
<g
id="g26"
transform="translate(0.4155534,-73.944)">
<g
id="g25">
<polygon
fill="#4a4a30"
points="177.974,133.944 125.111,133.944 118.043,141.013 110.974,133.944 86.834,133.944 86.834,166.944 178.263,166.944 184.834,173.514 191.403,166.944 281.833,166.944 281.833,133.944 258.611,133.944 251.543,141.013 244.474,133.944 192.111,133.944 185.043,141.013 "
id="polygon24" />
</g>
</g>
<g
id="g28"
transform="matrix(0.93986241,0,0,1,-22.331287,-17.694)">
<g
id="g27">
<polygon
fill="#e6e6e6"
points="330.188,290.202 330.188,296.444 511.188,296.444 511.188,289.015 517.259,282.942 511.188,276.87 511.188,268.444 330.188,268.444 330.188,277.683 336.447,283.942 "
id="polygon26" />
</g>
</g>
<g
id="g30"
transform="matrix(0.93986241,0,0,1,-22.331287,-17.694)">
<g
id="g29">
<polygon
fill="#e6e6e6"
points="330.188,251.536 330.188,257.944 511.188,257.944 511.188,250.515 517.259,244.442 511.188,238.37 511.188,229.944 330.188,229.944 330.188,239.016 336.447,245.276 "
id="polygon28" />
</g>
</g>
<g
id="g32"
transform="matrix(0.93986241,0,0,1,-22.331287,-17.694)">
<g
id="g31">
<polygon
fill="#e6e6e6"
points="330.188,211.18 330.188,218.444 511.188,218.444 511.188,211.015 517.259,204.942 511.188,198.87 511.188,190.444 330.188,190.444 330.188,199.372 336.092,205.276 "
id="polygon30" />
</g>
</g>
<g
id="g34"
transform="translate(-40.188,-71.694)">
<g
id="g33">
<polygon
fill="#e6e6e6"
points="144.188,342.944 144.188,406.944 225.188,406.944 225.188,381.515 231.259,375.442 225.188,369.37 225.188,342.944 190.445,342.944 184.043,349.348 177.639,342.944 "
id="polygon32" />
</g>
</g>
<g
id="g36"
transform="translate(-40.188,-71.694)">
<g
id="g35">
<polygon
fill="#e6e6e6"
points="177.618,330.944 184.188,337.514 190.757,330.944 225.188,330.944 225.188,266.944 190.778,266.944 183.71,274.014 176.64,266.944 144.188,266.944 144.188,330.944 "
id="polygon34" />
</g>
</g>
<g
id="g38"
transform="translate(-40.188,-71.694)">
<g
id="g37">
<polygon
fill="#e6e6e6"
points="177.118,254.944 183.688,261.514 190.257,254.944 224.688,254.944 224.688,190.944 191.445,190.944 184.376,198.014 177.306,190.944 143.688,190.944 143.688,254.944 "
id="polygon36" />
</g>
</g>
<g
id="g40"
transform="matrix(1,0,0,0.86327911,0.062,-77.645148)">
<g
id="g39">
<polygon
fill="#4a4a30"
points="81.188,221.611 0.188,221.611 0.188,285.61 81.188,285.61 81.188,260.181 87.259,254.109 81.188,248.037 "
id="polygon38" />
</g>
</g><g
id="g40-0"
transform="matrix(1,0,0,0.86327911,0.312,-18.368819)">
<g
id="g39-6">
<polygon
fill="#4a4a30"
points="87.259,254.109 81.188,248.037 81.188,221.611 0.188,221.611 0.188,285.61 81.188,285.61 81.188,260.181 "
id="polygon38-4" />
</g>
</g><g
id="g40-0-2"
transform="matrix(1,0,0,0.86327911,0.062,40.907511)">
<g
id="g39-6-5">
<polygon
fill="#4a4a30"
points="87.259,254.109 81.188,248.037 81.188,221.611 0.188,221.611 0.188,285.61 81.188,285.61 81.188,260.181 "
id="polygon38-4-8" />
</g>
</g><g
id="g40-0-28"
transform="matrix(1,0,0,0.86327911,-0.188,100.18384)">
<g
id="g39-6-4">
<polygon
fill="#4a4a30"
points="81.188,285.61 81.188,260.181 87.259,254.109 81.188,248.037 81.188,221.611 0.188,221.611 0.188,285.61 "
id="polygon38-4-7" />
</g>
</g>
<g
id="g42"
transform="translate(0.062,-71.944)"
style="fill:#ff7f2a">
<g
id="g41"
style="fill:#ff7f2a">
<polygon
fill="#7e8082"
points="178.618,123.944 185.188,130.514 191.757,123.944 215.188,123.944 215.188,71.944 154.188,71.944 154.188,123.944 "
id="polygon40"
style="fill:#ff7f2a" />
</g>
</g>
<rect
x="126.062"
y="75.334"
fill="none"
width="116.666"
height="21.333"
id="rect42" />
<text
fill="#ffffff"
font-family="MyriadPro-Regular"
font-size="12px"
id="text42"
x="139.47949"
y="82.440079"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Source Materials</text>
<rect
x="155.41699"
y="10.834001"
fill="none"
width="58.666"
height="40.667"
id="rect43" />
<text
id="text44"
x="190.00726"
y="29.10741"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:49.6985"
transform="translate(-5.5244746,-7.8775879)"
xml:space="preserve"><tspan
x="190.00726"
y="29.10741"
id="tspan1">Local<tspan
y="29.10741"
id="tspan2"> </tspan></tspan><tspan
x="190.00726"
y="42.440787"
id="tspan3">Projects</tspan></text>
<g
id="g45"
transform="translate(0.062,-71.944)"
style="fill:#ff7f2a">
<g
id="g44"
style="fill:#ff7f2a">
<polygon
fill="#7e8082"
points="245.118,123.944 251.688,130.514 258.257,123.944 281.688,123.944 281.688,71.944 220.688,71.944 220.688,123.944 "
id="polygon44"
style="fill:#ff7f2a" />
</g>
</g>
<rect
x="221.91699"
y="7.8340006"
fill="none"
width="58.666"
height="40.667"
id="rect45" />
<text
id="text47"
x="258.17291"
y="26.10741"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:56.5275;fill:#000000"
transform="translate(-6.4360358,-3.6326896)"
xml:space="preserve"><tspan
x="258.17291"
y="26.10741"
id="tspan4">SCMs<tspan
y="26.10741"
id="tspan5"> </tspan></tspan><tspan
x="258.17291"
y="39.440787"
id="tspan6">(optional)</tspan></text>
<g
id="g48"
transform="translate(0.062,-71.944)"
style="fill:#ff7f2a">
<g
id="g47"
style="fill:#ff7f2a">
<polygon
fill="#7e8082"
points="111.618,123.944 118.188,130.514 124.757,123.944 148.188,123.944 148.188,71.944 87.188,71.944 87.188,123.944 "
id="polygon47"
style="fill:#ff7f2a" />
</g>
</g>
<rect
x="88.417007"
y="10.834001"
fill="none"
width="58.666"
height="40.667"
id="rect48" />
<text
id="text49"
x="125.51399"
y="29.10741"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:64.823"
transform="translate(-8.2169997,-13.75401)"
xml:space="preserve"><tspan
x="125.51399"
y="29.10741"
id="tspan7">Upstream<tspan
y="29.10741"
id="tspan8"> </tspan></tspan><tspan
x="125.51399"
y="42.440787"
id="tspan9">Project<tspan
y="42.440787"
id="tspan10"> </tspan></tspan><tspan
x="125.51399"
y="55.774165"
id="tspan11">Releases</tspan></text>
<rect
x="115.167"
y="137.084"
fill="none"
width="58.666"
height="40.667"
id="rect49" />
<text
id="text51"
x="128.34723"
y="147.37112"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"><tspan
x="128.34723"
y="147.37112"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan50"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Source </tspan><tspan
x="123.54125"
y="161.77113"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan51"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Fetching</tspan></text>
<rect
x="115.167"
y="215.08401"
fill="none"
width="58.666"
height="40.666"
id="rect51" />
<text
id="text53"
x="131.82678"
y="224.31099"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"><tspan
x="131.82678"
y="224.31099"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan52"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Patch </tspan><tspan
x="117.00081"
y="238.70999"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan53"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Application</tspan></text>
<rect
x="107.167"
y="279.08401"
fill="none"
width="74.166"
height="69.237"
id="rect53" />
<text
id="text57"
x="149.00055"
y="297.35791"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:74.8743"
transform="translate(-3.496696,4.953096)"
xml:space="preserve"><tspan
x="149.00055"
y="297.35791"
id="tspan12">Configuration /<tspan
y="297.35791"
id="tspan13"> </tspan></tspan><tspan
x="149.00055"
y="310.69127"
id="tspan14">Compile</tspan></text>
<rect
x="201.16699"
y="184.084"
fill="none"
width="74.166"
height="89.237"
id="rect57" />
<text
id="text63"
x="221.86859"
y="192.60429"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"><tspan
x="221.86859"
y="192.60429"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan58"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Output </tspan><tspan
x="211.42859"
y="207.0043"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan59"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Analysis for </tspan><tspan
x="218.94058"
y="221.4043"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan60"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">package </tspan><tspan
x="207.54759"
y="235.80429"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan61"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">splitting plus </tspan><tspan
x="218.94058"
y="250.2043"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan62"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">package </tspan><tspan
x="207.81059"
y="264.60431"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan63"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">relationships</tspan></text><text
id="text63-1"
x="555.48315"
y="202.90402"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:31.0495"
transform="translate(-42.334211,23.629617)"
xml:space="preserve"><tspan
x="555.48315"
y="202.90402"
id="tspan15">QA<tspan
y="202.90402"
id="tspan16"> </tspan></tspan><tspan
x="555.48315"
y="216.2374"
id="tspan18">Tests</tspan></text>
<rect
x="319.146"
y="127.084"
fill="none"
width="116.666"
height="21.333"
id="rect63" />
<text
font-family="MyriadPro-Regular"
font-size="12px"
id="text64"
x="335.19238"
y="189.60429"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">.rpm generation</text>
<rect
x="319.146"
y="166.584"
fill="none"
width="116.666"
height="21.333"
id="rect64" />
<text
font-family="MyriadPro-Regular"
font-size="12px"
id="text65"
x="335.76849"
y="229.10429"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">.deb generation</text>
<rect
x="319.146"
y="205.08401"
fill="none"
width="116.666"
height="21.333"
id="rect65" />
<text
font-family="MyriadPro-Regular"
font-size="12px"
id="text66"
x="337.9404"
y="267.60391"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">.ipk generation</text>
<rect
x="296.16699"
y="307.08401"
fill="none"
width="77.166"
height="30.237"
id="rect66" />
<rect
x="299.66699"
y="261.08401"
fill="none"
width="71.853996"
height="33.664001"
id="rect67" />
<rect
x="395.97998"
y="261.08401"
fill="none"
width="71.853996"
height="33.664001"
id="rect69" />
<rect
x="390.66699"
y="307.08401"
fill="none"
width="77.166"
height="30.237"
id="rect71" />
<rect
y="133"
fill="none"
width="81.666"
height="39.334"
id="rect73"
x="0.061999973" />
<text
id="text75"
x="64.610138"
y="186.94585"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:66.7773"
transform="translate(-23.458902,-49.50401)"
xml:space="preserve"><tspan
x="64.610138"
y="186.94585"
id="tspan20"><tspan
style="fill:#ffffff"
id="tspan19">User</tspan>
</tspan><tspan
x="64.610138"
y="200.27922"
id="tspan22"><tspan
style="fill:#ffffff"
id="tspan21">Configuration</tspan></tspan></text><text
id="text75-4"
x="64.610138"
y="186.94585"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:66.7773"
transform="translate(-24.603766,70.32617)"
xml:space="preserve"><tspan
x="64.610138"
y="186.94585"
id="tspan24"><tspan
style="fill:#ffffff"
id="tspan23">Machine BSP</tspan>
</tspan><tspan
x="64.610138"
y="200.27922"
id="tspan26"><tspan
style="fill:#ffffff"
id="tspan25">Configuration</tspan></tspan></text><text
id="text75-4-6"
x="64.610138"
y="186.94585"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:66.7773"
transform="translate(-25.353766,128.82617)"
xml:space="preserve"><tspan
x="64.610138"
y="186.94585"
id="tspan28"><tspan
style="fill:#ffffff"
id="tspan27">Policy</tspan>
</tspan><tspan
x="64.610138"
y="200.27922"
id="tspan30"><tspan
style="fill:#ffffff"
id="tspan29">Configuration</tspan></tspan></text>
<rect
y="211.16798"
fill="none"
width="81.666"
height="39.333"
id="rect76"
x="0.061999973" />
<text
id="text78"
x="70.02713"
y="265.4418"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:89.4625"
transform="translate(-28.848315,-69.549143)"
xml:space="preserve"><tspan
x="70.02713"
y="265.4418"
id="tspan32"><tspan
style="fill:#ffffff"
id="tspan31">Metadata
</tspan></tspan><tspan
x="70.02713"
y="278.77516"
id="tspan34"><tspan
style="fill:#ffffff"
id="tspan33">(.bb + patches)</tspan></tspan></text>
<rect
x="612.83502"
y="131.418"
fill="none"
width="112.186"
height="20.163"
id="rect78" />
<text
font-family="MyriadPro-Regular"
font-size="12px"
id="text79"
x="629.87451"
y="142.68779"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Package Feeds</text>
<rect
x="579.98102"
y="306.25101"
fill="none"
width="81.666"
height="39.332001"
id="rect79" />
<text
fill="#ffffff"
font-family="MyriadPro-Regular"
font-size="12px"
id="text80"
x="604.24854"
y="319.7699"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Images</text>
<rect
x="584.14703"
y="216.08499"
fill="none"
width="71.853996"
height="33.664001"
id="rect80" />
<text
id="text81"
x="606.88434"
y="227.1058"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"><tspan
x="606.88434"
y="227.1058"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan80"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Image </tspan><tspan
x="594.48834"
y="241.50479"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan81"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Generation</tspan></text>
<rect
x="678.83301"
y="215.08499"
fill="none"
width="77.166"
height="30.237"
id="rect81" />
<text
id="text83"
x="708.21045"
y="228.6058"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"><tspan
x="708.21045"
y="228.6058"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan82"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">SDK </tspan><tspan
x="690.33142"
y="243.00479"
font-family="MyriadPro-Regular"
font-size="12px"
id="tspan83"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal">Generation</tspan></text>
<rect
x="379.06299"
y="86.834"
fill="none"
width="199.03999"
height="21.164"
id="rect83" />
<text
fill="#333333"
font-family="MyriadPro-Regular"
font-size="12px"
id="text84"
x="426.28253"
y="26.005543"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#333333">OpenEmbedded Architecture Workflow</text><g
id="g18"
transform="translate(-10.254525,-9.75401)"><rect
style="fill:#00b6de;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-5"
width="10"
height="9.9646282"
x="442.00568"
y="76.711205"
transform="matrix(1,0,0,1.0035497,0,-1.2832284)" /><text
fill="#333333"
font-family="MyriadPro-Regular"
font-size="12px"
id="text84-6"
x="456.48013"
y="84.126945"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#333333"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.33333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan17">Build System</tspan></text></g><g
id="g18-4"
transform="translate(-10.254525,-25.970712)"><rect
style="fill:#4a4a30;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-5-8"
width="10"
height="9.9646282"
x="442.00568"
y="76.711205"
transform="matrix(1,0,0,1.0035497,0,-1.2832284)" /><text
fill="#333333"
font-family="MyriadPro-Regular"
font-size="12px"
id="text84-6-0"
x="456.48013"
y="84.126945"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#333333"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.33333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan17-4">Metadata/Inputs</tspan></text></g><g
id="g18-4-9"
transform="translate(-10.254525,-42.187414)"><rect
style="fill:#ff7f2a;fill-opacity:1;stroke:#ff631a;stroke-width:0.49911493;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-5-8-6"
width="10"
height="9.9646282"
x="442.00568"
y="76.711205"
transform="matrix(1,0,0,1.0035497,0,-1.2832284)" /><text
fill="#333333"
font-family="MyriadPro-Regular"
font-size="12px"
id="text84-6-0-1"
x="456.48013"
y="84.126945"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#333333"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.33333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan17-4-0">Upstream Source</tspan></text></g><g
id="g18-4-9-2"
transform="translate(101.50803,-40.934366)"><rect
style="fill:#c1d82f;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-5-8-6-2"
width="10"
height="9.9646282"
x="442.00568"
y="76.711205"
transform="matrix(1,0,0,1.0035497,0,-1.2832284)" /><text
fill="#333333"
font-family="MyriadPro-Regular"
font-size="12px"
id="text84-6-0-1-2"
x="456.48013"
y="84.126945"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#333333"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.33333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan17-4-0-0">Output Packages</tspan></text></g><g
id="g18-4-9-2-5"
transform="translate(101.50803,-24.709046)"><rect
style="fill:#e6e6e6;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-5-8-6-2-2"
width="10"
height="9.9646282"
x="442.00568"
y="76.711205"
transform="matrix(1,0,0,1.0035497,0,-1.2832284)" /><text
fill="#333333"
font-family="MyriadPro-Regular"
font-size="12px"
id="text84-6-0-1-2-9"
x="456.48013"
y="84.126945"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#333333"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.33333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan17-4-0-0-0">Process steps (tasks)</tspan></text></g><g
id="g18-4-9-2-5-8"
transform="translate(101.50803,-8.4837252)"><rect
style="fill:#000080;fill-opacity:1;stroke:#ff631a;stroke-width:0;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-dasharray:none"
id="rect11-5-8-6-2-2-3"
width="10"
height="9.9646282"
x="442.00568"
y="76.711205"
transform="matrix(1,0,0,1.0035497,0,-1.2832284)" /><text
fill="#333333"
font-family="MyriadPro-Regular"
font-size="12px"
id="text84-6-0-1-2-9-8"
x="456.48013"
y="84.126945"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#333333"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.33333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan17-4-0-0-0-0">Output Imaga Data</tspan></text></g>
<rect
x="675.64801"
y="304.91699"
fill="none"
width="81.666"
height="39.332001"
id="rect85" />
<text
id="text86"
x="720.58508"
y="322.93991"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.6667px;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;white-space:pre;inline-size:65.518"
transform="translate(-2.5824824,-12.25401)"
xml:space="preserve"><tspan
x="720.58508"
y="322.93991"
id="tspan36"><tspan
style="fill:#ffffff"
id="tspan35">Application</tspan><tspan
y="322.93991"
id="tspan37"> </tspan></tspan><tspan
x="720.58508"
y="336.27327"
id="tspan39"><tspan
style="fill:#ffffff"
id="tspan38">Development</tspan><tspan
y="336.27327"
id="tspan40"> </tspan></tspan><tspan
x="720.58508"
y="349.60665"
id="tspan42"><tspan
style="fill:#ffffff"
id="tspan41">SDK</tspan></tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -44,7 +44,7 @@ Here are features and advantages of the Yocto Project:
system, software, and service vendors adopt and support the Yocto
Project in their products and services. For a look at the Yocto
Project community and the companies involved with the Yocto Project,
see the "COMMUNITY" and "ECOSYSTEM" tabs on the
see the "COMMUNITY" and "ABOUT" tabs on the
:yocto_home:`Yocto Project <>` home page.
- *Architecture Agnostic:* Yocto Project supports Intel, ARM, MIPS,
@@ -60,10 +60,9 @@ Here are features and advantages of the Yocto Project:
move between architectures without moving to new development
environments. Additionally, if you have used the Yocto Project to
create an image or application and you find yourself not able to
support it, commercial Linux vendors such as Wind River, Mentor
Graphics, Timesys, and ENEA could take it and provide ongoing
support. These vendors have offerings that are built using the Yocto
Project.
support it, commercial Linux vendors listed on :yocto_home:`/members/` and
:yocto_home:`/about/participants/` could take it and provide ongoing
support.
- *Flexibility:* Corporations use the Yocto Project many different
ways. One example is to create an internal Linux distribution as a
@@ -734,7 +733,7 @@ The :term:`OpenEmbedded Build System` uses a "workflow" to
accomplish image and SDK generation. The following figure overviews that
workflow:
.. image:: figures/YP-flow-diagram.png
.. image:: svg/yp-flow-diagram.*
:align: center
Here is a brief summary of the "workflow":
@@ -760,7 +759,8 @@ Here is a brief summary of the "workflow":
package feed that is used to create the final root file image.
7. The build system generates the file system image and a customized
Extensible SDK (eSDK) for application development in parallel.
:doc:`SDK </sdk-manual/index>` (Software Development Kit) for application
development in parallel.
For a very detailed look at this workflow, see the
":ref:`overview-manual/concepts:openembedded build system concepts`" section.

View File

@@ -1118,6 +1118,53 @@ The :ref:`ref-classes-image_types` class also handles conversion and compression
:term:`IMAGE_FSTYPES`. This would also be similar for Virtual Box Virtual Disk
Image ("vdi") and QEMU Copy On Write Version 2 ("qcow2") images.
.. _ref-classes-image-container:
``image-container``
===================
The :ref:`ref-classes-image-container` class is automatically inherited in
:doc:`image </ref-manual/images>` recipes that have the ``container`` image type
in :term:`IMAGE_FSTYPES`. It provides relevant settings to generate an image
ready for use with an :wikipedia:`OCI <Open_Container_Initiative>`-compliant
container management tool, such as :wikipedia:`Podman <Podman>` or
:wikipedia:`Docker <Docker_(software)>`.
.. note::
This class neither builds nor installs container management tools on the
target. Those tools are available in the :yocto_git:`meta-virtualization
</meta-virtualization>` layer.
You should set the :term:`PREFERRED_PROVIDER` for the Linux kernel to
``linux-dummy`` in a :term:`configuration file`::
PREFERRED_PROVIDER_virtual/kernel = "linux-dummy"
Otherwise an error is triggered. If desired, the
:term:`IMAGE_CONTAINER_NO_DUMMY` variable can be set to "1" to avoid triggering
this error.
The ``linux-dummy`` recipe acts as a Linux kernel recipe but builds nothing. It
is relevant to use as the preferred Linux kernel provider in this case as a
container image does not need to include a Linux kernel. Selecting it as the
preferred provider for the kernel will also decrease build time.
Using this class only deploys an additional ``tar.bz2`` archive to
:term:`DEPLOY_DIR_IMAGE`. This archive can be used in a container file (a file
typically named ``Dockerfile`` or ``Containerfile``). For example, to be used with
:wikipedia:`Podman <Podman>` or :wikipedia:`Docker <Docker_(software)>`, the
`container file <https://docs.docker.com/reference/dockerfile/>`__ could contain
the following instructions:
.. code-block:: dockerfile
FROM scratch
ADD ./image-container-qemux86-64.rootfs.tar.bz2 /
ENTRYPOINT /bin/sh
This is suitable to build a container using our generated root filesystem image.
.. _ref-classes-image-live:
``image-live``
@@ -3233,9 +3280,9 @@ The variables used by this class are:
rebuilding the FIT image containing the kernel.
See U-Boot's documentation for details about `verified boot
<https://source.denx.de/u-boot/u-boot/-/blob/master/doc/uImage.FIT/verified-boot.txt>`__
<https://docs.u-boot.org/en/latest/usage/fit/verified-boot.html>`__
and the `signature process
<https://source.denx.de/u-boot/u-boot/-/blob/master/doc/uImage.FIT/signature.txt>`__.
<https://docs.u-boot.org/en/latest/usage/fit/signature.html>`__.
See also the description of :ref:`ref-classes-kernel-fitimage` class, which this class
imitates.

View File

@@ -45,6 +45,45 @@ release process validates the content of the new branch.
Realize that there can be patches merged onto the stable release
branches as and when they become available.
.. _ref-yp-development-cycle:
Development Cycle
=================
As explained in the previous :ref:`ref-manual/release-process:Major and Minor
Release Cadence` section, a new release comes out every six months.
During this six-months period of time, the Yocto Project releases four
"Milestone" releases which represent distinct points of time. The milestone
releases are tested through the :ref:`ref-manual/release-process:Testing and
Quality Assurance` process and helps spotting issues before the actual release
is out.
The time span between milestone releases can vary, but they are in general
evenly spaced out during this six-months period of time.
These milestone releases are tagged with a capital "M" after the future release
tag name. For example, the milestone tags "&DISTRO_RELEASE_SERIES;M1",
"&DISTRO_RELEASE_SERIES;M2", and "&DISTRO_RELEASE_SERIES;M3" are released before
the actual "&DISTRO_RELEASE_SERIES;" release.
.. note::
The fourth milestone (M4) is not actually released and announced, but
represents a point of time for the Quality Assurance team to start the
:ref:`ref-manual/release-process:Testing and Quality Assurance` process
before tagging and delivering the final release.
After the third milestone release (M3), the Yocto Project enters **Feature
Freeze**. This means that the maintainers of :term:`OpenEmbedded-Core
(OE-Core)`, :term:`BitBake` and other core repositories stop accepting
significant changes on the "master" branch. Changes that may be accepted are
minor upgrades to core components and security/bug fixes.
During feature freeze, a new branch is created and maintained separately to
test new features and enhancements received from contributors, but these changes
will only make it to the master branch after the release is out.
Major Release Codenames
=======================

View File

@@ -608,7 +608,7 @@
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
id="tspan10317-2-9-1-4">4.2</tspan></text>
<rect
style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
id="rect917-0-0-4-4-9-4-5-3-9-2-3-6"
width="140"
height="45.000004"
@@ -632,7 +632,7 @@
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
id="tspan10317-2-9-1-4-6-5-6">5.1</tspan></text>
<rect
style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1;opacity:0.5"
id="rect917-0-0-4-4-9-4-5-3-9-2-3-6-2"
width="140"
height="45.000004"
@@ -656,26 +656,26 @@
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
id="tspan10317-2-9-1-4-6-5-6-9">5.2</tspan></text>
<rect
style="opacity:0.75;fill:#251f32;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
id="rect917-0-0-4-4-9-4-5-3-9-2-3-67"
width="140"
height="45.000004"
x="1163.6425"
x="1223.8723"
y="-382.27469"
ry="2.2558987" />
<text
xml:space="preserve"
style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="1214.9716"
x="1275.2014"
y="-363.89413"
id="text1185-3-55-4-0-0-0-1-1-6-4-3-53"><tspan
sodipodi:role="line"
x="1214.9716"
x="1275.2014"
y="-363.89413"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
id="tspan957-2-8-6-3-9-7-4-2-0-5-5">Whinlatter</tspan><tspan
sodipodi:role="line"
x="1214.9716"
x="1275.2014"
y="-345.89746"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans Bold';text-align:center;text-anchor:middle;fill:#fffefe;fill-opacity:1;stroke:none"
id="tspan10317-2-9-1-4-6-5-6-6-6">5.3</tspan></text>
@@ -1847,7 +1847,7 @@
x="2128.7158"
y="-7.6722765"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
id="tspan10317-2-9-1-4-6-5-6-6-5-9-7">Current (Apr. 25)</tspan></text>
id="tspan10317-2-9-1-4-6-5-6-6-5-9-7">Current (Dec. 25)</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:13.3333px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#fffefe;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View File

@@ -71,10 +71,8 @@ supported on the following distributions:
- Fedora 41
- Rocky Linux 8
- Rocky Linux 9
- Ubuntu 20.04 (LTS)
- Ubuntu 22.04 (LTS)
- Ubuntu 24.04 (LTS)
- Ubuntu 24.10
The following distribution versions are still tested, even though the
organizations publishing them no longer make updates publicly available:
@@ -86,7 +84,7 @@ organizations publishing them no longer make updates publicly available:
- Fedora 39
- Fedora 40
- Ubuntu 20.04 (LTS)
- Fedora 41
Note that the Yocto Project doesn't have access to private updates
that some of these versions may have. Therefore, our testing has
@@ -121,7 +119,9 @@ tested on former revisions of "&DISTRO_NAME;", but no longer are:
- Ubuntu 16.04
- Ubuntu 18.04
- Ubuntu 19.04
- Ubuntu 20.04
- Ubuntu 21.10
- Ubuntu 24.10
.. note::

View File

@@ -1102,6 +1102,12 @@ system and gives an overview of their function and contents.
: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:`CCACHE_TOP_DIR`
When inheriting the :ref:`ref-classes-ccache` class, the
:term:`CCACHE_TOP_DIR` variable can be set to the location of where
`Ccache` stores its cache files. This directory can be shared between
builds.
: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
@@ -3314,6 +3320,24 @@ system and gives an overview of their function and contents.
variable, see the :ref:`image_types <ref-classes-image_types>`
class file, which is ``meta/classes/image_types.bbclass``.
:term:`IMAGE_CONTAINER_NO_DUMMY`
When an image recipe has the ``container`` image type in
:term:`IMAGE_FSTYPES`, it expects the :term:`PREFERRED_PROVIDER` for
the Linux kernel (``virtual/kernel``) to be set to ``linux-dummy`` from a
:term:`configuration file`. Otherwise, an error is triggered.
When set to "1", the :term:`IMAGE_CONTAINER_NO_DUMMY` variable allows the
:term:`PREFERRED_PROVIDER` variable to be set to another value, thus
skipping the check and not triggering the build error. Any other value
will keep the check.
This variable should be set from the image recipe using the ``container``
image type.
See the documentation of the :ref:`ref-classes-image-container` class for
more information on why setting the :term:`PREFERRED_PROVIDER` to
``linux-dummy`` is advised with this class.
:term:`IMAGE_DEVICE_TABLES`
Specifies one or more files that contain custom device tables that
are passed to the ``makedevs`` command as part of creating an image.

View File

@@ -0,0 +1,14 @@
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
================================
Yocto Project Security Reference
================================
.. toctree::
:caption: Table of Contents
:numbered:
security-team
reporting-vulnerabilities
.. include:: /boilerplate.rst

View File

@@ -0,0 +1,85 @@
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
Reporting Vulnerabilities
*************************
The Yocto Project and OpenEmbedded are open-source, community-based projects
used in numerous products. They assemble multiple other open-source projects,
and need to handle security issues and practices both internal (in the code
maintained by both projects), and external (maintained by other projects and
organizations).
This manual assembles security-related information concerning the whole
ecosystem. It includes information on reporting a potential security issue,
the operation of the YP Security team and how to contribute in the
related code. It is written to be useful for both security researchers and
YP developers.
How to report a potential security vulnerability?
=================================================
If you would like to report a public issue (for example, one with a released
CVE number), please report it using the
:yocto_bugs:`Security Bugzilla </enter_bug.cgi?product=Security>`.
If you are dealing with a not-yet-released issue, or an urgent one, please send
a message to security AT yoctoproject DOT org, including as many details as
possible: the layer or software module affected, the recipe and its version,
and any example code, if available. This mailing list is monitored by the
Yocto Project Security team.
For each layer, you might also look for specific instructions (if any) for
reporting potential security issues in the specific ``SECURITY.md`` file at the
root of the repository. Instructions on how and where submit a patch are
usually available in ``README.md``. If this is your first patch to the
Yocto Project/OpenEmbedded, you might want to have a look into the
Contributor's Manual section
":ref:`contributor-guide/submit-changes:preparing changes for submission`".
Branches maintained with security fixes
---------------------------------------
See the
:ref:`Release process <ref-manual/release-process:Stable Release Process>`
documentation for details regarding the policies and maintenance of stable
branches.
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
-------------------------------------------------
We have set up two security-related emails/mailing lists:
- Public Mailing List: yocto [dash] security [at] yoctoproject[dot] org
This is a public mailing list for anyone to subscribe to. This list is an
open list to discuss public security issues/patches and security-related
initiatives. For more information, including subscription information,
please see the :yocto_lists:`yocto-security mailing list info page
</g/yocto-security>`.
This list requires moderator approval for new topics to be posted, to avoid
private security reports to be posted by mistake.
- Yocto Project Security Team: security [at] yoctoproject [dot] org
This is an email for reporting non-published potential vulnerabilities.
Emails sent to this address are forwarded to the Yocto Project Security
Team members.
What you should do if you find a security vulnerability
-------------------------------------------------------
If you find a security flaw: a crash, an information leakage, or anything that
can have a security impact if exploited in any Open Source software built or
used by the Yocto Project, please report this to the Yocto Project Security
Team. If you prefer to contact the upstream project directly, please send a
copy to the security team at the Yocto Project as well. If you believe this is
highly sensitive information, please report the vulnerability in a secure way,
i.e. encrypt the email and send it to the private list. This ensures that
the exploit is not leaked and exploited before a response/fix has been generated.

View File

@@ -0,0 +1,110 @@
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
Security team
*************
The Yocto Project/OpenEmbedded security team coordinates the work on security
subjects in the project. All general discussion takes place publicly. The
Security Team only uses confidential communication tools to deal with private
vulnerability reports before they are released.
Security team appointment
=========================
The Yocto Project Security Team consists of at least three members. When new
members are needed, the Yocto Project Technical Steering Committee (YP TSC)
asks for nominations by public channels including a nomination deadline.
Self-nominations are possible. When the limit time is
reached, the YP TSC posts the list of candidates for the comments of project
participants and developers. Comments may be sent publicly or privately to the
YP and OE TSCs. The candidates are approved by both YP TSC and OpenEmbedded
Technical Steering Committee (OE TSC) and the final list of the team members
is announced publicly. The aim is to have people representing technical
leadership, security knowledge and infrastructure present with enough people
to provide backup/coverage but keep the notification list small enough to
minimize information risk and maintain trust.
YP Security Team members may resign at any time.
Security Team Operations
========================
The work of the Security Team might require high confidentiality. Team members
are individuals selected by merit and do not represent the companies they work
for. They do not share information about confidential issues outside of the team
and do not hint about ongoing embargoes.
Team members can bring in domain experts as needed. Those people should be
added to individual issues only and adhere to the same standards as the YP
Security Team.
The YP security team organizes its meetings and communication as needed.
When the YP Security team receives a report about a potential security
vulnerability, they quickly analyze and notify the reporter of the result.
They might also request more information.
If the issue is confirmed and affects the code maintained by the YP, they
confidentially notify maintainers of that code and work with them to prepare
a fix.
If the issue is confirmed and affects an upstream project, the YP security team
notifies the project. Usually, the upstream project analyzes the problem again.
If they deem it a real security problem in their software, they develop and
release a fix following their security policy. They may want to include the
original reporter in the loop. There is also sometimes some coordination for
handling patches, backporting patches etc, or just understanding the problem
or what caused it.
When the fix is publicly available, the YP security team member or the
package maintainer sends patches against the YP code base, following usual
procedures, including public code review.
What Yocto Security Team does when it receives a security vulnerability
=======================================================================
The YP Security Team team performs a quick analysis and would usually report
the flaw to the upstream project. Normally the upstream project analyzes the
problem. If they deem it a real security problem in their software, they
develop and release a fix following their own security policy. They may want
to include the original reporter in the loop. There is also sometimes some
coordination for handling patches, backporting patches etc, or just
understanding the problem or what caused it.
The security policy of the upstream project might include a notification to
Linux distributions or other important downstream projects in advance to
discuss coordinated disclosure. These mailing lists are normally non-public.
When the upstream project releases a version with the fix, they are responsible
for contacting `Mitre <https://www.cve.org/>`__ to get a CVE number assigned and
the CVE record published.
If an upstream project does not respond quickly
===============================================
If an upstream project does not fix the problem in a reasonable time,
the Yocto's Security Team will contact other interested parties (usually
other distributions) in the community and together try to solve the
vulnerability as quickly as possible.
The Yocto Project Security team adheres to the 90 days disclosure policy
by default. An increase of the embargo time is possible when necessary.
Security Team Members
=====================
For secure communications, please send your messages encrypted using the GPG
keys. Remember, message headers are not encrypted so do not include sensitive
information in the subject line.
- Ross Burton: <ross [at] burtonini [dot] com> `Public key <https://keys.openpgp.org/search?q=ross%40burtonini.com>`__
- Michael Halstead: <mhalstead [at] linuxfoundation [dot] org>
`Public key <https://pgp.mit.edu/pks/lookup?op=vindex&search=0x3373170601861969>`__
or `Public key <https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xd1f2407285e571ed12a407a73373170601861969>`__
- Richard Purdie: <richard.purdie [at] linuxfoundation [dot] org> `Public key <https://keys.openpgp.org/search?q=richard.purdie%40linuxfoundation.org>`__
- Marta Rybczynska: <marta DOT rybczynska [at] syslinbit [dot] com> `Public key <https://keys.openpgp.org/search?q=marta.rybczynska@syslinbit.com>`__
- Steve Sakoman: <steve [at] sakoman [dot] com> `Public key <https://keys.openpgp.org/search?q=steve%40sakoman.com>`__

View File

@@ -70,6 +70,25 @@ test. Here is what you have to do for each recipe:
cd test
make -k runtest-TESTS
- *Return an appropriate exit code*: The ``run-ptest`` script must return 0 on
success, 1 on failure. This is needed by ``ptest-runner`` to keep track of
the successful and failed tests.
- *Make sure the test prints at least one test result*: The execution of the
``run-ptest`` script must result in at least one test result output on the
console, with the following format::
result: testname
Where ``result`` can be one of ``PASS``, ``SKIP``, or ``FAIL``. ``testname``
can be any name.
There can be as many test results as desired.
This information is read by the :ref:`ref-classes-testimage` class and
:oe_git:`logparser </openembedded-core/tree/meta/lib/oeqa/utils/logparser.py>`
module.
- *Ensure dependencies are met:* If the test adds build or runtime
dependencies that normally do not exist for the package (such as
requiring "make" to run the test suite), use the

View File

@@ -98,7 +98,7 @@ contact us with other suggestions.
function of a particular part of the workflow gives you an idea of what might
be going wrong.
.. image:: figures/yp-how-it-works-new-diagram.png
.. image:: overview-manual/svg/yp-flow-diagram.*
#. **Know that you can generate a dependency graph and learn how to do it:**
A dependency graph shows dependencies between recipes, tasks, and targets.

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.32"
DISTRO_VERSION = "4.0.34"
DISTRO_CODENAME = "kirkstone"
SDK_VENDOR = "-pokysdk"
SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
@@ -41,12 +41,16 @@ SANITY_TESTED_DISTROS ?= " \
fedora-37 \n \
fedora-39 \n \
fedora-40 \n \
fedora-41 \n \
debian-11 \n \
debian-12 \n \
opensuseleap-15.3 \n \
almalinux-8.8 \n \
almalinux-8.9 \n \
almalinux-8.10 \n \
almalinux-9.4 \n \
rocky-8 \n \
rocky-9 \n \
"
# add poky sanity bbclass
INHERIT += "poky-sanity"

View File

@@ -859,7 +859,7 @@ result: $result
metadata revisions:
END
cat ${BUILDHISTORY_DIR}/metadata-revs >> $commitmsgfile
git commit $commitopts -F $commitmsgfile --author "${BUILDHISTORY_COMMIT_AUTHOR}" > /dev/null
git commit --no-gpg-sign $commitopts -F $commitmsgfile --author "${BUILDHISTORY_COMMIT_AUTHOR}" > /dev/null
rm $commitmsgfile
}

View File

@@ -95,3 +95,39 @@ addtask addto_recipe_sysroot after do_populate_sysroot
do_addto_recipe_sysroot[deptask] = "do_populate_sysroot"
PATH:prepend = "${COREBASE}/scripts/cross-intercept:"
#
# Cross task outputs can call native dependencies and even when cross
# recipe output doesn't change it might produce different results when
# the called native dependency is changed, e.g. clang-cross-${TARGET_ARCH}
# contains symlink to clang binary from clang-native, but when clang-native
# outhash is changed, clang-cross-${TARGET_ARCH} will still be considered
# equivalent and target recipes aren't rebuilt with new clang binary, see
# work around in https://github.com/kraj/meta-clang/pull/1140 to make target
# recipes to depend directly not only on clang-cross-${TARGET_ARCH} but
# clang-native as well.
#
# This can cause poor interactions with hash equivalence, since this recipes
# output-changing dependency is "hidden" and downstream task only see that this
# recipe has the same outhash and therefore is equivalent. This can result in
# different output in different cases.
#
# To resolve this, unhide the output-changing dependency by adding its unihash
# to this tasks outhash calculation. Unfortunately, don't know specifically
# know which dependencies are output-changing, so we have to add all of them.
#
python cross_add_do_populate_sysroot_deps () {
current_task = "do_" + d.getVar("BB_CURRENTTASK")
if current_task != "do_populate_sysroot":
return
taskdepdata = d.getVar("BB_TASKDEPDATA", False)
pn = d.getVar("PN")
deps = {
dep[0]:dep[6] for dep in taskdepdata.values() if
dep[1] == current_task and dep[0] != pn
}
d.setVar("HASHEQUIV_EXTRA_SIGDATA", "\n".join("%s: %s" % (k, deps[k]) for k in sorted(deps.keys())))
}
SSTATECREATEFUNCS += "cross_add_do_populate_sysroot_deps"

View File

@@ -12,7 +12,7 @@ class BuildCpioTest(OERuntimeTestCase):
@classmethod
def setUpClass(cls):
uri = 'https://downloads.yoctoproject.org/mirror/sources/cpio-2.13.tar.gz'
uri = 'https://downloads.yoctoproject.org/mirror/sources/cpio-2.14.tar.gz'
cls.project = TargetBuildProject(cls.tc.target,
uri,
dl_dir = cls.tc.td['DL_DIR'])

View File

@@ -17,10 +17,10 @@ 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://ftpmirror.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.14.tar.gz")
dirs = {}
dirs["source"] = os.path.join(testdir, "cpio-2.13")
dirs["source"] = os.path.join(testdir, "cpio-2.14")
dirs["build"] = os.path.join(testdir, "build")
dirs["install"] = os.path.join(testdir, "install")

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://ftpmirror.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
"https://ftpmirror.gnu.org/gnu/cpio/cpio-2.14.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

@@ -0,0 +1,40 @@
From 9c2ae73b549a653f5f1bd5d4edebc50a764bad06 Mon Sep 17 00:00:00 2001
From: Jamie <volticks@gmail.com>
Date: Mon, 14 Jul 2025 09:52:59 +0100
Subject: [PATCH 1/3] commands/usbtest: Use correct string length field
An incorrect length field is used for buffer allocation. This leads to
grub_utf16_to_utf8() receiving an incorrect/different length and possibly
causing OOB write. This makes sure to use the correct length.
Fixes: CVE-2025-61661
CVE: CVE-2025-61661
Upstream-Status: Backport
[https://gitweb.git.savannah.gnu.org/gitweb/?p=grub.git;a=commit;h=549a9cc372fd0b96a4ccdfad0e12140476cc62a3]
Reported-by: Jamie <volticks@gmail.com>
Signed-off-by: Jamie <volticks@gmail.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
---
grub-core/commands/usbtest.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grub-core/commands/usbtest.c b/grub-core/commands/usbtest.c
index 2c6d93fe6..8ef187a9a 100644
--- a/grub-core/commands/usbtest.c
+++ b/grub-core/commands/usbtest.c
@@ -99,7 +99,7 @@ grub_usb_get_string (grub_usb_device_t dev, grub_uint8_t index, int langid,
return GRUB_USB_ERR_NONE;
}
- *string = grub_malloc (descstr.length * 2 + 1);
+ *string = grub_malloc (descstrp->length * 2 + 1);
if (! *string)
{
grub_free (descstrp);
--
2.34.1

View File

@@ -0,0 +1,72 @@
From c47760a907c91283bac9a8400d6975574b1d3986 Mon Sep 17 00:00:00 2001
From: Alec Brown <alec.r.brown@oracle.com>
Date: Thu, 21 Aug 2025 21:14:06 +0000
Subject: [PATCH 2/3] gettext/gettext: Unregister gettext command on module
unload
When the gettext module is loaded, the gettext command is registered but
isn't unregistered when the module is unloaded. We need to add a call to
grub_unregister_command() when unloading the module.
Fixes: CVE-2025-61662
CVE: CVE-2025-61662
Upstream-Status: Backport
[https://gitweb.git.savannah.gnu.org/gitweb/?p=grub.git;a=commit;h=8ed78fd9f0852ab218cc1f991c38e5a229e43807]
Reported-by: Alec Brown <alec.r.brown@oracle.com>
Signed-off-by: Alec Brown <alec.r.brown@oracle.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
---
grub-core/gettext/gettext.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/grub-core/gettext/gettext.c b/grub-core/gettext/gettext.c
index 7a25c9d67..ef1258ee0 100644
--- a/grub-core/gettext/gettext.c
+++ b/grub-core/gettext/gettext.c
@@ -502,6 +502,8 @@ grub_cmd_translate (grub_command_t cmd __attribute__ ((unused)),
return 0;
}
+static grub_command_t cmd;
+
GRUB_MOD_INIT (gettext)
{
const char *lang;
@@ -521,13 +523,14 @@ GRUB_MOD_INIT (gettext)
grub_register_variable_hook ("locale_dir", NULL, read_main);
grub_register_variable_hook ("secondary_locale_dir", NULL, read_secondary);
- grub_register_command_p1 ("gettext", grub_cmd_translate,
- N_("STRING"),
- /* TRANSLATORS: It refers to passing the string through gettext.
- So it's "translate" in the same meaning as in what you're
- doing now.
- */
- N_("Translates the string with the current settings."));
+ cmd = grub_register_command_p1 ("gettext", grub_cmd_translate,
+ N_("STRING"),
+ /*
+ * TRANSLATORS: It refers to passing the string through gettext.
+ * So it's "translate" in the same meaning as in what you're
+ * doing now.
+ */
+ N_("Translates the string with the current settings."));
/* Reload .mo file information if lang changes. */
grub_register_variable_hook ("lang", NULL, grub_gettext_env_write_lang);
@@ -544,6 +547,8 @@ GRUB_MOD_FINI (gettext)
grub_register_variable_hook ("secondary_locale_dir", NULL, NULL);
grub_register_variable_hook ("lang", NULL, NULL);
+ grub_unregister_command (cmd);
+
grub_gettext_delete_list (&main_context);
grub_gettext_delete_list (&secondary_context);
--
2.34.1

View File

@@ -0,0 +1,64 @@
From a182bd873e4aa93205ecbb7845ef7f0eda99dcf5 Mon Sep 17 00:00:00 2001
From: Alec Brown <alec.r.brown@oracle.com>
Date: Thu, 21 Aug 2025 21:14:07 +0000
Subject: [PATCH 3/3] normal/main: Unregister commands on module unload
When the normal module is loaded, the normal and normal_exit commands
are registered but aren't unregistered when the module is unloaded. We
need to add calls to grub_unregister_command() when unloading the module
for these commands.
Fixes: CVE-2025-61663
Fixes: CVE-2025-61664
CVE: CVE-2025-61663 CVE-2025-61664
Upstream-Status: Backport
[https://gitweb.git.savannah.gnu.org/gitweb/?p=grub.git;a=commit;h=05d3698b8b03eccc49e53491bbd75dba15f40917]
Reported-by: Alec Brown <alec.r.brown@oracle.com>
Signed-off-by: Alec Brown <alec.r.brown@oracle.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
---
grub-core/normal/main.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
index a95c25e5f..9d576de7a 100644
--- a/grub-core/normal/main.c
+++ b/grub-core/normal/main.c
@@ -499,7 +499,7 @@ grub_mini_cmd_clear (struct grub_command *cmd __attribute__ ((unused)),
return 0;
}
-static grub_command_t cmd_clear;
+static grub_command_t cmd_clear, cmd_normal, cmd_normal_exit;
static void (*grub_xputs_saved) (const char *str);
static const char *features[] = {
@@ -541,10 +541,10 @@ GRUB_MOD_INIT(normal)
grub_env_export ("pager");
/* Register a command "normal" for the rescue mode. */
- grub_register_command ("normal", grub_cmd_normal,
- 0, N_("Enter normal mode."));
- grub_register_command ("normal_exit", grub_cmd_normal_exit,
- 0, N_("Exit from normal mode."));
+ cmd_normal = grub_register_command ("normal", grub_cmd_normal,
+ 0, N_("Enter normal mode."));
+ cmd_normal_exit = grub_register_command ("normal_exit", grub_cmd_normal_exit,
+ 0, N_("Exit from normal mode."));
/* Reload terminal colors when these variables are written to. */
grub_register_variable_hook ("color_normal", NULL, grub_env_write_color_normal);
@@ -586,4 +586,6 @@ GRUB_MOD_FINI(normal)
grub_register_variable_hook ("color_highlight", NULL, NULL);
grub_fs_autoload_hook = 0;
grub_unregister_command (cmd_clear);
+ grub_unregister_command (cmd_normal);
+ grub_unregister_command (cmd_normal_exit);
}
--
2.34.1

View File

@@ -60,6 +60,9 @@ SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
file://CVE-2025-0690.patch \
file://CVE-2025-1118.patch \
file://CVE-2024-56738.patch \
file://CVE-2025-61661.patch \
file://CVE-2025-61662.patch \
file://CVE-2025-61663_61664.patch \
"
SRC_URI[sha256sum] = "23b64b4c741569f9426ed2e3d0e6780796fca081bee4c99f62aa3f53ae803f5f"

View File

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

View File

@@ -11,6 +11,7 @@ SRC_URI += " file://0001-riscv32-Use-double-float-ABI-for-rv32.patch \
file://CVE-2022-30790.patch \
file://CVE-2022-2347_1.patch \
file://CVE-2022-2347_2.patch \
file://CVE-2024-42040.patch \
file://CVE-2024-57254.patch \
file://CVE-2024-57255.patch \
file://CVE-2024-57256.patch \

View File

@@ -37,6 +37,10 @@ SRC_URI = "https://github.com/lathiat/avahi/releases/download/v${PV}/avahi-${PV}
file://CVE-2023-38473.patch \
file://CVE-2024-52616.patch \
file://CVE-2024-52615.patch \
file://CVE-2025-68276.patch \
file://CVE-2025-68468.patch \
file://CVE-2025-68471.patch \
file://CVE-2026-24401.patch \
"
UPSTREAM_CHECK_URI = "https://github.com/lathiat/avahi/releases/"

View File

@@ -0,0 +1,65 @@
From 8ec85459d8e6e59cc14457e16fb7ba171901f90e Mon Sep 17 00:00:00 2001
From: Evgeny Vereshchagin <evvers@ya.ru>
Date: Wed, 17 Dec 2025 08:11:23 +0000
Subject: [PATCH] core: refuse to create wide-area record browsers when
wide-area is off
It fixes a bug where it was possible for unprivileged local users to
crash avahi-daemon (with wide-area disabled) by creating record browsers
with the AVAHI_LOOKUP_USE_WIDE_AREA flag set via D-Bus (either by calling
the RecordBrowserNew method directly or by creating hostname/address/service
resolvers/browsers that create those browsers internally themselves).
```
$ gdbus call --system --dest org.freedesktop.Avahi --object-path / --method org.freedesktop.Avahi.Server.ResolveHostName -- -1 -1 yo.local -1 1
Error: GDBus.Error:org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying
```
```
dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/, member=ResolveHostName
avahi-daemon: wide-area.c:725: avahi_wide_area_scan_cache: Assertion `e' failed.
==307948==
==307948== Process terminating with default action of signal 6 (SIGABRT)
==307948== at 0x4B3630C: __pthread_kill_implementation (pthread_kill.c:44)
==307948== by 0x4ADF921: raise (raise.c:26)
==307948== by 0x4AC74AB: abort (abort.c:77)
==307948== by 0x4AC741F: __assert_fail_base.cold (assert.c:118)
==307948== by 0x48D8B85: avahi_wide_area_scan_cache (wide-area.c:725)
==307948== by 0x48C8953: lookup_scan_cache (browse.c:351)
==307948== by 0x48C8B1B: lookup_go (browse.c:386)
==307948== by 0x48C9148: defer_callback (browse.c:516)
==307948== by 0x48AEA0E: expiration_event (timeeventq.c:94)
==307948== by 0x489D3AE: timeout_callback (simple-watch.c:447)
==307948== by 0x489D787: avahi_simple_poll_dispatch (simple-watch.c:563)
==307948== by 0x489D91E: avahi_simple_poll_iterate (simple-watch.c:605)
==307948==
```
wide-area has been disabled by default since
9c4214146738146e454f098264690e8e884c39bd (v0.9-rc2).
https://github.com/avahi/avahi/security/advisories/GHSA-mhf3-865v-g5rc
CVE: CVE-2025-68276
Upstream-Status: Backport [https://github.com/avahi/avahi/commit/2d48e42d44a183f26a4d12d1f5d41abb9b7c6355]
(cherry picked from commit 2d48e42d44a183f26a4d12d1f5d41abb9b7c6355)
Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
---
avahi-core/browse.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/avahi-core/browse.c b/avahi-core/browse.c
index e8a915e..59d53cb 100644
--- a/avahi-core/browse.c
+++ b/avahi-core/browse.c
@@ -541,6 +541,11 @@ AvahiSRecordBrowser *avahi_s_record_browser_prepare(
AVAHI_CHECK_VALIDITY_RETURN_NULL(server, AVAHI_FLAGS_VALID(flags, AVAHI_LOOKUP_USE_WIDE_AREA|AVAHI_LOOKUP_USE_MULTICAST), AVAHI_ERR_INVALID_FLAGS);
AVAHI_CHECK_VALIDITY_RETURN_NULL(server, !(flags & AVAHI_LOOKUP_USE_WIDE_AREA) || !(flags & AVAHI_LOOKUP_USE_MULTICAST), AVAHI_ERR_INVALID_FLAGS);
+ if ((flags & AVAHI_LOOKUP_USE_WIDE_AREA) && !server->wide_area_lookup_engine) {
+ avahi_server_set_errno(server, AVAHI_ERR_NOT_SUPPORTED);
+ return NULL;
+ }
+
if (!(b = avahi_new(AvahiSRecordBrowser, 1))) {
avahi_server_set_errno(server, AVAHI_ERR_NO_MEMORY);
return NULL;

View File

@@ -0,0 +1,32 @@
From 483f83828cfda965fac914ff1b39c63c256372b2 Mon Sep 17 00:00:00 2001
From: Hugo Muis <198191869+friendlyhugo@users.noreply.github.com>
Date: Sun, 2 Mar 2025 18:06:24 +0100
Subject: [PATCH] core: fix DoS bug by removing incorrect assertion
Closes https://github.com/avahi/avahi/issues/683
CVE: CVE-2025-68468
Upstream-Status: Backport
[https://github.com/avahi/avahi/commit/f66be13d7f31a3ef806d226bf8b67240179d309a]
Signed-off-by: Amaury Couderc <amaury.couderc@est.tech>
---
avahi-core/browse.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/avahi-core/browse.c b/avahi-core/browse.c
index 86e4432..79595fe 100644
--- a/avahi-core/browse.c
+++ b/avahi-core/browse.c
@@ -295,7 +295,6 @@ static void lookup_multicast_callback(
lookup_drop_cname(l, interface, protocol, 0, r);
else {
/* It's a normal record, so let's call the user callback */
- assert(avahi_key_equal(b->key, l->key));
b->callback(b, interface, protocol, event, r, flags, b->userdata);
}
--
2.43.0

View File

@@ -0,0 +1,36 @@
From 4e84c1d6eb2f54d1643bd7ce62817c722ca36d25 Mon Sep 17 00:00:00 2001
From: Hugo Muis <198191869+friendlyhugo@users.noreply.github.com>
Date: Sun, 2 Mar 2025 18:06:24 +0100
Subject: [PATCH] core: fix DoS bug by changing assert to return
Closes https://github.com/avahi/avahi/issues/678
CVE: CVE-2025-68471
Upstream-Status: Backport
[https://github.com/avahi/avahi/commit/9c6eb53bf2e290aed84b1f207e3ce35c54cc0aa1]
Signed-off-by: Amaury Couderc <amaury.couderc@est.tech>
---
avahi-core/browse.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/avahi-core/browse.c b/avahi-core/browse.c
index 2941e57..86e4432 100644
--- a/avahi-core/browse.c
+++ b/avahi-core/browse.c
@@ -320,7 +320,10 @@ static int lookup_start(AvahiSRBLookup *l) {
assert(l);
assert(!(l->flags & AVAHI_LOOKUP_USE_WIDE_AREA) != !(l->flags & AVAHI_LOOKUP_USE_MULTICAST));
- assert(!l->wide_area && !l->multicast);
+ if (l->wide_area || l->multicast) {
+ /* Avoid starting a duplicate lookup */
+ return 0;
+ }
if (l->flags & AVAHI_LOOKUP_USE_WIDE_AREA) {
--
2.43.0

View File

@@ -0,0 +1,74 @@
From 5eea2640324928c15936b7a2bcbf8ea0de7b08f7 Mon Sep 17 00:00:00 2001
From: Hugo Muis <198191869+friendlyhugo@users.noreply.github.com>
Date: Sun, 2 Mar 2025 18:06:24 +0100
Subject: [PATCH] core: fix uncontrolled recursion bug using a simple loop
detection algorithm
Closes https://github.com/avahi/avahi/issues/501
CVE: CVE-2026-24401
Upstream-Status: Backport [https://github.com/avahi/avahi/commit/78eab31128479f06e30beb8c1cbf99dd921e2524]
(cherry picked from commit 78eab31128479f06e30beb8c1cbf99dd921e2524)
Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
---
avahi-core/browse.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/avahi-core/browse.c b/avahi-core/browse.c
index f461083..975b3e9 100644
--- a/avahi-core/browse.c
+++ b/avahi-core/browse.c
@@ -401,6 +401,40 @@ static int lookup_go(AvahiSRBLookup *l) {
return n;
}
+static int lookup_exists_in_path(AvahiSRBLookup* lookup, AvahiSRBLookup* from, AvahiSRBLookup* to) {
+ AvahiRList* rl;
+ if (from == to)
+ return 0;
+ for (rl = from->cname_lookups; rl; rl = rl->rlist_next) {
+ int r = lookup_exists_in_path(lookup, rl->data, to);
+ if (r == 1) {
+ /* loop detected, propagate result */
+ return r;
+ } else if (r == 0) {
+ /* is loop detected? */
+ return lookup == from;
+ } else {
+ /* `to` not found, continue */
+ continue;
+ }
+ }
+ /* no path found */
+ return -1;
+}
+
+static int cname_would_create_loop(AvahiSRBLookup* l, AvahiSRBLookup* n) {
+ int ret;
+ if (l == n)
+ /* Loop to self */
+ return 1;
+
+ ret = lookup_exists_in_path(n, l->record_browser->root_lookup, l);
+
+ /* Path to n always exists */
+ assert(ret != -1);
+ return ret;
+}
+
static void lookup_handle_cname(AvahiSRBLookup *l, AvahiIfIndex interface, AvahiProtocol protocol, AvahiLookupFlags flags, AvahiRecord *r) {
AvahiKey *k;
AvahiSRBLookup *n;
@@ -420,6 +454,12 @@ static void lookup_handle_cname(AvahiSRBLookup *l, AvahiIfIndex interface, Avahi
return;
}
+ if (cname_would_create_loop(l, n)) {
+ /* CNAME loops are not allowed */
+ lookup_unref(n);
+ return;
+ }
+
l->cname_lookups = avahi_rlist_prepend(l->cname_lookups, lookup_ref(n));
lookup_go(n);

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] = "6ddc1d981511c4da0b203b0513af131e5d15e5f1c261145736fe1f35dd1fe79d"
SRC_URI[sha256sum] = "81f5035a25c576af1a93f0061cf70bde6d00a0c7bd1274abf73f5b5389a6f82d"
UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
# follow the ESV versions divisible by 2

View File

@@ -0,0 +1,38 @@
From fd702c02497b2f398e739e3119bed0b23dd7aa7b Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Tue, 20 Jan 2026 01:10:36 -0800
Subject: [PATCH] Fix injection bug with bogus user names
Problem reported by Kyu Neushwaistein.
* telnetd/utility.c (_var_short_name):
Ignore user names that start with '-' or contain shell metacharacters.
Signed-off-by: Simon Josefsson <simon@josefsson.org>
CVE: CVE-2026-24061
Upstream-Status: Backport [https://codeberg.org/inetutils/inetutils/commit/fd702c02497b2f398e739e3119bed0b23dd7aa7b]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
telnetd/utility.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/telnetd/utility.c b/telnetd/utility.c
index b486226e..c02cd0e6 100644
--- a/telnetd/utility.c
+++ b/telnetd/utility.c
@@ -1737,7 +1737,14 @@ _var_short_name (struct line_expander *exp)
return user_name ? xstrdup (user_name) : NULL;
case 'U':
- return getenv ("USER") ? xstrdup (getenv ("USER")) : xstrdup ("");
+ {
+ /* Ignore user names starting with '-' or containing shell
+ metachars, as they can cause trouble. */
+ char const *u = getenv ("USER");
+ return xstrdup ((u && *u != '-'
+ && !u[strcspn (u, "\t\n !\"#$&'()*;<=>?[\\^`{|}~")])
+ ? u : "");
+ }
default:
exp->state = EXP_STATE_ERROR;

View File

@@ -0,0 +1,82 @@
From ccba9f748aa8d50a38d7748e2e60362edd6a32cc Mon Sep 17 00:00:00 2001
From: Simon Josefsson <simon@josefsson.org>
Date: Tue, 20 Jan 2026 14:02:39 +0100
Subject: [PATCH] telnetd: Sanitize all variable expansions
* telnetd/utility.c (sanitize): New function.
(_var_short_name): Use it for all variables.
CVE: CVE-2026-24061
Upstream-Status: Backport [https://codeberg.org/inetutils/inetutils/commit/ccba9f748aa8d50a38d7748e2e60362edd6a32cc]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
telnetd/utility.c | 32 ++++++++++++++++++--------------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/telnetd/utility.c b/telnetd/utility.c
index c02cd0e6..b21ad961 100644
--- a/telnetd/utility.c
+++ b/telnetd/utility.c
@@ -1688,6 +1688,17 @@ static void _expand_cond (struct line_expander *exp);
static void _skip_block (struct line_expander *exp);
static void _expand_block (struct line_expander *exp);
+static char *
+sanitize (const char *u)
+{
+ /* Ignore values starting with '-' or containing shell metachars, as
+ they can cause trouble. */
+ if (u && *u != '-' && !u[strcspn (u, "\t\n !\"#$&'()*;<=>?[\\^`{|}~")])
+ return u;
+ else
+ return "";
+}
+
/* Expand a variable referenced by its short one-symbol name.
Input: exp->cp points to the variable name.
FIXME: not implemented */
@@ -1714,13 +1725,13 @@ _var_short_name (struct line_expander *exp)
return xstrdup (timebuf);
case 'h':
- return xstrdup (remote_hostname);
+ return xstrdup (sanitize (remote_hostname));
case 'l':
- return xstrdup (local_hostname);
+ return xstrdup (sanitize (local_hostname));
case 'L':
- return xstrdup (line);
+ return xstrdup (sanitize (line));
case 't':
q = strchr (line + 1, '/');
@@ -1728,23 +1739,16 @@ _var_short_name (struct line_expander *exp)
q++;
else
q = line;
- return xstrdup (q);
+ return xstrdup (sanitize (q));
case 'T':
- return terminaltype ? xstrdup (terminaltype) : NULL;
+ return terminaltype ? xstrdup (sanitize (terminaltype)) : NULL;
case 'u':
- return user_name ? xstrdup (user_name) : NULL;
+ return user_name ? xstrdup (sanitize (user_name)) : NULL;
case 'U':
- {
- /* Ignore user names starting with '-' or containing shell
- metachars, as they can cause trouble. */
- char const *u = getenv ("USER");
- return xstrdup ((u && *u != '-'
- && !u[strcspn (u, "\t\n !\"#$&'()*;<=>?[\\^`{|}~")])
- ? u : "");
- }
+ return xstrdup (sanitize (getenv ("USER")));
default:
exp->state = EXP_STATE_ERROR;

View File

@@ -24,6 +24,8 @@ SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.xz \
file://CVE-2022-39028.patch \
file://0001-CVE-2023-40303-ftpd-rcp-rlogin-rsh-rshd-uucpd-fix-ch.patch \
file://0002-CVE-2023-40303-Indent-changes-in-previous-commit.patch \
file://CVE-2026-24061-01.patch \
file://CVE-2026-24061-02.patch \
"
inherit autotools gettext update-alternatives texinfo

View File

@@ -0,0 +1,38 @@
From 7224be0fe2f4beb916b7b69141f478facd0f0634 Mon Sep 17 00:00:00 2001
From: Denis Ovsienko <denis@ovsienko.info>
Date: Sat, 27 Dec 2025 21:36:11 +0000
Subject: [PATCH] Rename one of the xdtoi() copies to simplify backporting.
CVE: CVE-2025-11961
Upstream-Status: Backport [https://github.com/the-tcpdump-group/libpcap/commit/7224be0fe2f4beb916b7b69141f478facd0f0634]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
nametoaddr.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/nametoaddr.c b/nametoaddr.c
index dc75495c..bdaacbf1 100644
--- a/nametoaddr.c
+++ b/nametoaddr.c
@@ -646,7 +646,7 @@ pcap_nametollc(const char *s)
/* Hex digit to 8-bit unsigned integer. */
static inline u_char
-xdtoi(u_char c)
+pcapint_xdtoi(u_char c)
{
if (c >= '0' && c <= '9')
return (u_char)(c - '0');
@@ -728,10 +728,10 @@ pcap_ether_aton(const char *s)
while (*s) {
if (*s == ':' || *s == '.' || *s == '-')
s += 1;
- d = xdtoi(*s++);
+ d = pcapint_xdtoi(*s++);
if (PCAP_ISXDIGIT(*s)) {
d <<= 4;
- d |= xdtoi(*s++);
+ d |= pcapint_xdtoi(*s++);
}
*ep++ = d;
}

View File

@@ -0,0 +1,433 @@
From b2d2f9a9a0581c40780bde509f7cc715920f1c02 Mon Sep 17 00:00:00 2001
From: Denis Ovsienko <denis@ovsienko.info>
Date: Fri, 19 Dec 2025 17:31:13 +0000
Subject: [PATCH] CVE-2025-11961: Fix OOBR and OOBW in pcap_ether_aton().
pcap_ether_aton() has for a long time required its string argument to be
a well-formed MAC-48 address, which is always the case when the argument
comes from other libpcap code, so the function has never validated the
input and used a simple loop to parse any of the three common MAC-48
address formats. However, the function has also been a part of the
public API, so calling it directly with a malformed address can cause
the loop to read beyond the end of the input string and/or to write
beyond the end of the allocated output buffer.
To handle invalid input more appropriately, replace the simple loop with
new functions and require the input to match a supported address format.
This problem was reported by Jin Wei, Kunwei Qian and Ping Chen.
(backported from commit dd08e53e9380e217ae7c7768da9cc3d7bf37bf83)
CVE: CVE-2025-11961
Upstream-Status: Backport [https://github.com/the-tcpdump-group/libpcap/commit/b2d2f9a9a0581c40780bde509f7cc715920f1c02]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
gencode.c | 5 +
nametoaddr.c | 367 +++++++++++++++++++++++++++++++++++++++++++++++----
2 files changed, 349 insertions(+), 23 deletions(-)
diff --git a/gencode.c b/gencode.c
index 3ddd15f8..76fb2d82 100644
--- a/gencode.c
+++ b/gencode.c
@@ -7206,6 +7206,11 @@ gen_ecode(compiler_state_t *cstate, const char *s, struct qual q)
return (NULL);
if ((q.addr == Q_HOST || q.addr == Q_DEFAULT) && q.proto == Q_LINK) {
+ /*
+ * Because the lexer guards the input string format, in this
+ * context the function returns NULL iff the implicit malloc()
+ * has failed.
+ */
cstate->e = pcap_ether_aton(s);
if (cstate->e == NULL)
bpf_error(cstate, "malloc");
diff --git a/nametoaddr.c b/nametoaddr.c
index f9fcd288..f50d0da5 100644
--- a/nametoaddr.c
+++ b/nametoaddr.c
@@ -703,39 +703,360 @@ __pcap_atodn(const char *s, bpf_u_int32 *addr)
return(32);
}
+// Man page: "xxxxxxxxxxxx", regexp: "^[0-9a-fA-F]{12}$".
+static u_char
+pcapint_atomac48_xxxxxxxxxxxx(const char *s, uint8_t *addr)
+{
+ if (strlen(s) == 12 &&
+ PCAP_ISXDIGIT(s[0]) &&
+ PCAP_ISXDIGIT(s[1]) &&
+ PCAP_ISXDIGIT(s[2]) &&
+ PCAP_ISXDIGIT(s[3]) &&
+ PCAP_ISXDIGIT(s[4]) &&
+ PCAP_ISXDIGIT(s[5]) &&
+ PCAP_ISXDIGIT(s[6]) &&
+ PCAP_ISXDIGIT(s[7]) &&
+ PCAP_ISXDIGIT(s[8]) &&
+ PCAP_ISXDIGIT(s[9]) &&
+ PCAP_ISXDIGIT(s[10]) &&
+ PCAP_ISXDIGIT(s[11])) {
+ addr[0] = pcapint_xdtoi(s[0]) << 4 | pcapint_xdtoi(s[1]);
+ addr[1] = pcapint_xdtoi(s[2]) << 4 | pcapint_xdtoi(s[3]);
+ addr[2] = pcapint_xdtoi(s[4]) << 4 | pcapint_xdtoi(s[5]);
+ addr[3] = pcapint_xdtoi(s[6]) << 4 | pcapint_xdtoi(s[7]);
+ addr[4] = pcapint_xdtoi(s[8]) << 4 | pcapint_xdtoi(s[9]);
+ addr[5] = pcapint_xdtoi(s[10]) << 4 | pcapint_xdtoi(s[11]);
+ return 1;
+ }
+ return 0;
+}
+
+// Man page: "xxxx.xxxx.xxxx", regexp: "^[0-9a-fA-F]{4}(\.[0-9a-fA-F]{4}){2}$".
+static u_char
+pcapint_atomac48_xxxx_3_times(const char *s, uint8_t *addr)
+{
+ const char sep = '.';
+ if (strlen(s) == 14 &&
+ PCAP_ISXDIGIT(s[0]) &&
+ PCAP_ISXDIGIT(s[1]) &&
+ PCAP_ISXDIGIT(s[2]) &&
+ PCAP_ISXDIGIT(s[3]) &&
+ s[4] == sep &&
+ PCAP_ISXDIGIT(s[5]) &&
+ PCAP_ISXDIGIT(s[6]) &&
+ PCAP_ISXDIGIT(s[7]) &&
+ PCAP_ISXDIGIT(s[8]) &&
+ s[9] == sep &&
+ PCAP_ISXDIGIT(s[10]) &&
+ PCAP_ISXDIGIT(s[11]) &&
+ PCAP_ISXDIGIT(s[12]) &&
+ PCAP_ISXDIGIT(s[13])) {
+ addr[0] = pcapint_xdtoi(s[0]) << 4 | pcapint_xdtoi(s[1]);
+ addr[1] = pcapint_xdtoi(s[2]) << 4 | pcapint_xdtoi(s[3]);
+ addr[2] = pcapint_xdtoi(s[5]) << 4 | pcapint_xdtoi(s[6]);
+ addr[3] = pcapint_xdtoi(s[7]) << 4 | pcapint_xdtoi(s[8]);
+ addr[4] = pcapint_xdtoi(s[10]) << 4 | pcapint_xdtoi(s[11]);
+ addr[5] = pcapint_xdtoi(s[12]) << 4 | pcapint_xdtoi(s[13]);
+ return 1;
+ }
+ return 0;
+}
+
/*
- * Convert 's', which can have the one of the forms:
+ * Man page: "xx:xx:xx:xx:xx:xx", regexp: "^[0-9a-fA-F]{1,2}(:[0-9a-fA-F]{1,2}){5}$".
+ * Man page: "xx-xx-xx-xx-xx-xx", regexp: "^[0-9a-fA-F]{1,2}(-[0-9a-fA-F]{1,2}){5}$".
+ * Man page: "xx.xx.xx.xx.xx.xx", regexp: "^[0-9a-fA-F]{1,2}(\.[0-9a-fA-F]{1,2}){5}$".
+ * (Any "xx" above can be "x", which is equivalent to "0x".)
*
- * "xx:xx:xx:xx:xx:xx"
- * "xx.xx.xx.xx.xx.xx"
- * "xx-xx-xx-xx-xx-xx"
- * "xxxx.xxxx.xxxx"
- * "xxxxxxxxxxxx"
+ * An equivalent (and parametrisable for EUI-64) FSM could be implemented using
+ * a smaller graph, but that graph would be neither acyclic nor planar nor
+ * trivial to verify.
*
- * (or various mixes of ':', '.', and '-') into a new
- * ethernet address. Assumes 's' is well formed.
+ * |
+ * [.] v
+ * +<---------- START
+ * | |
+ * | | [0-9a-fA-F]
+ * | [.] v
+ * +<--------- BYTE0_X ----------+
+ * | | |
+ * | | [0-9a-fA-F] |
+ * | [.] v |
+ * +<--------- BYTE0_XX | [:\.-]
+ * | | |
+ * | | [:\.-] |
+ * | [.] v |
+ * +<----- BYTE0_SEP_BYTE1 <-----+
+ * | |
+ * | | [0-9a-fA-F]
+ * | [.] v
+ * +<--------- BYTE1_X ----------+
+ * | | |
+ * | | [0-9a-fA-F] |
+ * | [.] v |
+ * +<--------- BYTE1_XX | <sep>
+ * | | |
+ * | | <sep> |
+ * | [.] v |
+ * +<----- BYTE1_SEP_BYTE2 <-----+
+ * | |
+ * | | [0-9a-fA-F]
+ * | [.] v
+ * +<--------- BYTE2_X ----------+
+ * | | |
+ * | | [0-9a-fA-F] |
+ * | [.] v |
+ * +<--------- BYTE2_XX | <sep>
+ * | | |
+ * | | <sep> |
+ * | [.] v |
+ * +<----- BYTE2_SEP_BYTE3 <-----+
+ * | |
+ * | | [0-9a-fA-F]
+ * | [.] v
+ * +<--------- BYTE3_X ----------+
+ * | | |
+ * | | [0-9a-fA-F] |
+ * | [.] v |
+ * +<--------- BYTE3_XX | <sep>
+ * | | |
+ * | | <sep> |
+ * | [.] v |
+ * +<----- BYTE3_SEP_BYTE4 <-----+
+ * | |
+ * | | [0-9a-fA-F]
+ * | [.] v
+ * +<--------- BYTE4_X ----------+
+ * | | |
+ * | | [0-9a-fA-F] |
+ * | [.] v |
+ * +<--------- BYTE4_XX | <sep>
+ * | | |
+ * | | <sep> |
+ * | [.] v |
+ * +<----- BYTE4_SEP_BYTE5 <-----+
+ * | |
+ * | | [0-9a-fA-F]
+ * | [.] v
+ * +<--------- BYTE5_X ----------+
+ * | | |
+ * | | [0-9a-fA-F] |
+ * | [.] v |
+ * +<--------- BYTE5_XX | \0
+ * | | |
+ * | | \0 |
+ * | | v
+ * +--> (reject) +---------> (accept)
+ *
+ */
+static u_char
+pcapint_atomac48_x_xx_6_times(const char *s, uint8_t *addr)
+{
+ enum {
+ START,
+ BYTE0_X,
+ BYTE0_XX,
+ BYTE0_SEP_BYTE1,
+ BYTE1_X,
+ BYTE1_XX,
+ BYTE1_SEP_BYTE2,
+ BYTE2_X,
+ BYTE2_XX,
+ BYTE2_SEP_BYTE3,
+ BYTE3_X,
+ BYTE3_XX,
+ BYTE3_SEP_BYTE4,
+ BYTE4_X,
+ BYTE4_XX,
+ BYTE4_SEP_BYTE5,
+ BYTE5_X,
+ BYTE5_XX,
+ } fsm_state = START;
+ uint8_t buf[6];
+ const char *seplist = ":.-";
+ char sep;
+
+ while (*s) {
+ switch (fsm_state) {
+ case START:
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[0] = pcapint_xdtoi(*s);
+ fsm_state = BYTE0_X;
+ break;
+ }
+ goto reject;
+ case BYTE0_X:
+ if (strchr(seplist, *s)) {
+ sep = *s;
+ fsm_state = BYTE0_SEP_BYTE1;
+ break;
+ }
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[0] = buf[0] << 4 | pcapint_xdtoi(*s);
+ fsm_state = BYTE0_XX;
+ break;
+ }
+ goto reject;
+ case BYTE0_XX:
+ if (strchr(seplist, *s)) {
+ sep = *s;
+ fsm_state = BYTE0_SEP_BYTE1;
+ break;
+ }
+ goto reject;
+ case BYTE0_SEP_BYTE1:
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[1] = pcapint_xdtoi(*s);
+ fsm_state = BYTE1_X;
+ break;
+ }
+ goto reject;
+ case BYTE1_X:
+ if (*s == sep) {
+ fsm_state = BYTE1_SEP_BYTE2;
+ break;
+ }
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[1] = buf[1] << 4 | pcapint_xdtoi(*s);
+ fsm_state = BYTE1_XX;
+ break;
+ }
+ goto reject;
+ case BYTE1_XX:
+ if (*s == sep) {
+ fsm_state = BYTE1_SEP_BYTE2;
+ break;
+ }
+ goto reject;
+ case BYTE1_SEP_BYTE2:
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[2] = pcapint_xdtoi(*s);
+ fsm_state = BYTE2_X;
+ break;
+ }
+ goto reject;
+ case BYTE2_X:
+ if (*s == sep) {
+ fsm_state = BYTE2_SEP_BYTE3;
+ break;
+ }
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[2] = buf[2] << 4 | pcapint_xdtoi(*s);
+ fsm_state = BYTE2_XX;
+ break;
+ }
+ goto reject;
+ case BYTE2_XX:
+ if (*s == sep) {
+ fsm_state = BYTE2_SEP_BYTE3;
+ break;
+ }
+ goto reject;
+ case BYTE2_SEP_BYTE3:
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[3] = pcapint_xdtoi(*s);
+ fsm_state = BYTE3_X;
+ break;
+ }
+ goto reject;
+ case BYTE3_X:
+ if (*s == sep) {
+ fsm_state = BYTE3_SEP_BYTE4;
+ break;
+ }
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[3] = buf[3] << 4 | pcapint_xdtoi(*s);
+ fsm_state = BYTE3_XX;
+ break;
+ }
+ goto reject;
+ case BYTE3_XX:
+ if (*s == sep) {
+ fsm_state = BYTE3_SEP_BYTE4;
+ break;
+ }
+ goto reject;
+ case BYTE3_SEP_BYTE4:
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[4] = pcapint_xdtoi(*s);
+ fsm_state = BYTE4_X;
+ break;
+ }
+ goto reject;
+ case BYTE4_X:
+ if (*s == sep) {
+ fsm_state = BYTE4_SEP_BYTE5;
+ break;
+ }
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[4] = buf[4] << 4 | pcapint_xdtoi(*s);
+ fsm_state = BYTE4_XX;
+ break;
+ }
+ goto reject;
+ case BYTE4_XX:
+ if (*s == sep) {
+ fsm_state = BYTE4_SEP_BYTE5;
+ break;
+ }
+ goto reject;
+ case BYTE4_SEP_BYTE5:
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[5] = pcapint_xdtoi(*s);
+ fsm_state = BYTE5_X;
+ break;
+ }
+ goto reject;
+ case BYTE5_X:
+ if (PCAP_ISXDIGIT(*s)) {
+ buf[5] = buf[5] << 4 | pcapint_xdtoi(*s);
+ fsm_state = BYTE5_XX;
+ break;
+ }
+ goto reject;
+ case BYTE5_XX:
+ goto reject;
+ } // switch
+ s++;
+ } // while
+
+ if (fsm_state == BYTE5_X || fsm_state == BYTE5_XX) {
+ // accept
+ memcpy(addr, buf, sizeof(buf));
+ return 1;
+ }
+
+reject:
+ return 0;
+}
+
+// The 'addr' argument must point to an array of at least 6 elements.
+static int
+pcapint_atomac48(const char *s, uint8_t *addr)
+{
+ return s && (
+ pcapint_atomac48_xxxxxxxxxxxx(s, addr) ||
+ pcapint_atomac48_xxxx_3_times(s, addr) ||
+ pcapint_atomac48_x_xx_6_times(s, addr)
+ );
+}
+
+/*
+ * If 's' is a MAC-48 address in one of the forms documented in pcap-filter(7)
+ * for "ether host", return a pointer to an allocated buffer with the binary
+ * value of the address. Return NULL on any error.
*/
u_char *
pcap_ether_aton(const char *s)
{
- register u_char *ep, *e;
- register u_char d;
+ uint8_t tmp[6];
+ if (! pcapint_atomac48(s, tmp))
+ return (NULL);
- e = ep = (u_char *)malloc(6);
+ u_char *e = malloc(6);
if (e == NULL)
return (NULL);
-
- while (*s) {
- if (*s == ':' || *s == '.' || *s == '-')
- s += 1;
- d = pcapint_xdtoi(*s++);
- if (PCAP_ISXDIGIT(*s)) {
- d <<= 4;
- d |= pcapint_xdtoi(*s++);
- }
- *ep++ = d;
- }
-
+ memcpy(e, tmp, sizeof(tmp));
return (e);
}

View File

@@ -0,0 +1,33 @@
From 7fabf607f2319a36a0bd78444247180acb838e69 Mon Sep 17 00:00:00 2001
From: Guy Harris <gharris@sonic.net>
Date: Sun, 7 Sep 2025 12:51:56 -0700
Subject: [PATCH] Fix a copy-and-pasteo in utf_16le_to_utf_8_truncated().
For the four octets of UTF-8 case, it was decrementing the remaining
buffer length by 3, not 4.
Thanks to a team of developers from the Univesity of Waterloo for
reporting this.
(cherry picked from commit aebfca1aea2fc8c177760a26e8f4de27b51d1b3b)
CVE: CVE-2025-11964
Upstream-Status: Backport [https://github.com/the-tcpdump-group/libpcap/commit/7fabf607f2319a36a0bd78444247180acb838e69]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
fmtutils.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fmtutils.c b/fmtutils.c
index a5a4fe62..78a0f8b7 100644
--- a/fmtutils.c
+++ b/fmtutils.c
@@ -235,7 +235,7 @@ utf_16le_to_utf_8_truncated(const wchar_t *utf_16, char *utf_8,
*utf_8++ = ((uc >> 12) & 0x3F) | 0x80;
*utf_8++ = ((uc >> 6) & 0x3F) | 0x80;
*utf_8++ = ((uc >> 0) & 0x3F) | 0x80;
- utf_8_len -= 3;
+ utf_8_len -= 4;
}
}

View File

@@ -17,6 +17,9 @@ SRC_URI = "https://www.tcpdump.org/release/${BP}.tar.gz \
file://CVE-2023-7256-pre4.patch \
file://CVE-2023-7256.patch \
file://CVE-2024-8006.patch \
file://CVE-2025-11961-01.patch \
file://CVE-2025-11961-02.patch \
file://CVE-2025-11964.patch \
"
SRC_URI[sha256sum] = "ed285f4accaf05344f90975757b3dbfe772ba41d1c401c2648b7fa45b711bdd4"

View File

@@ -1,7 +1,7 @@
From 24734088e1034392de981151dfe57e3a379ada18 Mon Sep 17 00:00:00 2001
From 295485f5c4b3120b272b81f92356f6d24871c02e Mon Sep 17 00:00:00 2001
From: Hubert Kario <hkario@redhat.com>
Date: Tue, 15 Mar 2022 13:58:08 +0100
Subject: [PATCH 1/3] rsa: add implicit rejection in PKCS#1 v1.5
Subject: [PATCH] rsa: add implicit rejection in PKCS#1 v1.5
The RSA decryption as implemented before required very careful handling
of both the exit code returned by OpenSSL and the potentially returned
@@ -43,6 +43,7 @@ Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13817)
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
---
crypto/rsa/rsa_ossl.c | 95 +++++++-
crypto/rsa/rsa_pk1.c | 252 ++++++++++++++++++++++
@@ -56,7 +57,7 @@ Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
9 files changed, 393 insertions(+), 5 deletions(-)
diff --git a/crypto/rsa/rsa_ossl.c b/crypto/rsa/rsa_ossl.c
index 0fc642e777..330302ae55 100644
index 6c32764..d658a3c 100644
--- a/crypto/rsa/rsa_ossl.c
+++ b/crypto/rsa/rsa_ossl.c
@@ -17,6 +17,9 @@
@@ -68,8 +69,8 @@ index 0fc642e777..330302ae55 100644
+#include <openssl/hmac.h>
static int rsa_ossl_public_encrypt(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa, int padding);
@@ -377,8 +380,13 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
unsigned char *to, RSA *rsa, int padding);
@@ -373,8 +376,13 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
BIGNUM *f, *ret;
int j, num = 0, r = -1;
unsigned char *buf = NULL;
@@ -83,7 +84,7 @@ index 0fc642e777..330302ae55 100644
/*
* Used only if the blinding structure is shared. A non-NULL unblind
* instructs rsa_blinding_convert() and rsa_blinding_invert() to store
@@ -408,6 +416,11 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
@@ -404,6 +412,11 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
goto err;
}
@@ -95,7 +96,7 @@ index 0fc642e777..330302ae55 100644
/* make data into a big number */
if (BN_bin2bn(from, (int)flen, f) == NULL)
goto err;
@@ -472,13 +485,91 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
@@ -464,13 +477,91 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
if (!rsa_blinding_invert(blinding, ret, unblind, ctx))
goto err;
@@ -188,17 +189,17 @@ index 0fc642e777..330302ae55 100644
break;
case RSA_PKCS1_OAEP_PADDING:
r = RSA_padding_check_PKCS1_OAEP(to, num, buf, j, num, NULL, 0);
@@ -501,6 +592,8 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
@@ -493,6 +584,8 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
#endif
err:
err:
+ HMAC_CTX_free(hmac);
+ EVP_MD_free(md);
BN_CTX_end(ctx);
BN_CTX_free(ctx);
OPENSSL_clear_free(buf, num);
diff --git a/crypto/rsa/rsa_pk1.c b/crypto/rsa/rsa_pk1.c
index 51507fc030..5cd2b26879 100644
index bebb43a..3fe12b2 100644
--- a/crypto/rsa/rsa_pk1.c
+++ b/crypto/rsa/rsa_pk1.c
@@ -21,10 +21,14 @@
@@ -214,7 +215,7 @@ index 51507fc030..5cd2b26879 100644
+
int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen,
const unsigned char *from, int flen)
const unsigned char *from, int flen)
{
@@ -273,6 +277,254 @@ int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
return constant_time_select_int(good, mlen, -1);
@@ -472,7 +473,7 @@ index 51507fc030..5cd2b26879 100644
* ossl_rsa_padding_check_PKCS1_type_2_TLS() checks and removes the PKCS1 type 2
* padding from a decrypted RSA message in a TLS signature. The result is stored
diff --git a/doc/man1/openssl-pkeyutl.pod.in b/doc/man1/openssl-pkeyutl.pod.in
index 2f6ef0021d..015265a74d 100644
index 2f6ef00..015265a 100644
--- a/doc/man1/openssl-pkeyutl.pod.in
+++ b/doc/man1/openssl-pkeyutl.pod.in
@@ -273,6 +273,11 @@ signed or verified directly instead of using a B<DigestInfo> structure. If a
@@ -488,7 +489,7 @@ index 2f6ef0021d..015265a74d 100644
For B<x931> if the digest type is set it is used to format the block data
diff --git a/doc/man1/openssl-rsautl.pod.in b/doc/man1/openssl-rsautl.pod.in
index 0a32fd965b..4c462abc8c 100644
index 0a32fd9..4c462ab 100644
--- a/doc/man1/openssl-rsautl.pod.in
+++ b/doc/man1/openssl-rsautl.pod.in
@@ -105,6 +105,11 @@ The padding to use: PKCS#1 v1.5 (the default), PKCS#1 OAEP,
@@ -504,7 +505,7 @@ index 0a32fd965b..4c462abc8c 100644
Hex dump the output data.
diff --git a/doc/man3/EVP_PKEY_CTX_ctrl.pod b/doc/man3/EVP_PKEY_CTX_ctrl.pod
index 3075eaafd6..e788f38809 100644
index 3075eaa..e788f38 100644
--- a/doc/man3/EVP_PKEY_CTX_ctrl.pod
+++ b/doc/man3/EVP_PKEY_CTX_ctrl.pod
@@ -386,6 +386,13 @@ this behaviour should be tolerated then
@@ -522,7 +523,7 @@ index 3075eaafd6..e788f38809 100644
EVP_PKEY_CTX_set_dsa_paramgen_bits() sets the number of bits used for DSA
diff --git a/doc/man3/EVP_PKEY_decrypt.pod b/doc/man3/EVP_PKEY_decrypt.pod
index b6f9bad5f1..898535a7a2 100644
index b6f9bad..898535a 100644
--- a/doc/man3/EVP_PKEY_decrypt.pod
+++ b/doc/man3/EVP_PKEY_decrypt.pod
@@ -51,6 +51,18 @@ return 1 for success and 0 or a negative value for failure. In particular a
@@ -545,7 +546,7 @@ index b6f9bad5f1..898535a7a2 100644
Decrypt data using OAEP (for RSA keys):
diff --git a/doc/man3/RSA_padding_add_PKCS1_type_1.pod b/doc/man3/RSA_padding_add_PKCS1_type_1.pod
index 9f7025c497..36ae18563f 100644
index 9f7025c..36ae185 100644
--- a/doc/man3/RSA_padding_add_PKCS1_type_1.pod
+++ b/doc/man3/RSA_padding_add_PKCS1_type_1.pod
@@ -121,8 +121,8 @@ L<ERR_get_error(3)>.
@@ -570,7 +571,7 @@ index 9f7025c497..36ae18563f 100644
L<RSA_public_encrypt(3)>,
diff --git a/doc/man3/RSA_public_encrypt.pod b/doc/man3/RSA_public_encrypt.pod
index 1d38073aea..bd3f835ac6 100644
index 1d38073..bd3f835 100644
--- a/doc/man3/RSA_public_encrypt.pod
+++ b/doc/man3/RSA_public_encrypt.pod
@@ -52,8 +52,8 @@ Encrypting user data directly with RSA is insecure.
@@ -599,20 +600,17 @@ index 1d38073aea..bd3f835ac6 100644
SSL, PKCS #1 v2.0
diff --git a/include/crypto/rsa.h b/include/crypto/rsa.h
index 949873d0ee..f267e5d9d1 100644
index 797dc1f..2f86e4c 100644
--- a/include/crypto/rsa.h
+++ b/include/crypto/rsa.h
@@ -83,6 +83,10 @@ int ossl_rsa_param_decode(RSA *rsa, const X509_ALGOR *alg);
RSA *ossl_rsa_key_from_pkcs8(const PKCS8_PRIV_KEY_INFO *p8inf,
OSSL_LIB_CTX *libctx, const char *propq);
OSSL_LIB_CTX *libctx, const char *propq);
+int ossl_rsa_padding_check_PKCS1_type_2(OSSL_LIB_CTX *ctx,
+ unsigned char *to, int tlen,
+ const unsigned char *from, int flen,
+ int num, unsigned char *kdk);
int ossl_rsa_padding_check_PKCS1_type_2_TLS(OSSL_LIB_CTX *ctx, unsigned char *to,
size_t tlen,
const unsigned char *from,
--
2.34.1
size_t tlen,
const unsigned char *from,

View File

@@ -1,7 +1,7 @@
From e92f0cd3b03e5aca948b03df7e3d02e536700f68 Mon Sep 17 00:00:00 2001
From 584936eb09cef64eb0755c0ccb2661e7ba1aea58 Mon Sep 17 00:00:00 2001
From: Hubert Kario <hkario@redhat.com>
Date: Thu, 27 Oct 2022 19:16:58 +0200
Subject: [PATCH 2/3] rsa: Add option to disable implicit rejection
Subject: [PATCH] rsa: Add option to disable implicit rejection
CVE: CVE-2023-50781
@@ -14,6 +14,7 @@ Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13817)
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
---
crypto/cms/cms_env.c | 7 +++++
crypto/evp/ctrl_params_translate.c | 6 +++++
@@ -28,10 +29,10 @@ Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
10 files changed, 95 insertions(+), 8 deletions(-)
diff --git a/crypto/cms/cms_env.c b/crypto/cms/cms_env.c
index 445a16fb77..49b0289114 100644
index 2326253..96e3315 100644
--- a/crypto/cms/cms_env.c
+++ b/crypto/cms/cms_env.c
@@ -581,6 +581,13 @@ static int cms_RecipientInfo_ktri_decrypt(CMS_ContentInfo *cms,
@@ -576,6 +576,13 @@ static int cms_RecipientInfo_ktri_decrypt(CMS_ContentInfo *cms,
if (!ossl_cms_env_asn1_ctrl(ri, 1))
goto err;
@@ -43,15 +44,15 @@ index 445a16fb77..49b0289114 100644
+ EVP_PKEY_CTX_ctrl_str(ktri->pctx, "rsa_pkcs1_implicit_rejection", "0");
+
if (EVP_PKEY_decrypt(ktri->pctx, NULL, &eklen,
ktri->encryptedKey->data,
ktri->encryptedKey->length) <= 0)
ktri->encryptedKey->data,
ktri->encryptedKey->length)
diff --git a/crypto/evp/ctrl_params_translate.c b/crypto/evp/ctrl_params_translate.c
index 44d0895bcf..db7325439a 100644
index 14306a0..b481776 100644
--- a/crypto/evp/ctrl_params_translate.c
+++ b/crypto/evp/ctrl_params_translate.c
@@ -2269,6 +2269,12 @@ static const struct translation_st evp_pkey_ctx_translations[] = {
EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, NULL, NULL,
OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL, OSSL_PARAM_OCTET_PTR, NULL },
@@ -2249,6 +2249,12 @@ static const struct translation_st evp_pkey_ctx_translations[] = {
EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, NULL, NULL,
OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL, OSSL_PARAM_OCTET_PTR, NULL },
+ { SET, EVP_PKEY_RSA, 0, EVP_PKEY_OP_TYPE_CRYPT,
+ EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION, NULL,
@@ -60,13 +61,13 @@ index 44d0895bcf..db7325439a 100644
+ NULL },
+
{ SET, EVP_PKEY_RSA_PSS, 0, EVP_PKEY_OP_TYPE_GEN,
EVP_PKEY_CTRL_MD, "rsa_pss_keygen_md", NULL,
OSSL_ALG_PARAM_DIGEST, OSSL_PARAM_UTF8_STRING, fix_md },
EVP_PKEY_CTRL_MD, "rsa_pss_keygen_md", NULL,
OSSL_ALG_PARAM_DIGEST, OSSL_PARAM_UTF8_STRING, fix_md },
diff --git a/crypto/rsa/rsa_ossl.c b/crypto/rsa/rsa_ossl.c
index 330302ae55..4bdacd5ed9 100644
index d658a3c..5a0b160 100644
--- a/crypto/rsa/rsa_ossl.c
+++ b/crypto/rsa/rsa_ossl.c
@@ -395,6 +395,12 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
@@ -391,6 +391,12 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
BIGNUM *unblind = NULL;
BN_BLINDING *blinding = NULL;
@@ -79,7 +80,7 @@ index 330302ae55..4bdacd5ed9 100644
if ((ctx = BN_CTX_new_ex(rsa->libctx)) == NULL)
goto err;
BN_CTX_start(ctx);
@@ -489,7 +495,7 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
@@ -481,7 +487,7 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
* derive the Key Derivation Key from private exponent and public
* ciphertext
*/
@@ -88,7 +89,7 @@ index 330302ae55..4bdacd5ed9 100644
/*
* because we use d as a handle to rsa->d we need to keep it local and
* free before any further use of rsa->d
@@ -565,11 +571,11 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
@@ -557,11 +563,11 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
goto err;
switch (padding) {
@@ -105,7 +106,7 @@ index 330302ae55..4bdacd5ed9 100644
case RSA_PKCS1_OAEP_PADDING:
r = RSA_padding_check_PKCS1_OAEP(to, num, buf, j, num, NULL, 0);
diff --git a/crypto/rsa/rsa_pmeth.c b/crypto/rsa/rsa_pmeth.c
index 0bf5ac098a..81b031f81b 100644
index 85cdfb4..7f3d810 100644
--- a/crypto/rsa/rsa_pmeth.c
+++ b/crypto/rsa/rsa_pmeth.c
@@ -52,6 +52,8 @@ typedef struct {
@@ -133,17 +134,17 @@ index 0bf5ac098a..81b031f81b 100644
if (sctx->oaep_label) {
OPENSSL_free(dctx->oaep_label);
dctx->oaep_label = OPENSSL_memdup(sctx->oaep_label, sctx->oaep_labellen);
@@ -347,6 +351,7 @@ static int pkey_rsa_decrypt(EVP_PKEY_CTX *ctx,
const unsigned char *in, size_t inlen)
@@ -345,6 +349,7 @@ static int pkey_rsa_decrypt(EVP_PKEY_CTX *ctx,
const unsigned char *in, size_t inlen)
{
int ret;
+ int pad_mode;
RSA_PKEY_CTX *rctx = ctx->data;
/*
* Discard const. Its marked as const because this may be a cached copy of
@@ -367,7 +372,12 @@ static int pkey_rsa_decrypt(EVP_PKEY_CTX *ctx,
rctx->oaep_labellen,
rctx->md, rctx->mgf1md);
@@ -365,7 +370,12 @@ static int pkey_rsa_decrypt(EVP_PKEY_CTX *ctx,
rctx->oaep_labellen,
rctx->md, rctx->mgf1md);
} else {
- ret = RSA_private_decrypt(inlen, in, out, rsa, rctx->pad_mode);
+ if (rctx->pad_mode == RSA_PKCS1_PADDING &&
@@ -155,7 +156,7 @@ index 0bf5ac098a..81b031f81b 100644
}
*outlen = constant_time_select_s(constant_time_msb_s(ret), *outlen, ret);
ret = constant_time_select_int(constant_time_msb(ret), ret, 1);
@@ -591,6 +601,14 @@ static int pkey_rsa_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
@@ -587,6 +597,14 @@ static int pkey_rsa_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
*(unsigned char **)p2 = rctx->oaep_label;
return rctx->oaep_labellen;
@@ -171,7 +172,7 @@ index 0bf5ac098a..81b031f81b 100644
case EVP_PKEY_CTRL_PKCS7_SIGN:
#ifndef OPENSSL_NO_CMS
diff --git a/doc/man1/openssl-pkeyutl.pod.in b/doc/man1/openssl-pkeyutl.pod.in
index 015265a74d..5e62551d34 100644
index 015265a..5e62551 100644
--- a/doc/man1/openssl-pkeyutl.pod.in
+++ b/doc/man1/openssl-pkeyutl.pod.in
@@ -305,6 +305,16 @@ explicitly set in PSS mode then the signing digest is used.
@@ -192,7 +193,7 @@ index 015265a74d..5e62551d34 100644
=head1 RSA-PSS ALGORITHM
diff --git a/doc/man3/EVP_PKEY_CTX_ctrl.pod b/doc/man3/EVP_PKEY_CTX_ctrl.pod
index e788f38809..3844aa2199 100644
index e788f38..3844aa2 100644
--- a/doc/man3/EVP_PKEY_CTX_ctrl.pod
+++ b/doc/man3/EVP_PKEY_CTX_ctrl.pod
@@ -392,6 +392,8 @@ instead of padding errors in case padding checks fail. Applications that
@@ -205,7 +206,7 @@ index e788f38809..3844aa2199 100644
=head2 DSA parameters
diff --git a/doc/man7/provider-asym_cipher.pod b/doc/man7/provider-asym_cipher.pod
index 0976a263a8..2a8426a6ed 100644
index 0976a26..2a8426a 100644
--- a/doc/man7/provider-asym_cipher.pod
+++ b/doc/man7/provider-asym_cipher.pod
@@ -234,6 +234,15 @@ The TLS protocol version first requested by the client.
@@ -225,50 +226,50 @@ index 0976a263a8..2a8426a6ed 100644
OSSL_FUNC_asym_cipher_gettable_ctx_params() and OSSL_FUNC_asym_cipher_settable_ctx_params()
diff --git a/include/openssl/core_names.h b/include/openssl/core_names.h
index 6bed5a8a67..5a350b537f 100644
index 02bebc6..9586a6d 100644
--- a/include/openssl/core_names.h
+++ b/include/openssl/core_names.h
@@ -292,6 +292,7 @@ extern "C" {
#define OSSL_PKEY_PARAM_DIST_ID "distid"
#define OSSL_PKEY_PARAM_PUB_KEY "pub"
#define OSSL_PKEY_PARAM_PRIV_KEY "priv"
+#define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection"
#define OSSL_PKEY_PARAM_DIST_ID "distid"
#define OSSL_PKEY_PARAM_PUB_KEY "pub"
#define OSSL_PKEY_PARAM_PRIV_KEY "priv"
+#define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection"
/* Diffie-Hellman/DSA Parameters */
#define OSSL_PKEY_PARAM_FFC_P "p"
#define OSSL_PKEY_PARAM_FFC_P "p"
@@ -467,6 +468,7 @@ extern "C" {
#define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label"
#define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version"
#define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version"
+#define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection"
#define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label"
#define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version"
#define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version"
+#define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection"
/*
* Encoder / decoder parameters
diff --git a/include/openssl/rsa.h b/include/openssl/rsa.h
index a55c9727c6..247f9014e3 100644
index 36a780d..ceb05b2 100644
--- a/include/openssl/rsa.h
+++ b/include/openssl/rsa.h
@@ -183,6 +183,8 @@ int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label);
# define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13)
#define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13)
+# define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14)
+#define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14)
+
# define RSA_PKCS1_PADDING 1
# define RSA_NO_PADDING 3
# define RSA_PKCS1_OAEP_PADDING 4
#define RSA_PKCS1_PADDING 1
#define RSA_NO_PADDING 3
#define RSA_PKCS1_OAEP_PADDING 4
@@ -192,6 +194,9 @@ int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label);
# define RSA_PKCS1_PSS_PADDING 6
# define RSA_PKCS1_WITH_TLS_PADDING 7
#define RSA_PKCS1_PSS_PADDING 6
#define RSA_PKCS1_WITH_TLS_PADDING 7
+/* internal RSA_ only */
+# define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8
+#define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8
+
# define RSA_PKCS1_PADDING_SIZE 11
#define RSA_PKCS1_PADDING_SIZE 11
# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg)
#define RSA_set_app_data(s, arg) RSA_set_ex_data(s, 0, arg)
diff --git a/providers/implementations/asymciphers/rsa_enc.c b/providers/implementations/asymciphers/rsa_enc.c
index c8921acd6e..11a91e62b1 100644
index 799357f3..1e74150 100644
--- a/providers/implementations/asymciphers/rsa_enc.c
+++ b/providers/implementations/asymciphers/rsa_enc.c
@@ -75,6 +75,8 @@ typedef struct {
@@ -288,7 +289,7 @@ index c8921acd6e..11a91e62b1 100644
switch (RSA_test_flags(prsactx->rsa, RSA_FLAG_TYPE_MASK)) {
case RSA_FLAG_TYPE_RSA:
@@ -199,6 +202,7 @@ static int rsa_decrypt(void *vprsactx, unsigned char *out, size_t *outlen,
@@ -203,6 +206,7 @@ static int rsa_decrypt(void *vprsactx, unsigned char *out, size_t *outlen,
{
PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
int ret;
@@ -296,12 +297,12 @@ index c8921acd6e..11a91e62b1 100644
size_t len = RSA_size(prsactx->rsa);
if (!ossl_prov_is_running())
@@ -276,8 +280,12 @@ static int rsa_decrypt(void *vprsactx, unsigned char *out, size_t *outlen,
@@ -280,8 +284,12 @@ static int rsa_decrypt(void *vprsactx, unsigned char *out, size_t *outlen,
}
OPENSSL_free(tbuf);
} else {
- ret = RSA_private_decrypt(inlen, in, out, prsactx->rsa,
- prsactx->pad_mode);
- prsactx->pad_mode);
+ if ((prsactx->implicit_rejection == 0) &&
+ (prsactx->pad_mode == RSA_PKCS1_PADDING))
+ pad_mode = RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING;
@@ -311,7 +312,7 @@ index c8921acd6e..11a91e62b1 100644
}
*outlen = constant_time_select_s(constant_time_msb_s(ret), *outlen, ret);
ret = constant_time_select_int(constant_time_msb(ret), 0, 1);
@@ -401,6 +409,10 @@ static int rsa_get_ctx_params(void *vprsactx, OSSL_PARAM *params)
@@ -403,6 +411,10 @@ static int rsa_get_ctx_params(void *vprsactx, OSSL_PARAM *params)
if (p != NULL && !OSSL_PARAM_set_uint(p, prsactx->alt_version))
return 0;
@@ -322,8 +323,8 @@ index c8921acd6e..11a91e62b1 100644
return 1;
}
@@ -412,6 +424,7 @@ static const OSSL_PARAM known_gettable_ctx_params[] = {
NULL, 0),
@@ -414,6 +426,7 @@ static const OSSL_PARAM known_gettable_ctx_params[] = {
NULL, 0),
OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION, NULL),
OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION, NULL),
+ OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION, NULL),
@@ -353,6 +354,3 @@ index c8921acd6e..11a91e62b1 100644
OSSL_PARAM_END
};
--
2.34.1

View File

@@ -1,7 +1,7 @@
From ba78f7b0599ba5bfb5032dd2664465c5b13388e3 Mon Sep 17 00:00:00 2001
From 156a6ca5791f9c642a77270a90d5dbd0a3a7a33d Mon Sep 17 00:00:00 2001
From: Hubert Kario <hkario@redhat.com>
Date: Tue, 22 Nov 2022 18:25:49 +0100
Subject: [PATCH 3/3] smime/pkcs7: disable the Bleichenbacher workaround
Subject: [PATCH] smime/pkcs7: disable the Bleichenbacher workaround
CVE: CVE-2023-50781
@@ -14,15 +14,16 @@ Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13817)
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
---
crypto/pkcs7/pk7_doit.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/crypto/pkcs7/pk7_doit.c b/crypto/pkcs7/pk7_doit.c
index e9de097da1..6d3124da87 100644
index a38e8a3..d751f5e 100644
--- a/crypto/pkcs7/pk7_doit.c
+++ b/crypto/pkcs7/pk7_doit.c
@@ -170,6 +170,13 @@ static int pkcs7_decrypt_rinfo(unsigned char **pek, int *peklen,
@@ -168,6 +168,13 @@ static int pkcs7_decrypt_rinfo(unsigned char **pek, int *peklen,
if (EVP_PKEY_decrypt_init(pctx) <= 0)
goto err;
@@ -34,8 +35,5 @@ index e9de097da1..6d3124da87 100644
+ EVP_PKEY_CTX_ctrl_str(pctx, "rsa_pkcs1_implicit_rejection", "0");
+
if (EVP_PKEY_decrypt(pctx, NULL, &eklen,
ri->enc_key->data, ri->enc_key->length) <= 0)
goto err;
--
2.34.1
ri->enc_key->data, ri->enc_key->length)
<= 0)

View File

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

View File

@@ -34,6 +34,7 @@ SRC_URI = "http://matt.ucc.asn.au/dropbear/releases/dropbear-${PV}.tar.bz2 \
file://0001-Add-m_snprintf-that-won-t-return-negative.patch \
file://0001-Handle-arbitrary-length-paths-and-commands-in-multih.patch \
file://CVE-2025-47203.patch \
file://CVE-2019-6111.patch \
"
PAM_SRC_URI = "file://0005-dropbear-enable-pam.patch \

View File

@@ -0,0 +1,157 @@
From 48a17cff6aa104b8e806ddb2191f83f1024060f1 Mon Sep 17 00:00:00 2001
From: Matt Johnston <matt@ucc.asn.au>
Date: Tue, 9 Dec 2025 22:59:19 +0900
Subject: [PATCH] scp CVE-2019-6111 fix
Cherry-pick from OpenSSH portable
391ffc4b9d31 ("upstream: check in scp client that filenames sent during")
upstream: check in scp client that filenames sent during
remote->local directory copies satisfy the wildcard specified by the user.
This checking provides some protection against a malicious server
sending unexpected filenames, but it comes at a risk of rejecting wanted
files due to differences between client and server wildcard expansion rules.
For this reason, this also adds a new -T flag to disable the check.
reported by Harry Sintonen
fix approach suggested by markus@;
has been in snaps for ~1wk courtesy deraadt@
CVE: CVE-2019-6111
Upstream-Status: Backport [https://github.com/mkj/dropbear/commit/48a17cff6aa104b8e806ddb2191f83f1024060f1]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
scp.c | 38 +++++++++++++++++++++++++++++---------
1 file changed, 29 insertions(+), 9 deletions(-)
diff --git a/scp.c b/scp.c
index 384f2cb..bf98986 100644
--- a/scp.c
+++ b/scp.c
@@ -76,6 +76,8 @@
#include "includes.h"
/*RCSID("$OpenBSD: scp.c,v 1.130 2006/01/31 10:35:43 djm Exp $");*/
+#include <fnmatch.h>
+
#include "atomicio.h"
#include "compat.h"
#include "scpmisc.h"
@@ -291,14 +293,14 @@ void verifydir(char *);
uid_t userid;
int errs, remin, remout;
-int pflag, iamremote, iamrecursive, targetshouldbedirectory;
+int Tflag, pflag, iamremote, iamrecursive, targetshouldbedirectory;
#define CMDNEEDS 64
char cmd[CMDNEEDS]; /* must hold "rcp -r -p -d\0" */
int response(void);
void rsource(char *, struct stat *);
-void sink(int, char *[]);
+void sink(int, char *[], const char *);
void source(int, char *[]);
void tolocal(int, char *[]);
void toremote(char *, int, char *[]);
@@ -325,8 +327,8 @@ main(int argc, char **argv)
args.list = NULL;
addargs(&args, "%s", ssh_program);
- fflag = tflag = 0;
- while ((ch = getopt(argc, argv, "dfl:prtvBCc:i:P:q1246S:o:F:")) != -1)
+ fflag = Tflag = tflag = 0;
+ while ((ch = getopt(argc, argv, "dfl:prtTvBCc:i:P:q1246S:o:F:")) != -1)
switch (ch) {
/* User-visible flags. */
case '1':
@@ -389,9 +391,12 @@ main(int argc, char **argv)
setmode(0, O_BINARY);
#endif
break;
+ case 'T':
+ Tflag = 1;
+ break;
default:
usage();
- }
+ }
argc -= optind;
argv += optind;
@@ -409,7 +414,7 @@ main(int argc, char **argv)
}
if (tflag) {
/* Receive data. */
- sink(argc, argv);
+ sink(argc, argv, NULL);
exit(errs != 0);
}
if (argc < 2)
@@ -590,7 +595,7 @@ tolocal(int argc, char **argv)
continue;
}
xfree(bp);
- sink(1, argv + argc - 1);
+ sink(1, argv + argc - 1, src);
(void) close(remin);
remin = remout = -1;
}
@@ -823,7 +828,7 @@ bwlimit(int amount)
}
void
-sink(int argc, char **argv)
+sink(int argc, char **argv, const char *src)
{
static BUF buffer;
struct stat stb;
@@ -837,6 +842,7 @@ sink(int argc, char **argv)
off_t size, statbytes;
int setimes, targisdir, wrerrno = 0;
char ch, *cp, *np, *targ, *why, *vect[1], buf[2048];
+ char *src_copy = NULL, *restrict_pattern = NULL;
struct timeval tv[2];
#define atime tv[0]
@@ -858,6 +864,17 @@ sink(int argc, char **argv)
(void) atomicio(vwrite, remout, "", 1);
if (stat(targ, &stb) == 0 && S_ISDIR(stb.st_mode))
targisdir = 1;
+ if (src != NULL && !iamrecursive && !Tflag) {
+ /*
+ * Prepare to try to restrict incoming filenames to match
+ * the requested destination file glob.
+ */
+ if ((src_copy = strdup(src)) == NULL)
+ fatal("strdup failed");
+ if ((restrict_pattern = strrchr(src_copy, '/')) != NULL) {
+ *restrict_pattern++ = '\0';
+ }
+ }
for (first = 1;; first = 0) {
cp = buf;
if (atomicio(read, remin, cp, 1) != 1)
@@ -940,6 +957,9 @@ sink(int argc, char **argv)
run_err("error: unexpected filename: %s", cp);
exit(1);
}
+ if (restrict_pattern != NULL &&
+ fnmatch(restrict_pattern, cp, 0) != 0)
+ SCREWUP("filename does not match request");
if (targisdir) {
static char *namebuf = NULL;
static size_t cursize = 0;
@@ -978,7 +998,7 @@ sink(int argc, char **argv)
goto bad;
}
vect[0] = xstrdup(np);
- sink(1, vect);
+ sink(1, vect, src);
if (setimes) {
setimes = 0;
if (utimes(vect[0], tv) < 0)

View File

@@ -0,0 +1,43 @@
From 86fc914a7acc49246d5fde0ab6ed97eb8a0f15f9 Mon Sep 17 00:00:00 2001
From: Sebastian Pipping <sebastian@pipping.org>
Date: Sun, 18 Jan 2026 17:53:37 +0100
Subject: [PATCH] lib: Make XML_ExternalEntityParserCreate copy unknown
encoding handler user data
Patch suggested by Artiphishell Inc.
CVE: CVE-2026-24515
Upstream-Status: Backport [https://github.com/libexpat/libexpat/commit/86fc914a7acc49246d5fde0ab6ed97eb8a0f15f9]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
lib/xmlparse.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/xmlparse.c b/lib/xmlparse.c
index 593cd90d..18577ee3 100644
--- a/lib/xmlparse.c
+++ b/lib/xmlparse.c
@@ -1289,6 +1289,7 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context,
XML_ExternalEntityRefHandler oldExternalEntityRefHandler;
XML_SkippedEntityHandler oldSkippedEntityHandler;
XML_UnknownEncodingHandler oldUnknownEncodingHandler;
+ void *oldUnknownEncodingHandlerData;
XML_ElementDeclHandler oldElementDeclHandler;
XML_AttlistDeclHandler oldAttlistDeclHandler;
XML_EntityDeclHandler oldEntityDeclHandler;
@@ -1333,6 +1334,7 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context,
oldExternalEntityRefHandler = parser->m_externalEntityRefHandler;
oldSkippedEntityHandler = parser->m_skippedEntityHandler;
oldUnknownEncodingHandler = parser->m_unknownEncodingHandler;
+ oldUnknownEncodingHandlerData = parser->m_unknownEncodingHandlerData;
oldElementDeclHandler = parser->m_elementDeclHandler;
oldAttlistDeclHandler = parser->m_attlistDeclHandler;
oldEntityDeclHandler = parser->m_entityDeclHandler;
@@ -1391,6 +1393,7 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context,
parser->m_externalEntityRefHandler = oldExternalEntityRefHandler;
parser->m_skippedEntityHandler = oldSkippedEntityHandler;
parser->m_unknownEncodingHandler = oldUnknownEncodingHandler;
+ parser->m_unknownEncodingHandlerData = oldUnknownEncodingHandlerData;
parser->m_elementDeclHandler = oldElementDeclHandler;
parser->m_attlistDeclHandler = oldAttlistDeclHandler;
parser->m_entityDeclHandler = oldEntityDeclHandler;

View File

@@ -0,0 +1,27 @@
From 7ddea353ad3795f7222441274d4d9a155b523cba Mon Sep 17 00:00:00 2001
From: Matthew Fernandez <matthew.fernandez@gmail.com>
Date: Thu, 2 Oct 2025 17:15:15 -0700
Subject: [PATCH] lib: Make a doubling more readable
Suggested-by: Sebastian Pipping <sebastian@pipping.org>
CVE: CVE-2026-25210
Upstream-Status: Backport [https://github.com/libexpat/libexpat/commit/7ddea353ad3795f7222441274d4d9a155b523cba]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
lib/xmlparse.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/xmlparse.c b/lib/xmlparse.c
index 8cf29257..2f9adffc 100644
--- a/lib/xmlparse.c
+++ b/lib/xmlparse.c
@@ -2977,7 +2977,7 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
tag->name.strLen = convLen;
break;
}
- bufSize = (int)(tag->bufEnd - tag->buf) << 1;
+ bufSize = (int)(tag->bufEnd - tag->buf) * 2;
{
char *temp = (char *)REALLOC(parser, tag->buf, bufSize);
if (temp == NULL)

View File

@@ -0,0 +1,37 @@
From 8855346359a475c022ec8c28484a76c852f144d9 Mon Sep 17 00:00:00 2001
From: Matthew Fernandez <matthew.fernandez@gmail.com>
Date: Thu, 2 Oct 2025 17:15:15 -0700
Subject: [PATCH] lib: Realign a size with the `REALLOC` type signature it is
passed into
Note that this implicitly assumes `tag->bufEnd >= tag->buf`, which should
already be guaranteed true.
CVE: CVE-2026-25210
Upstream-Status: Backport [https://github.com/libexpat/libexpat/commit/8855346359a475c022ec8c28484a76c852f144d9]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
lib/xmlparse.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lib/xmlparse.c b/lib/xmlparse.c
index 2f9adffc..ee18a87f 100644
--- a/lib/xmlparse.c
+++ b/lib/xmlparse.c
@@ -2966,7 +2966,6 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
const char *fromPtr = tag->rawName;
toPtr = (XML_Char *)tag->buf;
for (;;) {
- int bufSize;
int convLen;
const enum XML_Convert_Result convert_res
= XmlConvert(enc, &fromPtr, rawNameEnd, (ICHAR **)&toPtr,
@@ -2977,7 +2976,7 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
tag->name.strLen = convLen;
break;
}
- bufSize = (int)(tag->bufEnd - tag->buf) * 2;
+ const size_t bufSize = (size_t)(tag->bufEnd - tag->buf) * 2;
{
char *temp = (char *)REALLOC(parser, tag->buf, bufSize);
if (temp == NULL)

View File

@@ -0,0 +1,28 @@
From 9c2d990389e6abe2e44527eeaa8b39f16fe859c7 Mon Sep 17 00:00:00 2001
From: Matthew Fernandez <matthew.fernandez@gmail.com>
Date: Thu, 2 Oct 2025 17:15:15 -0700
Subject: [PATCH] lib: Introduce an integer overflow check for tag buffer
reallocation
Suggested-by: Sebastian Pipping <sebastian@pipping.org>
CVE: CVE-2026-25210
Upstream-Status: Backport [https://github.com/libexpat/libexpat/commit/9c2d990389e6abe2e44527eeaa8b39f16fe859c7]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
lib/xmlparse.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/xmlparse.c b/lib/xmlparse.c
index ee18a87f..d8c54c38 100644
--- a/lib/xmlparse.c
+++ b/lib/xmlparse.c
@@ -2976,6 +2976,8 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
tag->name.strLen = convLen;
break;
}
+ if (SIZE_MAX / 2 < (size_t)(tag->bufEnd - tag->buf))
+ return XML_ERROR_NO_MEMORY;
const size_t bufSize = (size_t)(tag->bufEnd - tag->buf) * 2;
{
char *temp = (char *)REALLOC(parser, tag->buf, bufSize);

View File

@@ -30,6 +30,10 @@ SRC_URI = "https://github.com/libexpat/libexpat/releases/download/R_${VERSION_TA
file://CVE-2024-45492.patch \
file://CVE-2024-50602-01.patch \
file://CVE-2024-50602-02.patch \
file://CVE-2026-24515.patch \
file://CVE-2026-25210-01.patch \
file://CVE-2026-25210-02.patch \
file://CVE-2026-25210-03.patch \
"
UPSTREAM_CHECK_URI = "https://github.com/libexpat/libexpat/releases/"

View File

@@ -0,0 +1,125 @@
From f28340ee62c655487972ad3c632d231ee098fb7f Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@gnome.org>
Date: Thu, 13 Nov 2025 18:27:22 +0000
Subject: [PATCH] gconvert: Error out if g_escape_uri_string() would overflow
If the string to escape contains a very large number of unacceptable
characters (which would need escaping), the calculation of the length of
the escaped string could overflow, leading to a potential write off the
end of the newly allocated string.
In addition to that, the number of unacceptable characters was counted
in a signed integer, which would overflow to become negative, making it
easier for an attacker to craft an input string which would cause an
out-of-bounds write.
Fix that by validating the allocation length, and using an unsigned
integer to count the number of unacceptable characters.
Spotted by treeplus. Thanks to the Sovereign Tech Resilience programme
from the Sovereign Tech Agency. ID: #YWH-PGM9867-134
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Fixes: #3827
CVE: CVE-2025-13601
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/f28340ee62c655487972ad3c632d231ee098fb7f]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/gconvert.c | 36 +++++++++++++++++++++++++-----------
1 file changed, 25 insertions(+), 11 deletions(-)
diff --git a/glib/gconvert.c b/glib/gconvert.c
index b066dd5a8..a02d2ea73 100644
--- a/glib/gconvert.c
+++ b/glib/gconvert.c
@@ -1425,8 +1425,9 @@ static const gchar hex[] = "0123456789ABCDEF";
/* Note: This escape function works on file: URIs, but if you want to
* escape something else, please read RFC-2396 */
static gchar *
-g_escape_uri_string (const gchar *string,
- UnsafeCharacterSet mask)
+g_escape_uri_string (const gchar *string,
+ UnsafeCharacterSet mask,
+ GError **error)
{
#define ACCEPTABLE(a) ((a)>=32 && (a)<128 && (acceptable[(a)-32] & use_mask))
@@ -1434,7 +1435,7 @@ g_escape_uri_string (const gchar *string,
gchar *q;
gchar *result;
int c;
- gint unacceptable;
+ size_t unacceptable;
UnsafeCharacterSet use_mask;
g_return_val_if_fail (mask == UNSAFE_ALL
@@ -1451,7 +1452,14 @@ g_escape_uri_string (const gchar *string,
if (!ACCEPTABLE (c))
unacceptable++;
}
-
+
+ if (unacceptable >= (G_MAXSIZE - (p - string)) / 2)
+ {
+ g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_BAD_URI,
+ _("The URI is too long"));
+ return NULL;
+ }
+
result = g_malloc (p - string + unacceptable * 2 + 1);
use_mask = mask;
@@ -1476,12 +1484,13 @@ g_escape_uri_string (const gchar *string,
static gchar *
-g_escape_file_uri (const gchar *hostname,
- const gchar *pathname)
+g_escape_file_uri (const gchar *hostname,
+ const gchar *pathname,
+ GError **error)
{
char *escaped_hostname = NULL;
- char *escaped_path;
- char *res;
+ char *escaped_path = NULL;
+ char *res = NULL;
#ifdef G_OS_WIN32
char *p, *backslash;
@@ -1502,10 +1511,14 @@ g_escape_file_uri (const gchar *hostname,
if (hostname && *hostname != '\0')
{
- escaped_hostname = g_escape_uri_string (hostname, UNSAFE_HOST);
+ escaped_hostname = g_escape_uri_string (hostname, UNSAFE_HOST, error);
+ if (escaped_hostname == NULL)
+ goto out;
}
- escaped_path = g_escape_uri_string (pathname, UNSAFE_PATH);
+ escaped_path = g_escape_uri_string (pathname, UNSAFE_PATH, error);
+ if (escaped_path == NULL)
+ goto out;
res = g_strconcat ("file://",
(escaped_hostname) ? escaped_hostname : "",
@@ -1513,6 +1526,7 @@ g_escape_file_uri (const gchar *hostname,
escaped_path,
NULL);
+out:
#ifdef G_OS_WIN32
g_free ((char *) pathname);
#endif
@@ -1832,7 +1846,7 @@ g_filename_to_uri (const gchar *filename,
hostname = NULL;
#endif
- escaped_uri = g_escape_file_uri (hostname, filename);
+ escaped_uri = g_escape_file_uri (hostname, filename, error);
return escaped_uri;
}

View File

@@ -0,0 +1,128 @@
From 7bd3fc372040cdf8eada7f65c32c30da52a7461d Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@gnome.org>
Date: Thu, 13 Nov 2025 18:31:43 +0000
Subject: [PATCH] fuzzing: Add fuzz tests for g_filename_{to,from}_uri()
These functions could be called on untrusted input data, and since they
do URI escaping/unescaping, they have non-trivial string handling code.
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
See: #3827
CVE: CVE-2025-13601
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/7bd3fc372040cdf8eada7f65c32c30da52a7461d]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
fuzzing/fuzz_filename_from_uri.c | 40 ++++++++++++++++++++++++++++++++
fuzzing/fuzz_filename_to_uri.c | 40 ++++++++++++++++++++++++++++++++
fuzzing/meson.build | 2 ++
3 files changed, 82 insertions(+)
create mode 100644 fuzzing/fuzz_filename_from_uri.c
create mode 100644 fuzzing/fuzz_filename_to_uri.c
diff --git a/fuzzing/fuzz_filename_from_uri.c b/fuzzing/fuzz_filename_from_uri.c
new file mode 100644
index 000000000..9b7a715f0
--- /dev/null
+++ b/fuzzing/fuzz_filename_from_uri.c
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2025 GNOME Foundation, Inc.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "fuzz.h"
+
+int
+LLVMFuzzerTestOneInput (const unsigned char *data, size_t size)
+{
+ unsigned char *nul_terminated_data = NULL;
+ char *filename = NULL;
+ GError *local_error = NULL;
+
+ fuzz_set_logging_func ();
+
+ /* ignore @size (g_filename_from_uri() doesnt support it); ensure @data is nul-terminated */
+ nul_terminated_data = (unsigned char *) g_strndup ((const char *) data, size);
+ filename = g_filename_from_uri ((const char *) nul_terminated_data, NULL, &local_error);
+ g_free (nul_terminated_data);
+
+ g_free (filename);
+ g_clear_error (&local_error);
+
+ return 0;
+}
diff --git a/fuzzing/fuzz_filename_to_uri.c b/fuzzing/fuzz_filename_to_uri.c
new file mode 100644
index 000000000..acb319203
--- /dev/null
+++ b/fuzzing/fuzz_filename_to_uri.c
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2025 GNOME Foundation, Inc.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "fuzz.h"
+
+int
+LLVMFuzzerTestOneInput (const unsigned char *data, size_t size)
+{
+ unsigned char *nul_terminated_data = NULL;
+ char *uri = NULL;
+ GError *local_error = NULL;
+
+ fuzz_set_logging_func ();
+
+ /* ignore @size (g_filename_to_uri() doesnt support it); ensure @data is nul-terminated */
+ nul_terminated_data = (unsigned char *) g_strndup ((const char *) data, size);
+ uri = g_filename_to_uri ((const char *) nul_terminated_data, NULL, &local_error);
+ g_free (nul_terminated_data);
+
+ g_free (uri);
+ g_clear_error (&local_error);
+
+ return 0;
+}
diff --git a/fuzzing/meson.build b/fuzzing/meson.build
index addbe9071..05f936eeb 100644
--- a/fuzzing/meson.build
+++ b/fuzzing/meson.build
@@ -4,6 +4,8 @@ fuzz_targets = [
'fuzz_date_parse',
'fuzz_date_time_new_from_iso8601',
'fuzz_dbus_message',
+ 'fuzz_filename_from_uri',
+ 'fuzz_filename_to_uri',
'fuzz_inet_address_mask_new_from_string',
'fuzz_inet_address_new_from_string',
'fuzz_inet_socket_address_new_from_string',

View File

@@ -0,0 +1,69 @@
From 31f82e22e21bae520b7228f7f57d357fb20df8a4 Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@gnome.org>
Date: Tue, 25 Nov 2025 19:02:56 +0000
Subject: [PATCH] gvariant-parser: Fix potential integer overflow parsing
(byte)strings
The termination condition for parsing string and bytestring literals in
GVariant text format input was subject to an integer overflow for input
string (or bytestring) literals longer than `INT_MAX`.
Fix that by counting as a `size_t` rather than as an `int`. The counter
can never correctly be negative.
Spotted by treeplus. Thanks to the Sovereign Tech Resilience programme
from the Sovereign Tech Agency. ID: #YWH-PGM9867-145
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Fixes: #3834
CVE: CVE-2025-14087
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/31f82e22e21bae520b7228f7f57d357fb20df8a4]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/gvariant-parser.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c
index 2f1d3db9f..2d6e9856f 100644
--- a/glib/gvariant-parser.c
+++ b/glib/gvariant-parser.c
@@ -594,7 +594,7 @@ ast_resolve (AST *ast,
{
GVariant *value;
gchar *pattern;
- gint i, j = 0;
+ size_t i, j = 0;
pattern = ast_get_pattern (ast, error);
@@ -1555,9 +1555,9 @@ string_free (AST *ast)
* No leading/trailing space allowed. */
static gboolean
unicode_unescape (const gchar *src,
- gint *src_ofs,
+ size_t *src_ofs,
gchar *dest,
- gint *dest_ofs,
+ size_t *dest_ofs,
gsize length,
SourceRef *ref,
GError **error)
@@ -1618,7 +1618,7 @@ string_parse (TokenStream *stream,
gsize length;
gchar quote;
gchar *str;
- gint i, j;
+ size_t i, j;
token_stream_start_ref (stream, &ref);
token = token_stream_get (stream);
@@ -1748,7 +1748,7 @@ bytestring_parse (TokenStream *stream,
gsize length;
gchar quote;
gchar *str;
- gint i, j;
+ size_t i, j;
token_stream_start_ref (stream, &ref);
token = token_stream_get (stream);

View File

@@ -0,0 +1,240 @@
From ac9de0871281cf734f6e269988f90a2521582a08 Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@gnome.org>
Date: Tue, 25 Nov 2025 19:19:16 +0000
Subject: [PATCH] gvariant-parser: Use size_t to count numbers of child
elements
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Rather than using `gint`, which could overflow for arrays (or dicts, or
tuples) longer than `INT_MAX`. There may be other limits which prevent
parsed containers becoming that long, but we might as well make the type
system reflect the programmers intention as best it can anyway.
For arrays and tuples this is straightforward. For dictionaries, its
slightly complicated by the fact that the code used
`dict->n_children == -1` to indicate that the `Dictionary` struct in
question actually represented a single freestanding dict entry. In
GVariant text format, that would be `{1, "one"}`.
The implementation previously didnt define the semantics of
`dict->n_children < -1`.
Now, instead, change `Dictionary.n_children` to `size_t`, and define a
magic value `DICTIONARY_N_CHILDREN_FREESTANDING_ENTRY` to indicate that
the `Dictionary` represents a single freestanding dict entry.
This magic value is `SIZE_MAX`, and given that a dictionary entry takes
more than one byte to represent in GVariant text format, that means its
not possible to have that many entries in a parsed dictionary, so this
magic value wont be hit by a normal dictionary. An assertion checks
this anyway.
Spotted while working on #3834.
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
CVE: CVE-2025-14087
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/ac9de0871281cf734f6e269988f90a2521582a08]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/gvariant-parser.c | 58 ++++++++++++++++++++++++------------------
1 file changed, 33 insertions(+), 25 deletions(-)
diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c
index 2d6e9856f..519baa3f3 100644
--- a/glib/gvariant-parser.c
+++ b/glib/gvariant-parser.c
@@ -647,9 +647,9 @@ static AST *parse (TokenStream *stream,
GError **error);
static void
-ast_array_append (AST ***array,
- gint *n_items,
- AST *ast)
+ast_array_append (AST ***array,
+ size_t *n_items,
+ AST *ast)
{
if ((*n_items & (*n_items - 1)) == 0)
*array = g_renew (AST *, *array, *n_items ? 2 ** n_items : 1);
@@ -658,10 +658,10 @@ ast_array_append (AST ***array,
}
static void
-ast_array_free (AST **array,
- gint n_items)
+ast_array_free (AST **array,
+ size_t n_items)
{
- gint i;
+ size_t i;
for (i = 0; i < n_items; i++)
ast_free (array[i]);
@@ -670,11 +670,11 @@ ast_array_free (AST **array,
static gchar *
ast_array_get_pattern (AST **array,
- gint n_items,
+ size_t n_items,
GError **error)
{
gchar *pattern;
- gint i;
+ size_t i;
/* Find the pattern which applies to all children in the array, by l-folding a
* coalesce operation.
@@ -706,7 +706,7 @@ ast_array_get_pattern (AST **array,
* pair of values.
*/
{
- int j = 0;
+ size_t j = 0;
while (TRUE)
{
@@ -891,7 +891,7 @@ typedef struct
AST ast;
AST **children;
- gint n_children;
+ size_t n_children;
} Array;
static gchar *
@@ -924,7 +924,7 @@ array_get_value (AST *ast,
Array *array = (Array *) ast;
const GVariantType *childtype;
GVariantBuilder builder;
- gint i;
+ size_t i;
if (!g_variant_type_is_array (type))
return ast_type_error (ast, type, error);
@@ -1010,7 +1010,7 @@ typedef struct
AST ast;
AST **children;
- gint n_children;
+ size_t n_children;
} Tuple;
static gchar *
@@ -1020,7 +1020,7 @@ tuple_get_pattern (AST *ast,
Tuple *tuple = (Tuple *) ast;
gchar *result = NULL;
gchar **parts;
- gint i;
+ size_t i;
parts = g_new (gchar *, tuple->n_children + 4);
parts[tuple->n_children + 1] = (gchar *) ")";
@@ -1050,7 +1050,7 @@ tuple_get_value (AST *ast,
Tuple *tuple = (Tuple *) ast;
const GVariantType *childtype;
GVariantBuilder builder;
- gint i;
+ size_t i;
if (!g_variant_type_is_tuple (type))
return ast_type_error (ast, type, error);
@@ -1242,9 +1242,16 @@ typedef struct
AST **keys;
AST **values;
- gint n_children;
+
+ /* Iff this is DICTIONARY_N_CHILDREN_FREESTANDING_ENTRY then this struct
+ * represents a single freestanding dict entry (`{1, "one"}`) rather than a
+ * full dict. In the freestanding case, @keys and @values have exactly one
+ * member each. */
+ size_t n_children;
} Dictionary;
+#define DICTIONARY_N_CHILDREN_FREESTANDING_ENTRY ((size_t) -1)
+
static gchar *
dictionary_get_pattern (AST *ast,
GError **error)
@@ -1259,7 +1266,7 @@ dictionary_get_pattern (AST *ast,
return g_strdup ("Ma{**}");
key_pattern = ast_array_get_pattern (dict->keys,
- abs (dict->n_children),
+ (dict->n_children == DICTIONARY_N_CHILDREN_FREESTANDING_ENTRY) ? 1 : dict->n_children,
error);
if (key_pattern == NULL)
@@ -1290,7 +1297,7 @@ dictionary_get_pattern (AST *ast,
return NULL;
result = g_strdup_printf ("M%s{%c%s}",
- dict->n_children > 0 ? "a" : "",
+ (dict->n_children > 0 && dict->n_children != DICTIONARY_N_CHILDREN_FREESTANDING_ENTRY) ? "a" : "",
key_char, value_pattern);
g_free (value_pattern);
@@ -1304,7 +1311,7 @@ dictionary_get_value (AST *ast,
{
Dictionary *dict = (Dictionary *) ast;
- if (dict->n_children == -1)
+ if (dict->n_children == DICTIONARY_N_CHILDREN_FREESTANDING_ENTRY)
{
const GVariantType *subtype;
GVariantBuilder builder;
@@ -1337,7 +1344,7 @@ dictionary_get_value (AST *ast,
{
const GVariantType *entry, *key, *val;
GVariantBuilder builder;
- gint i;
+ size_t i;
if (!g_variant_type_is_subtype_of (type, G_VARIANT_TYPE_DICTIONARY))
return ast_type_error (ast, type, error);
@@ -1378,12 +1385,12 @@ static void
dictionary_free (AST *ast)
{
Dictionary *dict = (Dictionary *) ast;
- gint n_children;
+ size_t n_children;
- if (dict->n_children > -1)
- n_children = dict->n_children;
- else
+ if (dict->n_children == DICTIONARY_N_CHILDREN_FREESTANDING_ENTRY)
n_children = 1;
+ else
+ n_children = dict->n_children;
ast_array_free (dict->keys, n_children);
ast_array_free (dict->values, n_children);
@@ -1401,7 +1408,7 @@ dictionary_parse (TokenStream *stream,
maybe_wrapper, dictionary_get_value,
dictionary_free
};
- gint n_keys, n_values;
+ size_t n_keys, n_values;
gboolean only_one;
Dictionary *dict;
AST *first;
@@ -1444,7 +1451,7 @@ dictionary_parse (TokenStream *stream,
goto error;
g_assert (n_keys == 1 && n_values == 1);
- dict->n_children = -1;
+ dict->n_children = DICTIONARY_N_CHILDREN_FREESTANDING_ENTRY;
return (AST *) dict;
}
@@ -1477,6 +1484,7 @@ dictionary_parse (TokenStream *stream,
}
g_assert (n_keys == n_values);
+ g_assert (n_keys != DICTIONARY_N_CHILDREN_FREESTANDING_ENTRY);
dict->n_children = n_keys;
return (AST *) dict;

View File

@@ -0,0 +1,150 @@
From acaabfedff42e974334dd5368e6103d2845aaba6 Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@gnome.org>
Date: Tue, 25 Nov 2025 19:25:58 +0000
Subject: [PATCH] gvariant-parser: Convert error handling code to use size_t
The error handling code allows for printing out the range of input bytes
related to a parsing error. This was previously done using `gint`, but
the input could be longer than `INT_MAX`, so it should really be done
using `size_t`.
Spotted while working on #3834.
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
CVE: CVE-2025-14087
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/acaabfedff42e974334dd5368e6103d2845aaba6]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/gvariant-parser.c | 36 +++++++++++++++++++++++-------------
1 file changed, 23 insertions(+), 13 deletions(-)
diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c
index 519baa3f3..1b1ddd654 100644
--- a/glib/gvariant-parser.c
+++ b/glib/gvariant-parser.c
@@ -88,7 +88,9 @@ g_variant_parser_get_error_quark (void)
typedef struct
{
- gint start, end;
+ /* Offsets from the start of the input, in bytes. Can be equal when referring
+ * to a point rather than a range. The invariant `end >= start` always holds. */
+ size_t start, end;
} SourceRef;
G_GNUC_PRINTF(5, 0)
@@ -103,14 +105,16 @@ parser_set_error_va (GError **error,
GString *msg = g_string_new (NULL);
if (location->start == location->end)
- g_string_append_printf (msg, "%d", location->start);
+ g_string_append_printf (msg, "%" G_GSIZE_FORMAT, location->start);
else
- g_string_append_printf (msg, "%d-%d", location->start, location->end);
+ g_string_append_printf (msg, "%" G_GSIZE_FORMAT "-%" G_GSIZE_FORMAT,
+ location->start, location->end);
if (other != NULL)
{
g_assert (other->start != other->end);
- g_string_append_printf (msg, ",%d-%d", other->start, other->end);
+ g_string_append_printf (msg, ",%" G_GSIZE_FORMAT "-%" G_GSIZE_FORMAT,
+ other->start, other->end);
}
g_string_append_c (msg, ':');
@@ -137,11 +141,15 @@ parser_set_error (GError **error,
typedef struct
{
+ /* We should always have the following ordering constraint:
+ * start <= this <= stream <= end
+ * Additionally, unless in an error or EOF state, `this < stream`.
+ */
const gchar *start;
const gchar *stream;
const gchar *end;
- const gchar *this;
+ const gchar *this; /* (nullable) */
} TokenStream;
@@ -172,7 +180,7 @@ token_stream_set_error (TokenStream *stream,
static gboolean
token_stream_prepare (TokenStream *stream)
{
- gint brackets = 0;
+ gssize brackets = 0;
const gchar *end;
if (stream->this != NULL)
@@ -402,7 +410,7 @@ static void
pattern_copy (gchar **out,
const gchar **in)
{
- gint brackets = 0;
+ gssize brackets = 0;
while (**in == 'a' || **in == 'm' || **in == 'M')
*(*out)++ = *(*in)++;
@@ -2666,7 +2674,7 @@ g_variant_builder_add_parsed (GVariantBuilder *builder,
static gboolean
parse_num (const gchar *num,
const gchar *limit,
- guint *result)
+ size_t *result)
{
gchar *endptr;
gint64 bignum;
@@ -2676,10 +2684,12 @@ parse_num (const gchar *num,
if (endptr != limit)
return FALSE;
+ /* The upper bound here is more restrictive than it technically needs to be,
+ * but should be enough for any practical situation: */
if (bignum < 0 || bignum > G_MAXINT)
return FALSE;
- *result = (guint) bignum;
+ *result = (size_t) bignum;
return TRUE;
}
@@ -2690,7 +2700,7 @@ add_last_line (GString *err,
{
const gchar *last_nl;
gchar *chomped;
- gint i;
+ size_t i;
/* This is an error at the end of input. If we have a file
* with newlines, that's probably the empty string after the
@@ -2835,7 +2845,7 @@ g_variant_parse_error_print_context (GError *error,
if (dash == NULL || colon < dash)
{
- guint point;
+ size_t point;
/* we have a single point */
if (!parse_num (error->message, colon, &point))
@@ -2853,7 +2863,7 @@ g_variant_parse_error_print_context (GError *error,
/* We have one or two ranges... */
if (comma && comma < colon)
{
- guint start1, end1, start2, end2;
+ size_t start1, end1, start2, end2;
const gchar *dash2;
/* Two ranges */
@@ -2869,7 +2879,7 @@ g_variant_parse_error_print_context (GError *error,
}
else
{
- guint start, end;
+ size_t start, end;
/* One range */
if (!parse_num (error->message, dash, &start) || !parse_num (dash + 1, colon, &end))

View File

@@ -0,0 +1,70 @@
From 1909d8ea9297287f1ff6862968608dcf06e60523 Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@gnome.org>
Date: Thu, 4 Dec 2025 16:37:19 +0000
Subject: [PATCH] gfileattribute: Fix integer overflow calculating escaping for
byte strings
The number of invalid characters in the byte string (characters which
would have to be percent-encoded) was only stored in an `int`, which
gave the possibility of a long string largely full of invalid
characters overflowing this and allowing an attacker-controlled buffer
size to be allocated.
This could be triggered by an attacker controlled file attribute (of
type `G_FILE_ATTRIBUTE_TYPE_BYTE_STRING`), such as
`G_FILE_ATTRIBUTE_THUMBNAIL_PATH` or `G_FILE_ATTRIBUTE_STANDARD_NAME`,
being read by user code.
Spotted by Codean Labs.
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Fixes: #3845
CVE: CVE-2025-14512
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/1909d8ea9297287f1ff6862968608dcf06e60523]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
gio/gfileattribute.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/gio/gfileattribute.c b/gio/gfileattribute.c
index c6fde60fa..d3083e5bd 100644
--- a/gio/gfileattribute.c
+++ b/gio/gfileattribute.c
@@ -20,6 +20,7 @@
#include "config.h"
+#include <stdint.h>
#include <string.h>
#include "gfileattribute.h"
@@ -271,11 +272,12 @@ valid_char (char c)
return c >= 32 && c <= 126 && c != '\\';
}
+/* Returns NULL on error */
static char *
escape_byte_string (const char *str)
{
size_t i, len;
- int num_invalid;
+ size_t num_invalid;
char *escaped_val, *p;
unsigned char c;
const char hex_digits[] = "0123456789abcdef";
@@ -293,7 +295,12 @@ escape_byte_string (const char *str)
return g_strdup (str);
else
{
- escaped_val = g_malloc (len + num_invalid*3 + 1);
+ /* Check for overflow. We want to check the inequality:
+ * !(len + num_invalid * 3 + 1 > SIZE_MAX) */
+ if (num_invalid >= (SIZE_MAX - len) / 3)
+ return NULL;
+
+ escaped_val = g_malloc (len + num_invalid * 3 + 1);
p = escaped_val;
for (i = 0; i < len; i++)

View File

@@ -0,0 +1,58 @@
From c5766cff61ffce0b8e787eae09908ac348338e5f Mon Sep 17 00:00:00 2001
From: Philip Withnall <pwithnall@gnome.org>
Date: Thu, 18 Dec 2025 23:12:18 +0000
Subject: [PATCH] gbufferedinputstream: Fix a potential integer overflow in
peek()
If the caller provides `offset` and `count` arguments which overflow,
their sum will overflow and could lead to `memcpy()` reading out more
memory than expected.
Spotted by Codean Labs.
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Fixes: #3851
CVE: CVE-2026-0988
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/c5766cff61ffce0b8e787eae09908ac348338e5f]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
gio/gbufferedinputstream.c | 2 +-
gio/tests/buffered-input-stream.c | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/gio/gbufferedinputstream.c b/gio/gbufferedinputstream.c
index 9e6bacc62..56d656be0 100644
--- a/gio/gbufferedinputstream.c
+++ b/gio/gbufferedinputstream.c
@@ -588,7 +588,7 @@ g_buffered_input_stream_peek (GBufferedInputStream *stream,
available = g_buffered_input_stream_get_available (stream);
- if (offset > available)
+ if (offset > available || offset > G_MAXSIZE - count)
return 0;
end = MIN (offset + count, available);
diff --git a/gio/tests/buffered-input-stream.c b/gio/tests/buffered-input-stream.c
index a1af4eeff..2b2a0d9aa 100644
--- a/gio/tests/buffered-input-stream.c
+++ b/gio/tests/buffered-input-stream.c
@@ -58,6 +58,16 @@ test_peek (void)
g_assert_cmpint (npeek, ==, 0);
g_free (buffer);
+ buffer = g_new0 (char, 64);
+ npeek = g_buffered_input_stream_peek (G_BUFFERED_INPUT_STREAM (in), buffer, 8, 0);
+ g_assert_cmpint (npeek, ==, 0);
+ g_free (buffer);
+
+ buffer = g_new0 (char, 64);
+ npeek = g_buffered_input_stream_peek (G_BUFFERED_INPUT_STREAM (in), buffer, 5, G_MAXSIZE);
+ g_assert_cmpint (npeek, ==, 0);
+ g_free (buffer);
+
g_object_unref (in);
g_object_unref (base);
}

View File

@@ -0,0 +1,48 @@
From 5ba0ed9ab2c28294713bdc56a8744ff0a446b59c Mon Sep 17 00:00:00 2001
From: Marco Trevisan <mail@3v1n0.net>
Date: Fri, 23 Jan 2026 18:48:30 +0100
Subject: [PATCH] gbase64: Use gsize to prevent potential overflow
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Both g_base64_encode_step() and g_base64_encode_close() return gsize
values, but these are summed to an int value.
If the sum of these returned values is bigger than MAXINT, we overflow
while doing the null byte write.
Spotted by treeplus.
Thanks to the Sovereign Tech Resilience programme from the Sovereign
Tech Agency.
ID: #YWH-PGM9867-168
Closes: #3870
(cherry picked from commit 6845f7776982849a2be1d8c9b0495e389092bff2)
Co-authored-by: Marco Trevisan (Treviño) <mail@3v1n0.net>
CVE: CVE-2026-1484
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/5ba0ed9ab2c28294713bdc56a8744ff0a446b59c]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/gbase64.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/glib/gbase64.c b/glib/gbase64.c
index 2ea4a4ef4..214b48911 100644
--- a/glib/gbase64.c
+++ b/glib/gbase64.c
@@ -262,8 +262,9 @@ g_base64_encode (const guchar *data,
gsize len)
{
gchar *out;
- gint state = 0, outlen;
+ gint state = 0;
gint save = 0;
+ gsize outlen;
g_return_val_if_fail (data != NULL || len == 0, NULL);

View File

@@ -0,0 +1,45 @@
From 25429bd0b22222d6986d000d62b44eebf490837d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Wed, 21 Jan 2026 20:09:44 +0100
Subject: [PATCH] gbase64: Ensure that the out value is within allocated size
We do not want to deference or write to it
Related to: #3870
CVE: CVE-2026-1484
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/25429bd0b22222d6986d000d62b44eebf490837d]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/gbase64.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/glib/gbase64.c b/glib/gbase64.c
index 214b48911..0141b3b07 100644
--- a/glib/gbase64.c
+++ b/glib/gbase64.c
@@ -265,6 +265,7 @@ g_base64_encode (const guchar *data,
gint state = 0;
gint save = 0;
gsize outlen;
+ gsize allocsize;
g_return_val_if_fail (data != NULL || len == 0, NULL);
@@ -272,10 +273,15 @@ g_base64_encode (const guchar *data,
+1 is needed for trailing \0, also check for unlikely integer overflow */
g_return_val_if_fail (len < ((G_MAXSIZE - 1) / 4 - 1) * 3, NULL);
- out = g_malloc ((len / 3 + 1) * 4 + 1);
+ allocsize = (len / 3 + 1) * 4 + 1;
+ out = g_malloc (allocsize);
outlen = g_base64_encode_step (data, len, FALSE, out, &state, &save);
+ g_assert (outlen <= allocsize);
+
outlen += g_base64_encode_close (FALSE, out + outlen, &state, &save);
+ g_assert (outlen <= allocsize);
+
out[outlen] = '\0';
return (gchar *) out;

View File

@@ -0,0 +1,44 @@
From ee5acb2cefc643450509374da2600cd3bf49a109 Mon Sep 17 00:00:00 2001
From: Marco Trevisan <mail@3v1n0.net>
Date: Fri, 23 Jan 2026 19:05:44 +0100
Subject: [PATCH] gio/gcontenttype-fdo: Do not overflow if header is longer
than MAXINT
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In case the header size is longer than MAXINT we may read and write to
invalid locations
Spotted by treeplus.
Thanks to the Sovereign Tech Resilience programme from the Sovereign
Tech Agency.
ID: #YWH-PGM9867-169
Closes: #3871
(cherry picked from commit aacda5b07141b944408c79e83bcbed3b2e1e6e45)
Co-authored-by: Marco Trevisan (Treviño) <mail@3v1n0.net>
CVE: CVE-2026-1485
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/ee5acb2cefc643450509374da2600cd3bf49a109]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
gio/gcontenttype.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gio/gcontenttype.c b/gio/gcontenttype.c
index 230cea182..11323973a 100644
--- a/gio/gcontenttype.c
+++ b/gio/gcontenttype.c
@@ -1013,7 +1013,7 @@ tree_match_free (TreeMatch *match)
static TreeMatch *
parse_header (gchar *line)
{
- gint len;
+ size_t len;
gchar *s;
TreeMatch *match;

View File

@@ -0,0 +1,42 @@
From 662aa569efa65eaa4672ab0671eb8533a354cd89 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Wed, 21 Jan 2026 22:00:17 +0100
Subject: [PATCH] guniprop: Use size_t for output_marks length
The input string length may overflow, and this would lead to wrong
behavior and invalid writes.
Spotted by treeplus.
Thanks to the Sovereign Tech Resilience programme from the Sovereign
Tech Agency.
ID: #YWH-PGM9867-171
Closes: #3872
CVE: CVE-2026-1489
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/662aa569efa65eaa4672ab0671eb8533a354cd89]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/guniprop.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/glib/guniprop.c b/glib/guniprop.c
index fe0033fd6..1a0cc6408 100644
--- a/glib/guniprop.c
+++ b/glib/guniprop.c
@@ -753,13 +753,13 @@ get_locale_type (void)
return LOCALE_NORMAL;
}
-static gint
+static size_t
output_marks (const char **p_inout,
char *out_buffer,
gboolean remove_dot)
{
const char *p = *p_inout;
- gint len = 0;
+ size_t len = 0;
while (*p)
{

View File

@@ -0,0 +1,30 @@
From 58356619525a1d565df8cc348e9784716f020f2f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Wed, 21 Jan 2026 22:01:49 +0100
Subject: [PATCH] guniprop: Do not convert size_t to gint
We were correctly using size_t in output_special_case() since commit
362f92b69, but then we converted the value back to int
Related to: #3872
CVE: CVE-2026-1489
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/58356619525a1d565df8cc348e9784716f020f2f]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/guniprop.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/glib/guniprop.c b/glib/guniprop.c
index 1a0cc6408..fe50a287c 100644
--- a/glib/guniprop.c
+++ b/glib/guniprop.c
@@ -779,7 +779,7 @@ output_marks (const char **p_inout,
return len;
}
-static gint
+static size_t
output_special_case (gchar *out_buffer,
int offset,
int type,

View File

@@ -0,0 +1,290 @@
From 170dc8c4068db4c4cbf63c7d27192e230436da21 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Wed, 21 Jan 2026 22:04:22 +0100
Subject: [PATCH] guniprop: Ensure we do not overflow size in
g_utf8_{strdown,gstrup}()
While this is technically not a security issue, when repeatedly adding
to a size_t value, we can overflow and start from 0.
Now, while being unlikely, technically an utf8 lower or upper string can
have a longer size than the input value, and if the output string is
bigger than G_MAXSIZE we'd end up cutting it silently.
Let's instead assert each time we increase the output length
CVE: CVE-2026-1489
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/170dc8c4068db4c4cbf63c7d27192e230436da21]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/guniprop.c | 109 +++++++++++++++++++++++++++++++-----------------
1 file changed, 70 insertions(+), 39 deletions(-)
diff --git a/glib/guniprop.c b/glib/guniprop.c
index fe50a287c..86020b6e0 100644
--- a/glib/guniprop.c
+++ b/glib/guniprop.c
@@ -753,14 +753,36 @@ get_locale_type (void)
return LOCALE_NORMAL;
}
-static size_t
-output_marks (const char **p_inout,
- char *out_buffer,
- gboolean remove_dot)
+static inline void
+increase_size (size_t *sizeptr, size_t add)
+{
+ g_assert (G_MAXSIZE - *(sizeptr) >= add);
+ *(sizeptr) += add;
+}
+
+static inline void
+append_utf8_char_to_buffer (gunichar c,
+ char *out_buffer,
+ size_t *in_out_len)
+{
+ gint utf8_len;
+ char *buffer;
+
+ buffer = out_buffer ? out_buffer + *(in_out_len) : NULL;
+ utf8_len = g_unichar_to_utf8 (c, buffer);
+
+ g_assert (utf8_len >= 0);
+ increase_size (in_out_len, utf8_len);
+}
+
+static void
+append_mark (const char **p_inout,
+ char *out_buffer,
+ size_t *in_out_len,
+ gboolean remove_dot)
{
const char *p = *p_inout;
- size_t len = 0;
-
+
while (*p)
{
gunichar c = g_utf8_get_char (p);
@@ -768,7 +790,7 @@ output_marks (const char **p_inout,
if (ISMARK (TYPE (c)))
{
if (!remove_dot || c != 0x307 /* COMBINING DOT ABOVE */)
- len += g_unichar_to_utf8 (c, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (c, out_buffer, in_out_len);
p = g_utf8_next_char (p);
}
else
@@ -776,14 +798,14 @@ output_marks (const char **p_inout,
}
*p_inout = p;
- return len;
}
-static size_t
-output_special_case (gchar *out_buffer,
- int offset,
- int type,
- int which)
+static void
+append_special_case (char *out_buffer,
+ size_t *in_out_len,
+ int offset,
+ int type,
+ int which)
{
const gchar *p = special_case_table + offset;
gint len;
@@ -795,10 +817,12 @@ output_special_case (gchar *out_buffer,
p += strlen (p) + 1;
len = strlen (p);
- if (out_buffer)
- memcpy (out_buffer, p, len);
+ g_assert (len < G_MAXSIZE - *in_out_len);
- return len;
+ if (out_buffer)
+ memcpy (out_buffer + *in_out_len, p, len);
+
+ increase_size (in_out_len, len);
}
static gsize
@@ -839,11 +863,13 @@ real_toupper (const gchar *str,
decomp_len = g_unichar_fully_decompose (c, FALSE, decomp, G_N_ELEMENTS (decomp));
for (i=0; i < decomp_len; i++)
{
+
if (decomp[i] != 0x307 /* COMBINING DOT ABOVE */)
- len += g_unichar_to_utf8 (g_unichar_toupper (decomp[i]), out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (g_unichar_toupper (decomp[i]),
+ out_buffer, &len);
}
-
- len += output_marks (&p, out_buffer ? out_buffer + len : NULL, TRUE);
+
+ append_mark (&p, out_buffer, &len, TRUE);
continue;
}
@@ -856,17 +882,17 @@ real_toupper (const gchar *str,
if (locale_type == LOCALE_TURKIC && c == 'i')
{
/* i => LATIN CAPITAL LETTER I WITH DOT ABOVE */
- len += g_unichar_to_utf8 (0x130, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (0x130, out_buffer, &len);
}
else if (c == 0x0345) /* COMBINING GREEK YPOGEGRAMMENI */
{
/* Nasty, need to move it after other combining marks .. this would go away if
* we normalized first.
*/
- len += output_marks (&p, out_buffer ? out_buffer + len : NULL, FALSE);
+ append_mark (&p, out_buffer, &len, TRUE);
/* And output as GREEK CAPITAL LETTER IOTA */
- len += g_unichar_to_utf8 (0x399, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (0x399, out_buffer, &len);
}
else if (IS (t,
OR (G_UNICODE_LOWERCASE_LETTER,
@@ -877,8 +903,8 @@ real_toupper (const gchar *str,
if (val >= 0x1000000)
{
- len += output_special_case (out_buffer ? out_buffer + len : NULL, val - 0x1000000, t,
- t == G_UNICODE_LOWERCASE_LETTER ? 0 : 1);
+ append_special_case (out_buffer, &len, val - 0x1000000, t,
+ t == G_UNICODE_LOWERCASE_LETTER ? 0 : 1);
}
else
{
@@ -898,7 +924,7 @@ real_toupper (const gchar *str,
/* Some lowercase letters, e.g., U+000AA, FEMININE ORDINAL INDICATOR,
* do not have an uppercase equivalent, in which case val will be
* zero. */
- len += g_unichar_to_utf8 (val ? val : c, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (val ? val : c, out_buffer, &len);
}
}
else
@@ -908,7 +934,7 @@ real_toupper (const gchar *str,
if (out_buffer)
memcpy (out_buffer + len, last, char_len);
- len += char_len;
+ increase_size (&len, char_len);
}
}
@@ -946,6 +972,8 @@ g_utf8_strup (const gchar *str,
* We use a two pass approach to keep memory management simple
*/
result_len = real_toupper (str, len, NULL, locale_type);
+ g_assert (result_len < G_MAXSIZE);
+
result = g_malloc (result_len + 1);
real_toupper (str, len, result, locale_type);
result[result_len] = '\0';
@@ -1003,14 +1031,15 @@ real_tolower (const gchar *str,
{
/* I + COMBINING DOT ABOVE => i (U+0069)
* LATIN CAPITAL LETTER I WITH DOT ABOVE => i (U+0069) */
- len += g_unichar_to_utf8 (0x0069, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (0x0069, out_buffer, &len);
+
if (combining_dot)
p = g_utf8_next_char (p);
}
else
{
/* I => LATIN SMALL LETTER DOTLESS I */
- len += g_unichar_to_utf8 (0x131, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (0x131, out_buffer, &len);
}
}
/* Introduce an explicit dot above when lowercasing capital I's and J's
@@ -1018,19 +1047,19 @@ real_tolower (const gchar *str,
else if (locale_type == LOCALE_LITHUANIAN &&
(c == 0x00cc || c == 0x00cd || c == 0x0128))
{
- len += g_unichar_to_utf8 (0x0069, out_buffer ? out_buffer + len : NULL);
- len += g_unichar_to_utf8 (0x0307, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (0x0069, out_buffer, &len);
+ append_utf8_char_to_buffer (0x0307, out_buffer, &len);
switch (c)
{
case 0x00cc:
- len += g_unichar_to_utf8 (0x0300, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (0x0300, out_buffer, &len);
break;
case 0x00cd:
- len += g_unichar_to_utf8 (0x0301, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (0x0301, out_buffer, &len);
break;
case 0x0128:
- len += g_unichar_to_utf8 (0x0303, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (0x0303, out_buffer, &len);
break;
}
}
@@ -1039,8 +1068,8 @@ real_tolower (const gchar *str,
c == 'J' || c == G_UNICHAR_FULLWIDTH_J || c == 0x012e) &&
has_more_above (p))
{
- len += g_unichar_to_utf8 (g_unichar_tolower (c), out_buffer ? out_buffer + len : NULL);
- len += g_unichar_to_utf8 (0x0307, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (g_unichar_tolower (c), out_buffer, &len);
+ append_utf8_char_to_buffer (0x0307, out_buffer, &len);
}
else if (c == 0x03A3) /* GREEK CAPITAL LETTER SIGMA */
{
@@ -1063,7 +1092,7 @@ real_tolower (const gchar *str,
else
val = 0x3c2; /* GREEK SMALL FINAL SIGMA */
- len += g_unichar_to_utf8 (val, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (val, out_buffer, &len);
}
else if (IS (t,
OR (G_UNICODE_UPPERCASE_LETTER,
@@ -1074,7 +1103,7 @@ real_tolower (const gchar *str,
if (val >= 0x1000000)
{
- len += output_special_case (out_buffer ? out_buffer + len : NULL, val - 0x1000000, t, 0);
+ append_special_case (out_buffer, &len, val - 0x1000000, t, 0);
}
else
{
@@ -1093,7 +1122,7 @@ real_tolower (const gchar *str,
/* Not all uppercase letters are guaranteed to have a lowercase
* equivalent. If this is the case, val will be zero. */
- len += g_unichar_to_utf8 (val ? val : c, out_buffer ? out_buffer + len : NULL);
+ append_utf8_char_to_buffer (val ? val : c, out_buffer, &len);
}
}
else
@@ -1103,7 +1132,7 @@ real_tolower (const gchar *str,
if (out_buffer)
memcpy (out_buffer + len, last, char_len);
- len += char_len;
+ increase_size (&len, char_len);
}
}
@@ -1140,6 +1169,8 @@ g_utf8_strdown (const gchar *str,
* We use a two pass approach to keep memory management simple
*/
result_len = real_tolower (str, len, NULL, locale_type);
+ g_assert (result_len < G_MAXSIZE);
+
result = g_malloc (result_len + 1);
real_tolower (str, len, result, locale_type);
result[result_len] = '\0';

View File

@@ -0,0 +1,68 @@
From b96966058f4291db8970ced70ee22103e63679e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Fri, 23 Jan 2026 17:39:34 +0100
Subject: [PATCH] glib/tests/unicode: Add test debug information when parsing
input files
On case of failures makes it easier to understand on what line of the
source file we're at, as it might not be clear for non-ascii chars
CVE: CVE-2026-1489
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/b96966058f4291db8970ced70ee22103e63679e5]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
glib/tests/unicode.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/glib/tests/unicode.c b/glib/tests/unicode.c
index 90b5a98b8..44d1083dd 100644
--- a/glib/tests/unicode.c
+++ b/glib/tests/unicode.c
@@ -546,6 +546,7 @@ test_casemap_and_casefold (void)
const char *locale;
const char *test;
const char *expected;
+ size_t line = 0;
char *convert;
char *current_locale = setlocale (LC_CTYPE, NULL);
@@ -555,6 +556,7 @@ test_casemap_and_casefold (void)
while (fgets (buffer, sizeof (buffer), infile))
{
+ line++;
if (buffer[0] == '#')
continue;
@@ -588,6 +590,9 @@ test_casemap_and_casefold (void)
convert = g_utf8_strup (test, -1);
expected = strings[4][0] ? strings[4] : test;
+ g_test_message ("Converting '%s' => '%s' (line %" G_GSIZE_FORMAT ")",
+ test, expected, line);
+
g_assert_cmpstr (convert, ==, expected);
g_free (convert);
@@ -607,9 +612,11 @@ test_casemap_and_casefold (void)
infile = fopen (filename, "r");
g_assert (infile != NULL);
+ line = 0;
while (fgets (buffer, sizeof (buffer), infile))
{
+ line++;
if (buffer[0] == '#')
continue;
@@ -619,6 +626,9 @@ test_casemap_and_casefold (void)
test = strings[0];
convert = g_utf8_casefold (test, -1);
+ g_test_message ("Converting '%s' => '%s' (line %" G_GSIZE_FORMAT ")",
+ test, strings[1], line);
+
g_assert_cmpstr (convert, ==, strings[1]);
g_free (convert);

View File

@@ -64,6 +64,20 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
file://CVE-2025-4373-02.patch \
file://CVE-2025-7039-01.patch \
file://CVE-2025-7039-02.patch \
file://CVE-2025-13601-01.patch \
file://CVE-2025-13601-02.patch \
file://CVE-2025-14087-01.patch \
file://CVE-2025-14087-02.patch \
file://CVE-2025-14087-03.patch \
file://CVE-2025-14512.patch \
file://CVE-2026-0988.patch \
file://CVE-2026-1484-01.patch \
file://CVE-2026-1484-02.patch \
file://CVE-2026-1485.patch \
file://CVE-2026-1489-01.patch \
file://CVE-2026-1489-02.patch \
file://CVE-2026-1489-03.patch \
file://CVE-2026-1489-04.patch \
"
SRC_URI:append:class-native = " file://relocate-modules.patch"

View File

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

View File

@@ -27,7 +27,8 @@ CVE_CHECK_IGNORE += "CVE-2023-4527"
CVE_CHECK_IGNORE += " \
CVE-2023-0687 CVE-2023-4813 CVE-2023-4806 CVE-2023-4911 CVE-2023-5156 \
CVE-2024-2961 CVE-2024-33599 CVE-2024-33600 CVE-2024-33601 CVE-2024-33602 \
CVE-2025-0395 CVE-2025-4802 CVE-2025-8058 \
CVE-2025-0395 CVE-2025-4802 CVE-2025-8058 CVE-2025-15281 \
CVE-2026-0861 CVE-2026-0915 \
"
DEPENDS += "gperf-native bison-native"

View File

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

View File

@@ -0,0 +1,76 @@
From 1961208e958ca22f80a0b4e4c9d71cfa050aa982 Mon Sep 17 00:00:00 2001
From: Daniel Garcia Moreno <daniel.garcia@suse.com>
Date: Wed, 17 Dec 2025 15:24:08 +0100
Subject: [PATCH] catalog: prevent inf recursion in xmlCatalogXMLResolveURI
Fix https://gitlab.gnome.org/GNOME/libxml2/-/issues/1018
CVE: CVE-2026-0989
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/1961208e958ca22f80a0b4e4c9d71cfa050aa982]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
catalog.c | 31 +++++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/catalog.c b/catalog.c
index 76c063a8..46b877e6 100644
--- a/catalog.c
+++ b/catalog.c
@@ -2099,12 +2099,21 @@ static xmlChar *
xmlCatalogListXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) {
xmlChar *ret = NULL;
xmlChar *urnID = NULL;
+ xmlCatalogEntryPtr cur = NULL;
if (catal == NULL)
return(NULL);
if (URI == NULL)
return(NULL);
+ if (catal->depth > MAX_CATAL_DEPTH) {
+ xmlCatalogErr(catal, NULL, XML_CATALOG_RECURSION,
+ "Detected recursion in catalog %s\n",
+ catal->name, NULL, NULL);
+ return(NULL);
+ }
+ catal->depth++;
+
if (!xmlStrncmp(URI, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) {
urnID = xmlCatalogUnWrapURN(URI);
if (xmlDebugCatalogs) {
@@ -2118,21 +2127,27 @@ xmlCatalogListXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) {
ret = xmlCatalogListXMLResolve(catal, urnID, NULL);
if (urnID != NULL)
xmlFree(urnID);
+ catal->depth--;
return(ret);
}
- while (catal != NULL) {
- if (catal->type == XML_CATA_CATALOG) {
- if (catal->children == NULL) {
- xmlFetchXMLCatalogFile(catal);
+ cur = catal;
+ while (cur != NULL) {
+ if (cur->type == XML_CATA_CATALOG) {
+ if (cur->children == NULL) {
+ xmlFetchXMLCatalogFile(cur);
}
- if (catal->children != NULL) {
- ret = xmlCatalogXMLResolveURI(catal->children, URI);
- if (ret != NULL)
+ if (cur->children != NULL) {
+ ret = xmlCatalogXMLResolveURI(cur->children, URI);
+ if (ret != NULL) {
+ catal->depth--;
return(ret);
+ }
}
}
- catal = catal->next;
+ cur = cur->next;
}
+
+ catal->depth--;
return(ret);
}

View File

@@ -0,0 +1,49 @@
From f75abfcaa419a740a3191e56c60400f3ff18988d Mon Sep 17 00:00:00 2001
From: Daniel Garcia Moreno <daniel.garcia@suse.com>
Date: Fri, 19 Dec 2025 11:02:18 +0100
Subject: [PATCH] catalog: Ignore repeated nextCatalog entries
This patch makes the catalog parsing to ignore repeated entries of
nextCatalog with the same value.
Fix https://gitlab.gnome.org/GNOME/libxml2/-/issues/1019
CVE: CVE-2026-0989
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/f75abfcaa419a740a3191e56c60400f3ff18988d]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
catalog.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/catalog.c b/catalog.c
index 46b877e6..fa6d77ca 100644
--- a/catalog.c
+++ b/catalog.c
@@ -1279,9 +1279,27 @@ xmlParseXMLCatalogNode(xmlNodePtr cur, xmlCatalogPrefer prefer,
BAD_CAST "delegateURI", BAD_CAST "uriStartString",
BAD_CAST "catalog", prefer, cgroup);
} else if (xmlStrEqual(cur->name, BAD_CAST "nextCatalog")) {
+ xmlCatalogEntryPtr prev = parent->children;
+
entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_NEXT_CATALOG,
BAD_CAST "nextCatalog", NULL,
BAD_CAST "catalog", prefer, cgroup);
+ /* Avoid duplication of nextCatalog */
+ while (prev != NULL) {
+ if ((prev->type == XML_CATA_NEXT_CATALOG) &&
+ (xmlStrEqual (prev->URL, entry->URL)) &&
+ (xmlStrEqual (prev->value, entry->value)) &&
+ (prev->prefer == entry->prefer) &&
+ (prev->group == entry->group)) {
+ if (xmlDebugCatalogs)
+ fprintf(stderr,
+ "Ignoring repeated nextCatalog %s\n", entry->URL);
+ xmlFreeCatalogEntry(entry, NULL);
+ entry = NULL;
+ break;
+ }
+ prev = prev->next;
+ }
}
if (entry != NULL) {
if (parent != NULL) {

View File

@@ -0,0 +1,325 @@
From f8399e62a31095bf1ced01827c33f9b29494046f Mon Sep 17 00:00:00 2001
From: Daniel Garcia Moreno <daniel.garcia@suse.com>
Date: Fri, 19 Dec 2025 12:27:54 +0100
Subject: [PATCH] testcatalog: Add new tests for catalog.c
Adds a new test program to run specific tests related to catalog
parsing.
This initial version includes a couple of tests, the first one to check
the infinite recursion detection related to:
https://gitlab.gnome.org/GNOME/libxml2/-/issues/1018.
The second one tests the nextCatalog element repeated parsing, related
to:
https://gitlab.gnome.org/GNOME/libxml2/-/issues/1019
https://gitlab.gnome.org/GNOME/libxml2/-/issues/1040
CVE: CVE-2026-0992
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/f8399e62a31095bf1ced01827c33f9b29494046f]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
CMakeLists.txt | 2 +
Makefile.am | 8 ++-
catalog.c | 63 +++++++++++-----
include/libxml/catalog.h | 2 +
test/catalogs/catalog-recursive.xml | 3 +
test/catalogs/repeated-next-catalog.xml | 10 +++
testcatalog.c | 96 +++++++++++++++++++++++++
7 files changed, 164 insertions(+), 20 deletions(-)
create mode 100644 test/catalogs/catalog-recursive.xml
create mode 100644 test/catalogs/repeated-next-catalog.xml
create mode 100644 testcatalog.c
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 163661f8..7d5702df 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -555,6 +555,7 @@ if(LIBXML2_WITH_TESTS)
testapi
testAutomata
testC14N
+ testcatalog
testchar
testdict
testHTML
@@ -579,6 +580,7 @@ if(LIBXML2_WITH_TESTS)
if(NOT WIN32)
add_test(NAME testapi COMMAND testapi)
endif()
+ add_test(NAME testcatalog COMMAND testcatalog)
add_test(NAME testchar COMMAND testchar)
add_test(NAME testdict COMMAND testdict)
add_test(NAME testrecurse COMMAND testrecurse WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/Makefile.am b/Makefile.am
index c51dfd8e..c794eac8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,7 +12,7 @@ AM_CFLAGS = $(EXTRA_CFLAGS) $(THREAD_CFLAGS) $(Z_CFLAGS) $(LZMA_CFLAGS)
check_PROGRAMS=testSchemas testRelax testSAX testHTML testXPath testURI \
testThreads testC14N testAutomata testRegexp \
- testReader testapi testModule runtest runsuite testchar \
+ testReader testapi testModule runtest runsuite testcatalog testchar \
testdict runxmlconf testrecurse testlimits
bin_PROGRAMS = xmllint xmlcatalog
@@ -81,6 +81,11 @@ testlimits_LDFLAGS =
testlimits_DEPENDENCIES = $(DEPS)
testlimits_LDADD= $(BASE_THREAD_LIBS) $(RDL_LIBS) $(LDADDS)
+testcatalog_SOURCES=testcatalog.c
+testcatalog_LDFLAGS =
+testcatalog_DEPENDENCIES = $(DEPS)
+testcatalog_LDADD= $(LDADDS)
+
testchar_SOURCES=testchar.c
testchar_LDFLAGS =
testchar_DEPENDENCIES = $(DEPS)
@@ -213,6 +218,7 @@ runtests:
$(CHECKER) ./runtest$(EXEEXT) && \
$(CHECKER) ./testrecurse$(EXEEXT) && \
ASAN_OPTIONS="$$ASAN_OPTIONS:detect_leaks=0" $(CHECKER) ./testapi$(EXEEXT) && \
+ $(CHECKER) ./testcatalog$(EXEEXT) \
$(CHECKER) ./testchar$(EXEEXT) && \
$(CHECKER) ./testdict$(EXEEXT) && \
$(CHECKER) ./runxmlconf$(EXEEXT)
diff --git a/catalog.c b/catalog.c
index 401dbc14..eb889162 100644
--- a/catalog.c
+++ b/catalog.c
@@ -658,43 +658,54 @@ static void xmlDumpXMLCatalogNode(xmlCatalogEntryPtr catal, xmlNodePtr catalog,
}
}
-static int
-xmlDumpXMLCatalog(FILE *out, xmlCatalogEntryPtr catal) {
- int ret;
- xmlDocPtr doc;
+static xmlDocPtr
+xmlDumpXMLCatalogToDoc(xmlCatalogEntryPtr catal) {
xmlNsPtr ns;
xmlDtdPtr dtd;
xmlNodePtr catalog;
- xmlOutputBufferPtr buf;
+ xmlDocPtr doc = xmlNewDoc(NULL);
+ if (doc == NULL) {
+ return(NULL);
+ }
- /*
- * Rebuild a catalog
- */
- doc = xmlNewDoc(NULL);
- if (doc == NULL)
- return(-1);
dtd = xmlNewDtd(doc, BAD_CAST "catalog",
- BAD_CAST "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN",
-BAD_CAST "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd");
+ BAD_CAST "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN",
+ BAD_CAST "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd");
xmlAddChild((xmlNodePtr) doc, (xmlNodePtr) dtd);
ns = xmlNewNs(NULL, XML_CATALOGS_NAMESPACE, NULL);
if (ns == NULL) {
- xmlFreeDoc(doc);
- return(-1);
+ xmlFreeDoc(doc);
+ return(NULL);
}
catalog = xmlNewDocNode(doc, ns, BAD_CAST "catalog", NULL);
if (catalog == NULL) {
- xmlFreeNs(ns);
- xmlFreeDoc(doc);
- return(-1);
+ xmlFreeDoc(doc);
+ xmlFreeNs(ns);
+ return(NULL);
}
catalog->nsDef = ns;
xmlAddChild((xmlNodePtr) doc, catalog);
-
xmlDumpXMLCatalogNode(catal, catalog, doc, ns, NULL);
+ return(doc);
+}
+
+static int
+xmlDumpXMLCatalog(FILE *out, xmlCatalogEntryPtr catal) {
+ int ret;
+ xmlDocPtr doc;
+ xmlOutputBufferPtr buf;
+
+ /*
+ * Rebuild a catalog
+ */
+ doc = xmlDumpXMLCatalogToDoc(catal);
+ if (doc == NULL) {
+ return(-1);
+ }
+
/*
* reserialize it
*/
@@ -3430,6 +3441,20 @@ xmlCatalogDump(FILE *out) {
xmlACatalogDump(xmlDefaultCatalog, out);
}
+
+/**
+ * Dump all the global catalog content as a xmlDoc
+ * This function is just for testing/debugging purposes
+ *
+ * @returns The catalog as xmlDoc or NULL if failed, it must be freed by the caller.
+ */
+xmlDocPtr
+xmlCatalogDumpDoc(void) {
+ if (!xmlCatalogInitialized)
+ xmlInitializeCatalog();
+
+ return xmlDumpXMLCatalogToDoc(xmlDefaultCatalog->xml);
+}
#endif /* LIBXML_OUTPUT_ENABLED */
/**
diff --git a/include/libxml/catalog.h b/include/libxml/catalog.h
index 88a7483c..e1bc5feb 100644
--- a/include/libxml/catalog.h
+++ b/include/libxml/catalog.h
@@ -119,6 +119,8 @@ XMLPUBFUN void XMLCALL
#ifdef LIBXML_OUTPUT_ENABLED
XMLPUBFUN void XMLCALL
xmlCatalogDump (FILE *out);
+XMLPUBFUN xmlDocPtr
+ xmlCatalogDumpDoc (void);
#endif /* LIBXML_OUTPUT_ENABLED */
XMLPUBFUN xmlChar * XMLCALL
xmlCatalogResolve (const xmlChar *pubID,
diff --git a/test/catalogs/catalog-recursive.xml b/test/catalogs/catalog-recursive.xml
new file mode 100644
index 00000000..3b3d03f9
--- /dev/null
+++ b/test/catalogs/catalog-recursive.xml
@@ -0,0 +1,3 @@
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <delegateURI uriStartString="/foo" catalog="catalog-recursive.xml"/>
+</catalog>
diff --git a/test/catalogs/repeated-next-catalog.xml b/test/catalogs/repeated-next-catalog.xml
new file mode 100644
index 00000000..76d34c3c
--- /dev/null
+++ b/test/catalogs/repeated-next-catalog.xml
@@ -0,0 +1,10 @@
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <nextCatalog catalog="registry.xml"/>
+ <nextCatalog catalog="registry.xml"/>
+ <nextCatalog catalog="./registry.xml"/>
+ <nextCatalog catalog="././registry.xml"/>
+ <nextCatalog catalog="./././registry.xml"/>
+ <nextCatalog catalog="./../catalogs/registry.xml"/>
+ <nextCatalog catalog="./../catalogs/./registry.xml"/>
+</catalog>
+
diff --git a/testcatalog.c b/testcatalog.c
new file mode 100644
index 00000000..86d33bd0
--- /dev/null
+++ b/testcatalog.c
@@ -0,0 +1,96 @@
+/*
+ * testcatalog.c: C program to run libxml2 catalog.c unit tests
+ *
+ * To compile on Unixes:
+ * cc -o testcatalog `xml2-config --cflags` testcatalog.c `xml2-config --libs` -lpthread
+ *
+ * See Copyright for the status of this software.
+ *
+ * Author: Daniel Garcia <dani@danigm.net>
+ */
+
+
+#include "libxml.h"
+#include <stdio.h>
+
+#ifdef LIBXML_CATALOG_ENABLED
+#include <libxml/catalog.h>
+
+/* Test catalog resolve uri with recursive catalog */
+static int
+testRecursiveDelegateUri(void) {
+ int ret = 0;
+ const char *cat = "test/catalogs/catalog-recursive.xml";
+ const char *entity = "/foo.ent";
+ xmlChar *resolved = NULL;
+
+ xmlInitParser();
+ xmlLoadCatalog(cat);
+
+ /* This should trigger recursive error */
+ resolved = xmlCatalogResolveURI(BAD_CAST entity);
+ if (resolved != NULL) {
+ fprintf(stderr, "CATALOG-FAILURE: Catalog %s entity should fail to resolve\n", entity);
+ ret = 1;
+ }
+ xmlCatalogCleanup();
+
+ return ret;
+}
+
+/* Test parsing repeated NextCatalog */
+static int
+testRepeatedNextCatalog(void) {
+ int ret = 0;
+ int i = 0;
+ const char *cat = "test/catalogs/repeated-next-catalog.xml";
+ const char *entity = "/foo.ent";
+ xmlDocPtr doc = NULL;
+ xmlNodePtr node = NULL;
+
+ xmlInitParser();
+
+ xmlLoadCatalog(cat);
+ /* To force the complete recursive load */
+ xmlCatalogResolveURI(BAD_CAST entity);
+ /**
+ * Ensure that the doc doesn't contain the same nextCatalog
+ */
+ doc = xmlCatalogDumpDoc();
+ xmlCatalogCleanup();
+
+ if (doc == NULL) {
+ fprintf(stderr, "CATALOG-FAILURE: Failed to dump the catalog\n");
+ return 1;
+ }
+
+ /* Just the root "catalog" node with a series of nextCatalog */
+ node = xmlDocGetRootElement(doc);
+ node = node->children;
+ for (i=0; node != NULL; node=node->next, i++) {}
+ if (i > 1) {
+ fprintf(stderr, "CATALOG-FAILURE: Found %d nextCatalog entries and should be 1\n", i);
+ ret = 1;
+ }
+
+ xmlFreeDoc(doc);
+
+ return ret;
+}
+
+int
+main(void) {
+ int err = 0;
+
+ err |= testRecursiveDelegateUri();
+ err |= testRepeatedNextCatalog();
+
+ return err;
+}
+#else
+/* No catalog, so everything okay */
+int
+main(void) {
+ return 0;
+}
+#endif

View File

@@ -0,0 +1,33 @@
From deed3b7873dff30b7f87f7f33154c9932a772522 Mon Sep 17 00:00:00 2001
From: Daniel Garcia Moreno <dani@danigm.net>
Date: Sun, 18 Jan 2026 19:47:11 +0100
Subject: [PATCH] catalog: Do not check value for duplication nextCatalog
The value field stores the path as it appears in the catalog definition,
the URL is built using xmlBuildURI that changes the relative paths to
absolute.
This change fixes the issue of using relative path to the same catalog
in the same file.
Fix https://gitlab.gnome.org/GNOME/libxml2/-/issues/1040
CVE: CVE-2026-0992
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/deed3b7873dff30b7f87f7f33154c9932a772522]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
catalog.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/catalog.c b/catalog.c
index eb889162..ba9ee7ae 100644
--- a/catalog.c
+++ b/catalog.c
@@ -1299,7 +1299,6 @@ xmlParseXMLCatalogNode(xmlNodePtr cur, xmlCatalogPrefer prefer,
while (prev != NULL) {
if ((prev->type == XML_CATA_NEXT_CATALOG) &&
(xmlStrEqual (prev->URL, entry->URL)) &&
- (xmlStrEqual (prev->value, entry->value)) &&
(prev->prefer == entry->prefer) &&
(prev->group == entry->group)) {
if (xmlDebugCatalogs)

View File

@@ -44,6 +44,10 @@ SRC_URI += "http://www.w3.org/XML/Test/xmlts20080827.tar;subdir=${BP};name=testt
file://CVE-2025-6170.patch \
file://CVE-2025-9714.patch \
file://CVE-2025-7425.patch \
file://CVE-2026-0990.patch \
file://CVE-2026-0992-01.patch \
file://CVE-2026-0992-02.patch \
file://CVE-2026-0992-03.patch \
"
SRC_URI[archive.sha256sum] = "60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee"

View File

@@ -42,6 +42,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-lin
file://CVE-2024-28085-0004.patch \
file://CVE-2024-28085-0005.patch \
file://fstab-isolation.patch \
file://CVE-2025-14104-01.patch \
file://CVE-2025-14104-02.patch \
"
SRC_URI[sha256sum] = "634e6916ad913366c3536b6468e7844769549b99a7b2bf80314de78ab5655b83"

View File

@@ -0,0 +1,33 @@
From aaa9e718c88d6916b003da7ebcfe38a3c88df8e6 Mon Sep 17 00:00:00 2001
From: Mohamed Maatallah <hotelsmaatallahrecemail@gmail.com>
Date: Sat, 24 May 2025 03:16:09 +0100
Subject: [PATCH] Update setpwnam.c
CVE: CVE-2025-14104
Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/aaa9e718c88d6916b003da7ebcfe38a3c88df8e6]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
login-utils/setpwnam.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/login-utils/setpwnam.c b/login-utils/setpwnam.c
index 3e3c1abde..95e470b5a 100644
--- a/login-utils/setpwnam.c
+++ b/login-utils/setpwnam.c
@@ -126,10 +126,12 @@ int setpwnam(struct passwd *pwd, const char *prefix)
}
/* Is this the username we were sent to change? */
- if (!found && linebuf[namelen] == ':' &&
- !strncmp(linebuf, pwd->pw_name, namelen)) {
- /* Yes! So go forth in the name of the Lord and
- * change it! */
+ if (!found &&
+ strncmp(linebuf, pwd->pw_name, namelen) == 0 &&
+ strlen(linebuf) > namelen &&
+ linebuf[namelen] == ':') {
+ /* Yes! But this time lets not walk past the end of the buffer
+ * in the name of the Lord, SUID, or anything else. */
if (putpwent(pwd, fp) < 0)
goto fail;
found = 1;

View File

@@ -0,0 +1,28 @@
From 9a36d77012c4c771f8d51eba46b6e62c29bf572a Mon Sep 17 00:00:00 2001
From: Mohamed Maatallah <hotelsmaatallahrecemail@gmail.com>
Date: Mon, 26 May 2025 10:06:02 +0100
Subject: [PATCH] Update bufflen
Update buflen
CVE: CVE-2025-14104
Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/9a36d77012c4c771f8d51eba46b6e62c29bf572a]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
login-utils/setpwnam.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/login-utils/setpwnam.c b/login-utils/setpwnam.c
index 95e470b5a..7778e98f7 100644
--- a/login-utils/setpwnam.c
+++ b/login-utils/setpwnam.c
@@ -99,7 +99,8 @@ int setpwnam(struct passwd *pwd, const char *prefix)
goto fail;
namelen = strlen(pwd->pw_name);
-
+ if (namelen > buflen)
+ buflen += namelen;
linebuf = malloc(buflen);
if (!linebuf)
goto fail;

View File

@@ -58,3 +58,5 @@ BBCLASSEXTEND = "native nativesdk"
# this CVE is for cloudflare zlib
CVE_CHECK_IGNORE += "CVE-2023-6992"
# vulnerable file is not compiled
CVE_CHECK_IGNORE += "CVE-2026-22184"

View File

@@ -86,5 +86,10 @@ SRC_URI = "\
file://0047-CVE-2025-8225.patch \
file://CVE-2025-11412.patch \
file://CVE-2025-11413.patch \
file://0048-CVE-2025-11494.patch \
file://0049-CVE-2025-11839.patch \
file://0050-CVE-2025-11840.patch \
file://CVE-2025-1181-pre.patch \
file://CVE-2025-1181.patch \
"
S = "${WORKDIR}/git"

View File

@@ -0,0 +1,43 @@
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 30 Sep 2025 08:13:56 +0800
Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=b6ac5a8a5b82f0ae6a4642c8d7149b325f4cc60a]
CVE: CVE-2025-11494
Since x86 .eh_frame section may reference _GLOBAL_OFFSET_TABLE_, keep
_GLOBAL_OFFSET_TABLE_ if there is dynamic section and the output
.eh_frame section is non-empty.
PR ld/33499
* elfxx-x86.c (_bfd_x86_elf_late_size_sections): Keep
_GLOBAL_OFFSET_TABLE_ if there is dynamic section and the
output .eh_frame section is non-empty.
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index c054f7cd..ddc15945 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -2447,6 +2447,8 @@ _bfd_x86_elf_late_size_sections (bfd *output_bfd,
if (htab->elf.sgotplt)
{
+ asection *eh_frame;
+
/* Don't allocate .got.plt section if there are no GOT nor PLT
entries and there is no reference to _GLOBAL_OFFSET_TABLE_. */
if ((htab->elf.hgot == NULL
@@ -2459,7 +2461,11 @@ _bfd_x86_elf_late_size_sections (bfd *output_bfd,
&& (htab->elf.iplt == NULL
|| htab->elf.iplt->size == 0)
&& (htab->elf.igotplt == NULL
- || htab->elf.igotplt->size == 0))
+ || htab->elf.igotplt->size == 0)
+ && (!htab->elf.dynamic_sections_created
+ || (eh_frame = bfd_get_section_by_name (output_bfd,
+ ".eh_frame")) == NULL
+ || eh_frame->rawsize == 0))
{
htab->elf.sgotplt->size = 0;
/* Solaris requires to keep _GLOBAL_OFFSET_TABLE_ even if it

View File

@@ -0,0 +1,32 @@
From 12ef7d5b7b02d0023db645d86eb9d0797bc747fe Mon Sep 17 00:00:00 2001
From: Nick Clifton <nickc@redhat.com>
Date: Mon, 3 Nov 2025 11:49:02 +0000
Subject: [PATCH] Remove call to abort in the DGB debug format printing code,
thus allowing the display of a fuzzed input file to complete without
triggering an abort.
PR 33448
---
binutils/prdbg.c | 1 -
1 file changed, 1 deletion(-)
Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=12ef7d5b7b02d0023db645d86eb9d0797bc747fe]
CVE: CVE-2025-11839
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
diff --git a/binutils/prdbg.c b/binutils/prdbg.c
index c239aeb1a79..5d405c48e3d 100644
--- a/binutils/prdbg.c
+++ b/binutils/prdbg.c
@@ -2449,7 +2449,6 @@ tg_tag_type (void *p, const char *name, unsigned int id,
t = "union class ";
break;
default:
- abort ();
return false;
}
--
2.43.7

View File

@@ -0,0 +1,37 @@
From f6b0f53a36820da91eadfa9f466c22f92e4256e0 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Mon, 3 Nov 2025 09:03:37 +1030
Subject: [PATCH] PR 33455 SEGV in vfinfo at ldmisc.c:527
A reloc howto set up with EMPTY_HOWTO has a NULL name. More than one
place emitting diagnostics assumes a reloc howto won't have a NULL
name.
PR 33455
* coffcode.h (coff_slurp_reloc_table): Don't allow a howto with
a NULL name.
---
bfd/coffcode.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=f6b0f53a36820da91eadfa9f466c22f92e4256e0]
CVE: CVE-2025-11840
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index 1e5acc0032c..ce1e39131b4 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -5345,7 +5345,7 @@ coff_slurp_reloc_table (bfd * abfd, sec_ptr asect, asymbol ** symbols)
RTYPE2HOWTO (cache_ptr, &dst);
#endif /* RELOC_PROCESSING */
- if (cache_ptr->howto == NULL)
+ if (cache_ptr->howto == NULL || cache_ptr->howto->name == NULL)
{
_bfd_error_handler
/* xgettext:c-format */
--
2.43.7

View File

@@ -0,0 +1,149 @@
Backported of:
From 18cc11a2771d9e40180485da9a4fb660c03efac3 Mon Sep 17 00:00:00 2001
From: Nick Clifton <nickc@redhat.com>
Date: Wed, 5 Feb 2025 14:31:10 +0000
Subject: [PATCH] Prevent illegal memory access when checking relocs in a
corrupt ELF binary.
PR 32641
Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/binutils/tree/debian/patches/CVE-2025-1181-pre.patch?h=ubuntu/jammy-security
Upstream commit https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=18cc11a2771d9e40180485da9a4fb660c03efac3]
CVE: CVE-2025-1181
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
bfd/elf-bfd.h | 3 +++
bfd/elf64-x86-64.c | 10 +++++-----
bfd/elflink.c | 24 ++++++++++++++++++++++++
bfd/elfxx-x86.c | 20 +++++++-------------
4 files changed, 39 insertions(+), 18 deletions(-)
Index: binutils-2.38/bfd/elf-bfd.h
===================================================================
--- binutils-2.38.orig/bfd/elf-bfd.h
+++ binutils-2.38/bfd/elf-bfd.h
@@ -3007,6 +3007,9 @@ extern bool _bfd_elf_maybe_set_textrel
extern bool _bfd_elf_add_dynamic_tags
(bfd *, struct bfd_link_info *, bool);
+extern struct elf_link_hash_entry * _bfd_elf_get_link_hash_entry
+ (struct elf_link_hash_entry **, unsigned int, Elf_Internal_Shdr *);
+
/* Large common section. */
extern asection _bfd_elf_large_com_section;
Index: binutils-2.38/bfd/elf64-x86-64.c
===================================================================
--- binutils-2.38.orig/bfd/elf64-x86-64.c
+++ binutils-2.38/bfd/elf64-x86-64.c
@@ -1484,7 +1484,7 @@ elf_x86_64_convert_load_reloc (bfd *abfd
bool to_reloc_pc32;
bool abs_symbol;
bool local_ref;
- asection *tsec;
+ asection *tsec = NULL;
bfd_signed_vma raddend;
unsigned int opcode;
unsigned int modrm;
@@ -1639,6 +1639,9 @@ elf_x86_64_convert_load_reloc (bfd *abfd
return true;
}
+ if (tsec == NULL)
+ return false;
+
/* Don't convert GOTPCREL relocation against large section. */
if (elf_section_data (tsec) != NULL
&& (elf_section_flags (tsec) & SHF_X86_64_LARGE) != 0)
@@ -1915,10 +1918,7 @@ elf_x86_64_scan_relocs (bfd *abfd, struc
else
{
isym = NULL;
- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
+ h = _bfd_elf_get_link_hash_entry (sym_hashes, r_symndx, symtab_hdr);
}
/* Check invalid x32 relocations. */
Index: binutils-2.38/bfd/elflink.c
===================================================================
--- binutils-2.38.orig/bfd/elflink.c
+++ binutils-2.38/bfd/elflink.c
@@ -62,6 +62,27 @@ struct elf_find_verdep_info
static bool _bfd_elf_fix_symbol_flags
(struct elf_link_hash_entry *, struct elf_info_failed *);
+struct elf_link_hash_entry *
+_bfd_elf_get_link_hash_entry (struct elf_link_hash_entry ** sym_hashes,
+ unsigned int symndx,
+ Elf_Internal_Shdr * symtab_hdr)
+{
+ if (symndx < symtab_hdr->sh_info)
+ return NULL;
+
+ struct elf_link_hash_entry *h = sym_hashes[symndx - symtab_hdr->sh_info];
+
+ /* The hash might be empty. See PR 32641 for an example of this. */
+ if (h == NULL)
+ return NULL;
+
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ return h;
+}
+
static struct elf_link_hash_entry *
get_ext_sym_hash (struct elf_reloc_cookie *cookie, unsigned long r_symndx)
{
@@ -75,6 +96,9 @@ get_ext_sym_hash (struct elf_reloc_cooki
h = cookie->sym_hashes[r_symndx - cookie->extsymoff];
+ if (h == NULL)
+ return NULL;
+
while (h->root.type == bfd_link_hash_indirect
|| h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
Index: binutils-2.38/bfd/elfxx-x86.c
===================================================================
--- binutils-2.38.orig/bfd/elfxx-x86.c
+++ binutils-2.38/bfd/elfxx-x86.c
@@ -973,15 +973,7 @@ _bfd_x86_elf_check_relocs (bfd *abfd,
goto error_return;
}
- if (r_symndx < symtab_hdr->sh_info)
- h = NULL;
- else
- {
- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
- }
+ h = _bfd_elf_get_link_hash_entry (sym_hashes, r_symndx, symtab_hdr);
if (X86_NEED_DYNAMIC_RELOC_TYPE_P (is_x86_64, r_type)
&& NEED_DYNAMIC_RELOCATION_P (is_x86_64, info, true, h, sec,
@@ -1200,10 +1192,12 @@ _bfd_x86_elf_link_relax_section (bfd *ab
else
{
/* Get H and SEC for GENERATE_DYNAMIC_RELOCATION_P below. */
- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
+ h = _bfd_elf_get_link_hash_entry (sym_hashes, r_symndx, symtab_hdr);
+ if (h == NULL)
+ {
+ /* FIXMEL: Issue an error message ? */
+ continue;
+ }
if (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)

View File

@@ -0,0 +1,342 @@
Backported of:
From 931494c9a89558acb36a03a340c01726545eef24 Mon Sep 17 00:00:00 2001
From: Nick Clifton <nickc@redhat.com>
Date: Wed, 5 Feb 2025 15:43:04 +0000
Subject: [PATCH] Add even more checks for corrupt input when processing
relocations for ELF files.
PR 32643
Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/binutils/tree/debian/patches/CVE-2025-1181.patch?h=ubuntu/jammy-security
Upstream commit https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=931494c9a89558acb36a03a340c01726545eef24]
CVE: CVE-2025-1181
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Index: binutils-2.38/bfd/elflink.c
===================================================================
--- binutils-2.38.orig/bfd/elflink.c
+++ binutils-2.38/bfd/elflink.c
@@ -62,15 +62,17 @@ struct elf_find_verdep_info
static bool _bfd_elf_fix_symbol_flags
(struct elf_link_hash_entry *, struct elf_info_failed *);
-struct elf_link_hash_entry *
-_bfd_elf_get_link_hash_entry (struct elf_link_hash_entry ** sym_hashes,
- unsigned int symndx,
- Elf_Internal_Shdr * symtab_hdr)
+static struct elf_link_hash_entry *
+get_link_hash_entry (struct elf_link_hash_entry ** sym_hashes,
+ unsigned int symndx,
+ unsigned int ext_sym_start)
{
- if (symndx < symtab_hdr->sh_info)
+ if (sym_hashes == NULL
+ /* Guard against corrupt input. See PR 32636 for an example. */
+ || symndx < ext_sym_start)
return NULL;
- struct elf_link_hash_entry *h = sym_hashes[symndx - symtab_hdr->sh_info];
+ struct elf_link_hash_entry *h = sym_hashes[symndx - ext_sym_start];
/* The hash might be empty. See PR 32641 for an example of this. */
if (h == NULL)
@@ -83,29 +85,28 @@ _bfd_elf_get_link_hash_entry (struct elf
return h;
}
-static struct elf_link_hash_entry *
-get_ext_sym_hash (struct elf_reloc_cookie *cookie, unsigned long r_symndx)
+struct elf_link_hash_entry *
+_bfd_elf_get_link_hash_entry (struct elf_link_hash_entry ** sym_hashes,
+ unsigned int symndx,
+ Elf_Internal_Shdr * symtab_hdr)
{
- struct elf_link_hash_entry *h = NULL;
-
- if ((r_symndx >= cookie->locsymcount
- || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
- /* Guard against corrupt input. See PR 32636 for an example. */
- && r_symndx >= cookie->extsymoff)
- {
-
- h = cookie->sym_hashes[r_symndx - cookie->extsymoff];
-
- if (h == NULL)
- return NULL;
+ if (symtab_hdr == NULL)
+ return NULL;
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
+ return get_link_hash_entry (sym_hashes, symndx, symtab_hdr->sh_info);
+}
- }
+static struct elf_link_hash_entry *
+get_ext_sym_hash_from_cookie (struct elf_reloc_cookie *cookie, unsigned long r_symndx)
+{
+ if (cookie == NULL || cookie->sym_hashes == NULL)
+ return NULL;
+
+ if (r_symndx >= cookie->locsymcount
+ || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
+ return get_link_hash_entry (cookie->sym_hashes, r_symndx, cookie->extsymoff);
- return h;
+ return NULL;
}
asection *
@@ -115,7 +116,7 @@ _bfd_elf_section_for_symbol (struct elf_
{
struct elf_link_hash_entry *h;
- h = get_ext_sym_hash (cookie, r_symndx);
+ h = get_ext_sym_hash_from_cookie (cookie, r_symndx);
if (h != NULL)
{
@@ -8783,7 +8784,6 @@ set_symbol_value (bfd *bfd_with_globals,
size_t symidx,
bfd_vma val)
{
- struct elf_link_hash_entry **sym_hashes;
struct elf_link_hash_entry *h;
size_t extsymoff = locsymcount;
@@ -8806,12 +8806,12 @@ set_symbol_value (bfd *bfd_with_globals,
/* It is a global symbol: set its link type
to "defined" and give it a value. */
-
- sym_hashes = elf_sym_hashes (bfd_with_globals);
- h = sym_hashes [symidx - extsymoff];
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
+ h = get_link_hash_entry (elf_sym_hashes (bfd_with_globals), symidx, extsymoff);
+ if (h == NULL)
+ {
+ /* FIXMEL What should we do ? */
+ return;
+ }
h->root.type = bfd_link_hash_defined;
h->root.u.def.value = val;
h->root.u.def.section = bfd_abs_section_ptr;
@@ -11281,10 +11281,19 @@ elf_link_input_bfd (struct elf_final_lin
|| (elf_bad_symtab (input_bfd)
&& flinfo->sections[symndx] == NULL))
{
- struct elf_link_hash_entry *h = sym_hashes[symndx - extsymoff];
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
+ struct elf_link_hash_entry *h;
+
+ h = get_link_hash_entry (sym_hashes, symndx, extsymoff);
+ if (h == NULL)
+ {
+ _bfd_error_handler
+ /* xgettext:c-format */
+ (_("error: %pB: unable to create group section symbol"),
+ input_bfd);
+ bfd_set_error (bfd_error_bad_value);
+ return false;
+ }
+
/* Arrange for symbol to be output. */
h->indx = -2;
elf_section_data (osec)->this_hdr.sh_info = -2;
@@ -11411,7 +11420,7 @@ elf_link_input_bfd (struct elf_final_lin
|| (elf_bad_symtab (input_bfd)
&& flinfo->sections[r_symndx] == NULL))
{
- h = sym_hashes[r_symndx - extsymoff];
+ h = get_link_hash_entry (sym_hashes, r_symndx, extsymoff);
/* Badly formatted input files can contain relocs that
reference non-existant symbols. Check here so that
@@ -11420,17 +11429,13 @@ elf_link_input_bfd (struct elf_final_lin
{
_bfd_error_handler
/* xgettext:c-format */
- (_("error: %pB contains a reloc (%#" PRIx64 ") for section %pA "
+ (_("error: %pB contains a reloc (%#" PRIx64 ") for section '%pA' "
"that references a non-existent global symbol"),
input_bfd, (uint64_t) rel->r_info, o);
bfd_set_error (bfd_error_bad_value);
return false;
}
- while (h->root.type == bfd_link_hash_indirect
- || h->root.type == bfd_link_hash_warning)
- h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
s_type = h->type;
/* If a plugin symbol is referenced from a non-IR file,
@@ -11646,7 +11651,6 @@ elf_link_input_bfd (struct elf_final_lin
&& flinfo->sections[r_symndx] == NULL))
{
struct elf_link_hash_entry *rh;
- unsigned long indx;
/* This is a reloc against a global symbol. We
have not yet output all the local symbols, so
@@ -11655,15 +11659,16 @@ elf_link_input_bfd (struct elf_final_lin
reloc to point to the global hash table entry
for this symbol. The symbol index is then
set at the end of bfd_elf_final_link. */
- indx = r_symndx - extsymoff;
- rh = elf_sym_hashes (input_bfd)[indx];
- while (rh->root.type == bfd_link_hash_indirect
- || rh->root.type == bfd_link_hash_warning)
- rh = (struct elf_link_hash_entry *) rh->root.u.i.link;
-
- /* Setting the index to -2 tells
- elf_link_output_extsym that this symbol is
- used by a reloc. */
+ rh = get_link_hash_entry (elf_sym_hashes (input_bfd),
+ r_symndx, extsymoff);
+ if (rh == NULL)
+ {
+ /* FIXME: Generate an error ? */
+ continue;
+ }
+
+ /* Setting the index to -2 tells elf_link_output_extsym
+ that this symbol is used by a reloc. */
BFD_ASSERT (rh->indx < 0);
rh->indx = -2;
*rel_hash = rh;
@@ -13615,25 +13620,21 @@ _bfd_elf_gc_mark_hook (asection *sec,
struct elf_link_hash_entry *h,
Elf_Internal_Sym *sym)
{
- if (h != NULL)
+ if (h == NULL)
+ return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
+
+ switch (h->root.type)
{
- switch (h->root.type)
- {
- case bfd_link_hash_defined:
- case bfd_link_hash_defweak:
- return h->root.u.def.section;
+ case bfd_link_hash_defined:
+ case bfd_link_hash_defweak:
+ return h->root.u.def.section;
- case bfd_link_hash_common:
- return h->root.u.c.p->section;
+ case bfd_link_hash_common:
+ return h->root.u.c.p->section;
- default:
- break;
- }
+ default:
+ return NULL;
}
- else
- return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
-
- return NULL;
}
/* Return the debug definition section. */
@@ -13682,46 +13683,49 @@ _bfd_elf_gc_mark_rsec (struct bfd_link_i
if (r_symndx == STN_UNDEF)
return NULL;
- h = get_ext_sym_hash (cookie, r_symndx);
-
- if (h != NULL)
+ h = get_ext_sym_hash_from_cookie (cookie, r_symndx);
+ if (h == NULL)
{
- bool was_marked;
+ /* A corrup tinput file can lead to a situation where the index
+ does not reference either a local or an external symbol. */
+ if (r_symndx >= cookie->locsymcount)
+ return NULL;
- was_marked = h->mark;
- h->mark = 1;
- /* Keep all aliases of the symbol too. If an object symbol
- needs to be copied into .dynbss then all of its aliases
- should be present as dynamic symbols, not just the one used
- on the copy relocation. */
- hw = h;
- while (hw->is_weakalias)
- {
- hw = hw->u.alias;
- hw->mark = 1;
- }
+ return (*gc_mark_hook) (sec, info, cookie->rel, NULL,
+ &cookie->locsyms[r_symndx]);
+ }
- if (!was_marked && h->start_stop && !h->root.ldscript_def)
- {
- if (info->start_stop_gc)
- return NULL;
+ bool was_marked = h->mark;
- /* To work around a glibc bug, mark XXX input sections
- when there is a reference to __start_XXX or __stop_XXX
- symbols. */
- else if (start_stop != NULL)
- {
- asection *s = h->u2.start_stop_section;
- *start_stop = true;
- return s;
- }
- }
+ h->mark = 1;
+ /* Keep all aliases of the symbol too. If an object symbol
+ needs to be copied into .dynbss then all of its aliases
+ should be present as dynamic symbols, not just the one used
+ on the copy relocation. */
+ hw = h;
+ while (hw->is_weakalias)
+ {
+ hw = hw->u.alias;
+ hw->mark = 1;
+ }
- return (*gc_mark_hook) (sec, info, cookie->rel, h, NULL);
+ if (!was_marked && h->start_stop && !h->root.ldscript_def)
+ {
+ if (info->start_stop_gc)
+ return NULL;
+
+ /* To work around a glibc bug, mark XXX input sections
+ when there is a reference to __start_XXX or __stop_XXX
+ symbols. */
+ else if (start_stop != NULL)
+ {
+ asection *s = h->u2.start_stop_section;
+ *start_stop = true;
+ return s;
+ }
}
- return (*gc_mark_hook) (sec, info, cookie->rel, NULL,
- &cookie->locsyms[r_symndx]);
+ return (*gc_mark_hook) (sec, info, cookie->rel, h, NULL);
}
/* COOKIE->rel describes a relocation against section SEC, which is
@@ -14735,7 +14739,7 @@ bfd_elf_reloc_symbol_deleted_p (bfd_vma
struct elf_link_hash_entry *h;
- h = get_ext_sym_hash (rcookie, r_symndx);
+ h = get_ext_sym_hash_from_cookie (rcookie, r_symndx);
if (h != NULL)
{

View File

@@ -69,10 +69,14 @@ SRC_URI = "https://golang.org/dl/go${PV}.src.tar.gz;name=main \
file://CVE-2025-47907.patch \
file://CVE-2025-47906.patch \
file://CVE-2024-24783.patch \
file://CVE-2025-58187.patch \
file://CVE-2025-58187-1.patch \
file://CVE-2025-58187-2.patch \
file://CVE-2025-58189.patch \
file://CVE-2025-61723.patch \
file://CVE-2025-61724.patch \
file://CVE-2023-39323.patch \
file://CVE-2025-61727.patch \
file://CVE-2025-61729.patch \
"
SRC_URI[main.sha256sum] = "a1a48b23afb206f95e7bbaa9b898d965f90826f6f1d1fc0c1d784ada0cd300fd"

View File

@@ -0,0 +1,516 @@
From ca6a5545ba18844a97c88a90a385eb6335bb7526 Mon Sep 17 00:00:00 2001
From: Roland Shoemaker <roland@golang.org>
Date: Thu, 9 Oct 2025 13:35:24 -0700
Subject: [PATCH] [release-branch.go1.24] crypto/x509: rework fix for
CVE-2025-58187
In CL 709854 we enabled strict validation for a number of properties of
domain names (and their constraints). This caused significant breakage,
since we didn't previously disallow the creation of certificates which
contained these malformed domains.
Rollback a number of the properties we enforced, making domainNameValid
only enforce the same properties that domainToReverseLabels does. Since
this also undoes some of the DoS protections our initial fix enabled,
this change also adds caching of constraints in isValid (which perhaps
is the fix we should've initially chosen).
Updates #75835
Updates #75828
Fixes #75860
Change-Id: Ie6ca6b4f30e9b8a143692b64757f7bbf4671ed0e
Reviewed-on: https://go-review.googlesource.com/c/go/+/710735
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Damien Neil <dneil@google.com>
(cherry picked from commit 1cd71689f2ed8f07031a0cc58fc3586ca501839f)
Reviewed-on: https://go-review.googlesource.com/c/go/+/710879
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
Upstream-Status: Backport [https://github.com/golang/go/commit/ca6a5545ba18844a97c88a90a385eb6335bb7526]
CVE: CVE-2025-58187
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
src/crypto/x509/name_constraints_test.go | 66 +++++++++++++++++--
src/crypto/x509/parser.go | 57 +++++++++++-----
src/crypto/x509/parser_test.go | 84 +++++++++++++++++++++---
src/crypto/x509/verify.go | 53 ++++++++++-----
src/crypto/x509/verify_test.go | 2 +-
5 files changed, 213 insertions(+), 49 deletions(-)
diff --git a/src/crypto/x509/name_constraints_test.go b/src/crypto/x509/name_constraints_test.go
index d4f7d41..c59a7dc 100644
--- a/src/crypto/x509/name_constraints_test.go
+++ b/src/crypto/x509/name_constraints_test.go
@@ -1452,7 +1452,63 @@ var nameConstraintsTests = []nameConstraintsTest{
requestedEKUs: []ExtKeyUsage{ExtKeyUsageServerAuth},
},
- // #77: if several EKUs are requested, satisfying any of them is sufficient.
+ // 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.
{
roots: make([]constraintsSpec, 1),
intermediates: [][]constraintsSpec{
@@ -1467,7 +1523,7 @@ var nameConstraintsTests = []nameConstraintsTest{
requestedEKUs: []ExtKeyUsage{ExtKeyUsageClientAuth, ExtKeyUsageEmailProtection},
},
- // #78: EKUs that are not asserted in VerifyOpts are not required to be
+ // #81: EKUs that are not asserted in VerifyOpts are not required to be
// nested.
{
roots: make([]constraintsSpec, 1),
@@ -1486,7 +1542,7 @@ var nameConstraintsTests = []nameConstraintsTest{
},
},
- // #79: a certificate without SANs and CN is accepted in a constrained chain.
+ // #82: a certificate without SANs and CN is accepted in a constrained chain.
{
roots: []constraintsSpec{
{
@@ -1503,7 +1559,7 @@ var nameConstraintsTests = []nameConstraintsTest{
},
},
- // #80: a certificate without SANs and with a CN that does not parse as a
+ // #83: a certificate without SANs and with a CN that does not parse as a
// hostname is accepted in a constrained chain.
{
roots: []constraintsSpec{
@@ -1522,7 +1578,7 @@ var nameConstraintsTests = []nameConstraintsTest{
},
},
- // #81: a certificate with SANs and CN is accepted in a constrained chain.
+ // #84: 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 0788210..cfe4c86 100644
--- a/src/crypto/x509/parser.go
+++ b/src/crypto/x509/parser.go
@@ -391,14 +391,10 @@ 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 || (err == nil && !domainNameValid(name, false)) {
+ if err := isIA5String(name); err != nil {
return errors.New("x509: SAN dNSName is malformed")
}
dnsNames = append(dnsNames, string(name))
@@ -408,9 +404,12 @@ func parseSANExtension(der cryptobyte.String) (dnsNames, emailAddresses []string
return errors.New("x509: SAN uniformResourceIdentifier is malformed")
}
uri, err := url.Parse(uriStr)
- if err != nil || (err == nil && uri.Host != "" && !domainNameValid(uri.Host, false)) {
+ if err != nil {
return fmt.Errorf("x509: cannot parse URI %q: %s", uriStr, err)
}
+ if len(uri.Host) > 0 && !domainNameValid(uri.Host, false) {
+ return fmt.Errorf("x509: cannot parse URI %q: invalid domain", uriStr)
+ }
uris = append(uris, uri)
case nameTypeIP:
switch len(data) {
@@ -990,36 +989,58 @@ 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.
+// domainNameValid is an alloc-less version of the checks that
+// domainToReverseLabels does.
func domainNameValid(s string, constraint bool) bool {
- if len(s) == 0 && constraint {
+ // TODO(#75835): This function omits a number of checks which we
+ // really should be doing to enforce that domain names are valid names per
+ // RFC 1034. We previously enabled these checks, but this broke a
+ // significant number of certificates we previously considered valid, and we
+ // happily create via CreateCertificate (et al). We should enable these
+ // checks, but will need to gate them behind a GODEBUG.
+ //
+ // I have left the checks we previously enabled, noted with "TODO(#75835)" so
+ // that we can easily re-enable them once we unbreak everyone.
+
+ // TODO(#75835): this should only be true for constraints.
+ if len(s) == 0 {
return true
}
- if len(s) == 0 || (!constraint && s[0] == '.') || s[len(s)-1] == '.' || len(s) > 253 {
+
+ // Do not allow trailing period (FQDN format is not allowed in SANs or
+ // constraints).
+ if s[len(s)-1] == '.' {
return false
}
+
+ // TODO(#75835): domains must have at least one label, cannot have
+ // a leading empty label, and cannot be longer than 253 characters.
+ // if len(s) == 0 || (!constraint && s[0] == '.') || 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] < 33 || s[i] > 126) {
+ // Invalid character.
+ return false
+ }
if i == len(s) || s[i] == '.' {
labelLen := i
if lastDot >= 0 {
labelLen -= lastDot + 1
}
- if labelLen == 0 || labelLen > 63 {
+ if labelLen == 0 {
return false
}
+ // TODO(#75835): labels cannot be longer than 63 characters.
+ // if labelLen > 63 {
+ // return false
+ // }
lastDot = i
}
}
diff --git a/src/crypto/x509/parser_test.go b/src/crypto/x509/parser_test.go
index 95ed116..662e305 100644
--- a/src/crypto/x509/parser_test.go
+++ b/src/crypto/x509/parser_test.go
@@ -4,6 +4,9 @@
package x509
import (
+ "crypto/ecdsa"
+ "crypto/elliptic"
+ "crypto/rand"
"encoding/asn1"
"strings"
"testing"
@@ -109,7 +112,31 @@ func TestDomainNameValid(t *testing.T) {
constraint bool
valid bool
}{
- {"empty name, name", "", false, false},
+ // TODO(#75835): these tests are for stricter name validation, which we
+ // had to disable. Once we reenable these strict checks, behind a
+ // GODEBUG, we should add them back in.
+ // {"empty name, name", "", false, false},
+ // {"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},
+ // {"64 char label, name", "a." + strings.Repeat("a", 64), false, false},
+ // {"64 char label, constraint", "a." + strings.Repeat("a", 64), true, false},
+
+ // TODO(#75835): these are the inverse of the tests above, they should be removed
+ // once the strict checking is enabled.
+ {"254 char label, name", strings.Repeat("a.a", 84) + "aaa", false, true},
+ {"254 char label, constraint", strings.Repeat("a.a", 84) + "aaa", true, true},
+ {"253 char label, name", strings.Repeat("a.a", 84) + "aa", false, true},
+ {"253 char label, constraint", strings.Repeat("a.a", 84) + "aa", true, true},
+ {"64 char single label, name", strings.Repeat("a", 64), false, true},
+ {"64 char single label, constraint", strings.Repeat("a", 64), true, true},
+ {"64 char label, name", "a." + strings.Repeat("a", 64), false, true},
+ {"64 char label, constraint", "a." + strings.Repeat("a", 64), true, true},
+
+ // Check we properly enforce properties of domain names.
{"empty name, constraint", "", true, true},
{"empty label, name", "a..a", false, false},
{"empty label, constraint", "a..a", true, false},
@@ -123,23 +150,60 @@ func TestDomainNameValid(t *testing.T) {
{"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) {
+ valid := domainNameValid(tc.dnsName, tc.constraint)
+ if tc.valid != valid {
t.Errorf("domainNameValid(%q, %t) = %v; want %v", tc.dnsName, tc.constraint, !tc.valid, tc.valid)
}
+ // Also check that we enforce the same properties as domainToReverseLabels
+ trimmedName := tc.dnsName
+ if tc.constraint && len(trimmedName) > 1 && trimmedName[0] == '.' {
+ trimmedName = trimmedName[1:]
+ }
+ _, revValid := domainToReverseLabels(trimmedName)
+ if valid != revValid {
+ t.Errorf("domainNameValid(%q, %t) = %t != domainToReverseLabels(%q) = %t", tc.dnsName, tc.constraint, valid, trimmedName, revValid)
+ }
})
}
}
+
+func TestRoundtripWeirdSANs(t *testing.T) {
+ // TODO(#75835): check that certificates we create with CreateCertificate that have malformed SAN values
+ // can be parsed by ParseCertificate. We should eventually restrict this, but for now we have to maintain
+ // this property as people have been relying on it.
+ k, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
+ if err != nil {
+ t.Fatal(err)
+ }
+ badNames := []string{
+ "baredomain",
+ "baredomain.",
+ strings.Repeat("a", 255),
+ strings.Repeat("a", 65) + ".com",
+ }
+ tmpl := &Certificate{
+ EmailAddresses: badNames,
+ DNSNames: badNames,
+ }
+ b, err := CreateCertificate(rand.Reader, tmpl, tmpl, &k.PublicKey, k)
+ if err != nil {
+ t.Fatal(err)
+ }
+ _, err = ParseCertificate(b)
+ if err != nil {
+ t.Fatalf("Couldn't roundtrip certificate: %v", err)
+ }
+}
+
+func FuzzDomainNameValid(f *testing.F) {
+ f.Fuzz(func(t *testing.T, data string) {
+ domainNameValid(data, false)
+ domainNameValid(data, true)
+ })
+}
diff --git a/src/crypto/x509/verify.go b/src/crypto/x509/verify.go
index fb2f4b2..99f38a0 100644
--- a/src/crypto/x509/verify.go
+++ b/src/crypto/x509/verify.go
@@ -390,7 +390,7 @@ func domainToReverseLabels(domain string) (reverseLabels []string, ok bool) {
return reverseLabels, true
}
-func matchEmailConstraint(mailbox rfc2821Mailbox, constraint string) (bool, error) {
+func matchEmailConstraint(mailbox rfc2821Mailbox, constraint string, reversedDomainsCache map[string][]string, reversedConstraintsCache map[string][]string) (bool, error) {
// If the constraint contains an @, then it specifies an exact mailbox
// name.
if strings.Contains(constraint, "@") {
@@ -403,10 +403,10 @@ func matchEmailConstraint(mailbox rfc2821Mailbox, constraint string) (bool, erro
// Otherwise the constraint is like a DNS constraint of the domain part
// of the mailbox.
- return matchDomainConstraint(mailbox.domain, constraint)
+ return matchDomainConstraint(mailbox.domain, constraint, reversedDomainsCache, reversedConstraintsCache)
}
-func matchURIConstraint(uri *url.URL, constraint string) (bool, error) {
+func matchURIConstraint(uri *url.URL, constraint string, reversedDomainsCache map[string][]string, reversedConstraintsCache map[string][]string) (bool, error) {
// From RFC 5280, Section 4.2.1.10:
// “a uniformResourceIdentifier that does not include an authority
// component with a host name specified as a fully qualified domain
@@ -433,7 +433,7 @@ func matchURIConstraint(uri *url.URL, constraint string) (bool, error) {
return false, fmt.Errorf("URI with IP (%q) cannot be matched against constraints", uri.String())
}
- return matchDomainConstraint(host, constraint)
+ return matchDomainConstraint(host, constraint, reversedDomainsCache, reversedConstraintsCache)
}
func matchIPConstraint(ip net.IP, constraint *net.IPNet) (bool, error) {
@@ -450,16 +450,21 @@ func matchIPConstraint(ip net.IP, constraint *net.IPNet) (bool, error) {
return true, nil
}
-func matchDomainConstraint(domain, constraint string) (bool, error) {
+func matchDomainConstraint(domain, constraint string, reversedDomainsCache map[string][]string, reversedConstraintsCache map[string][]string) (bool, error) {
// The meaning of zero length constraints is not specified, but this
// code follows NSS and accepts them as matching everything.
if len(constraint) == 0 {
return true, nil
}
- domainLabels, ok := domainToReverseLabels(domain)
- if !ok {
- return false, fmt.Errorf("x509: internal error: cannot parse domain %q", domain)
+ domainLabels, found := reversedDomainsCache[domain]
+ if !found {
+ var ok bool
+ domainLabels, ok = domainToReverseLabels(domain)
+ if !ok {
+ return false, fmt.Errorf("x509: internal error: cannot parse domain %q", domain)
+ }
+ reversedDomainsCache[domain] = domainLabels
}
// RFC 5280 says that a leading period in a domain name means that at
@@ -473,9 +478,14 @@ func matchDomainConstraint(domain, constraint string) (bool, error) {
constraint = constraint[1:]
}
- constraintLabels, ok := domainToReverseLabels(constraint)
- if !ok {
- return false, fmt.Errorf("x509: internal error: cannot parse domain %q", constraint)
+ constraintLabels, found := reversedConstraintsCache[constraint]
+ if !found {
+ var ok bool
+ constraintLabels, ok = domainToReverseLabels(constraint)
+ if !ok {
+ return false, fmt.Errorf("x509: internal error: cannot parse domain %q", constraint)
+ }
+ reversedConstraintsCache[constraint] = constraintLabels
}
if len(domainLabels) < len(constraintLabels) ||
@@ -598,6 +608,19 @@ func (c *Certificate) isValid(certType int, currentChain []*Certificate, opts *V
leaf = currentChain[0]
}
+ // Each time we do constraint checking, we need to check the constraints in
+ // the current certificate against all of the names that preceded it. We
+ // reverse these names using domainToReverseLabels, which is a relatively
+ // expensive operation. Since we check each name against each constraint,
+ // this requires us to do N*C calls to domainToReverseLabels (where N is the
+ // total number of names that preceed the certificate, and C is the total
+ // number of constraints in the certificate). By caching the results of
+ // calling domainToReverseLabels, we can reduce that to N+C calls at the
+ // cost of keeping all of the parsed names and constraints in memory until
+ // we return from isValid.
+ reversedDomainsCache := map[string][]string{}
+ reversedConstraintsCache := map[string][]string{}
+
if (certType == intermediateCertificate || certType == rootCertificate) &&
c.hasNameConstraints() && leaf.hasSANExtension() {
err := forEachSAN(leaf.getSANExtension(), func(tag int, data []byte) error {
@@ -611,20 +634,20 @@ func (c *Certificate) isValid(certType int, currentChain []*Certificate, opts *V
if err := c.checkNameConstraints(&comparisonCount, maxConstraintComparisons, "email address", name, mailbox,
func(parsedName, constraint interface{}) (bool, error) {
- return matchEmailConstraint(parsedName.(rfc2821Mailbox), constraint.(string))
+ return matchEmailConstraint(parsedName.(rfc2821Mailbox), constraint.(string), reversedDomainsCache, reversedConstraintsCache)
}, c.PermittedEmailAddresses, c.ExcludedEmailAddresses); err != nil {
return err
}
case nameTypeDNS:
name := string(data)
- if _, ok := domainToReverseLabels(name); !ok {
+ if !domainNameValid(name, false) {
return fmt.Errorf("x509: cannot parse dnsName %q", name)
}
if err := c.checkNameConstraints(&comparisonCount, maxConstraintComparisons, "DNS name", name, name,
func(parsedName, constraint interface{}) (bool, error) {
- return matchDomainConstraint(parsedName.(string), constraint.(string))
+ return matchDomainConstraint(parsedName.(string), constraint.(string), reversedDomainsCache, reversedConstraintsCache)
}, c.PermittedDNSDomains, c.ExcludedDNSDomains); err != nil {
return err
}
@@ -638,7 +661,7 @@ func (c *Certificate) isValid(certType int, currentChain []*Certificate, opts *V
if err := c.checkNameConstraints(&comparisonCount, maxConstraintComparisons, "URI", name, uri,
func(parsedName, constraint interface{}) (bool, error) {
- return matchURIConstraint(parsedName.(*url.URL), constraint.(string))
+ return matchURIConstraint(parsedName.(*url.URL), constraint.(string), reversedDomainsCache, reversedConstraintsCache)
}, c.PermittedURIDomains, c.ExcludedURIDomains); err != nil {
return err
}
diff --git a/src/crypto/x509/verify_test.go b/src/crypto/x509/verify_test.go
index 9da39ca..31e8149 100644
--- a/src/crypto/x509/verify_test.go
+++ b/src/crypto/x509/verify_test.go
@@ -1648,7 +1648,7 @@ var nameConstraintTests = []struct {
func TestNameConstraints(t *testing.T) {
for i, test := range nameConstraintTests {
- result, err := matchDomainConstraint(test.domain, test.constraint)
+ result, err := matchDomainConstraint(test.domain, test.constraint, map[string][]string{}, map[string][]string{})
if err != nil && !test.expectError {
t.Errorf("unexpected error for test #%d: domain=%s, constraint=%s, err=%s", i, test.domain, test.constraint, err)
--
2.25.1

View File

@@ -0,0 +1,229 @@
From 04db77a423cac75bb82cc9a6859991ae9c016344 Mon Sep 17 00:00:00 2001
From: Roland Shoemaker <bracewell@google.com>
Date: Mon, 24 Nov 2025 08:46:08 -0800
Subject: [PATCH] [release-branch.go1.24] crypto/x509: excluded subdomain
constraints preclude wildcard SANs
When evaluating name constraints in a certificate chain, the presence of
an excluded subdomain constraint (e.g., excluding "test.example.com")
should preclude the use of a wildcard SAN (e.g., "*.example.com").
Fixes #76442
Fixes #76463
Fixes CVE-2025-61727
Change-Id: I42a0da010cb36d2ec9d1239ae3f61cf25eb78bba
Reviewed-on: https://go-review.googlesource.com/c/go/+/724401
Reviewed-by: Nicholas Husin <husin@google.com>
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Nicholas Husin <nsh@golang.org>
Reviewed-by: Neal Patel <nealpatel@google.com>
Upstream-Status: Backport [https://github.com/golang/go/commit/04db77a423cac75bb82cc9a6859991ae9c016344]
CVE: CVE-2025-61727
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
src/crypto/x509/name_constraints_test.go | 34 ++++++++++++++++++++
src/crypto/x509/verify.go | 40 +++++++++++++++---------
src/crypto/x509/verify_test.go | 2 +-
3 files changed, 60 insertions(+), 16 deletions(-)
diff --git a/src/crypto/x509/name_constraints_test.go b/src/crypto/x509/name_constraints_test.go
index c59a7dc..963bc5a 100644
--- a/src/crypto/x509/name_constraints_test.go
+++ b/src/crypto/x509/name_constraints_test.go
@@ -1595,6 +1595,40 @@ var nameConstraintsTests = []nameConstraintsTest{
cn: "foo.bar",
},
},
+ // #87: subdomain excluded constraints preclude wildcard names
+ {
+ roots: []constraintsSpec{
+ {
+ bad: []string{"dns:foo.example.com"},
+ },
+ },
+ intermediates: [][]constraintsSpec{
+ {
+ {},
+ },
+ },
+ leaf: leafSpec{
+ sans: []string{"dns:*.example.com"},
+ },
+ expectedError: "\"*.example.com\" is excluded by constraint \"foo.example.com\"",
+ },
+ // #88: wildcard names are not matched by subdomain permitted constraints
+ {
+ roots: []constraintsSpec{
+ {
+ ok: []string{"dns:foo.example.com"},
+ },
+ },
+ intermediates: [][]constraintsSpec{
+ {
+ {},
+ },
+ },
+ leaf: leafSpec{
+ sans: []string{"dns:*.example.com"},
+ },
+ expectedError: "\"*.example.com\" is not permitted",
+ },
}
func makeConstraintsCACert(constraints constraintsSpec, name string, key *ecdsa.PrivateKey, parent *Certificate, parentKey *ecdsa.PrivateKey) (*Certificate, error) {
diff --git a/src/crypto/x509/verify.go b/src/crypto/x509/verify.go
index 99f38a0..88260ee 100644
--- a/src/crypto/x509/verify.go
+++ b/src/crypto/x509/verify.go
@@ -390,7 +390,7 @@ func domainToReverseLabels(domain string) (reverseLabels []string, ok bool) {
return reverseLabels, true
}
-func matchEmailConstraint(mailbox rfc2821Mailbox, constraint string, reversedDomainsCache map[string][]string, reversedConstraintsCache map[string][]string) (bool, error) {
+func matchEmailConstraint(mailbox rfc2821Mailbox, constraint string, excluded bool, reversedDomainsCache map[string][]string, reversedConstraintsCache map[string][]string) (bool, error) {
// If the constraint contains an @, then it specifies an exact mailbox
// name.
if strings.Contains(constraint, "@") {
@@ -403,10 +403,10 @@ func matchEmailConstraint(mailbox rfc2821Mailbox, constraint string, reversedDom
// Otherwise the constraint is like a DNS constraint of the domain part
// of the mailbox.
- return matchDomainConstraint(mailbox.domain, constraint, reversedDomainsCache, reversedConstraintsCache)
+ return matchDomainConstraint(mailbox.domain, constraint, excluded, reversedDomainsCache, reversedConstraintsCache)
}
-func matchURIConstraint(uri *url.URL, constraint string, reversedDomainsCache map[string][]string, reversedConstraintsCache map[string][]string) (bool, error) {
+func matchURIConstraint(uri *url.URL, constraint string, excluded bool, reversedDomainsCache map[string][]string, reversedConstraintsCache map[string][]string) (bool, error) {
// From RFC 5280, Section 4.2.1.10:
// “a uniformResourceIdentifier that does not include an authority
// component with a host name specified as a fully qualified domain
@@ -433,7 +433,7 @@ func matchURIConstraint(uri *url.URL, constraint string, reversedDomainsCache ma
return false, fmt.Errorf("URI with IP (%q) cannot be matched against constraints", uri.String())
}
- return matchDomainConstraint(host, constraint, reversedDomainsCache, reversedConstraintsCache)
+ return matchDomainConstraint(host, constraint, excluded, reversedDomainsCache, reversedConstraintsCache)
}
func matchIPConstraint(ip net.IP, constraint *net.IPNet) (bool, error) {
@@ -450,7 +450,7 @@ func matchIPConstraint(ip net.IP, constraint *net.IPNet) (bool, error) {
return true, nil
}
-func matchDomainConstraint(domain, constraint string, reversedDomainsCache map[string][]string, reversedConstraintsCache map[string][]string) (bool, error) {
+func matchDomainConstraint(domain, constraint string, excluded bool, reversedDomainsCache map[string][]string, reversedConstraintsCache map[string][]string) (bool, error) {
// The meaning of zero length constraints is not specified, but this
// code follows NSS and accepts them as matching everything.
if len(constraint) == 0 {
@@ -467,6 +467,11 @@ func matchDomainConstraint(domain, constraint string, reversedDomainsCache map[s
reversedDomainsCache[domain] = domainLabels
}
+ wildcardDomain := false
+ if len(domain) > 0 && domain[0] == '*' {
+ wildcardDomain = true
+ }
+
// RFC 5280 says that a leading period in a domain name means that at
// least one label must be prepended, but only for URI and email
// constraints, not DNS constraints. The code also supports that
@@ -493,6 +498,11 @@ func matchDomainConstraint(domain, constraint string, reversedDomainsCache map[s
return false, nil
}
+ if excluded && wildcardDomain && len(domainLabels) > 1 && len(constraintLabels) > 0 {
+ domainLabels = domainLabels[:len(domainLabels)-1]
+ constraintLabels = constraintLabels[:len(constraintLabels)-1]
+ }
+
for i, constraintLabel := range constraintLabels {
if !strings.EqualFold(constraintLabel, domainLabels[i]) {
return false, nil
@@ -512,7 +522,7 @@ func (c *Certificate) checkNameConstraints(count *int,
nameType string,
name string,
parsedName interface{},
- match func(parsedName, constraint interface{}) (match bool, err error),
+ match func(parsedName, constraint interface{}, excluded bool) (match bool, err error),
permitted, excluded interface{}) error {
excludedValue := reflect.ValueOf(excluded)
@@ -524,7 +534,7 @@ func (c *Certificate) checkNameConstraints(count *int,
for i := 0; i < excludedValue.Len(); i++ {
constraint := excludedValue.Index(i).Interface()
- match, err := match(parsedName, constraint)
+ match, err := match(parsedName, constraint, true)
if err != nil {
return CertificateInvalidError{c, CANotAuthorizedForThisName, err.Error()}
}
@@ -546,7 +556,7 @@ func (c *Certificate) checkNameConstraints(count *int,
constraint := permittedValue.Index(i).Interface()
var err error
- if ok, err = match(parsedName, constraint); err != nil {
+ if ok, err = match(parsedName, constraint, false); err != nil {
return CertificateInvalidError{c, CANotAuthorizedForThisName, err.Error()}
}
@@ -633,8 +643,8 @@ func (c *Certificate) isValid(certType int, currentChain []*Certificate, opts *V
}
if err := c.checkNameConstraints(&comparisonCount, maxConstraintComparisons, "email address", name, mailbox,
- func(parsedName, constraint interface{}) (bool, error) {
- return matchEmailConstraint(parsedName.(rfc2821Mailbox), constraint.(string), reversedDomainsCache, reversedConstraintsCache)
+ func(parsedName, constraint interface{}, excluded bool) (bool, error) {
+ return matchEmailConstraint(parsedName.(rfc2821Mailbox), constraint.(string), excluded, reversedDomainsCache, reversedConstraintsCache)
}, c.PermittedEmailAddresses, c.ExcludedEmailAddresses); err != nil {
return err
}
@@ -646,8 +656,8 @@ func (c *Certificate) isValid(certType int, currentChain []*Certificate, opts *V
}
if err := c.checkNameConstraints(&comparisonCount, maxConstraintComparisons, "DNS name", name, name,
- func(parsedName, constraint interface{}) (bool, error) {
- return matchDomainConstraint(parsedName.(string), constraint.(string), reversedDomainsCache, reversedConstraintsCache)
+ func(parsedName, constraint interface{}, excluded bool) (bool, error) {
+ return matchDomainConstraint(parsedName.(string), constraint.(string), excluded, reversedDomainsCache, reversedConstraintsCache)
}, c.PermittedDNSDomains, c.ExcludedDNSDomains); err != nil {
return err
}
@@ -660,8 +670,8 @@ func (c *Certificate) isValid(certType int, currentChain []*Certificate, opts *V
}
if err := c.checkNameConstraints(&comparisonCount, maxConstraintComparisons, "URI", name, uri,
- func(parsedName, constraint interface{}) (bool, error) {
- return matchURIConstraint(parsedName.(*url.URL), constraint.(string), reversedDomainsCache, reversedConstraintsCache)
+ func(parsedName, constraint interface{}, excluded bool) (bool, error) {
+ return matchURIConstraint(parsedName.(*url.URL), constraint.(string), excluded, reversedDomainsCache, reversedConstraintsCache)
}, c.PermittedURIDomains, c.ExcludedURIDomains); err != nil {
return err
}
@@ -673,7 +683,7 @@ func (c *Certificate) isValid(certType int, currentChain []*Certificate, opts *V
}
if err := c.checkNameConstraints(&comparisonCount, maxConstraintComparisons, "IP address", ip.String(), ip,
- func(parsedName, constraint interface{}) (bool, error) {
+ func(parsedName, constraint interface{}, _ bool) (bool, error) {
return matchIPConstraint(parsedName.(net.IP), constraint.(*net.IPNet))
}, c.PermittedIPRanges, c.ExcludedIPRanges); err != nil {
return err
diff --git a/src/crypto/x509/verify_test.go b/src/crypto/x509/verify_test.go
index 31e8149..5f7c834 100644
--- a/src/crypto/x509/verify_test.go
+++ b/src/crypto/x509/verify_test.go
@@ -1648,7 +1648,7 @@ var nameConstraintTests = []struct {
func TestNameConstraints(t *testing.T) {
for i, test := range nameConstraintTests {
- result, err := matchDomainConstraint(test.domain, test.constraint, map[string][]string{}, map[string][]string{})
+ result, err := matchDomainConstraint(test.domain, test.constraint, false, map[string][]string{}, map[string][]string{})
if err != nil && !test.expectError {
t.Errorf("unexpected error for test #%d: domain=%s, constraint=%s, err=%s", i, test.domain, test.constraint, err)
--
2.25.1

View File

@@ -0,0 +1,172 @@
From 3a842bd5c6aa8eefa13c0174de3ab361e50bd672 Mon Sep 17 00:00:00 2001
From: "Nicholas S. Husin" <nsh@golang.org>
Date: Mon, 24 Nov 2025 14:56:23 -0500
Subject: [PATCH] [release-branch.go1.24] crypto/x509: prevent
HostnameError.Error() from consuming excessive resource
Constructing HostnameError.Error() takes O(N^2) runtime due to using a
string concatenation in a loop. Additionally, there is no limit on how
many names are included in the error message. As a result, a malicious
attacker could craft a certificate with an infinite amount of names to
unfairly consume resource.
To remediate this, we will now use strings.Builder to construct the
error message, preventing O(N^2) runtime. When a certificate has 100 or
more names, we will also not print each name individually.
Thanks to Philippe Antoine (Catena cyber) for reporting this issue.
Updates #76445
Fixes #76460
Fixes CVE-2025-61729
Change-Id: I6343776ec3289577abc76dad71766c491c1a7c81
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/3000
Reviewed-by: Neal Patel <nealpatel@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/3220
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/725820
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Bypass: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Mark Freeman <markfreeman@google.com>
Upstream-Status: Backport [https://github.com/golang/go/commit/3a842bd5c6aa8eefa13c0174de3ab361e50bd672]
CVE: CVE-2025-61729
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
src/crypto/x509/verify.go | 21 ++++++++++-----
src/crypto/x509/verify_test.go | 47 ++++++++++++++++++++++++++++++++++
2 files changed, 61 insertions(+), 7 deletions(-)
diff --git a/src/crypto/x509/verify.go b/src/crypto/x509/verify.go
index 88260ee..c167191 100644
--- a/src/crypto/x509/verify.go
+++ b/src/crypto/x509/verify.go
@@ -97,31 +97,38 @@ type HostnameError struct {
func (h HostnameError) Error() string {
c := h.Certificate
+ maxNamesIncluded := 100
if !c.hasSANExtension() && matchHostnames(c.Subject.CommonName, h.Host) {
return "x509: certificate relies on legacy Common Name field, use SANs instead"
}
- var valid string
+ var valid strings.Builder
if ip := net.ParseIP(h.Host); ip != nil {
// Trying to validate an IP
if len(c.IPAddresses) == 0 {
return "x509: cannot validate certificate for " + h.Host + " because it doesn't contain any IP SANs"
}
+ if len(c.IPAddresses) >= maxNamesIncluded {
+ return fmt.Sprintf("x509: certificate is valid for %d IP SANs, but none matched %s", len(c.IPAddresses), h.Host)
+ }
for _, san := range c.IPAddresses {
- if len(valid) > 0 {
- valid += ", "
+ if valid.Len() > 0 {
+ valid.WriteString(", ")
}
- valid += san.String()
+ valid.WriteString(san.String())
}
} else {
- valid = strings.Join(c.DNSNames, ", ")
+ if len(c.DNSNames) >= maxNamesIncluded {
+ return fmt.Sprintf("x509: certificate is valid for %d names, but none matched %s", len(c.DNSNames), h.Host)
+ }
+ valid.WriteString(strings.Join(c.DNSNames, ", "))
}
- if len(valid) == 0 {
+ if valid.Len() == 0 {
return "x509: certificate is not valid for any names, but wanted to match " + h.Host
}
- return "x509: certificate is valid for " + valid + ", not " + h.Host
+ return "x509: certificate is valid for " + valid.String() + ", not " + h.Host
}
// UnknownAuthorityError results when the certificate issuer is unknown
diff --git a/src/crypto/x509/verify_test.go b/src/crypto/x509/verify_test.go
index 5f7c834..c2c2025 100644
--- a/src/crypto/x509/verify_test.go
+++ b/src/crypto/x509/verify_test.go
@@ -9,11 +9,14 @@ import (
"crypto/ecdsa"
"crypto/elliptic"
"crypto/rand"
+ "crypto/rsa"
"crypto/x509/pkix"
"encoding/pem"
"errors"
"fmt"
+ "log"
"math/big"
+ "net"
"runtime"
"strings"
"testing"
@@ -70,6 +73,26 @@ var verifyTests = []verifyTest{
errorCallback: expectHostnameError("certificate is valid for"),
},
+ {
+ name: "TooManyDNS",
+ leaf: generatePEMCertWithRepeatSAN(1677615892, 200, "fake.dns"),
+ roots: []string{generatePEMCertWithRepeatSAN(1677615892, 200, "fake.dns")},
+ currentTime: 1677615892,
+ dnsName: "www.example.com",
+ systemSkip: true, // does not chain to a system root
+
+ errorCallback: expectHostnameError("certificate is valid for 200 names, but none matched"),
+ },
+ {
+ name: "TooManyIPs",
+ leaf: generatePEMCertWithRepeatSAN(1677615892, 150, "4.3.2.1"),
+ roots: []string{generatePEMCertWithRepeatSAN(1677615892, 150, "4.3.2.1")},
+ currentTime: 1677615892,
+ dnsName: "1.2.3.4",
+ systemSkip: true, // does not chain to a system root
+
+ errorCallback: expectHostnameError("certificate is valid for 150 IP SANs, but none matched"),
+ },
{
name: "IPMissing",
leaf: googleLeaf,
@@ -584,6 +607,30 @@ func nameToKey(name *pkix.Name) string {
return strings.Join(name.Country, ",") + "/" + strings.Join(name.Organization, ",") + "/" + strings.Join(name.OrganizationalUnit, ",") + "/" + name.CommonName
}
+func generatePEMCertWithRepeatSAN(currentTime int64, count int, san string) string {
+ cert := Certificate{
+ NotBefore: time.Unix(currentTime, 0),
+ NotAfter: time.Unix(currentTime, 0),
+ }
+ if ip := net.ParseIP(san); ip != nil {
+ cert.IPAddresses = slices.Repeat([]net.IP{ip}, count)
+ } else {
+ cert.DNSNames = slices.Repeat([]string{san}, count)
+ }
+ privKey, err := rsa.GenerateKey(rand.Reader, 4096)
+ if err != nil {
+ log.Fatal(err)
+ }
+ certBytes, err := CreateCertificate(rand.Reader, &cert, &cert, &privKey.PublicKey, privKey)
+ if err != nil {
+ log.Fatal(err)
+ }
+ return string(pem.EncodeToMemory(&pem.Block{
+ Type: "CERTIFICATE",
+ Bytes: certBytes,
+ }))
+}
+
const geoTrustRoot = `-----BEGIN CERTIFICATE-----
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT
MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
--
2.25.1

View File

@@ -0,0 +1,55 @@
From 5e0a62c44fbaff6443bffe67911370bc0ea25f6d Mon Sep 17 00:00:00 2001
From: Ian Lance Taylor <iant@golang.org>
Date: Wed, 20 Sep 2023 16:16:29 -0700
Subject: [PATCH] cmd/compile: use absolute file name in isCgo check
For #23672
Fixes #63211
Fixes CVE-2023-39323
Change-Id: I4586a69e1b2560036afec29d53e53cf25e6c7352
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/2032884
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/534158
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Upstream-Status: Backport
CVE: CVE-2023-39323
Reference to upstream patch:
https://github.com/golang/go/commit/e7c142a19d8b3944c2f1b9ab7fd94c63d8d0c555
Backport patch to fix CVE-2023-39323 and drop the modifications of test codes.
Signed-off-by: Libo Chen <libo.chen.cn@windriver.com>
---
src/cmd/compile/internal/noder/noder.go | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/cmd/compile/internal/noder/noder.go b/src/cmd/compile/internal/noder/noder.go
index 5fcad096c2..f35e065a31 100644
--- a/src/cmd/compile/internal/noder/noder.go
+++ b/src/cmd/compile/internal/noder/noder.go
@@ -1690,8 +1690,14 @@ func (p *noder) pragma(pos syntax.Pos, blankLine bool, text string, old syntax.P
// contain cgo directives, and for security reasons
// (primarily misuse of linker flags), other files are not.
// See golang.org/issue/23672.
+// Note that cmd/go ignores files whose names start with underscore,
+// so the only _cgo_ files we will see from cmd/go are generated by cgo.
+// It's easy to bypass this check by calling the compiler directly;
+// we only protect against uses by cmd/go.
func isCgoGeneratedFile(pos syntax.Pos) bool {
- return strings.HasPrefix(filepath.Base(filepath.Clean(fileh(pos.Base().Filename()))), "_cgo_")
+ // We need the absolute file, independent of //line directives,
+ // so we call pos.Base().Pos().Base().
+ return strings.HasPrefix(filepath.Base(filepath.Clean(fileh(pos.Base().Pos().Base().Filename()))), "_cgo_")
}
// safeArg reports whether arg is a "safe" command-line argument,
--
2.34.1

View File

@@ -1,44 +0,0 @@
From b5545c08e6c674c49aef14b47a56a3e92df4d2a7 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 17 Feb 2016 07:36:34 +0000
Subject: [pseudo][PATCH] configure: Prune PIE flags
LDFLAGS are not taken from environment and CFLAGS is used for LDFLAGS
however when using security options -fpie and -pie options are coming
as part of ARCH_FLAGS and they get into LDFLAGS of shared objects as
well so we end up with conflicting options -shared -pie, which gold
rejects outright and bfd linker lets the one appearning last in cmdline
take effect. This create quite a unpleasant situation in OE when
security flags are enabled and gold or not-gold options are used
it errors out but errors are not same.
Anyway, with this patch we filter pie options from ARCH_FLAGS
ouright and take control of generating PIC objects
Helps with errors like
| /mnt/oe/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: pseudo_client.o: relocation R_X86_64_PC32 against symbol `pseudo_util_debug_flags' can not be used when making a shared object; recompile with -fPIC
| /mnt/oe/build/tmp-glibc/sysroots/x86_64-linux/usr/libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/5.3.0/ld: final link failed: Bad value
| collect2: error: ld returned 1 exit status
| make: *** [lib/pseudo/lib64/libpseudo.so] Error 1
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Submitted
configure | 2 ++
1 file changed, 2 insertions(+)
diff --git a/configure b/configure
index e5ef9ce..83b0890 100755
--- a/configure
+++ b/configure
@@ -339,3 +339,5 @@ sed -e '
s,@ARCH@,'"$opt_arch"',g
s,@BITS@,'"$opt_bits"',g
' < Makefile.in > Makefile
+
+sed -i -e 's/\-[f]*pie//g' Makefile
--
1.8.3.1

View File

@@ -1,65 +0,0 @@
glibc 2.38 would include __isoc23_strtol and similar symbols. This is trggerd by
_GNU_SOURCE but we have to set that for other definitions. Therefore play with defines
to turn this off within pseudo_wrappers.c. Elsewhere we can switch to _DEFAULT_SOURCE
rather than _GNU_SOURCE.
Upstream-Status: Pending
Index: git/pseudo_wrappers.c
===================================================================
--- git.orig/pseudo_wrappers.c
+++ git/pseudo_wrappers.c
@@ -6,6 +6,18 @@
* SPDX-License-Identifier: LGPL-2.1-only
*
*/
+/* glibc 2.38 would include __isoc23_strtol and similar symbols. This is trggerd by
+ * _GNU_SOURCE but we have to set that for other definitions. Therefore play with defines
+ * to turn this off.
+ */
+#include <features.h>
+#undef __GLIBC_USE_ISOC2X
+#undef __GLIBC_USE_C2X_STRTOL
+#define __GLIBC_USE_C2X_STRTOL 0
+#undef __GLIBC_USE_ISOC23
+#undef __GLIBC_USE_C23_STRTOL
+#define __GLIBC_USE_C23_STRTOL 0
+
#include <assert.h>
#include <stdlib.h>
#include <limits.h>
Index: git/pseudo_util.c
===================================================================
--- git.orig/pseudo_util.c
+++ git/pseudo_util.c
@@ -8,6 +8,17 @@
*/
/* we need access to RTLD_NEXT for a horrible workaround */
#define _GNU_SOURCE
+/* glibc 2.38 would include __isoc23_strtol and similar symbols. This is trggerd by
+ * _GNU_SOURCE but we have to set that for other definitions. Therefore play with defines
+ * to turn this off.
+ */
+#include <features.h>
+#undef __GLIBC_USE_ISOC2X
+#undef __GLIBC_USE_C2X_STRTOL
+#define __GLIBC_USE_C2X_STRTOL 0
+#undef __GLIBC_USE_ISOC23
+#undef __GLIBC_USE_C23_STRTOL
+#define __GLIBC_USE_C23_STRTOL 0
#include <ctype.h>
#include <errno.h>
Index: git/pseudo_client.c
===================================================================
--- git.orig/pseudo_client.c
+++ git/pseudo_client.c
@@ -6,7 +6,7 @@
* SPDX-License-Identifier: LGPL-2.1-only
*
*/
-#define _GNU_SOURCE
+#define _DEFAULT_SOURCE
#include <stdio.h>
#include <signal.h>

View File

@@ -28,10 +28,10 @@ diff --git a/Makefile.in b/Makefile.in
@@ -120,7 +120,7 @@ $(PSEUDODB): pseudodb.o $(SHOBJS) $(DBOBJS) pseudo_ipc.o | $(BIN)
libpseudo: $(LIBPSEUDO)
$(LIBPSEUDO): $(WRAPOBJS) pseudo_client.o pseudo_ipc.o $(SHOBJS) | $(LIB)
$(LIBPSEUDO): $(WRAPOBJS) pseudo_client.o pseudo_client_scanf.o pseudo_ipc.o $(SHOBJS) | $(LIB)
- $(CC) $(CFLAGS) $(CFLAGS_PSEUDO) -shared -o $(LIBPSEUDO) \
+ $(CC) $(CFLAGS) -Lprebuilt/$(shell uname -m)-linux/lib/ $(CFLAGS_PSEUDO) -shared -o $(LIBPSEUDO) \
pseudo_client.o pseudo_ipc.o \
pseudo_client.o pseudo_client_scanf.o pseudo_ipc.o \
$(WRAPOBJS) $(SHOBJS) $(LDFLAGS) $(CLIENT_LDFLAGS)
diff --git a/pseudo_wrappers.c b/pseudo_wrappers.c

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