mirror of
https://git.yoctoproject.org/poky
synced 2026-09-13 00:49:33 +02:00
Compare commits
109 Commits
yocto-4.0.
...
kirkstone
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
445a622392 | ||
|
|
393064579d | ||
|
|
b0134a0f13 | ||
|
|
4a5e618f57 | ||
|
|
93431249a6 | ||
|
|
c0c00ef999 | ||
|
|
961c3c9778 | ||
|
|
9f3811f679 | ||
|
|
7bf1fce6da | ||
|
|
4a4e0944fa | ||
|
|
c1c8289d56 | ||
|
|
0f1a5cc7a1 | ||
|
|
7e09c83dd8 | ||
|
|
5071393867 | ||
|
|
7d6d05fbed | ||
|
|
8671248b73 | ||
|
|
eed22f3bd6 | ||
|
|
6d52714c7c | ||
|
|
e2b0ffbd78 | ||
|
|
f5a60f9888 | ||
|
|
e728c23ab3 | ||
|
|
6bdb27cfe1 | ||
|
|
33fab72fa7 | ||
|
|
f6d2fd38dc | ||
|
|
78749ad27d | ||
|
|
866e6ed3b8 | ||
|
|
fc72adbf80 | ||
|
|
80f07f4187 | ||
|
|
631b2c9ded | ||
|
|
3c9199cfd8 | ||
|
|
5f5ee461c5 | ||
|
|
9e5f9c05b4 | ||
|
|
4839ceefde | ||
|
|
82686a82ab | ||
|
|
e20d9718e9 | ||
|
|
88457f1a23 | ||
|
|
940ec8f7fb | ||
|
|
7382ad3b56 | ||
|
|
6eb32e9f28 | ||
|
|
effcf08ef0 | ||
|
|
cf615e1d3b | ||
|
|
1aee6e9648 | ||
|
|
3a4d4d66ba | ||
|
|
77a8ab27c4 | ||
|
|
b0c2d6dfec | ||
|
|
dde51fb77f | ||
|
|
bfb2f38e30 | ||
|
|
2e426aeb73 | ||
|
|
d8712ea143 | ||
|
|
53045adf7b | ||
|
|
28f7821cc4 | ||
|
|
20c48403c1 | ||
|
|
06f1750ad5 | ||
|
|
104fe45d36 | ||
|
|
3f17dff885 | ||
|
|
101fc59b73 | ||
|
|
66d06f3bde | ||
|
|
91495b0f53 | ||
|
|
02c15addea | ||
|
|
ed80e89d57 | ||
|
|
8334e82e1d | ||
|
|
3f5e203cbf | ||
|
|
974e67818b | ||
|
|
79851c1eb5 | ||
|
|
5479a272a7 | ||
|
|
3588c550b1 | ||
|
|
3255405278 | ||
|
|
fd88d8cc35 | ||
|
|
caac6c06bb | ||
|
|
822c6db93e | ||
|
|
b5f43fb19e | ||
|
|
56e5f34c39 | ||
|
|
c129bb9b7e | ||
|
|
b600216fd2 | ||
|
|
e7763a1e0a | ||
|
|
8b83d6e2f9 | ||
|
|
c63dd35b57 | ||
|
|
e19fc15027 | ||
|
|
f61eb0f68d | ||
|
|
2c14074be7 | ||
|
|
ad4c2759f0 | ||
|
|
69d100e7f0 | ||
|
|
3825d4306a | ||
|
|
b249264a0c | ||
|
|
f210d0fc05 | ||
|
|
67e8e2cc2f | ||
|
|
4597dd50ee | ||
|
|
a3d6476e85 | ||
|
|
82329c1ced | ||
|
|
b232dd23d6 | ||
|
|
bcf7200a12 | ||
|
|
ff90622dfc | ||
|
|
f1a1393dd0 | ||
|
|
1d5c8af9c4 | ||
|
|
9a24d18f40 | ||
|
|
7cdc92f5cb | ||
|
|
99c192aae2 | ||
|
|
3a7aa79ca2 | ||
|
|
a8c5e5e573 | ||
|
|
9998d74d24 | ||
|
|
bd6c85cfa6 | ||
|
|
e7b549ecaa | ||
|
|
4ad238e9c1 | ||
|
|
ad756dec39 | ||
|
|
58f9b898da | ||
|
|
e60019c6eb | ||
|
|
7794952de8 | ||
|
|
7bb35f44d9 | ||
|
|
c3b734f0a7 |
@@ -16,9 +16,13 @@ which can be found at:
|
|||||||
Contributing
|
Contributing
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Please refer to
|
Please refer to our contributor guide here: https://docs.yoctoproject.org/dev/contributor-guide/
|
||||||
https://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded
|
for full details on how to submit changes.
|
||||||
for guidelines on how to submit patches.
|
|
||||||
|
As a quick guide, patches should be sent to openembedded-core@lists.openembedded.org
|
||||||
|
The git command to do that would be:
|
||||||
|
|
||||||
|
git send-email -M -1 --to openembedded-core@lists.openembedded.org --subject-prefix='kirkstone][PATCH'
|
||||||
|
|
||||||
Mailing list:
|
Mailing list:
|
||||||
|
|
||||||
|
|||||||
@@ -66,8 +66,11 @@ class Crate(Wget):
|
|||||||
# if using upstream just fix it up nicely
|
# if using upstream just fix it up nicely
|
||||||
if host == 'crates.io':
|
if host == 'crates.io':
|
||||||
host = 'crates.io/api/v1/crates'
|
host = 'crates.io/api/v1/crates'
|
||||||
|
cdn_host = 'static.crates.io/crates'
|
||||||
|
else:
|
||||||
|
cdn_host = host
|
||||||
|
|
||||||
ud.url = "https://%s/%s/%s/download" % (host, name, version)
|
ud.url = "https://%s/%s/%s/download" % (cdn_host, name, version)
|
||||||
ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version)
|
ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version)
|
||||||
ud.parm['name'] = name
|
ud.parm['name'] = name
|
||||||
|
|
||||||
|
|||||||
@@ -1053,7 +1053,7 @@ class FetcherNetworkTest(FetcherTest):
|
|||||||
# URL with ssh submodules
|
# URL with ssh submodules
|
||||||
url = "gitsm://git.yoctoproject.org/git-submodule-test;branch=ssh-gitsm-tests;rev=049da4a6cb198d7c0302e9e8b243a1443cb809a7;branch=master"
|
url = "gitsm://git.yoctoproject.org/git-submodule-test;branch=ssh-gitsm-tests;rev=049da4a6cb198d7c0302e9e8b243a1443cb809a7;branch=master"
|
||||||
# Original URL (comment this if you have ssh access to git.yoctoproject.org)
|
# Original URL (comment this if you have ssh access to git.yoctoproject.org)
|
||||||
url = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master;rev=a2885dd7d25380d23627e7544b7bbb55014b16ee;branch=master"
|
url = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master;rev=38e61644af90dccd73c03ed3acaed98c8dda9294;branch=master;protocol=https"
|
||||||
fetcher = bb.fetch.Fetch([url], self.d)
|
fetcher = bb.fetch.Fetch([url], self.d)
|
||||||
fetcher.download()
|
fetcher.download()
|
||||||
# Previous cwd has been deleted
|
# Previous cwd has been deleted
|
||||||
|
|||||||
@@ -711,7 +711,7 @@ Taking Patch Review into Account
|
|||||||
You may get feedback on your submitted patches from other community members
|
You may get feedback on your submitted patches from other community members
|
||||||
or from the automated patchtest service. If issues are identified in your
|
or from the automated patchtest service. If issues are identified in your
|
||||||
patches then it is usually necessary to address these before the patches are
|
patches then it is usually necessary to address these before the patches are
|
||||||
accepted into the project. In this case you should your commits according
|
accepted into the project. In this case you should revise your commits according
|
||||||
to the feedback and submit an updated version to the relevant mailing list.
|
to the feedback and submit an updated version to the relevant mailing list.
|
||||||
|
|
||||||
In any case, never fix reported issues by fixing them in new commits
|
In any case, never fix reported issues by fixing them in new commits
|
||||||
|
|||||||
@@ -279,8 +279,23 @@ with a number. The number used depends on the state of the PR Service:
|
|||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
hello-world-git_0.0+git0+b6558dd387-r0.0_armv7a-neon.ipk
|
hello-world-git_1.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+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
|
- If PR Service is not enabled, the build system replaces the
|
||||||
``AUTOINC`` placeholder with zero (i.e. "0"). This results in
|
``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
|
.. code-block:: none
|
||||||
|
|
||||||
hello-world-git_0.0+git0+b6558dd387-r0.0_armv7a-neon.ipk
|
hello-world-git_1.0+git0+b6558dd387-r0_armv7a-neon.ipk
|
||||||
hello-world-git_0.0+git0+dd2f5c3565-r0.0_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
|
In summary, the OpenEmbedded build system does not track the history of
|
||||||
binary package versions for this purpose. ``AUTOINC``, in this case, is
|
binary package versions for this purpose. ``AUTOINC``, in this case, is
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 214 KiB |
@@ -38,3 +38,7 @@ Release 4.0 (kirkstone)
|
|||||||
release-notes-4.0.29
|
release-notes-4.0.29
|
||||||
release-notes-4.0.30
|
release-notes-4.0.30
|
||||||
release-notes-4.0.31
|
release-notes-4.0.31
|
||||||
|
release-notes-4.0.32
|
||||||
|
release-notes-4.0.33
|
||||||
|
release-notes-4.0.34
|
||||||
|
release-notes-4.0.35
|
||||||
|
|||||||
194
documentation/migration-guides/release-notes-4.0.32.rst
Normal file
194
documentation/migration-guides/release-notes-4.0.32.rst
Normal 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
|
||||||
|
|
||||||
182
documentation/migration-guides/release-notes-4.0.33.rst
Normal file
182
documentation/migration-guides/release-notes-4.0.33.rst
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
Release notes for Yocto-4.0.33 (Kirkstone)
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
Security Fixes in Yocto-4.0.33
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- binutils: Fix :cve_nist:`2025-1181`, :cve_nist:`2025-11494`, :cve_nist:`2025-11839` and
|
||||||
|
:cve_nist:`2025-11840`
|
||||||
|
- cups: Fix :cve_nist:`2025-58436` and :cve_nist:`2025-61915`
|
||||||
|
- curl: Fix :cve_nist:`2025-14017`, :cve_nist:`2025-15079` and :cve_nist:`2025-15224`
|
||||||
|
- dropbear: Fix :cve_nist:`2019-6111`
|
||||||
|
- glib-2.0: Fix :cve_nist:`2025-13601`, :cve_nist:`2025-14087` and :cve_nist:`2025-14512`
|
||||||
|
- gnupg: Fix :cve_nist:`2025-68973`
|
||||||
|
- go: Fix :cve_nist:`2023-39323`, :cve_nist:`2025-61727` and :cve_nist:`2025-61729`
|
||||||
|
- go: Fix :cve_nist:`2025-58187` (update patch)
|
||||||
|
- grub: Fix :cve_nist:`2025-61661`, :cve_nist:`2025-61662`, :cve_nist:`2025-61663` and
|
||||||
|
:cve_nist:`2025-61664`
|
||||||
|
- libarchive: Fix :cve_nist:`2025-60753` (update patch)
|
||||||
|
- libpcap: Fix :cve_nist:`2025-11961` and :cve_nist:`2025-11964`
|
||||||
|
- libsoup: fix :cve_nist:`2025-12105`
|
||||||
|
- libxslt: Fix :cve_nist:`2025-11731`
|
||||||
|
- python3: Fix :cve_nist:`2025-13836`
|
||||||
|
- python3-urllib3: Fix :cve_nist:`2025-66418`
|
||||||
|
- qemu: Fix :cve_nist:`2025-12464`
|
||||||
|
- qemu: Ignore :cve_nist:`2025-54566` and :cve_nist:`2025-54567`
|
||||||
|
- rsync: Fix :cve_nist:`2025-10158`
|
||||||
|
- util-linux: Fix :cve_nist:`2025-14104`
|
||||||
|
|
||||||
|
|
||||||
|
Fixes in Yocto-4.0.33
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- build-appliance-image: Update to kirkstone head revision
|
||||||
|
- contributor-guide/recipe-style-guide.rst: explain difference between layer and recipe license(s)
|
||||||
|
- cross.bbclass: Propagate dependencies to outhash
|
||||||
|
- cups: allow unknown directives in conf files
|
||||||
|
- docs: Add a new "Security" section
|
||||||
|
- oeqa: Use 2.14 release of cpio instead of 2.13
|
||||||
|
- overview-manual/yp-intro.rst: change removed ECOSYSTEM to ABOUT
|
||||||
|
- overview-manual/yp-intro.rst: fix SDK type in bullet list
|
||||||
|
- overview-manual/yp-intro.rst: link to YP members and participants
|
||||||
|
- overview-manual: convert YP-flow-diagram.png to SVG
|
||||||
|
- poky.conf: Bump version for 4.0.33 release
|
||||||
|
- pseudo: Upgrade to 1.9.2+git125b020dd2
|
||||||
|
- ref-manual/classes.rst: document the image-container class
|
||||||
|
- ref-manual/release-process.rst: add a "Development Cycle" section
|
||||||
|
- ref-manual/svg/releases.svg: mark styhead and walnascar EOL
|
||||||
|
- ref-manual/svg/releases.svg: mark whinlatter as current release
|
||||||
|
- ref-manual/variables.rst: document the :term:`CCACHE_TOP_DIR` variable
|
||||||
|
- scripts/install-buildtools: Update to 4.0.31
|
||||||
|
- test-manual/ptest.rst: detail the exit code and output requirements
|
||||||
|
|
||||||
|
|
||||||
|
Known Issues in Yocto-4.0.33
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- N/A
|
||||||
|
|
||||||
|
|
||||||
|
Contributors to Yocto-4.0.33
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Aleksandar Nikolic
|
||||||
|
- Antonin Godard
|
||||||
|
- Changqing Li
|
||||||
|
- Deepesh Varatharajan
|
||||||
|
- Hitendra Prajapati
|
||||||
|
- Jiaying Song
|
||||||
|
- Kai Kang
|
||||||
|
- Khem Raj
|
||||||
|
- Libo Chen
|
||||||
|
- Liyin Zhang
|
||||||
|
- Martin Jansa
|
||||||
|
- Mingli Yu
|
||||||
|
- Paul Barker
|
||||||
|
- Peter Marko
|
||||||
|
- Richard Purdie
|
||||||
|
- Robert Yang
|
||||||
|
- Vijay Anusuri
|
||||||
|
- Yash Shinde
|
||||||
|
|
||||||
|
Repositories / Downloads for Yocto-4.0.33
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
yocto-docs
|
||||||
|
|
||||||
|
- Repository Location: :yocto_git:`/yocto-docs`
|
||||||
|
- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
|
||||||
|
- Tag: :yocto_git:`yocto-4.0.33 </yocto-docs/log/?h=yocto-4.0.33>`
|
||||||
|
- Git Revision: :yocto_git:`6799b1be5d48f4bf5dcd0b16c2dbc2e297d4ecd9 </yocto-docs/commit/?id=6799b1be5d48f4bf5dcd0b16c2dbc2e297d4ecd9>`
|
||||||
|
- Release Artefact: yocto-docs-6799b1be5d48f4bf5dcd0b16c2dbc2e297d4ecd9
|
||||||
|
- sha: 42a0eb89c8f87a9a966aecb8265f463486d4383cb67d1e67382ddf9d4d7f88b5
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.33/yocto-docs-6799b1be5d48f4bf5dcd0b16c2dbc2e297d4ecd9.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.33/yocto-docs-6799b1be5d48f4bf5dcd0b16c2dbc2e297d4ecd9.tar.bz2
|
||||||
|
|
||||||
|
poky
|
||||||
|
|
||||||
|
- Repository Location: :yocto_git:`/poky`
|
||||||
|
- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
|
||||||
|
- Tag: :yocto_git:`yocto-4.0.33 </poky/log/?h=yocto-4.0.33>`
|
||||||
|
- Git Revision: :yocto_git:`ff118ede826a9ae45eb35025a5f7f612880fba01 </poky/commit/?id=ff118ede826a9ae45eb35025a5f7f612880fba01>`
|
||||||
|
- Release Artefact: poky-ff118ede826a9ae45eb35025a5f7f612880fba01
|
||||||
|
- sha: 2a8c24406fa96fc52728a96f25136a3fd7ee652eea6e12319a6b7c0457ccfdfd
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.33/poky-ff118ede826a9ae45eb35025a5f7f612880fba01.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.33/poky-ff118ede826a9ae45eb35025a5f7f612880fba01.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.33 </openembedded-core/log/?h=yocto-4.0.33>`
|
||||||
|
- Git Revision: :oe_git:`036f76ea35c49a78d612093dcd8eb1fac7ded8d7 </openembedded-core/commit/?id=036f76ea35c49a78d612093dcd8eb1fac7ded8d7>`
|
||||||
|
- Release Artefact: oecore-036f76ea35c49a78d612093dcd8eb1fac7ded8d7
|
||||||
|
- sha: fc180ff224529fd73a7aec4a4cf5beb40fba17646ee694715cf603baba26610c
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.33/oecore-036f76ea35c49a78d612093dcd8eb1fac7ded8d7.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.33/oecore-036f76ea35c49a78d612093dcd8eb1fac7ded8d7.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.33 </meta-yocto/log/?h=yocto-4.0.33>`
|
||||||
|
- Git Revision: :yocto_git:`677379f21941363d50f9d946963542b4ccb7e27c </meta-yocto/commit/?id=677379f21941363d50f9d946963542b4ccb7e27c>`
|
||||||
|
- Release Artefact: meta-yocto-677379f21941363d50f9d946963542b4ccb7e27c
|
||||||
|
- sha: 90f52c406f4e69748b8d73eee07b8a1247d19cc29f4893174f110a034b10415f
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.33/meta-yocto-677379f21941363d50f9d946963542b4ccb7e27c.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.33/meta-yocto-677379f21941363d50f9d946963542b4ccb7e27c.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.33 </meta-mingw/log/?h=yocto-4.0.33>`
|
||||||
|
- 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.33/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.33/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.33 </meta-gplv2/log/?h=yocto-4.0.33>`
|
||||||
|
- 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.33/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.33/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.33 </bitbake/log/?h=yocto-4.0.33>`
|
||||||
|
- 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.33/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.33/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
|
||||||
|
|
||||||
191
documentation/migration-guides/release-notes-4.0.34.rst
Normal file
191
documentation/migration-guides/release-notes-4.0.34.rst
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
Release notes for Yocto-4.0.34 (Kirkstone)
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
Security Fixes in Yocto-4.0.34
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- avahi: Fix :cve_nist:`2026-24401`, :cve_nist:`2025-68276`, :cve_nist:`2025-68468` and
|
||||||
|
:cve_nist:`2025-68471`
|
||||||
|
- bind: Fix :cve_nist:`2025-13878`
|
||||||
|
- expat: Fix :cve_nist:`2026-24515` and :cve_nist:`2026-25210`
|
||||||
|
- ffmpeg: Ignore :cve_nist:`2025-25468` and :cve_nist:`2025-25469`
|
||||||
|
- glib-2.0: Fix :cve_nist:`2026-0988`, :cve_nist:`2026-1484`, :cve_nist:`2026-1485` and
|
||||||
|
:cve_nist:`2026-1489`
|
||||||
|
- glibc: Fix :cve_nist:`2025-15281`, :cve_nist:`2026-0861` and :cve_nist:`2026-0915`
|
||||||
|
- harfbuzz: Ignore :cve_nist:`2026-22693`
|
||||||
|
- inetutils: Fix :cve_nist:`2026-24061`
|
||||||
|
- libpng: Fix :cve_nist:`2026-22695`, :cve_nist:`2026-22801` and :cve_nist:`2026-25646`
|
||||||
|
- libtasn1: Fix :cve_nist:`2025-13151`
|
||||||
|
- libxml2: Fix :cve_nist:`2026-0990` and :cve_nist:`2026-0992`
|
||||||
|
- linux-yocto/5.15: Fix :cve_nist:`2022-49465`, :cve_nist:`2023-54207`, :cve_nist:`2025-22058`,
|
||||||
|
:cve_nist:`2025-40040`, :cve_nist:`2025-40149`, :cve_nist:`2025-40164`, :cve_nist:`2025-68211`,
|
||||||
|
:cve_nist:`2025-68340`, :cve_nist:`2025-68365`, :cve_nist:`2025-68725`, :cve_nist:`2025-68817`,
|
||||||
|
:cve_nist:`2025-71147`, :cve_nist:`2025-71154`, :cve_nist:`2025-71162`, :cve_nist:`2025-71163`,
|
||||||
|
:cve_nist:`2026-22976`, :cve_nist:`2026-22977`, :cve_nist:`2026-22978`, :cve_nist:`2026-22980`,
|
||||||
|
:cve_nist:`2026-22982`, :cve_nist:`2026-22984`, :cve_nist:`2026-22990`, :cve_nist:`2026-22991`,
|
||||||
|
:cve_nist:`2026-22992`, :cve_nist:`2026-22997`, :cve_nist:`2026-22998`, :cve_nist:`2026-22999`,
|
||||||
|
:cve_nist:`2026-23060`, :cve_nist:`2026-23061`, :cve_nist:`2026-23063`, :cve_nist:`2026-23064`,
|
||||||
|
:cve_nist:`2026-23076`, :cve_nist:`2026-23078`, :cve_nist:`2026-23080`, :cve_nist:`2026-23083`,
|
||||||
|
:cve_nist:`2026-23084`, :cve_nist:`2026-23085`, :cve_nist:`2026-23087`, :cve_nist:`2026-23089`,
|
||||||
|
:cve_nist:`2026-23090`, :cve_nist:`2026-23091`, :cve_nist:`2026-23093`, :cve_nist:`2026-23095`,
|
||||||
|
:cve_nist:`2026-23096`, :cve_nist:`2026-23097`, :cve_nist:`2026-23119`, :cve_nist:`2026-23120`,
|
||||||
|
:cve_nist:`2026-23121`, :cve_nist:`2026-23124`, :cve_nist:`2026-23125`, :cve_nist:`2026-23133`,
|
||||||
|
:cve_nist:`2026-23146`, :cve_nist:`2026-23150`, :cve_nist:`2026-23164`, :cve_nist:`2026-23167`
|
||||||
|
and :cve_nist:`2026-23170`
|
||||||
|
- openssl: Fix :cve_nist:`2025-15467`, :cve_nist:`2026-22795`, :cve_nist:`2026-22796`,
|
||||||
|
:cve_nist:`2025-68160`, :cve_nist:`2025-69418`, :cve_nist:`2025-69419`, :cve_nist:`2025-69420`
|
||||||
|
and :cve_nist:`2025-69421`
|
||||||
|
- python3: Fix :cve_nist:`2025-12084` and :cve_nist:`2025-13837`
|
||||||
|
- vim: Ignore :cve_nist:`2025-66476`
|
||||||
|
- zlib: Ignore :cve_nist:`2026-22184`
|
||||||
|
|
||||||
|
|
||||||
|
Fixes in Yocto-4.0.34
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- bind: Upgrade to 9.18.44
|
||||||
|
- build-appliance-image: Update to kirkstone head revision
|
||||||
|
- classes/buildhistory: Do not sign buildhistory commits
|
||||||
|
- dev-manual/packages.rst: fix example recipe version
|
||||||
|
- dev-manual/packages.rst: pr server: fix and explain why r0.X increments on :term:`SRCREV` change
|
||||||
|
- dev-manual/packages.rst: rename r0.0 to r0 when :term:`PR` server is not enabled
|
||||||
|
- glibc: stable 2.35 branch updates
|
||||||
|
- linux-yocto/5.15: update to v5.15.199
|
||||||
|
- migration-guides: add release notes for 4.0.32
|
||||||
|
- openssl: upgrade to 3.0.19
|
||||||
|
- poky.conf: Bump version for 4.0.34 release
|
||||||
|
- poky.conf: add fedora-41, debian-12, rocky-8&9 to :term:`SANITY_TESTED_DISTROS`
|
||||||
|
- pseudo: Update to 1.9.3+git43cbd8fb49
|
||||||
|
- ref-manual/classes.rst: fix broken links to U-Boot documentation
|
||||||
|
- ref-manual/system-requirements.rst: update untested distros
|
||||||
|
- scripts/install-buildtools: Update to 4.0.32
|
||||||
|
- u-boot: move CVE patch out of u-boot-common.inc
|
||||||
|
- what-i-wish-id-known.rst: replace figure by the new SVG
|
||||||
|
|
||||||
|
|
||||||
|
Known Issues in Yocto-4.0.34
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- N/A
|
||||||
|
|
||||||
|
|
||||||
|
Contributors to Yocto-4.0.34
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Aleksandar Nikolic
|
||||||
|
- Amaury Couderc
|
||||||
|
- Ankur Tyagi
|
||||||
|
- Antonin Godard
|
||||||
|
- Bruce Ashfield
|
||||||
|
- Fabio Berton
|
||||||
|
- Hugo SIMELIERE
|
||||||
|
- Lee Chee Yang
|
||||||
|
- Michael Opdenacker
|
||||||
|
- Paul Barker
|
||||||
|
- Peter Marko
|
||||||
|
- Richard Purdie
|
||||||
|
- Scott Murray
|
||||||
|
- Vijay Anusuri
|
||||||
|
- Yoann Congal
|
||||||
|
|
||||||
|
Repositories / Downloads for Yocto-4.0.34
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
yocto-docs
|
||||||
|
|
||||||
|
- Repository Location: :yocto_git:`/yocto-docs`
|
||||||
|
- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
|
||||||
|
- Tag: :yocto_git:`yocto-4.0.34 </yocto-docs/log/?h=yocto-4.0.34>`
|
||||||
|
- Git Revision: :yocto_git:`7c348dd67cfd169b1a56bf969606b03dccb76c56 </yocto-docs/commit/?id=7c348dd67cfd169b1a56bf969606b03dccb76c56>`
|
||||||
|
- Release Artefact: yocto-docs-7c348dd67cfd169b1a56bf969606b03dccb76c56
|
||||||
|
- sha: 0677fc3aee3c936599f3bcffbe16792494058bd3506ca3ab1697ceac1822829b
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.34/yocto-docs-7c348dd67cfd169b1a56bf969606b03dccb76c56.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.34/yocto-docs-7c348dd67cfd169b1a56bf969606b03dccb76c56.tar.bz2
|
||||||
|
|
||||||
|
poky
|
||||||
|
|
||||||
|
- Repository Location: :yocto_git:`/poky`
|
||||||
|
- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
|
||||||
|
- Tag: :yocto_git:`yocto-4.0.34 </poky/log/?h=yocto-4.0.34>`
|
||||||
|
- Git Revision: :yocto_git:`8334e82e1d85e50557bd3da64054fc9e3eafc495 </poky/commit/?id=8334e82e1d85e50557bd3da64054fc9e3eafc495>`
|
||||||
|
- Release Artefact: poky-8334e82e1d85e50557bd3da64054fc9e3eafc495
|
||||||
|
- sha: 74fcc57d1dd3bb0c6ef77bfaaeca7504f393e705a55149cf52d4b61981c9c387
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.34/poky-8334e82e1d85e50557bd3da64054fc9e3eafc495.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.34/poky-8334e82e1d85e50557bd3da64054fc9e3eafc495.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.34 </openembedded-core/log/?h=yocto-4.0.34>`
|
||||||
|
- Git Revision: :oe_git:`7b6c9faa301a6d058ca34e230586f6a81ffa3ffb </openembedded-core/commit/?id=7b6c9faa301a6d058ca34e230586f6a81ffa3ffb>`
|
||||||
|
- Release Artefact: oecore-7b6c9faa301a6d058ca34e230586f6a81ffa3ffb
|
||||||
|
- sha: 375a22e3e229064749e78c80c44cde95adcedd26df76045fccefa3a9d3fa14ad
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.34/oecore-7b6c9faa301a6d058ca34e230586f6a81ffa3ffb.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.34/oecore-7b6c9faa301a6d058ca34e230586f6a81ffa3ffb.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.34 </meta-yocto/log/?h=yocto-4.0.34>`
|
||||||
|
- Git Revision: :yocto_git:`1d3874a383023a5e2433e0fcfd87ac5d1e6d341d </meta-yocto/commit/?id=1d3874a383023a5e2433e0fcfd87ac5d1e6d341d>`
|
||||||
|
- Release Artefact: meta-yocto-1d3874a383023a5e2433e0fcfd87ac5d1e6d341d
|
||||||
|
- sha: baf48bbe1f29686d502c0c6f311c7723b0a18f08e7efbf89c150589102285dbe
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.34/meta-yocto-1d3874a383023a5e2433e0fcfd87ac5d1e6d341d.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.34/meta-yocto-1d3874a383023a5e2433e0fcfd87ac5d1e6d341d.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.34 </meta-mingw/log/?h=yocto-4.0.34>`
|
||||||
|
- 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.34/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.34/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.34 </meta-gplv2/log/?h=yocto-4.0.34>`
|
||||||
|
- 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.34/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.34/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.34 </bitbake/log/?h=yocto-4.0.34>`
|
||||||
|
- 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.34/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.34/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
|
||||||
|
|
||||||
198
documentation/migration-guides/release-notes-4.0.35.rst
Normal file
198
documentation/migration-guides/release-notes-4.0.35.rst
Normal file
@@ -0,0 +1,198 @@
|
|||||||
|
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
|
||||||
|
|
||||||
|
Release notes for Yocto-4.0.35 (Kirkstone)
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
Security Fixes in Yocto-4.0.35
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- alsa-lib: Fix :cve_nist:`2026-25068`
|
||||||
|
- busybox: Fix :cve_nist:`2025-60876`
|
||||||
|
- curl: Fix :cve_nist:`2025-14524`, :cve_nist:`2026-1965`, :cve_nist:`2026-3783` and
|
||||||
|
:cve_nist:`2026-3784`
|
||||||
|
- ffmpeg: Fix :cve_nist:`2025-10256`
|
||||||
|
- gdk-pixbuf: Fix :cve_nist:`2025-6199`
|
||||||
|
- inetutils: Fix :cve_nist:`2026-28372`
|
||||||
|
- libarchive: Fix :cve_nist:`2026-4111`
|
||||||
|
- libpam: Fix :cve_nist:`2024-10963`
|
||||||
|
- linux-yocto/5.15: Fix :cve_nist:`2025-40082`, :cve_nist:`2025-68358`, :cve_nist:`2025-71089`,
|
||||||
|
:cve_nist:`2025-71220`, :cve_nist:`2025-71222`, :cve_nist:`2025-71232`, :cve_nist:`2025-71233`,
|
||||||
|
:cve_nist:`2025-71235`, :cve_nist:`2025-71236`, :cve_nist:`2025-71237`, :cve_nist:`2025-71238`,
|
||||||
|
:cve_nist:`2026-23111`, :cve_nist:`2026-23112`, :cve_nist:`2026-23169`, :cve_nist:`2026-23190`,
|
||||||
|
:cve_nist:`2026-23193`, :cve_nist:`2026-23198`, :cve_nist:`2026-23202`, :cve_nist:`2026-23206`,
|
||||||
|
:cve_nist:`2026-23209`, :cve_nist:`2026-23216`, :cve_nist:`2026-23221`, :cve_nist:`2026-23222`,
|
||||||
|
:cve_nist:`2026-23228`, :cve_nist:`2026-23229`, :cve_nist:`2026-23231`, :cve_nist:`2026-23234`,
|
||||||
|
:cve_nist:`2026-23235`, :cve_nist:`2026-23236`, :cve_nist:`2026-23237` and :cve_nist:`2026-23238`
|
||||||
|
- ncurses: Fix :cve_nist:`2025-69720`
|
||||||
|
- python3: Fix :cve_nist:`2024-6923`, :cve_nist:`2025-15282`, :cve_nist:`2025-59375`,
|
||||||
|
:cve_nist:`2026-0865`, :cve_nist:`2026-24515` and :cve_nist:`2026-25210`
|
||||||
|
- python3-pip: Fix :cve_nist:`2026-1703`
|
||||||
|
- python3-pyopenssl: Fix :cve_nist:`2026-27448` and :cve_nist:`2026-27459`
|
||||||
|
- sqlite3: Fix :cve_nist:`2025-70873`
|
||||||
|
- tiff: Fix :cve_nist:`2025-61143` and :cve_nist:`2025-61144`
|
||||||
|
- vim: Fix :cve_nist:`2026-25749`, :cve_nist:`2026-26269`, :cve_nist:`2026-28418`,
|
||||||
|
:cve_nist:`2026-28419` and :cve_nist:`2026-33412`
|
||||||
|
|
||||||
|
|
||||||
|
Fixes in Yocto-4.0.35
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- bitbake: tests/fetch: Avoid using git protocol in tests
|
||||||
|
- build-appliance-image: Update to kirkstone head revision
|
||||||
|
- contributor-guide/submit-changes.rst: Added missing word
|
||||||
|
- create-pull-request: Keep commit hash to be pulled in cover email
|
||||||
|
- createrepo-c: Fix createrepo-c-native build on GCC14 hosts (e.g. Fedora 41)
|
||||||
|
- gtk+3: fix incompatible-pointer-types errors for native build on Fedora 41
|
||||||
|
- libcomps: Fix libcomps-native build on GCC14 hosts (e.g. Fedora 41)
|
||||||
|
- libpam: re-add missing libgen include
|
||||||
|
- libtheora: set :term:`CVE_PRODUCT`
|
||||||
|
- linux-yocto/5.15: update to v5.15.201
|
||||||
|
- lsb.py: strip ' from os-release file
|
||||||
|
- migration-guide: add release notes for 4.0.33 4.0.34
|
||||||
|
- oeqa/manual: Default to https git protocol for YP/OE repos
|
||||||
|
- oeqa/sdk: Default to https git protocol for YP/OE repos
|
||||||
|
- oeqa/selftest/git-submodule-test: Default to https git protocol for YP/OE repos
|
||||||
|
- overview-manual: escape wildcard in inline markup
|
||||||
|
- poky.conf: Bump version for 4.0.35 release
|
||||||
|
- python3: upgrade to 3.10.20
|
||||||
|
- README.OE-Core: update contributor links and add kirkstone prefix
|
||||||
|
- recipes: Default to https git protocol for YP/OE repos
|
||||||
|
- recipetool: Recognise https://git. as git urls
|
||||||
|
- ref-manual/system-requirements.rst: update end-of-life distros
|
||||||
|
- scripts/install-buildtools: Update to 4.0.34
|
||||||
|
- scripts: Default to https git protocol for YP/OE repos
|
||||||
|
- selftest/scripts: Update old git protocol references
|
||||||
|
- tcl: skip http11 tests
|
||||||
|
- tiff: set status of CVE-2025-61145 as fixed by patch for :cve_nist:`2025-8961`
|
||||||
|
- tzdata,tzcode-native: Upgrade to 2026a
|
||||||
|
|
||||||
|
|
||||||
|
Known Issues in Yocto-4.0.35
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- N/A
|
||||||
|
|
||||||
|
|
||||||
|
Contributors to Yocto-4.0.35
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- Aleksandar Nikolic
|
||||||
|
- Antonin Godard
|
||||||
|
- Bruce Ashfield
|
||||||
|
- Fabien Thomas
|
||||||
|
- Hitendra Prajapati
|
||||||
|
- Jinfeng Wang
|
||||||
|
- Ken Kurematsu
|
||||||
|
- Kristiyan Chakarov
|
||||||
|
- Lee Chee Yang
|
||||||
|
- Martin Jansa
|
||||||
|
- Paul Barker
|
||||||
|
- Peter Marko
|
||||||
|
- Richard Purdie
|
||||||
|
- Ross Burton
|
||||||
|
- Shaik Moin
|
||||||
|
- Vijay Anusuri
|
||||||
|
- Yanis BINARD
|
||||||
|
- Yoann Congal
|
||||||
|
|
||||||
|
Repositories / Downloads for Yocto-4.0.35
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
yocto-docs
|
||||||
|
|
||||||
|
- Repository Location: :yocto_git:`/yocto-docs`
|
||||||
|
- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
|
||||||
|
- Tag: :yocto_git:`yocto-4.0.35 </yocto-docs/log/?h=yocto-4.0.35>`
|
||||||
|
- Git Revision: :yocto_git:`ce6734c68649739c635675a133fa77edb9865028 </yocto-docs/commit/?id=ce6734c68649739c635675a133fa77edb9865028>`
|
||||||
|
- Release Artefact: yocto-docs-ce6734c68649739c635675a133fa77edb9865028
|
||||||
|
- sha: ddb6fac4d257f4f76836055cafad529729e99c293d3b8d3dabef926fad5e725f
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.35/yocto-docs-ce6734c68649739c635675a133fa77edb9865028.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.35/yocto-docs-ce6734c68649739c635675a133fa77edb9865028.tar.bz2
|
||||||
|
|
||||||
|
poky
|
||||||
|
|
||||||
|
- Repository Location: :yocto_git:`/poky`
|
||||||
|
- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
|
||||||
|
- Tag: :yocto_git:`yocto-4.0.35 </poky/log/?h=yocto-4.0.35>`
|
||||||
|
- Git Revision: :yocto_git:`93431249a6260da7bd29ee3ca32145d89e5b8259 </poky/commit/?id=93431249a6260da7bd29ee3ca32145d89e5b8259>`
|
||||||
|
- Release Artefact: poky-93431249a6260da7bd29ee3ca32145d89e5b8259
|
||||||
|
- sha: a8e95213248c5400276611754f2c98b8d8972e166bdf41433c45fcdd2bf668cb
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.35/poky-93431249a6260da7bd29ee3ca32145d89e5b8259.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.35/poky-93431249a6260da7bd29ee3ca32145d89e5b8259.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.35 </openembedded-core/log/?h=yocto-4.0.35>`
|
||||||
|
- Git Revision: :oe_git:`51259c7e933a2ac8ebc01604d6e65607b76b7b56 </openembedded-core/commit/?id=51259c7e933a2ac8ebc01604d6e65607b76b7b56>`
|
||||||
|
- Release Artefact: oecore-51259c7e933a2ac8ebc01604d6e65607b76b7b56
|
||||||
|
- sha: 2cd531e2a107849e7a452e71e41f22b42160979066e10d0661e97acfab125b1f
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.35/oecore-51259c7e933a2ac8ebc01604d6e65607b76b7b56.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.35/oecore-51259c7e933a2ac8ebc01604d6e65607b76b7b56.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.35 </meta-yocto/log/?h=yocto-4.0.35>`
|
||||||
|
- Git Revision: :yocto_git:`34e3c9a19b8b955116109a2e9528966db3fced37 </meta-yocto/commit/?id=34e3c9a19b8b955116109a2e9528966db3fced37>`
|
||||||
|
- Release Artefact: meta-yocto-34e3c9a19b8b955116109a2e9528966db3fced37
|
||||||
|
- sha: 18da6dbb745d5e4e42a93527c36751778155e3762728b0b1020b890480402dde
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.35/meta-yocto-34e3c9a19b8b955116109a2e9528966db3fced37.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.35/meta-yocto-34e3c9a19b8b955116109a2e9528966db3fced37.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.35 </meta-mingw/log/?h=yocto-4.0.35>`
|
||||||
|
- 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.35/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.35/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.35 </meta-gplv2/log/?h=yocto-4.0.35>`
|
||||||
|
- 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.35/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.35/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.35 </bitbake/log/?h=yocto-4.0.35>`
|
||||||
|
- Git Revision: :oe_git:`7fd0197fd5fedd23cc885b5e7e816d86a392fdf9 </bitbake/commit/?id=7fd0197fd5fedd23cc885b5e7e816d86a392fdf9>`
|
||||||
|
- Release Artefact: bitbake-7fd0197fd5fedd23cc885b5e7e816d86a392fdf9
|
||||||
|
- sha: 6c01ff2b4b0060ef3d6d3f1fc11690094b22865af4989946544d08d74b473ec9
|
||||||
|
- Download Locations:
|
||||||
|
|
||||||
|
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.35/bitbake-7fd0197fd5fedd23cc885b5e7e816d86a392fdf9.tar.bz2
|
||||||
|
|
||||||
|
https://mirrors.edge.kernel.org/yocto/yocto/yocto-4.0.35/bitbake-7fd0197fd5fedd23cc885b5e7e816d86a392fdf9.tar.bz2
|
||||||
|
|
||||||
@@ -454,7 +454,7 @@ typically find in the distribution layer:
|
|||||||
(``conf/distro/distro.conf``), and any distribution-wide include
|
(``conf/distro/distro.conf``), and any distribution-wide include
|
||||||
files.
|
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
|
functionality across the distribution. This area could include
|
||||||
recipes and append files to add distribution-specific configuration,
|
recipes and append files to add distribution-specific configuration,
|
||||||
initialization scripts, custom image recipes, and so forth. Examples
|
initialization scripts, custom image recipes, and so forth. Examples
|
||||||
|
|||||||
@@ -3280,9 +3280,9 @@ The variables used by this class are:
|
|||||||
rebuilding the FIT image containing the kernel.
|
rebuilding the FIT image containing the kernel.
|
||||||
|
|
||||||
See U-Boot's documentation for details about `verified boot
|
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
|
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
|
See also the description of :ref:`ref-classes-kernel-fitimage` class, which this class
|
||||||
imitates.
|
imitates.
|
||||||
|
|||||||
@@ -71,10 +71,8 @@ supported on the following distributions:
|
|||||||
- Fedora 41
|
- Fedora 41
|
||||||
- Rocky Linux 8
|
- Rocky Linux 8
|
||||||
- Rocky Linux 9
|
- Rocky Linux 9
|
||||||
- Ubuntu 20.04 (LTS)
|
|
||||||
- Ubuntu 22.04 (LTS)
|
- Ubuntu 22.04 (LTS)
|
||||||
- Ubuntu 24.04 (LTS)
|
- Ubuntu 24.04 (LTS)
|
||||||
- Ubuntu 24.10
|
|
||||||
|
|
||||||
The following distribution versions are still tested, even though the
|
The following distribution versions are still tested, even though the
|
||||||
organizations publishing them no longer make updates publicly available:
|
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 39
|
||||||
- Fedora 40
|
- Fedora 40
|
||||||
- Ubuntu 20.04 (LTS)
|
- Fedora 41
|
||||||
|
|
||||||
Note that the Yocto Project doesn't have access to private updates
|
Note that the Yocto Project doesn't have access to private updates
|
||||||
that some of these versions may have. Therefore, our testing has
|
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 16.04
|
||||||
- Ubuntu 18.04
|
- Ubuntu 18.04
|
||||||
- Ubuntu 19.04
|
- Ubuntu 19.04
|
||||||
|
- Ubuntu 20.04
|
||||||
- Ubuntu 21.10
|
- Ubuntu 21.10
|
||||||
|
- Ubuntu 24.10
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
|||||||
@@ -99,14 +99,19 @@ em {
|
|||||||
[alt='Permalink'] { color: #eee; }
|
[alt='Permalink'] { color: #eee; }
|
||||||
[alt='Permalink']:hover { color: black; }
|
[alt='Permalink']:hover { color: black; }
|
||||||
|
|
||||||
@media screen {
|
.literal-block {
|
||||||
/* content column
|
background: #f8f8f8;
|
||||||
*
|
}
|
||||||
* RTD theme's default is 800px as max width for the content, but we have
|
|
||||||
* tables with tons of columns, which need the full width of the view-port.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.wy-nav-content{max-width: none; }
|
@media screen {
|
||||||
|
.wy-nav-content {
|
||||||
|
max-width: 1000px;
|
||||||
|
background: #fcfcfc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wy-nav-content-wrap {
|
||||||
|
background: #efefef;
|
||||||
|
}
|
||||||
|
|
||||||
/* inline literal: drop the borderbox, padding and red color */
|
/* inline literal: drop the borderbox, padding and red color */
|
||||||
code, .rst-content tt, .rst-content code {
|
code, .rst-content tt, .rst-content code {
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ contact us with other suggestions.
|
|||||||
function of a particular part of the workflow gives you an idea of what might
|
function of a particular part of the workflow gives you an idea of what might
|
||||||
be going wrong.
|
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:**
|
#. **Know that you can generate a dependency graph and learn how to do it:**
|
||||||
A dependency graph shows dependencies between recipes, tasks, and targets.
|
A dependency graph shows dependencies between recipes, tasks, and targets.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
DISTRO = "poky"
|
DISTRO = "poky"
|
||||||
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
|
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
|
||||||
#DISTRO_VERSION = "3.4+snapshot-${METADATA_REVISION}"
|
#DISTRO_VERSION = "3.4+snapshot-${METADATA_REVISION}"
|
||||||
DISTRO_VERSION = "4.0.33"
|
DISTRO_VERSION = "4.0.35"
|
||||||
DISTRO_CODENAME = "kirkstone"
|
DISTRO_CODENAME = "kirkstone"
|
||||||
SDK_VENDOR = "-pokysdk"
|
SDK_VENDOR = "-pokysdk"
|
||||||
SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
|
SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
|
||||||
@@ -41,12 +41,16 @@ SANITY_TESTED_DISTROS ?= " \
|
|||||||
fedora-37 \n \
|
fedora-37 \n \
|
||||||
fedora-39 \n \
|
fedora-39 \n \
|
||||||
fedora-40 \n \
|
fedora-40 \n \
|
||||||
|
fedora-41 \n \
|
||||||
debian-11 \n \
|
debian-11 \n \
|
||||||
|
debian-12 \n \
|
||||||
opensuseleap-15.3 \n \
|
opensuseleap-15.3 \n \
|
||||||
almalinux-8.8 \n \
|
almalinux-8.8 \n \
|
||||||
almalinux-8.9 \n \
|
almalinux-8.9 \n \
|
||||||
almalinux-8.10 \n \
|
almalinux-8.10 \n \
|
||||||
almalinux-9.4 \n \
|
almalinux-9.4 \n \
|
||||||
|
rocky-8 \n \
|
||||||
|
rocky-9 \n \
|
||||||
"
|
"
|
||||||
# add poky sanity bbclass
|
# add poky sanity bbclass
|
||||||
INHERIT += "poky-sanity"
|
INHERIT += "poky-sanity"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ SRCREV = "1a3e1343761b30750bed70e0fd688f6d3c7b3717"
|
|||||||
PV = "0.1+git${SRCPV}"
|
PV = "0.1+git${SRCPV}"
|
||||||
PR = "r2"
|
PR = "r2"
|
||||||
|
|
||||||
SRC_URI = "git://git.yoctoproject.org/dbus-wait;branch=master"
|
SRC_URI = "git://git.yoctoproject.org/dbus-wait;branch=master;protocol=https"
|
||||||
UPSTREAM_CHECK_COMMITS = "1"
|
UPSTREAM_CHECK_COMMITS = "1"
|
||||||
RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
|
RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ DEPENDS = "dbus"
|
|||||||
SRCREV = "6cc6077a36fe2648a5f993fe7c16c9632f946517"
|
SRCREV = "6cc6077a36fe2648a5f993fe7c16c9632f946517"
|
||||||
PV = "0.1+git${SRCPV}"
|
PV = "0.1+git${SRCPV}"
|
||||||
|
|
||||||
SRC_URI = "git://git.yoctoproject.org/dbus-wait;branch=master"
|
SRC_URI = "git://git.yoctoproject.org/dbus-wait;branch=master;protocol=https"
|
||||||
UPSTREAM_CHECK_COMMITS = "1"
|
UPSTREAM_CHECK_COMMITS = "1"
|
||||||
RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
|
RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda
|
|||||||
|
|
||||||
INHIBIT_DEFAULT_DEPS = "1"
|
INHIBIT_DEFAULT_DEPS = "1"
|
||||||
|
|
||||||
SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master"
|
SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master;protocol=https"
|
||||||
SRCREV = "a2885dd7d25380d23627e7544b7bbb55014b16ee"
|
SRCREV = "f280847494763cdcf71197557a81ba7d8a6bce42"
|
||||||
|
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
|
|||||||
@@ -859,7 +859,7 @@ result: $result
|
|||||||
metadata revisions:
|
metadata revisions:
|
||||||
END
|
END
|
||||||
cat ${BUILDHISTORY_DIR}/metadata-revs >> $commitmsgfile
|
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
|
rm $commitmsgfile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ def get_os_release():
|
|||||||
key, val = line.rstrip().split('=', 1)
|
key, val = line.rstrip().split('=', 1)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
continue
|
continue
|
||||||
data[key.strip()] = val.strip('"')
|
data[key.strip()] = val.strip('"\'')
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def release_dict_osr():
|
def release_dict_osr():
|
||||||
|
|||||||
@@ -276,7 +276,7 @@
|
|||||||
"expected_results": "this should output the directory of the devtool script and it should be within the sdk workdir you are working in. \n\n"
|
"expected_results": "this should output the directory of the devtool script and it should be within the sdk workdir you are working in. \n\n"
|
||||||
},
|
},
|
||||||
"5": {
|
"5": {
|
||||||
"action": " 4a) git clone git://git.openembedded.org/meta-openembedded in layers/build directory \n \n4b) Add meta-openembedded/meta-oe in bblayer.conf as mentioned below: ${SDKBASEMETAPATH}/layers/build/meta-openembedded/meta-oe \\ \n\n4c) devtool add \"npm://registry.npmjs.org;name=npm;version=2.2.0\" \n\n",
|
"action": " 4a) git clone https://git.openembedded.org/meta-openembedded in layers/build directory \n \n4b) Add meta-openembedded/meta-oe in bblayer.conf as mentioned below: ${SDKBASEMETAPATH}/layers/build/meta-openembedded/meta-oe \\ \n\n4c) devtool add \"npm://registry.npmjs.org;name=npm;version=2.2.0\" \n\n",
|
||||||
"expected_results": " This should automatically create the recipe npm.bb under /recipes/npm/npm.bb \n\n"
|
"expected_results": " This should automatically create the recipe npm.bb under /recipes/npm/npm.bb \n\n"
|
||||||
},
|
},
|
||||||
"6": {
|
"6": {
|
||||||
|
|||||||
@@ -246,7 +246,7 @@
|
|||||||
],
|
],
|
||||||
"execution": {
|
"execution": {
|
||||||
"1": {
|
"1": {
|
||||||
"action": "Clone eclipse-poky source. \n \n - git clone git://git.yoctoproject.org/eclipse-poky \n\n",
|
"action": "Clone eclipse-poky source. \n \n - git clone https://git.yoctoproject.org/eclipse-poky \n\n",
|
||||||
"expected_results": "Eclipse plugin is successfully installed \n\nDocumentation is there. For example if you have release yocto-2.0.1 you will found on https://downloads.yoctoproject.org/releases/yocto/yocto-2.0.1/eclipse-plugin/mars/ archive with documentation like org.yocto.doc-development-$date.zip \n \n"
|
"expected_results": "Eclipse plugin is successfully installed \n\nDocumentation is there. For example if you have release yocto-2.0.1 you will found on https://downloads.yoctoproject.org/releases/yocto/yocto-2.0.1/eclipse-plugin/mars/ archive with documentation like org.yocto.doc-development-$date.zip \n \n"
|
||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
],
|
],
|
||||||
"execution": {
|
"execution": {
|
||||||
"1": {
|
"1": {
|
||||||
"action": "Set up yocto project and toaster test environment. \ncd ${installdir} \ngit clone git://git.yoctoproject.org/poky \n\n",
|
"action": "Set up yocto project and toaster test environment. \ncd ${installdir} \ngit clone https://git.yoctoproject.org/poky \n\n",
|
||||||
"expected_results": "NA \n\n"
|
"expected_results": "NA \n\n"
|
||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
|
|||||||
@@ -13,5 +13,5 @@ class BuildTests(OESDKTestCase):
|
|||||||
"""
|
"""
|
||||||
def test_docs_build(self):
|
def test_docs_build(self):
|
||||||
with tempfile.TemporaryDirectory(prefix='docs-tarball-build-', dir=self.tc.sdk_dir) as testdir:
|
with tempfile.TemporaryDirectory(prefix='docs-tarball-build-', dir=self.tc.sdk_dir) as testdir:
|
||||||
self._run('git clone git://git.yoctoproject.org/yocto-docs %s' % testdir)
|
self._run('git clone https://git.yoctoproject.org/yocto-docs %s' % testdir)
|
||||||
self._run('cd %s/documentation && make html' % testdir)
|
self._run('cd %s/documentation && make html' % testdir)
|
||||||
|
|||||||
@@ -301,8 +301,8 @@ class Archiver(OESelftestTestCase):
|
|||||||
|
|
||||||
bb_vars = get_bb_vars(['DEPLOY_DIR_SRC'])
|
bb_vars = get_bb_vars(['DEPLOY_DIR_SRC'])
|
||||||
for target_file_name in [
|
for target_file_name in [
|
||||||
'gitsmshallow_git.yoctoproject.org.git-submodule-test_a2885dd-1_master.tar.gz',
|
'gitsmshallow_git.yoctoproject.org.git-submodule-test_f280847-1_master.tar.gz',
|
||||||
'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test1_bare_120f4c7-1.tar.gz',
|
'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test1_bare_79a0efa-1.tar.gz',
|
||||||
'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test2_bare_f66699e-1.tar.gz',
|
'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test2_bare_f66699e-1.tar.gz',
|
||||||
'gitsmshallow_git.openembedded.org.bitbake_bare_52a144a-1.tar.gz',
|
'gitsmshallow_git.openembedded.org.bitbake_bare_52a144a-1.tar.gz',
|
||||||
'gitsmshallow_git.openembedded.org.bitbake_bare_c39b997-1.tar.gz'
|
'gitsmshallow_git.openembedded.org.bitbake_bare_c39b997-1.tar.gz'
|
||||||
|
|||||||
@@ -517,7 +517,7 @@ class DevtoolAddTests(DevtoolBase):
|
|||||||
def test_devtool_add_fetch_git(self):
|
def test_devtool_add_fetch_git(self):
|
||||||
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
|
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
|
||||||
self.track_for_cleanup(tempdir)
|
self.track_for_cleanup(tempdir)
|
||||||
url = 'gitsm://git.yoctoproject.org/mraa'
|
url = 'gitsm://git.yoctoproject.org/mraa;protocol=https'
|
||||||
url_branch = '%s;branch=master' % url
|
url_branch = '%s;branch=master' % url
|
||||||
checkrev = 'ae127b19a50aa54255e4330ccfdd9a5d058e581d'
|
checkrev = 'ae127b19a50aa54255e4330ccfdd9a5d058e581d'
|
||||||
testrecipe = 'mraa'
|
testrecipe = 'mraa'
|
||||||
@@ -526,7 +526,7 @@ class DevtoolAddTests(DevtoolBase):
|
|||||||
self.track_for_cleanup(self.workspacedir)
|
self.track_for_cleanup(self.workspacedir)
|
||||||
self.add_command_to_tearDown('bitbake -c cleansstate %s' % testrecipe)
|
self.add_command_to_tearDown('bitbake -c cleansstate %s' % testrecipe)
|
||||||
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
|
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
|
||||||
result = runCmd('devtool add %s %s -a -f %s' % (testrecipe, srcdir, url))
|
result = runCmd('devtool add %s %s -a "%s"' % (testrecipe, srcdir, url))
|
||||||
self.assertExists(os.path.join(self.workspacedir, 'conf', 'layer.conf'), 'Workspace directory not created: %s' % result.output)
|
self.assertExists(os.path.join(self.workspacedir, 'conf', 'layer.conf'), 'Workspace directory not created: %s' % result.output)
|
||||||
self.assertTrue(os.path.isfile(os.path.join(srcdir, 'imraa', 'imraa.c')), 'Unable to find imraa/imraa.c in source directory')
|
self.assertTrue(os.path.isfile(os.path.join(srcdir, 'imraa', 'imraa.c')), 'Unable to find imraa/imraa.c in source directory')
|
||||||
# Test devtool status
|
# Test devtool status
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class ExternalSrc(OESelftestTestCase):
|
|||||||
# so we check only that a recipe with externalsrc can be parsed
|
# so we check only that a recipe with externalsrc can be parsed
|
||||||
def test_externalsrc_srctree_hash_files(self):
|
def test_externalsrc_srctree_hash_files(self):
|
||||||
test_recipe = "git-submodule-test"
|
test_recipe = "git-submodule-test"
|
||||||
git_url = "git://git.yoctoproject.org/git-submodule-test"
|
git_url = "https://git.yoctoproject.org/git-submodule-test"
|
||||||
externalsrc_dir = tempfile.TemporaryDirectory(prefix="externalsrc").name
|
externalsrc_dir = tempfile.TemporaryDirectory(prefix="externalsrc").name
|
||||||
|
|
||||||
self.write_config(
|
self.write_config(
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ PREMIRRORS:forcevariable = ""
|
|||||||
# No mirrors and broken git, should fail
|
# No mirrors and broken git, should fail
|
||||||
features = """
|
features = """
|
||||||
DL_DIR = "%s"
|
DL_DIR = "%s"
|
||||||
|
SRC_URI:pn-dbus-wait = "git://git.yoctoproject.org/dbus-wait;branch=master;protocol=git"
|
||||||
GIT_PROXY_COMMAND = "false"
|
GIT_PROXY_COMMAND = "false"
|
||||||
MIRRORS:forcevariable = ""
|
MIRRORS:forcevariable = ""
|
||||||
PREMIRRORS:forcevariable = ""
|
PREMIRRORS:forcevariable = ""
|
||||||
@@ -46,6 +47,7 @@ PREMIRRORS:forcevariable = ""
|
|||||||
# Broken git but a specific mirror
|
# Broken git but a specific mirror
|
||||||
features = """
|
features = """
|
||||||
DL_DIR = "%s"
|
DL_DIR = "%s"
|
||||||
|
SRC_URI:pn-dbus-wait = "git://git.yoctoproject.org/dbus-wait;branch=master;protocol=git"
|
||||||
GIT_PROXY_COMMAND = "false"
|
GIT_PROXY_COMMAND = "false"
|
||||||
MIRRORS:forcevariable = "git://.*/.* http://downloads.yoctoproject.org/mirror/sources/"
|
MIRRORS:forcevariable = "git://.*/.* http://downloads.yoctoproject.org/mirror/sources/"
|
||||||
""" % dldir
|
""" % dldir
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ class RecipetoolCreateTests(RecipetoolBase):
|
|||||||
tempsrc = os.path.join(self.tempdir, 'srctree')
|
tempsrc = os.path.join(self.tempdir, 'srctree')
|
||||||
os.makedirs(tempsrc)
|
os.makedirs(tempsrc)
|
||||||
recipefile = os.path.join(self.tempdir, 'libmatchbox.bb')
|
recipefile = os.path.join(self.tempdir, 'libmatchbox.bb')
|
||||||
srcuri = 'git://git.yoctoproject.org/libmatchbox'
|
srcuri = 'git://git.yoctoproject.org/libmatchbox;protocol=https'
|
||||||
result = runCmd(['recipetool', 'create', '-o', recipefile, srcuri + ";rev=9f7cf8895ae2d39c465c04cc78e918c157420269", '-x', tempsrc])
|
result = runCmd(['recipetool', 'create', '-o', recipefile, srcuri + ";rev=9f7cf8895ae2d39c465c04cc78e918c157420269", '-x', tempsrc])
|
||||||
self.assertTrue(os.path.isfile(recipefile), 'recipetool did not create recipe file; output:\n%s' % result.output)
|
self.assertTrue(os.path.isfile(recipefile), 'recipetool did not create recipe file; output:\n%s' % result.output)
|
||||||
checkvars = {}
|
checkvars = {}
|
||||||
@@ -512,13 +512,13 @@ class RecipetoolCreateTests(RecipetoolBase):
|
|||||||
self._test_recipetool_create_git('http://git.yoctoproject.org/git/matchbox-keyboard')
|
self._test_recipetool_create_git('http://git.yoctoproject.org/git/matchbox-keyboard')
|
||||||
|
|
||||||
def test_recipetool_create_git_srcuri_master(self):
|
def test_recipetool_create_git_srcuri_master(self):
|
||||||
self._test_recipetool_create_git('git://git.yoctoproject.org/matchbox-keyboard;branch=master')
|
self._test_recipetool_create_git('git://git.yoctoproject.org/matchbox-keyboard;branch=master;protocol=https')
|
||||||
|
|
||||||
def test_recipetool_create_git_srcuri_branch(self):
|
def test_recipetool_create_git_srcuri_branch(self):
|
||||||
self._test_recipetool_create_git('git://git.yoctoproject.org/matchbox-keyboard;branch=matchbox-keyboard-0-1')
|
self._test_recipetool_create_git('git://git.yoctoproject.org/matchbox-keyboard;branch=matchbox-keyboard-0-1;protocol=https')
|
||||||
|
|
||||||
def test_recipetool_create_git_srcbranch(self):
|
def test_recipetool_create_git_srcbranch(self):
|
||||||
self._test_recipetool_create_git('git://git.yoctoproject.org/matchbox-keyboard', 'matchbox-keyboard-0-1')
|
self._test_recipetool_create_git('git://git.yoctoproject.org/matchbox-keyboard;protocol=https', 'matchbox-keyboard-0-1')
|
||||||
|
|
||||||
|
|
||||||
class RecipetoolTests(RecipetoolBase):
|
class RecipetoolTests(RecipetoolBase):
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class SStateTests(SStateBase):
|
|||||||
# Use dbus-wait as a local git repo we can add a commit between two builds in
|
# Use dbus-wait as a local git repo we can add a commit between two builds in
|
||||||
pn = 'dbus-wait'
|
pn = 'dbus-wait'
|
||||||
srcrev = '6cc6077a36fe2648a5f993fe7c16c9632f946517'
|
srcrev = '6cc6077a36fe2648a5f993fe7c16c9632f946517'
|
||||||
url = 'git://git.yoctoproject.org/dbus-wait'
|
url = 'https://git.yoctoproject.org/dbus-wait'
|
||||||
result = runCmd('git clone %s noname' % url, cwd=tempdir)
|
result = runCmd('git clone %s noname' % url, cwd=tempdir)
|
||||||
srcdir = os.path.join(tempdir, 'noname')
|
srcdir = os.path.join(tempdir, 'noname')
|
||||||
result = runCmd('git reset --hard %s' % srcrev, cwd=srcdir)
|
result = runCmd('git reset --hard %s' % srcrev, cwd=srcdir)
|
||||||
|
|||||||
@@ -14,9 +14,7 @@ PE = "1"
|
|||||||
# repo during parse
|
# repo during parse
|
||||||
SRCREV = "d637294e264adfeb29f390dfc393106fd4d41b17"
|
SRCREV = "d637294e264adfeb29f390dfc393106fd4d41b17"
|
||||||
|
|
||||||
SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master \
|
SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master"
|
||||||
file://CVE-2024-42040.patch \
|
|
||||||
"
|
|
||||||
|
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
B = "${WORKDIR}/build"
|
B = "${WORKDIR}/build"
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ SRC_URI += " file://0001-riscv32-Use-double-float-ABI-for-rv32.patch \
|
|||||||
file://CVE-2022-30790.patch \
|
file://CVE-2022-30790.patch \
|
||||||
file://CVE-2022-2347_1.patch \
|
file://CVE-2022-2347_1.patch \
|
||||||
file://CVE-2022-2347_2.patch \
|
file://CVE-2022-2347_2.patch \
|
||||||
|
file://CVE-2024-42040.patch \
|
||||||
file://CVE-2024-57254.patch \
|
file://CVE-2024-57254.patch \
|
||||||
file://CVE-2024-57255.patch \
|
file://CVE-2024-57255.patch \
|
||||||
file://CVE-2024-57256.patch \
|
file://CVE-2024-57256.patch \
|
||||||
|
|||||||
@@ -37,6 +37,10 @@ SRC_URI = "https://github.com/lathiat/avahi/releases/download/v${PV}/avahi-${PV}
|
|||||||
file://CVE-2023-38473.patch \
|
file://CVE-2023-38473.patch \
|
||||||
file://CVE-2024-52616.patch \
|
file://CVE-2024-52616.patch \
|
||||||
file://CVE-2024-52615.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/"
|
UPSTREAM_CHECK_URI = "https://github.com/lathiat/avahi/releases/"
|
||||||
|
|||||||
65
meta/recipes-connectivity/avahi/files/CVE-2025-68276.patch
Normal file
65
meta/recipes-connectivity/avahi/files/CVE-2025-68276.patch
Normal 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;
|
||||||
32
meta/recipes-connectivity/avahi/files/CVE-2025-68468.patch
Normal file
32
meta/recipes-connectivity/avahi/files/CVE-2025-68468.patch
Normal 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
|
||||||
|
|
||||||
36
meta/recipes-connectivity/avahi/files/CVE-2025-68471.patch
Normal file
36
meta/recipes-connectivity/avahi/files/CVE-2025-68471.patch
Normal 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
|
||||||
|
|
||||||
74
meta/recipes-connectivity/avahi/files/CVE-2026-24401.patch
Normal file
74
meta/recipes-connectivity/avahi/files/CVE-2026-24401.patch
Normal 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);
|
||||||
@@ -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 \
|
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/"
|
UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
|
||||||
# follow the ESV versions divisible by 2
|
# follow the ESV versions divisible by 2
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
From 4db2f19f4caac03c7f4da6363c140bd70df31386 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Erik Auerswald <auerswal@unix-ag.uni-kl.de>
|
||||||
|
Date: Sun, 15 Feb 2026 15:38:50 +0100
|
||||||
|
Subject: [PATCH] telnetd: don't allow systemd service credentials
|
||||||
|
|
||||||
|
The login(1) implementation of util-linux added support for
|
||||||
|
systemd service credentials in release 2.40. This allows to
|
||||||
|
bypass authentication by specifying a directory name in the
|
||||||
|
environment variable CREDENTIALS_DIRECTORY. If this directory
|
||||||
|
contains a file named 'login.noauth' with the content of 'yes',
|
||||||
|
login(1) skips authentication.
|
||||||
|
|
||||||
|
GNU Inetutils telnetd supports to set arbitrary environment
|
||||||
|
variables using the 'Environment' and 'New Environment'
|
||||||
|
Telnet options. This allows specifying a directory containing
|
||||||
|
'login.noauth'. A local user can create such a directory
|
||||||
|
and file, and, e.g., specify the user name 'root' to escalate
|
||||||
|
privileges.
|
||||||
|
|
||||||
|
This problem was reported by Ron Ben Yizhak in
|
||||||
|
<https://lists.gnu.org/archive/html/bug-inetutils/2026-02/msg00000.html>.
|
||||||
|
|
||||||
|
This commit clears CREDENTIALS_DIRECTORY from the environment
|
||||||
|
before executing login(1) to implement a simple fix that can
|
||||||
|
be backported easily.
|
||||||
|
|
||||||
|
* NEWS.md: Mention fix.
|
||||||
|
* THANKS: Mention Ron Ben Yizhak.
|
||||||
|
* telnetd/pty.c: Clear CREDENTIALS_DIRECTORY from the environment
|
||||||
|
before executing 'login'.
|
||||||
|
|
||||||
|
CVE: CVE-2026-28372
|
||||||
|
Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/inetutils.git/commit/?id=4db2f19f4caac03c7f4da6363c140bd70df31386]
|
||||||
|
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||||
|
---
|
||||||
|
NEWS | 5 +++++
|
||||||
|
THANKS | 1 +
|
||||||
|
telnetd/pty.c | 8 ++++++++
|
||||||
|
3 files changed, 14 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 877ca53b..f5172a71 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -1,5 +1,10 @@
|
||||||
|
GNU inetutils NEWS -- history of user-visible changes.
|
||||||
|
|
||||||
|
+** Prevent privilege escalation via telnetd abusing systemd service
|
||||||
|
+credentials support added to the login(1) implementation of util-linux
|
||||||
|
+in release 2.40. Reported by Ron Ben Yizhak in
|
||||||
|
+<https://lists.gnu.org/archive/html/bug-inetutils/2026-02/msg00000.html>.
|
||||||
|
+
|
||||||
|
* Noteworthy changes in release 2.2 (2021-09-01) [stable]
|
||||||
|
|
||||||
|
** ftp
|
||||||
|
diff --git a/THANKS b/THANKS
|
||||||
|
index 8d1d3dbb..ef5f6063 100644
|
||||||
|
--- a/THANKS
|
||||||
|
+++ b/THANKS
|
||||||
|
@@ -9,6 +9,7 @@ In particular:
|
||||||
|
NIIBE Yutaka (Security fixes & making talk finally work)
|
||||||
|
Nathan Neulinger (tftpd)
|
||||||
|
Thomas Bushnell (sockaddr sin_len field)
|
||||||
|
+ Ron Ben Yizhak (reported privilege escalation via telnetd)
|
||||||
|
|
||||||
|
Please see version control logs and ChangeLog.? for full credits.
|
||||||
|
|
||||||
|
diff --git a/telnetd/pty.c b/telnetd/pty.c
|
||||||
|
index c727e7be..f3518049 100644
|
||||||
|
--- a/telnetd/pty.c
|
||||||
|
+++ b/telnetd/pty.c
|
||||||
|
@@ -132,6 +132,14 @@ start_login (char *host, int autologin, char *name)
|
||||||
|
if (!cmd)
|
||||||
|
fatal (net, "can't expand login command line");
|
||||||
|
argcv_get (cmd, "", &argc, &argv);
|
||||||
|
+
|
||||||
|
+ /* util-linux's "login" introduced an authentication bypass method
|
||||||
|
+ * via environment variable "CREDENTIALS_DIRECTORY" in version 2.40.
|
||||||
|
+ * Clear it from the environment before executing "login" to prevent
|
||||||
|
+ * abuse via Telnet.
|
||||||
|
+ */
|
||||||
|
+ unsetenv ("CREDENTIALS_DIRECTORY");
|
||||||
|
+
|
||||||
|
execv (argv[0], argv);
|
||||||
|
syslog (LOG_ERR, "%s: %m\n", cmd);
|
||||||
|
fatalperror (net, cmd);
|
||||||
@@ -24,6 +24,9 @@ SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.xz \
|
|||||||
file://CVE-2022-39028.patch \
|
file://CVE-2022-39028.patch \
|
||||||
file://0001-CVE-2023-40303-ftpd-rcp-rlogin-rsh-rshd-uucpd-fix-ch.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://0002-CVE-2023-40303-Indent-changes-in-previous-commit.patch \
|
||||||
|
file://CVE-2026-24061-01.patch \
|
||||||
|
file://CVE-2026-24061-02.patch \
|
||||||
|
file://CVE-2026-28372.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
inherit autotools gettext update-alternatives texinfo
|
inherit autotools gettext update-alternatives texinfo
|
||||||
|
|||||||
@@ -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>
|
From: Hubert Kario <hkario@redhat.com>
|
||||||
Date: Tue, 15 Mar 2022 13:58:08 +0100
|
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
|
The RSA decryption as implemented before required very careful handling
|
||||||
of both the exit code returned by OpenSSL and the potentially returned
|
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)
|
(Merged from https://github.com/openssl/openssl/pull/13817)
|
||||||
|
|
||||||
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
|
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
|
||||||
|
|
||||||
---
|
---
|
||||||
crypto/rsa/rsa_ossl.c | 95 +++++++-
|
crypto/rsa/rsa_ossl.c | 95 +++++++-
|
||||||
crypto/rsa/rsa_pk1.c | 252 ++++++++++++++++++++++
|
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(-)
|
9 files changed, 393 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/crypto/rsa/rsa_ossl.c b/crypto/rsa/rsa_ossl.c
|
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
|
--- a/crypto/rsa/rsa_ossl.c
|
||||||
+++ b/crypto/rsa/rsa_ossl.c
|
+++ b/crypto/rsa/rsa_ossl.c
|
||||||
@@ -17,6 +17,9 @@
|
@@ -17,6 +17,9 @@
|
||||||
@@ -68,8 +69,8 @@ index 0fc642e777..330302ae55 100644
|
|||||||
+#include <openssl/hmac.h>
|
+#include <openssl/hmac.h>
|
||||||
|
|
||||||
static int rsa_ossl_public_encrypt(int flen, const unsigned char *from,
|
static int rsa_ossl_public_encrypt(int flen, const unsigned char *from,
|
||||||
unsigned char *to, RSA *rsa, int padding);
|
unsigned char *to, RSA *rsa, int padding);
|
||||||
@@ -377,8 +380,13 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
|
@@ -373,8 +376,13 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
|
||||||
BIGNUM *f, *ret;
|
BIGNUM *f, *ret;
|
||||||
int j, num = 0, r = -1;
|
int j, num = 0, r = -1;
|
||||||
unsigned char *buf = NULL;
|
unsigned char *buf = NULL;
|
||||||
@@ -83,7 +84,7 @@ index 0fc642e777..330302ae55 100644
|
|||||||
/*
|
/*
|
||||||
* Used only if the blinding structure is shared. A non-NULL unblind
|
* Used only if the blinding structure is shared. A non-NULL unblind
|
||||||
* instructs rsa_blinding_convert() and rsa_blinding_invert() to store
|
* 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;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,7 +96,7 @@ index 0fc642e777..330302ae55 100644
|
|||||||
/* make data into a big number */
|
/* make data into a big number */
|
||||||
if (BN_bin2bn(from, (int)flen, f) == NULL)
|
if (BN_bin2bn(from, (int)flen, f) == NULL)
|
||||||
goto err;
|
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))
|
if (!rsa_blinding_invert(blinding, ret, unblind, ctx))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
@@ -188,17 +189,17 @@ index 0fc642e777..330302ae55 100644
|
|||||||
break;
|
break;
|
||||||
case RSA_PKCS1_OAEP_PADDING:
|
case RSA_PKCS1_OAEP_PADDING:
|
||||||
r = RSA_padding_check_PKCS1_OAEP(to, num, buf, j, num, NULL, 0);
|
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
|
#endif
|
||||||
|
|
||||||
err:
|
err:
|
||||||
+ HMAC_CTX_free(hmac);
|
+ HMAC_CTX_free(hmac);
|
||||||
+ EVP_MD_free(md);
|
+ EVP_MD_free(md);
|
||||||
BN_CTX_end(ctx);
|
BN_CTX_end(ctx);
|
||||||
BN_CTX_free(ctx);
|
BN_CTX_free(ctx);
|
||||||
OPENSSL_clear_free(buf, num);
|
OPENSSL_clear_free(buf, num);
|
||||||
diff --git a/crypto/rsa/rsa_pk1.c b/crypto/rsa/rsa_pk1.c
|
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
|
--- a/crypto/rsa/rsa_pk1.c
|
||||||
+++ b/crypto/rsa/rsa_pk1.c
|
+++ b/crypto/rsa/rsa_pk1.c
|
||||||
@@ -21,10 +21,14 @@
|
@@ -21,10 +21,14 @@
|
||||||
@@ -214,7 +215,7 @@ index 51507fc030..5cd2b26879 100644
|
|||||||
|
|
||||||
+
|
+
|
||||||
int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen,
|
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,
|
@@ -273,6 +277,254 @@ int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
|
||||||
return constant_time_select_int(good, mlen, -1);
|
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
|
* 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
|
* 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
|
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
|
--- a/doc/man1/openssl-pkeyutl.pod.in
|
||||||
+++ b/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
|
@@ -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
|
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
|
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
|
--- a/doc/man1/openssl-rsautl.pod.in
|
||||||
+++ b/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,
|
@@ -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.
|
Hex dump the output data.
|
||||||
diff --git a/doc/man3/EVP_PKEY_CTX_ctrl.pod b/doc/man3/EVP_PKEY_CTX_ctrl.pod
|
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
|
--- a/doc/man3/EVP_PKEY_CTX_ctrl.pod
|
||||||
+++ b/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
|
@@ -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
|
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
|
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
|
--- a/doc/man3/EVP_PKEY_decrypt.pod
|
||||||
+++ b/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
|
@@ -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):
|
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
|
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
|
--- a/doc/man3/RSA_padding_add_PKCS1_type_1.pod
|
||||||
+++ b/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)>.
|
@@ -121,8 +121,8 @@ L<ERR_get_error(3)>.
|
||||||
@@ -570,7 +571,7 @@ index 9f7025c497..36ae18563f 100644
|
|||||||
|
|
||||||
L<RSA_public_encrypt(3)>,
|
L<RSA_public_encrypt(3)>,
|
||||||
diff --git a/doc/man3/RSA_public_encrypt.pod b/doc/man3/RSA_public_encrypt.pod
|
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
|
--- a/doc/man3/RSA_public_encrypt.pod
|
||||||
+++ b/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.
|
@@ -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
|
SSL, PKCS #1 v2.0
|
||||||
diff --git a/include/crypto/rsa.h b/include/crypto/rsa.h
|
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
|
--- a/include/crypto/rsa.h
|
||||||
+++ b/include/crypto/rsa.h
|
+++ b/include/crypto/rsa.h
|
||||||
@@ -83,6 +83,10 @@ int ossl_rsa_param_decode(RSA *rsa, const X509_ALGOR *alg);
|
@@ -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,
|
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,
|
+int ossl_rsa_padding_check_PKCS1_type_2(OSSL_LIB_CTX *ctx,
|
||||||
+ unsigned char *to, int tlen,
|
+ unsigned char *to, int tlen,
|
||||||
+ const unsigned char *from, int flen,
|
+ const unsigned char *from, int flen,
|
||||||
+ int num, unsigned char *kdk);
|
+ int num, unsigned char *kdk);
|
||||||
int ossl_rsa_padding_check_PKCS1_type_2_TLS(OSSL_LIB_CTX *ctx, unsigned char *to,
|
int ossl_rsa_padding_check_PKCS1_type_2_TLS(OSSL_LIB_CTX *ctx, unsigned char *to,
|
||||||
size_t tlen,
|
size_t tlen,
|
||||||
const unsigned char *from,
|
const unsigned char *from,
|
||||||
--
|
|
||||||
2.34.1
|
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
From: Hubert Kario <hkario@redhat.com>
|
||||||
Date: Thu, 27 Oct 2022 19:16:58 +0200
|
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
|
CVE: CVE-2023-50781
|
||||||
|
|
||||||
@@ -14,6 +14,7 @@ Reviewed-by: Tomas Mraz <tomas@openssl.org>
|
|||||||
(Merged from https://github.com/openssl/openssl/pull/13817)
|
(Merged from https://github.com/openssl/openssl/pull/13817)
|
||||||
|
|
||||||
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
|
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
|
||||||
|
|
||||||
---
|
---
|
||||||
crypto/cms/cms_env.c | 7 +++++
|
crypto/cms/cms_env.c | 7 +++++
|
||||||
crypto/evp/ctrl_params_translate.c | 6 +++++
|
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(-)
|
10 files changed, 95 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
diff --git a/crypto/cms/cms_env.c b/crypto/cms/cms_env.c
|
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
|
--- a/crypto/cms/cms_env.c
|
||||||
+++ b/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))
|
if (!ossl_cms_env_asn1_ctrl(ri, 1))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
@@ -43,15 +44,15 @@ index 445a16fb77..49b0289114 100644
|
|||||||
+ EVP_PKEY_CTX_ctrl_str(ktri->pctx, "rsa_pkcs1_implicit_rejection", "0");
|
+ EVP_PKEY_CTX_ctrl_str(ktri->pctx, "rsa_pkcs1_implicit_rejection", "0");
|
||||||
+
|
+
|
||||||
if (EVP_PKEY_decrypt(ktri->pctx, NULL, &eklen,
|
if (EVP_PKEY_decrypt(ktri->pctx, NULL, &eklen,
|
||||||
ktri->encryptedKey->data,
|
ktri->encryptedKey->data,
|
||||||
ktri->encryptedKey->length) <= 0)
|
ktri->encryptedKey->length)
|
||||||
diff --git a/crypto/evp/ctrl_params_translate.c b/crypto/evp/ctrl_params_translate.c
|
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
|
--- a/crypto/evp/ctrl_params_translate.c
|
||||||
+++ b/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[] = {
|
@@ -2249,6 +2249,12 @@ static const struct translation_st evp_pkey_ctx_translations[] = {
|
||||||
EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, NULL, NULL,
|
EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, NULL, NULL,
|
||||||
OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL, OSSL_PARAM_OCTET_PTR, NULL },
|
OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL, OSSL_PARAM_OCTET_PTR, NULL },
|
||||||
|
|
||||||
+ { SET, EVP_PKEY_RSA, 0, EVP_PKEY_OP_TYPE_CRYPT,
|
+ { SET, EVP_PKEY_RSA, 0, EVP_PKEY_OP_TYPE_CRYPT,
|
||||||
+ EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION, NULL,
|
+ EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION, NULL,
|
||||||
@@ -60,13 +61,13 @@ index 44d0895bcf..db7325439a 100644
|
|||||||
+ NULL },
|
+ NULL },
|
||||||
+
|
+
|
||||||
{ SET, EVP_PKEY_RSA_PSS, 0, EVP_PKEY_OP_TYPE_GEN,
|
{ SET, EVP_PKEY_RSA_PSS, 0, EVP_PKEY_OP_TYPE_GEN,
|
||||||
EVP_PKEY_CTRL_MD, "rsa_pss_keygen_md", NULL,
|
EVP_PKEY_CTRL_MD, "rsa_pss_keygen_md", NULL,
|
||||||
OSSL_ALG_PARAM_DIGEST, OSSL_PARAM_UTF8_STRING, fix_md },
|
OSSL_ALG_PARAM_DIGEST, OSSL_PARAM_UTF8_STRING, fix_md },
|
||||||
diff --git a/crypto/rsa/rsa_ossl.c b/crypto/rsa/rsa_ossl.c
|
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
|
--- a/crypto/rsa/rsa_ossl.c
|
||||||
+++ b/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;
|
BIGNUM *unblind = NULL;
|
||||||
BN_BLINDING *blinding = NULL;
|
BN_BLINDING *blinding = NULL;
|
||||||
|
|
||||||
@@ -79,7 +80,7 @@ index 330302ae55..4bdacd5ed9 100644
|
|||||||
if ((ctx = BN_CTX_new_ex(rsa->libctx)) == NULL)
|
if ((ctx = BN_CTX_new_ex(rsa->libctx)) == NULL)
|
||||||
goto err;
|
goto err;
|
||||||
BN_CTX_start(ctx);
|
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
|
* derive the Key Derivation Key from private exponent and public
|
||||||
* ciphertext
|
* 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
|
* 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
|
* 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;
|
goto err;
|
||||||
|
|
||||||
switch (padding) {
|
switch (padding) {
|
||||||
@@ -105,7 +106,7 @@ index 330302ae55..4bdacd5ed9 100644
|
|||||||
case RSA_PKCS1_OAEP_PADDING:
|
case RSA_PKCS1_OAEP_PADDING:
|
||||||
r = RSA_padding_check_PKCS1_OAEP(to, num, buf, j, num, NULL, 0);
|
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
|
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
|
--- a/crypto/rsa/rsa_pmeth.c
|
||||||
+++ b/crypto/rsa/rsa_pmeth.c
|
+++ b/crypto/rsa/rsa_pmeth.c
|
||||||
@@ -52,6 +52,8 @@ typedef struct {
|
@@ -52,6 +52,8 @@ typedef struct {
|
||||||
@@ -133,17 +134,17 @@ index 0bf5ac098a..81b031f81b 100644
|
|||||||
if (sctx->oaep_label) {
|
if (sctx->oaep_label) {
|
||||||
OPENSSL_free(dctx->oaep_label);
|
OPENSSL_free(dctx->oaep_label);
|
||||||
dctx->oaep_label = OPENSSL_memdup(sctx->oaep_label, sctx->oaep_labellen);
|
dctx->oaep_label = OPENSSL_memdup(sctx->oaep_label, sctx->oaep_labellen);
|
||||||
@@ -347,6 +351,7 @@ static int pkey_rsa_decrypt(EVP_PKEY_CTX *ctx,
|
@@ -345,6 +349,7 @@ static int pkey_rsa_decrypt(EVP_PKEY_CTX *ctx,
|
||||||
const unsigned char *in, size_t inlen)
|
const unsigned char *in, size_t inlen)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
+ int pad_mode;
|
+ int pad_mode;
|
||||||
RSA_PKEY_CTX *rctx = ctx->data;
|
RSA_PKEY_CTX *rctx = ctx->data;
|
||||||
/*
|
/*
|
||||||
* Discard const. Its marked as const because this may be a cached copy of
|
* 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,
|
@@ -365,7 +370,12 @@ static int pkey_rsa_decrypt(EVP_PKEY_CTX *ctx,
|
||||||
rctx->oaep_labellen,
|
rctx->oaep_labellen,
|
||||||
rctx->md, rctx->mgf1md);
|
rctx->md, rctx->mgf1md);
|
||||||
} else {
|
} else {
|
||||||
- ret = RSA_private_decrypt(inlen, in, out, rsa, rctx->pad_mode);
|
- ret = RSA_private_decrypt(inlen, in, out, rsa, rctx->pad_mode);
|
||||||
+ if (rctx->pad_mode == RSA_PKCS1_PADDING &&
|
+ 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);
|
*outlen = constant_time_select_s(constant_time_msb_s(ret), *outlen, ret);
|
||||||
ret = constant_time_select_int(constant_time_msb(ret), ret, 1);
|
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;
|
*(unsigned char **)p2 = rctx->oaep_label;
|
||||||
return rctx->oaep_labellen;
|
return rctx->oaep_labellen;
|
||||||
|
|
||||||
@@ -171,7 +172,7 @@ index 0bf5ac098a..81b031f81b 100644
|
|||||||
case EVP_PKEY_CTRL_PKCS7_SIGN:
|
case EVP_PKEY_CTRL_PKCS7_SIGN:
|
||||||
#ifndef OPENSSL_NO_CMS
|
#ifndef OPENSSL_NO_CMS
|
||||||
diff --git a/doc/man1/openssl-pkeyutl.pod.in b/doc/man1/openssl-pkeyutl.pod.in
|
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
|
--- a/doc/man1/openssl-pkeyutl.pod.in
|
||||||
+++ b/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.
|
@@ -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
|
=head1 RSA-PSS ALGORITHM
|
||||||
diff --git a/doc/man3/EVP_PKEY_CTX_ctrl.pod b/doc/man3/EVP_PKEY_CTX_ctrl.pod
|
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
|
--- a/doc/man3/EVP_PKEY_CTX_ctrl.pod
|
||||||
+++ b/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
|
@@ -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
|
=head2 DSA parameters
|
||||||
|
|
||||||
diff --git a/doc/man7/provider-asym_cipher.pod b/doc/man7/provider-asym_cipher.pod
|
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
|
--- a/doc/man7/provider-asym_cipher.pod
|
||||||
+++ b/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.
|
@@ -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()
|
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
|
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
|
--- a/include/openssl/core_names.h
|
||||||
+++ b/include/openssl/core_names.h
|
+++ b/include/openssl/core_names.h
|
||||||
@@ -292,6 +292,7 @@ extern "C" {
|
@@ -292,6 +292,7 @@ extern "C" {
|
||||||
#define OSSL_PKEY_PARAM_DIST_ID "distid"
|
#define OSSL_PKEY_PARAM_DIST_ID "distid"
|
||||||
#define OSSL_PKEY_PARAM_PUB_KEY "pub"
|
#define OSSL_PKEY_PARAM_PUB_KEY "pub"
|
||||||
#define OSSL_PKEY_PARAM_PRIV_KEY "priv"
|
#define OSSL_PKEY_PARAM_PRIV_KEY "priv"
|
||||||
+#define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection"
|
+#define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection"
|
||||||
|
|
||||||
/* Diffie-Hellman/DSA Parameters */
|
/* Diffie-Hellman/DSA Parameters */
|
||||||
#define OSSL_PKEY_PARAM_FFC_P "p"
|
#define OSSL_PKEY_PARAM_FFC_P "p"
|
||||||
@@ -467,6 +468,7 @@ extern "C" {
|
@@ -467,6 +468,7 @@ extern "C" {
|
||||||
#define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label"
|
#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_CLIENT_VERSION "tls-client-version"
|
||||||
#define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-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_IMPLICIT_REJECTION "implicit-rejection"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Encoder / decoder parameters
|
* Encoder / decoder parameters
|
||||||
diff --git a/include/openssl/rsa.h b/include/openssl/rsa.h
|
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
|
--- a/include/openssl/rsa.h
|
||||||
+++ b/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);
|
@@ -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_PKCS1_PADDING 1
|
||||||
# define RSA_NO_PADDING 3
|
#define RSA_NO_PADDING 3
|
||||||
# define RSA_PKCS1_OAEP_PADDING 4
|
#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);
|
@@ -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_PSS_PADDING 6
|
||||||
# define RSA_PKCS1_WITH_TLS_PADDING 7
|
#define RSA_PKCS1_WITH_TLS_PADDING 7
|
||||||
|
|
||||||
+/* internal RSA_ only */
|
+/* 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
|
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
|
--- a/providers/implementations/asymciphers/rsa_enc.c
|
||||||
+++ b/providers/implementations/asymciphers/rsa_enc.c
|
+++ b/providers/implementations/asymciphers/rsa_enc.c
|
||||||
@@ -75,6 +75,8 @@ typedef struct {
|
@@ -75,6 +75,8 @@ typedef struct {
|
||||||
@@ -288,7 +289,7 @@ index c8921acd6e..11a91e62b1 100644
|
|||||||
|
|
||||||
switch (RSA_test_flags(prsactx->rsa, RSA_FLAG_TYPE_MASK)) {
|
switch (RSA_test_flags(prsactx->rsa, RSA_FLAG_TYPE_MASK)) {
|
||||||
case RSA_FLAG_TYPE_RSA:
|
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;
|
PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -296,12 +297,12 @@ index c8921acd6e..11a91e62b1 100644
|
|||||||
size_t len = RSA_size(prsactx->rsa);
|
size_t len = RSA_size(prsactx->rsa);
|
||||||
|
|
||||||
if (!ossl_prov_is_running())
|
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);
|
OPENSSL_free(tbuf);
|
||||||
} else {
|
} else {
|
||||||
- ret = RSA_private_decrypt(inlen, in, out, prsactx->rsa,
|
- ret = RSA_private_decrypt(inlen, in, out, prsactx->rsa,
|
||||||
- prsactx->pad_mode);
|
- prsactx->pad_mode);
|
||||||
+ if ((prsactx->implicit_rejection == 0) &&
|
+ if ((prsactx->implicit_rejection == 0) &&
|
||||||
+ (prsactx->pad_mode == RSA_PKCS1_PADDING))
|
+ (prsactx->pad_mode == RSA_PKCS1_PADDING))
|
||||||
+ pad_mode = RSA_PKCS1_NO_IMPLICIT_REJECT_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);
|
*outlen = constant_time_select_s(constant_time_msb_s(ret), *outlen, ret);
|
||||||
ret = constant_time_select_int(constant_time_msb(ret), 0, 1);
|
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))
|
if (p != NULL && !OSSL_PARAM_set_uint(p, prsactx->alt_version))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -322,8 +323,8 @@ index c8921acd6e..11a91e62b1 100644
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -412,6 +424,7 @@ static const OSSL_PARAM known_gettable_ctx_params[] = {
|
@@ -414,6 +426,7 @@ static const OSSL_PARAM known_gettable_ctx_params[] = {
|
||||||
NULL, 0),
|
NULL, 0),
|
||||||
OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION, NULL),
|
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_TLS_NEGOTIATED_VERSION, NULL),
|
||||||
+ OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION, NULL),
|
+ OSSL_PARAM_uint(OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION, NULL),
|
||||||
@@ -353,6 +354,3 @@ index c8921acd6e..11a91e62b1 100644
|
|||||||
OSSL_PARAM_END
|
OSSL_PARAM_END
|
||||||
};
|
};
|
||||||
|
|
||||||
--
|
|
||||||
2.34.1
|
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
From: Hubert Kario <hkario@redhat.com>
|
||||||
Date: Tue, 22 Nov 2022 18:25:49 +0100
|
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
|
CVE: CVE-2023-50781
|
||||||
|
|
||||||
@@ -14,15 +14,16 @@ Reviewed-by: Tomas Mraz <tomas@openssl.org>
|
|||||||
(Merged from https://github.com/openssl/openssl/pull/13817)
|
(Merged from https://github.com/openssl/openssl/pull/13817)
|
||||||
|
|
||||||
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
|
Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
|
||||||
|
|
||||||
---
|
---
|
||||||
crypto/pkcs7/pk7_doit.c | 7 +++++++
|
crypto/pkcs7/pk7_doit.c | 7 +++++++
|
||||||
1 file changed, 7 insertions(+)
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
diff --git a/crypto/pkcs7/pk7_doit.c b/crypto/pkcs7/pk7_doit.c
|
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
|
--- a/crypto/pkcs7/pk7_doit.c
|
||||||
+++ b/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)
|
if (EVP_PKEY_decrypt_init(pctx) <= 0)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
@@ -34,8 +35,5 @@ index e9de097da1..6d3124da87 100644
|
|||||||
+ EVP_PKEY_CTX_ctrl_str(pctx, "rsa_pkcs1_implicit_rejection", "0");
|
+ EVP_PKEY_CTX_ctrl_str(pctx, "rsa_pkcs1_implicit_rejection", "0");
|
||||||
+
|
+
|
||||||
if (EVP_PKEY_decrypt(pctx, NULL, &eklen,
|
if (EVP_PKEY_decrypt(pctx, NULL, &eklen,
|
||||||
ri->enc_key->data, ri->enc_key->length) <= 0)
|
ri->enc_key->data, ri->enc_key->length)
|
||||||
goto err;
|
<= 0)
|
||||||
--
|
|
||||||
2.34.1
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ SRC_URI:append:class-nativesdk = " \
|
|||||||
file://environment.d-openssl.sh \
|
file://environment.d-openssl.sh \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI[sha256sum] = "d80c34f5cf902dccf1f1b5df5ebb86d0392e37049e5d73df1b3abae72e4ffe8b"
|
SRC_URI[sha256sum] = "fa5a4143b8aae18be53ef2f3caf29a2e0747430b8bc74d32d88335b94ab63072"
|
||||||
|
|
||||||
inherit lib_package multilib_header multilib_script ptest perlnative
|
inherit lib_package multilib_header multilib_script ptest perlnative
|
||||||
MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
|
MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
|
||||||
38
meta/recipes-core/busybox/busybox/CVE-2025-60876.patch
Normal file
38
meta/recipes-core/busybox/busybox/CVE-2025-60876.patch
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
From 32c0f6f240fcb041ae7df44a9bbf958d627a8212 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Radoslav Kolev <radoslav.kolev@suse.com>
|
||||||
|
Date: Fri, 21 Nov 2025 11:21:18 +0200
|
||||||
|
Subject: [PATCH] wget: don't allow control characters or spaces in the URL
|
||||||
|
|
||||||
|
Fixes CVE-2025-60876 malicious URL can be used to inject
|
||||||
|
HTTP headers in the request.
|
||||||
|
|
||||||
|
Signed-off-by: Radoslav Kolev <radoslav.kolev@suse.com>
|
||||||
|
Reviewed-by: Emmanuel Deloget <logout@free.fr>
|
||||||
|
|
||||||
|
CVE: CVE-2025-60876
|
||||||
|
Upstream-Status: Submitted [https://lists.busybox.net/pipermail/busybox/2025-November/091840.html]
|
||||||
|
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||||
|
---
|
||||||
|
networking/wget.c | 9 +++++++++
|
||||||
|
1 file changed, 9 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/networking/wget.c b/networking/wget.c
|
||||||
|
index 9ec0e67..7602563 100644
|
||||||
|
--- a/networking/wget.c
|
||||||
|
+++ b/networking/wget.c
|
||||||
|
@@ -536,6 +536,15 @@ static void parse_url(const char *src_url, struct host_info *h)
|
||||||
|
{
|
||||||
|
char *url, *p, *sp;
|
||||||
|
|
||||||
|
+ /* Fix for CVE-2025-60876 - don't allow control characters or spaces in the URL */
|
||||||
|
+ /* otherwise a malicious URL can be used to inject HTTP headers in the request */
|
||||||
|
+ const unsigned char *u = (void *) src_url;
|
||||||
|
+ while (*u) {
|
||||||
|
+ if (*u <= ' ')
|
||||||
|
+ bb_simple_error_msg_and_die("Unencoded control character found in the URL!");
|
||||||
|
+ u++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
free(h->allocated);
|
||||||
|
h->allocated = url = xstrdup(src_url);
|
||||||
|
|
||||||
@@ -61,6 +61,7 @@ SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
|
|||||||
file://CVE-2023-39810.patch \
|
file://CVE-2023-39810.patch \
|
||||||
file://CVE-2025-46394-01.patch \
|
file://CVE-2025-46394-01.patch \
|
||||||
file://CVE-2025-46394-02.patch \
|
file://CVE-2025-46394-02.patch \
|
||||||
|
file://CVE-2025-60876.patch \
|
||||||
"
|
"
|
||||||
SRC_URI:append:libc-musl = " file://musl.cfg "
|
SRC_URI:append:libc-musl = " file://musl.cfg "
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ SRCREV = "6cc6077a36fe2648a5f993fe7c16c9632f946517"
|
|||||||
PV = "0.1+git${SRCPV}"
|
PV = "0.1+git${SRCPV}"
|
||||||
PR = "r2"
|
PR = "r2"
|
||||||
|
|
||||||
SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master"
|
SRC_URI = "git://git.yoctoproject.org/${BPN};protocol=https;branch=master"
|
||||||
UPSTREAM_CHECK_COMMITS = "1"
|
UPSTREAM_CHECK_COMMITS = "1"
|
||||||
|
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
|
|||||||
43
meta/recipes-core/expat/expat/CVE-2026-24515.patch
Normal file
43
meta/recipes-core/expat/expat/CVE-2026-24515.patch
Normal 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;
|
||||||
27
meta/recipes-core/expat/expat/CVE-2026-25210-01.patch
Normal file
27
meta/recipes-core/expat/expat/CVE-2026-25210-01.patch
Normal 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)
|
||||||
37
meta/recipes-core/expat/expat/CVE-2026-25210-02.patch
Normal file
37
meta/recipes-core/expat/expat/CVE-2026-25210-02.patch
Normal 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)
|
||||||
28
meta/recipes-core/expat/expat/CVE-2026-25210-03.patch
Normal file
28
meta/recipes-core/expat/expat/CVE-2026-25210-03.patch
Normal 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);
|
||||||
@@ -30,6 +30,10 @@ SRC_URI = "https://github.com/libexpat/libexpat/releases/download/R_${VERSION_TA
|
|||||||
file://CVE-2024-45492.patch \
|
file://CVE-2024-45492.patch \
|
||||||
file://CVE-2024-50602-01.patch \
|
file://CVE-2024-50602-01.patch \
|
||||||
file://CVE-2024-50602-02.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/"
|
UPSTREAM_CHECK_URI = "https://github.com/libexpat/libexpat/releases/"
|
||||||
|
|||||||
58
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-0988.patch
Normal file
58
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-0988.patch
Normal 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);
|
||||||
|
}
|
||||||
48
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1484-01.patch
Normal file
48
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1484-01.patch
Normal 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);
|
||||||
|
|
||||||
45
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1484-02.patch
Normal file
45
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1484-02.patch
Normal 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;
|
||||||
44
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1485.patch
Normal file
44
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1485.patch
Normal 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;
|
||||||
|
|
||||||
42
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1489-01.patch
Normal file
42
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1489-01.patch
Normal 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)
|
||||||
|
{
|
||||||
30
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1489-02.patch
Normal file
30
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1489-02.patch
Normal 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,
|
||||||
290
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1489-03.patch
Normal file
290
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1489-03.patch
Normal 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';
|
||||||
68
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1489-04.patch
Normal file
68
meta/recipes-core/glib-2.0/glib-2.0/CVE-2026-1489-04.patch
Normal 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);
|
||||||
|
|
||||||
@@ -70,6 +70,14 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
|
|||||||
file://CVE-2025-14087-02.patch \
|
file://CVE-2025-14087-02.patch \
|
||||||
file://CVE-2025-14087-03.patch \
|
file://CVE-2025-14087-03.patch \
|
||||||
file://CVE-2025-14512.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"
|
SRC_URI:append:class-native = " file://relocate-modules.patch"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
SRCBRANCH ?= "release/2.35/master"
|
SRCBRANCH ?= "release/2.35/master"
|
||||||
PV = "2.35"
|
PV = "2.35"
|
||||||
SRCREV_glibc ?= "4e50046821f05ada5f14c76803845125ddb3ed7d"
|
SRCREV_glibc ?= "bb59339d02faebac534a87eea50c83c948f35b77"
|
||||||
SRCREV_localedef ?= "794da69788cbf9bf57b59a852f9f11307663fa87"
|
SRCREV_localedef ?= "794da69788cbf9bf57b59a852f9f11307663fa87"
|
||||||
|
|
||||||
GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"
|
GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ CVE_CHECK_IGNORE += "CVE-2023-4527"
|
|||||||
CVE_CHECK_IGNORE += " \
|
CVE_CHECK_IGNORE += " \
|
||||||
CVE-2023-0687 CVE-2023-4813 CVE-2023-4806 CVE-2023-4911 CVE-2023-5156 \
|
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-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"
|
DEPENDS += "gperf-native bison-native"
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx"
|
|||||||
|
|
||||||
inherit core-image setuptools3
|
inherit core-image setuptools3
|
||||||
|
|
||||||
SRCREV ?= "71ae82a596d3abee349327f46260920bc1a4aca9"
|
SRCREV ?= "c0c00ef9996a8f8f7752c6f26cb2bf4779585123"
|
||||||
SRC_URI = "git://git.yoctoproject.org/poky;branch=kirkstone \
|
SRC_URI = "git://git.yoctoproject.org/poky;protocol=https;branch=kirkstone \
|
||||||
file://Yocto_Build_Appliance.vmx \
|
file://Yocto_Build_Appliance.vmx \
|
||||||
file://Yocto_Build_Appliance.vmxf \
|
file://Yocto_Build_Appliance.vmxf \
|
||||||
file://README_VirtualBox_Guest_Additions.txt \
|
file://README_VirtualBox_Guest_Additions.txt \
|
||||||
|
|||||||
76
meta/recipes-core/libxml/libxml2/CVE-2026-0990.patch
Normal file
76
meta/recipes-core/libxml/libxml2/CVE-2026-0990.patch
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
49
meta/recipes-core/libxml/libxml2/CVE-2026-0992-01.patch
Normal file
49
meta/recipes-core/libxml/libxml2/CVE-2026-0992-01.patch
Normal 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) {
|
||||||
325
meta/recipes-core/libxml/libxml2/CVE-2026-0992-02.patch
Normal file
325
meta/recipes-core/libxml/libxml2/CVE-2026-0992-02.patch
Normal 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
|
||||||
33
meta/recipes-core/libxml/libxml2/CVE-2026-0992-03.patch
Normal file
33
meta/recipes-core/libxml/libxml2/CVE-2026-0992-03.patch
Normal 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)
|
||||||
@@ -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-6170.patch \
|
||||||
file://CVE-2025-9714.patch \
|
file://CVE-2025-9714.patch \
|
||||||
file://CVE-2025-7425.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"
|
SRC_URI[archive.sha256sum] = "60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee"
|
||||||
|
|||||||
@@ -64,8 +64,13 @@ python do_fetch() {
|
|||||||
shutil.copy2(db_file, db_tmp_file)
|
shutil.copy2(db_file, db_tmp_file)
|
||||||
|
|
||||||
if update_db_file(db_tmp_file, d) == True:
|
if update_db_file(db_tmp_file, d) == True:
|
||||||
# Update downloaded correctly, can swap files
|
# Update downloaded correctly, we can swap files. To avoid potential
|
||||||
shutil.move(db_tmp_file, db_file)
|
# NFS caching issues, ensure that the destination file has a new inode
|
||||||
|
# number. We do this in two steps as the downloads directory may be on
|
||||||
|
# a different filesystem to tmpdir we're working in.
|
||||||
|
new_file = "%s.new" % (db_file)
|
||||||
|
shutil.move(db_tmp_file, new_file)
|
||||||
|
os.rename(new_file, db_file)
|
||||||
else:
|
else:
|
||||||
# Update failed, do not modify the database
|
# Update failed, do not modify the database
|
||||||
bb.note("CVE database update failed")
|
bb.note("CVE database update failed")
|
||||||
|
|||||||
@@ -83,8 +83,13 @@ python do_fetch() {
|
|||||||
shutil.copy2(db_file, db_tmp_file)
|
shutil.copy2(db_file, db_tmp_file)
|
||||||
|
|
||||||
if update_db_file(db_tmp_file, d, database_time) == True:
|
if update_db_file(db_tmp_file, d, database_time) == True:
|
||||||
# Update downloaded correctly, can swap files
|
# Update downloaded correctly, we can swap files. To avoid potential
|
||||||
shutil.move(db_tmp_file, db_file)
|
# NFS caching issues, ensure that the destination file has a new inode
|
||||||
|
# number. We do this in two steps as the downloads directory may be on
|
||||||
|
# a different filesystem to tmpdir we're working in.
|
||||||
|
new_file = "%s.new" % (db_file)
|
||||||
|
shutil.move(db_tmp_file, new_file)
|
||||||
|
os.rename(new_file, db_file)
|
||||||
else:
|
else:
|
||||||
# Update failed, do not modify the database
|
# Update failed, do not modify the database
|
||||||
bb.warn("CVE database update failed")
|
bb.warn("CVE database update failed")
|
||||||
|
|||||||
42
meta/recipes-core/ncurses/files/CVE-2025-69720.patch
Normal file
42
meta/recipes-core/ncurses/files/CVE-2025-69720.patch
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
From 6f6db0e8fd14e40096a0ee6f8bdf32dedbd3fc9e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hitendra Prajapati <hprajapati@mvista.com>
|
||||||
|
Date: Mon, 6 Apr 2026 18:08:09 +0530
|
||||||
|
Subject: [PATCH] add limit-check in infocmp
|
||||||
|
|
||||||
|
origin : https://invisible-island.net/archives/ncurses/6.5/ncurses-6.5-20251213.patch.gz
|
||||||
|
Refer: https://github.com/Cao-Wuhui/CVE-2025-69720
|
||||||
|
patch by : Thomas E. Dickey <dickey@invisible-island.net>
|
||||||
|
|
||||||
|
CVE: CVE-2025-69720
|
||||||
|
Upstream-Status: Backport [https://github.com/ThomasDickey/ncurses-snapshots/commit/6f6db0e8fd14e40096a0ee6f8bdf32dedbd3fc9e]
|
||||||
|
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
|
||||||
|
---
|
||||||
|
progs/infocmp.c | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/progs/infocmp.c b/progs/infocmp.c
|
||||||
|
index 0ee0b958..538aca5a 100644
|
||||||
|
--- a/progs/infocmp.c
|
||||||
|
+++ b/progs/infocmp.c
|
||||||
|
@@ -816,7 +816,7 @@ lookup_params(const assoc * table, char *dst, char *src)
|
||||||
|
static void
|
||||||
|
analyze_string(const char *name, const char *cap, TERMTYPE2 *tp)
|
||||||
|
{
|
||||||
|
- char buf2[MAX_TERMINFO_LENGTH];
|
||||||
|
+ char buf2[MAX_TERMINFO_LENGTH + 1];
|
||||||
|
const char *sp;
|
||||||
|
const assoc *ap;
|
||||||
|
int tp_lines = tp->Numbers[2];
|
||||||
|
@@ -846,7 +846,8 @@ analyze_string(const char *name, const char *cap, TERMTYPE2 *tp)
|
||||||
|
if (VALID_STRING(cp) &&
|
||||||
|
cp[0] != '\0' &&
|
||||||
|
cp != cap) {
|
||||||
|
- len = strlen(cp);
|
||||||
|
+ if ((len = strlen(cp)) > MAX_TERMINFO_LENGTH)
|
||||||
|
+ len = MAX_TERMINFO_LENGTH;
|
||||||
|
_nc_STRNCPY(buf2, sp, len);
|
||||||
|
buf2[len] = '\0';
|
||||||
|
|
||||||
|
--
|
||||||
|
2.50.1
|
||||||
|
|
||||||
@@ -7,6 +7,7 @@ SRC_URI += "file://0001-tic-hang.patch \
|
|||||||
file://CVE-2023-50495.patch \
|
file://CVE-2023-50495.patch \
|
||||||
file://CVE-2023-45918.patch \
|
file://CVE-2023-45918.patch \
|
||||||
file://CVE-2025-6141.patch \
|
file://CVE-2025-6141.patch \
|
||||||
|
file://CVE-2025-69720.patch \
|
||||||
"
|
"
|
||||||
# commit id corresponds to the revision in package version
|
# commit id corresponds to the revision in package version
|
||||||
SRCREV = "a0bc708bc6954b5d3c0a38d92b683c3ec3135260"
|
SRCREV = "a0bc708bc6954b5d3c0a38d92b683c3ec3135260"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ DEPENDS = "gdk-pixbuf-native"
|
|||||||
SRCREV = "44afb7506d43cca15582b4c5b90ba5580344d75d"
|
SRCREV = "44afb7506d43cca15582b4c5b90ba5580344d75d"
|
||||||
PV = "0.1+git${SRCPV}"
|
PV = "0.1+git${SRCPV}"
|
||||||
|
|
||||||
SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master \
|
SRC_URI = "git://git.yoctoproject.org/${BPN};protocol=https;branch=master \
|
||||||
file://psplash-init \
|
file://psplash-init \
|
||||||
file://psplash-start.service \
|
file://psplash-start.service \
|
||||||
file://psplash-systemd.service \
|
file://psplash-systemd.service \
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ SECTION = "base"
|
|||||||
LICENSE = "GPL-2.0-or-later"
|
LICENSE = "GPL-2.0-or-later"
|
||||||
LIC_FILES_CHKSUM = "file://update-rc.d;beginline=5;endline=15;md5=d40a07c27f535425934bb5001f2037d9"
|
LIC_FILES_CHKSUM = "file://update-rc.d;beginline=5;endline=15;md5=d40a07c27f535425934bb5001f2037d9"
|
||||||
|
|
||||||
SRC_URI = "git://git.yoctoproject.org/update-rc.d;branch=master"
|
SRC_URI = "git://git.yoctoproject.org/update-rc.d;protocol=https;branch=master"
|
||||||
SRCREV = "8636cf478d426b568c1be11dbd9346f67e03adac"
|
SRCREV = "8636cf478d426b568c1be11dbd9346f67e03adac"
|
||||||
|
|
||||||
UPSTREAM_CHECK_COMMITS = "1"
|
UPSTREAM_CHECK_COMMITS = "1"
|
||||||
|
|||||||
@@ -58,3 +58,5 @@ BBCLASSEXTEND = "native nativesdk"
|
|||||||
|
|
||||||
# this CVE is for cloudflare zlib
|
# this CVE is for cloudflare zlib
|
||||||
CVE_CHECK_IGNORE += "CVE-2023-6992"
|
CVE_CHECK_IGNORE += "CVE-2023-6992"
|
||||||
|
# vulnerable file is not compiled
|
||||||
|
CVE_CHECK_IGNORE += "CVE-2026-22184"
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
From d2dd32bcdcc717a0da48d5e983c4396ccc79fc9c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Yoann Congal <yoann.congal@smile.fr>
|
||||||
|
Date: Sun, 15 Mar 2026 23:25:16 +0100
|
||||||
|
Subject: [PATCH] Use proper cast for PyMethodDef.ml_meth
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
PyMethodDef.ml_meth is of PyCFunction type. Using a
|
||||||
|
PyCFunctionWithKeywords cast for its initializer trigger build failure
|
||||||
|
with GCC >=14 [0]:
|
||||||
|
| FAILED: src/python/CMakeFiles/_createrepo_c.dir/createrepo_cmodule.c.o
|
||||||
|
| build/tmp-glibc/hosttools/gcc [...] python/createrepo_cmodule.c
|
||||||
|
| python/createrepo_cmodule.c:82:41: error: initialization of ‘PyObject * (*)(PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *)’} from incompatible pointer type ‘PyObject * (*)(PyObject *, PyObject *, PyObject *)’ {aka ‘struct _object * (*)(struct _object *, struct _object *, struct _object *)’} [-Wincompatible-pointer-types]
|
||||||
|
| 82 | {"xml_parse_main_metadata_together",(PyCFunctionWithKeywords)py_xml_parse_main_metadata_together,
|
||||||
|
| | ^
|
||||||
|
| src/python/createrepo_cmodule.c:82:41: note: (near initialization for ‘createrepo_c_methods[15].ml_meth’)
|
||||||
|
|
||||||
|
Fix this by using the proper (PyCFunction) cast.
|
||||||
|
|
||||||
|
[0]: https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types
|
||||||
|
|
||||||
|
Upstream-Status: Inappropriate [Upstream removed the patched code in 7092ab2 (Remove python bindings for xml_parse_main_metadata_together, 2022-03-17)]
|
||||||
|
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
|
||||||
|
---
|
||||||
|
src/python/createrepo_cmodule.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/python/createrepo_cmodule.c b/src/python/createrepo_cmodule.c
|
||||||
|
index c0b9200..94a206d 100644
|
||||||
|
--- a/src/python/createrepo_cmodule.c
|
||||||
|
+++ b/src/python/createrepo_cmodule.c
|
||||||
|
@@ -79,7 +79,7 @@ static struct PyMethodDef createrepo_c_methods[] = {
|
||||||
|
METH_VARARGS, xml_parse_repomd__doc__},
|
||||||
|
{"xml_parse_updateinfo", (PyCFunction)py_xml_parse_updateinfo,
|
||||||
|
METH_VARARGS, xml_parse_updateinfo__doc__},
|
||||||
|
- {"xml_parse_main_metadata_together",(PyCFunctionWithKeywords)py_xml_parse_main_metadata_together,
|
||||||
|
+ {"xml_parse_main_metadata_together",(PyCFunction)py_xml_parse_main_metadata_together,
|
||||||
|
METH_VARARGS | METH_KEYWORDS, xml_parse_main_metadata_together__doc__},
|
||||||
|
{"checksum_name_str", (PyCFunction)py_checksum_name_str,
|
||||||
|
METH_VARARGS, checksum_name_str__doc__},
|
||||||
@@ -6,6 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
|
|||||||
|
|
||||||
SRC_URI = "git://github.com/rpm-software-management/createrepo_c;branch=master;protocol=https \
|
SRC_URI = "git://github.com/rpm-software-management/createrepo_c;branch=master;protocol=https \
|
||||||
file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
|
file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
|
||||||
|
file://0001-Use-proper-cast-for-PyMethodDef.ml_meth.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRCREV = "a531ee881a8f1d9273b4383fb9fa604c56fff138"
|
SRCREV = "a531ee881a8f1d9273b4383fb9fa604c56fff138"
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
From adcf4aaca08ea712af4b4e886931fd8ed59c7bf7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Aleš Matěj <amatej@redhat.com>
|
||||||
|
Date: Tue, 2 Jan 2024 08:32:55 +0100
|
||||||
|
Subject: [PATCH] Fix build: use correct variable for category and env
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
- error: assignment to ‘COMPS_DocGroup *’ from incompatible pointer type ‘COMPS_DocCategory *’
|
||||||
|
- error: assignment to ‘COMPS_DocGroup *’ from incompatible pointer type ‘COMPS_DocEnv *’
|
||||||
|
|
||||||
|
For: https://fedoraproject.org/wiki/Changes/PortingToModernC
|
||||||
|
(https://fedoraproject.org/wiki/Toolchain/PortingToModernC)
|
||||||
|
(https://gitlab.com/fweimer-rh/fedora-modernc-logs/-/blob/main/logs/l/libcomps.log)
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/rpm-software-management/libcomps/commit/a71bce7e62990550a57688e51b14eb82d6de196b]
|
||||||
|
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
|
||||||
|
---
|
||||||
|
libcomps/tests/check_parse.c | 8 ++++----
|
||||||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libcomps/tests/check_parse.c b/libcomps/tests/check_parse.c
|
||||||
|
index e5935e1..689cb98 100644
|
||||||
|
--- a/libcomps/tests/check_parse.c
|
||||||
|
+++ b/libcomps/tests/check_parse.c
|
||||||
|
@@ -585,8 +585,8 @@ START_TEST(test_arch)
|
||||||
|
list = comps_doc_categories(doc2);
|
||||||
|
ck_assert(list->len == 2);
|
||||||
|
for (it = list->first, x=0; it != NULL; it = it->next, x++) {
|
||||||
|
- g = (COMPS_DocCategory*)it->comps_obj;
|
||||||
|
- str = (COMPS_Str*)comps_doccategory_get_id(g);
|
||||||
|
+ c = (COMPS_DocCategory*)it->comps_obj;
|
||||||
|
+ str = (COMPS_Str*)comps_doccategory_get_id(c);
|
||||||
|
ck_assert_msg(strcmp(str->val, cats[0][x]) == 0, "%s != %s",
|
||||||
|
str->val, cats[0][x]);
|
||||||
|
COMPS_OBJECT_DESTROY(str);
|
||||||
|
@@ -605,8 +605,8 @@ START_TEST(test_arch)
|
||||||
|
list = comps_doc_environments(doc2);
|
||||||
|
ck_assert(list->len == 2);
|
||||||
|
for (it = list->first, x=0; it != NULL; it = it->next, x++) {
|
||||||
|
- g = (COMPS_DocEnv*)it->comps_obj;
|
||||||
|
- str = (COMPS_Str*)comps_docenv_get_id(g);
|
||||||
|
+ e = (COMPS_DocEnv*)it->comps_obj;
|
||||||
|
+ str = (COMPS_Str*)comps_docenv_get_id(e);
|
||||||
|
ck_assert_msg(strcmp(str->val, envs[0][x]) == 0, "%s != %s",
|
||||||
|
str->val, envs[0][x]);
|
||||||
|
COMPS_OBJECT_DESTROY(str);
|
||||||
@@ -6,6 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
|
|||||||
|
|
||||||
SRC_URI = "git://github.com/rpm-software-management/libcomps.git;branch=master;protocol=https \
|
SRC_URI = "git://github.com/rpm-software-management/libcomps.git;branch=master;protocol=https \
|
||||||
file://0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
|
file://0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
|
||||||
|
file://0001-Fix-build-use-correct-variable-for-category-and-env.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRCREV = "dee4ae37f7818709802de28c4d16fa823bd83ae2"
|
SRCREV = "dee4ae37f7818709802de28c4d16fa823bd83ae2"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
require pseudo.inc
|
require pseudo.inc
|
||||||
|
|
||||||
SRC_URI = "git://git.yoctoproject.org/pseudo;branch=master \
|
SRC_URI = "git://git.yoctoproject.org/pseudo;protocol=https;branch=master \
|
||||||
file://fallback-passwd \
|
file://fallback-passwd \
|
||||||
file://fallback-group \
|
file://fallback-group \
|
||||||
"
|
"
|
||||||
@@ -12,9 +12,9 @@ SRC_URI:append:class-nativesdk = " \
|
|||||||
file://older-glibc-symbols.patch"
|
file://older-glibc-symbols.patch"
|
||||||
SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
|
SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
|
||||||
|
|
||||||
SRCREV = "125b020dd2bc46baa37a80784704e382732357b4"
|
SRCREV = "43cbd8fb4914328094ccdb4bb827d74b1bac2046"
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
PV = "1.9.2+git"
|
PV = "1.9.3+git"
|
||||||
|
|
||||||
# largefile and 64bit time_t support adds these macros via compiler flags globally
|
# largefile and 64bit time_t support adds these macros via compiler flags globally
|
||||||
# remove them for pseudo since pseudo intercepts some of the functions which will be
|
# remove them for pseudo since pseudo intercepts some of the functions which will be
|
||||||
|
|||||||
37
meta/recipes-devtools/python/python3-pip/CVE-2026-1703.patch
Normal file
37
meta/recipes-devtools/python/python3-pip/CVE-2026-1703.patch
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
From 4c651b70d60ed91b13663bcda9b3ed41748d0124 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Seth Michael Larson <seth@python.org>
|
||||||
|
Date: Fri, 30 Jan 2026 09:49:11 -0600
|
||||||
|
Subject: [PATCH] Use os.path.commonpath() instead of commonprefix()
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/pypa/pip/commit/4c651b70d60ed91b13663bcda9b3ed41748d0124]
|
||||||
|
CVE: CVE-2026-1703
|
||||||
|
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||||
|
---
|
||||||
|
news/+1ee322a1.bugfix.rst | 1 +
|
||||||
|
src/pip/_internal/utils/unpacking.py | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 news/+1ee322a1.bugfix.rst
|
||||||
|
|
||||||
|
diff --git a/news/+1ee322a1.bugfix.rst b/news/+1ee322a1.bugfix.rst
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..edb1b32
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/news/+1ee322a1.bugfix.rst
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+Use a path-segment prefix comparison, not char-by-char.
|
||||||
|
diff --git a/src/pip/_internal/utils/unpacking.py b/src/pip/_internal/utils/unpacking.py
|
||||||
|
index 5f63f97..3cebbf7 100644
|
||||||
|
--- a/src/pip/_internal/utils/unpacking.py
|
||||||
|
+++ b/src/pip/_internal/utils/unpacking.py
|
||||||
|
@@ -81,7 +81,7 @@ def is_within_directory(directory: str, target: str) -> bool:
|
||||||
|
abs_directory = os.path.abspath(directory)
|
||||||
|
abs_target = os.path.abspath(target)
|
||||||
|
|
||||||
|
- prefix = os.path.commonprefix([abs_directory, abs_target])
|
||||||
|
+ prefix = os.path.commonpath([abs_directory, abs_target])
|
||||||
|
return prefix == abs_directory
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
@@ -38,6 +38,7 @@ SRC_URI += "file://0001-change-shebang-to-python3.patch \
|
|||||||
file://no_shebang_mangling.patch \
|
file://no_shebang_mangling.patch \
|
||||||
file://reproducible.patch \
|
file://reproducible.patch \
|
||||||
file://CVE-2023-5752.patch \
|
file://CVE-2023-5752.patch \
|
||||||
|
file://CVE-2026-1703.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI[sha256sum] = "f29d589df8c8ab99c060e68ad294c4a9ed896624f6368c5349d70aa581b333d0"
|
SRC_URI[sha256sum] = "f29d589df8c8ab99c060e68ad294c4a9ed896624f6368c5349d70aa581b333d0"
|
||||||
|
|||||||
@@ -0,0 +1,125 @@
|
|||||||
|
From d41a814759a9fb49584ca8ab3f7295de49a85aa0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alex Gaynor <alex.gaynor@gmail.com>
|
||||||
|
Date: Mon, 16 Feb 2026 21:04:37 -0500
|
||||||
|
Subject: [PATCH] Handle exceptions in set_tlsext_servername_callback callbacks
|
||||||
|
(#1478)
|
||||||
|
|
||||||
|
When the servername callback raises an exception, call sys.excepthook
|
||||||
|
with the exception info and return SSL_TLSEXT_ERR_ALERT_FATAL to abort
|
||||||
|
the handshake. Previously, exceptions would propagate uncaught through
|
||||||
|
the CFFI callback boundary.
|
||||||
|
|
||||||
|
https://claude.ai/code/session_01P7y1XmWkdtC5UcmZwGDvGi
|
||||||
|
|
||||||
|
Co-authored-by: Claude <noreply@anthropic.com>
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/pyca/pyopenssl/commit/d41a814759a9fb49584ca8ab3f7295de49a85aa0]
|
||||||
|
CVE: CVE-2026-27448
|
||||||
|
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||||
|
---
|
||||||
|
CHANGELOG.rst | 2 ++
|
||||||
|
src/OpenSSL/SSL.py | 7 ++++++-
|
||||||
|
tests/test_ssl.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
3 files changed, 58 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
|
||||||
|
index c84b30a..5b6d523 100644
|
||||||
|
--- a/CHANGELOG.rst
|
||||||
|
+++ b/CHANGELOG.rst
|
||||||
|
@@ -20,6 +20,8 @@ Deprecations:
|
||||||
|
Changes:
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
+- ``Context.set_tlsext_servername_callback`` now handles exceptions raised in the callback by calling ``sys.excepthook`` and returning a fatal TLS alert. Previously, exceptions were silently swallowed and the handshake would proceed as if the callback had succeeded.
|
||||||
|
+
|
||||||
|
- Expose wrappers for some `DTLS
|
||||||
|
<https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security>`_
|
||||||
|
primitives. `#1026 <https://github.com/pyca/pyopenssl/pull/1026>`_
|
||||||
|
diff --git a/src/OpenSSL/SSL.py b/src/OpenSSL/SSL.py
|
||||||
|
index 12374b7..6ef44d4 100644
|
||||||
|
--- a/src/OpenSSL/SSL.py
|
||||||
|
+++ b/src/OpenSSL/SSL.py
|
||||||
|
@@ -1,5 +1,6 @@
|
||||||
|
import os
|
||||||
|
import socket
|
||||||
|
+import sys
|
||||||
|
from sys import platform
|
||||||
|
from functools import wraps, partial
|
||||||
|
from itertools import count, chain
|
||||||
|
@@ -1431,7 +1432,11 @@ class Context(object):
|
||||||
|
|
||||||
|
@wraps(callback)
|
||||||
|
def wrapper(ssl, alert, arg):
|
||||||
|
- callback(Connection._reverse_mapping[ssl])
|
||||||
|
+ try:
|
||||||
|
+ callback(Connection._reverse_mapping[ssl])
|
||||||
|
+ except Exception:
|
||||||
|
+ sys.excepthook(*sys.exc_info())
|
||||||
|
+ return _lib.SSL_TLSEXT_ERR_ALERT_FATAL
|
||||||
|
return 0
|
||||||
|
|
||||||
|
self._tlsext_servername_callback = _ffi.callback(
|
||||||
|
diff --git a/tests/test_ssl.py b/tests/test_ssl.py
|
||||||
|
index ccc8a38..77e1876 100644
|
||||||
|
--- a/tests/test_ssl.py
|
||||||
|
+++ b/tests/test_ssl.py
|
||||||
|
@@ -1884,6 +1884,56 @@ class TestServerNameCallback(object):
|
||||||
|
|
||||||
|
assert args == [(server, b"foo1.example.com")]
|
||||||
|
|
||||||
|
+ def test_servername_callback_exception(
|
||||||
|
+ self, monkeypatch: pytest.MonkeyPatch
|
||||||
|
+ ) -> None:
|
||||||
|
+ """
|
||||||
|
+ When the callback passed to `Context.set_tlsext_servername_callback`
|
||||||
|
+ raises an exception, ``sys.excepthook`` is called with the exception
|
||||||
|
+ and the handshake fails with an ``Error``.
|
||||||
|
+ """
|
||||||
|
+ exc = TypeError("server name callback failed")
|
||||||
|
+
|
||||||
|
+ def servername(conn: Connection) -> None:
|
||||||
|
+ raise exc
|
||||||
|
+
|
||||||
|
+ excepthook_calls: list[
|
||||||
|
+ tuple[type[BaseException], BaseException, object]
|
||||||
|
+ ] = []
|
||||||
|
+
|
||||||
|
+ def custom_excepthook(
|
||||||
|
+ exc_type: type[BaseException],
|
||||||
|
+ exc_value: BaseException,
|
||||||
|
+ exc_tb: object,
|
||||||
|
+ ) -> None:
|
||||||
|
+ excepthook_calls.append((exc_type, exc_value, exc_tb))
|
||||||
|
+
|
||||||
|
+ context = Context(SSLv23_METHOD)
|
||||||
|
+ context.set_tlsext_servername_callback(servername)
|
||||||
|
+
|
||||||
|
+ # Necessary to actually accept the connection
|
||||||
|
+ context.use_privatekey(load_privatekey(FILETYPE_PEM, server_key_pem))
|
||||||
|
+ context.use_certificate(
|
||||||
|
+ load_certificate(FILETYPE_PEM, server_cert_pem)
|
||||||
|
+ )
|
||||||
|
+
|
||||||
|
+ # Do a little connection to trigger the logic
|
||||||
|
+ server = Connection(context, None)
|
||||||
|
+ server.set_accept_state()
|
||||||
|
+
|
||||||
|
+ client = Connection(Context(SSLv23_METHOD), None)
|
||||||
|
+ client.set_connect_state()
|
||||||
|
+ client.set_tlsext_host_name(b"foo1.example.com")
|
||||||
|
+
|
||||||
|
+ monkeypatch.setattr(sys, "excepthook", custom_excepthook)
|
||||||
|
+ with pytest.raises(Error):
|
||||||
|
+ interact_in_memory(server, client)
|
||||||
|
+
|
||||||
|
+ assert len(excepthook_calls) == 1
|
||||||
|
+ assert excepthook_calls[0][0] is TypeError
|
||||||
|
+ assert excepthook_calls[0][1] is exc
|
||||||
|
+ assert excepthook_calls[0][2] is not None
|
||||||
|
+
|
||||||
|
|
||||||
|
class TestApplicationLayerProtoNegotiation(object):
|
||||||
|
"""
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
From 57f09bb4bb051d3bc2a1abd36e9525313d5cd408 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alex Gaynor <alex.gaynor@gmail.com>
|
||||||
|
Date: Wed, 18 Feb 2026 07:46:15 -0500
|
||||||
|
Subject: [PATCH] Fix buffer overflow in DTLS cookie generation callback
|
||||||
|
(#1479)
|
||||||
|
|
||||||
|
The cookie generate callback copied user-returned bytes into a
|
||||||
|
fixed-size native buffer without enforcing a maximum length. A
|
||||||
|
callback returning more than DTLS1_COOKIE_LENGTH bytes would overflow
|
||||||
|
the OpenSSL-provided buffer, corrupting adjacent memory.
|
||||||
|
|
||||||
|
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/pyca/pyopenssl/commit/57f09bb4bb051d3bc2a1abd36e9525313d5cd408]
|
||||||
|
CVE: CVE-2026-27459
|
||||||
|
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||||
|
---
|
||||||
|
CHANGELOG.rst | 1 +
|
||||||
|
src/OpenSSL/SSL.py | 7 +++++++
|
||||||
|
tests/test_ssl.py | 38 ++++++++++++++++++++++++++++++++++++++
|
||||||
|
3 files changed, 46 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
|
||||||
|
index 5b6d523..13d8abd 100644
|
||||||
|
--- a/CHANGELOG.rst
|
||||||
|
+++ b/CHANGELOG.rst
|
||||||
|
@@ -20,6 +20,7 @@ Deprecations:
|
||||||
|
Changes:
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
+- Properly raise an error if a DTLS cookie callback returned a cookie longer than ``DTLS1_COOKIE_LENGTH`` bytes. Previously this would result in a buffer-overflow.
|
||||||
|
- ``Context.set_tlsext_servername_callback`` now handles exceptions raised in the callback by calling ``sys.excepthook`` and returning a fatal TLS alert. Previously, exceptions were silently swallowed and the handshake would proceed as if the callback had succeeded.
|
||||||
|
|
||||||
|
- Expose wrappers for some `DTLS
|
||||||
|
diff --git a/src/OpenSSL/SSL.py b/src/OpenSSL/SSL.py
|
||||||
|
index 6ef44d4..fa1b556 100644
|
||||||
|
--- a/src/OpenSSL/SSL.py
|
||||||
|
+++ b/src/OpenSSL/SSL.py
|
||||||
|
@@ -556,11 +556,18 @@ class _CookieGenerateCallbackHelper(_CallbackExceptionHelper):
|
||||||
|
def __init__(self, callback):
|
||||||
|
_CallbackExceptionHelper.__init__(self)
|
||||||
|
|
||||||
|
+ max_cookie_len = getattr(_lib, "DTLS1_COOKIE_LENGTH", 255)
|
||||||
|
+
|
||||||
|
@wraps(callback)
|
||||||
|
def wrapper(ssl, out, outlen):
|
||||||
|
try:
|
||||||
|
conn = Connection._reverse_mapping[ssl]
|
||||||
|
cookie = callback(conn)
|
||||||
|
+ if len(cookie) > max_cookie_len:
|
||||||
|
+ raise ValueError(
|
||||||
|
+ f"Cookie too long (got {len(cookie)} bytes, "
|
||||||
|
+ f"max {max_cookie_len})"
|
||||||
|
+ )
|
||||||
|
out[0 : len(cookie)] = cookie
|
||||||
|
outlen[0] = len(cookie)
|
||||||
|
return 1
|
||||||
|
diff --git a/tests/test_ssl.py b/tests/test_ssl.py
|
||||||
|
index 77e1876..fb77b75 100644
|
||||||
|
--- a/tests/test_ssl.py
|
||||||
|
+++ b/tests/test_ssl.py
|
||||||
|
@@ -4455,3 +4455,41 @@ class TestDTLS(object):
|
||||||
|
assert 0 < c.get_cleartext_mtu() < 500
|
||||||
|
except NotImplementedError: # OpenSSL 1.1.0 and earlier
|
||||||
|
pass
|
||||||
|
+
|
||||||
|
+ def test_cookie_generate_too_long(self) -> None:
|
||||||
|
+ s_ctx = Context(DTLS_METHOD)
|
||||||
|
+
|
||||||
|
+ def generate_cookie(ssl: Connection) -> bytes:
|
||||||
|
+ return b"\x00" * 256
|
||||||
|
+
|
||||||
|
+ def verify_cookie(ssl: Connection, cookie: bytes) -> bool:
|
||||||
|
+ return True
|
||||||
|
+
|
||||||
|
+ s_ctx.set_cookie_generate_callback(generate_cookie)
|
||||||
|
+ s_ctx.set_cookie_verify_callback(verify_cookie)
|
||||||
|
+ s_ctx.use_privatekey(load_privatekey(FILETYPE_PEM, server_key_pem))
|
||||||
|
+ s_ctx.use_certificate(load_certificate(FILETYPE_PEM, server_cert_pem))
|
||||||
|
+ s_ctx.set_options(OP_NO_QUERY_MTU)
|
||||||
|
+ s = Connection(s_ctx)
|
||||||
|
+ s.set_accept_state()
|
||||||
|
+
|
||||||
|
+ c_ctx = Context(DTLS_METHOD)
|
||||||
|
+ c_ctx.set_options(OP_NO_QUERY_MTU)
|
||||||
|
+ c = Connection(c_ctx)
|
||||||
|
+ c.set_connect_state()
|
||||||
|
+
|
||||||
|
+ c.set_ciphertext_mtu(1500)
|
||||||
|
+ s.set_ciphertext_mtu(1500)
|
||||||
|
+
|
||||||
|
+ # Client sends ClientHello
|
||||||
|
+ try:
|
||||||
|
+ c.do_handshake()
|
||||||
|
+ except SSL.WantReadError:
|
||||||
|
+ pass
|
||||||
|
+ chunk = c.bio_read(self.LARGE_BUFFER)
|
||||||
|
+ s.bio_write(chunk)
|
||||||
|
+
|
||||||
|
+ # Server tries DTLSv1_listen, which triggers cookie generation.
|
||||||
|
+ # The oversized cookie should raise ValueError.
|
||||||
|
+ with pytest.raises(ValueError, match="Cookie too long"):
|
||||||
|
+ s.DTLSv1_listen()
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
@@ -10,6 +10,11 @@ SRC_URI[sha256sum] = "660b1b1425aac4a1bea1d94168a85d99f0b3144c869dd4390d27629d00
|
|||||||
PYPI_PACKAGE = "pyOpenSSL"
|
PYPI_PACKAGE = "pyOpenSSL"
|
||||||
inherit pypi setuptools3
|
inherit pypi setuptools3
|
||||||
|
|
||||||
|
SRC_URI += " \
|
||||||
|
file://CVE-2026-27448.patch \
|
||||||
|
file://CVE-2026-27459.patch \
|
||||||
|
"
|
||||||
|
|
||||||
PACKAGES =+ "${PN}-tests"
|
PACKAGES =+ "${PN}-tests"
|
||||||
FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
|
FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
|
||||||
|
|
||||||
|
|||||||
@@ -1,163 +0,0 @@
|
|||||||
From 289f29b0fe38baf2d7cb5854f4bb573cc34a6a15 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Miss Islington (bot)"
|
|
||||||
<31488909+miss-islington@users.noreply.github.com>
|
|
||||||
Date: Fri, 5 Dec 2025 16:21:57 +0100
|
|
||||||
Subject: [PATCH] [3.13] gh-119451: Fix a potential denial of service in
|
|
||||||
http.client (GH-119454) (#142139)
|
|
||||||
|
|
||||||
gh-119451: Fix a potential denial of service in http.client (GH-119454)
|
|
||||||
|
|
||||||
Reading the whole body of the HTTP response could cause OOM if
|
|
||||||
the Content-Length value is too large even if the server does not send
|
|
||||||
a large amount of data. Now the HTTP client reads large data by chunks,
|
|
||||||
therefore the amount of consumed memory is proportional to the amount
|
|
||||||
of sent data.
|
|
||||||
(cherry picked from commit 5a4c4a033a4a54481be6870aa1896fad732555b5)
|
|
||||||
|
|
||||||
CVE: CVE-2025-13836
|
|
||||||
Upstream-Status: Backport [https://github.com/python/cpython/commit/289f29b0fe38baf2d7cb5854f4bb573cc34a6a15]
|
|
||||||
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
|
|
||||||
---
|
|
||||||
Lib/http/client.py | 28 ++++++--
|
|
||||||
Lib/test/test_httplib.py | 66 +++++++++++++++++++
|
|
||||||
...-05-23-11-47-48.gh-issue-119451.qkJe9-.rst | 5 ++
|
|
||||||
3 files changed, 95 insertions(+), 4 deletions(-)
|
|
||||||
create mode 100644 Misc/NEWS.d/next/Security/2024-05-23-11-47-48.gh-issue-119451.qkJe9-.rst
|
|
||||||
|
|
||||||
diff --git a/Lib/http/client.py b/Lib/http/client.py
|
|
||||||
index d1b7b10..c8ab5b7 100644
|
|
||||||
--- a/Lib/http/client.py
|
|
||||||
+++ b/Lib/http/client.py
|
|
||||||
@@ -111,6 +111,11 @@ responses = {v: v.phrase for v in http.HTTPStatus.__members__.values()}
|
|
||||||
_MAXLINE = 65536
|
|
||||||
_MAXHEADERS = 100
|
|
||||||
|
|
||||||
+# Data larger than this will be read in chunks, to prevent extreme
|
|
||||||
+# overallocation.
|
|
||||||
+_MIN_READ_BUF_SIZE = 1 << 20
|
|
||||||
+
|
|
||||||
+
|
|
||||||
# Header name/value ABNF (http://tools.ietf.org/html/rfc7230#section-3.2)
|
|
||||||
#
|
|
||||||
# VCHAR = %x21-7E
|
|
||||||
@@ -628,10 +633,25 @@ class HTTPResponse(io.BufferedIOBase):
|
|
||||||
reading. If the bytes are truly not available (due to EOF), then the
|
|
||||||
IncompleteRead exception can be used to detect the problem.
|
|
||||||
"""
|
|
||||||
- data = self.fp.read(amt)
|
|
||||||
- if len(data) < amt:
|
|
||||||
- raise IncompleteRead(data, amt-len(data))
|
|
||||||
- return data
|
|
||||||
+ cursize = min(amt, _MIN_READ_BUF_SIZE)
|
|
||||||
+ data = self.fp.read(cursize)
|
|
||||||
+ if len(data) >= amt:
|
|
||||||
+ return data
|
|
||||||
+ if len(data) < cursize:
|
|
||||||
+ raise IncompleteRead(data, amt - len(data))
|
|
||||||
+
|
|
||||||
+ data = io.BytesIO(data)
|
|
||||||
+ data.seek(0, 2)
|
|
||||||
+ while True:
|
|
||||||
+ # This is a geometric increase in read size (never more than
|
|
||||||
+ # doubling out the current length of data per loop iteration).
|
|
||||||
+ delta = min(cursize, amt - cursize)
|
|
||||||
+ data.write(self.fp.read(delta))
|
|
||||||
+ if data.tell() >= amt:
|
|
||||||
+ return data.getvalue()
|
|
||||||
+ cursize += delta
|
|
||||||
+ if data.tell() < cursize:
|
|
||||||
+ raise IncompleteRead(data.getvalue(), amt - data.tell())
|
|
||||||
|
|
||||||
def _safe_readinto(self, b):
|
|
||||||
"""Same as _safe_read, but for reading into a buffer."""
|
|
||||||
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
|
|
||||||
index 77152cf..89ec5f6 100644
|
|
||||||
--- a/Lib/test/test_httplib.py
|
|
||||||
+++ b/Lib/test/test_httplib.py
|
|
||||||
@@ -1226,6 +1226,72 @@ class BasicTest(TestCase):
|
|
||||||
thread.join()
|
|
||||||
self.assertEqual(result, b"proxied data\n")
|
|
||||||
|
|
||||||
+ def test_large_content_length(self):
|
|
||||||
+ serv = socket.create_server((HOST, 0))
|
|
||||||
+ self.addCleanup(serv.close)
|
|
||||||
+
|
|
||||||
+ def run_server():
|
|
||||||
+ [conn, address] = serv.accept()
|
|
||||||
+ with conn:
|
|
||||||
+ while conn.recv(1024):
|
|
||||||
+ conn.sendall(
|
|
||||||
+ b"HTTP/1.1 200 Ok\r\n"
|
|
||||||
+ b"Content-Length: %d\r\n"
|
|
||||||
+ b"\r\n" % size)
|
|
||||||
+ conn.sendall(b'A' * (size//3))
|
|
||||||
+ conn.sendall(b'B' * (size - size//3))
|
|
||||||
+
|
|
||||||
+ thread = threading.Thread(target=run_server)
|
|
||||||
+ thread.start()
|
|
||||||
+ self.addCleanup(thread.join, 1.0)
|
|
||||||
+
|
|
||||||
+ conn = client.HTTPConnection(*serv.getsockname())
|
|
||||||
+ try:
|
|
||||||
+ for w in range(15, 27):
|
|
||||||
+ size = 1 << w
|
|
||||||
+ conn.request("GET", "/")
|
|
||||||
+ with conn.getresponse() as response:
|
|
||||||
+ self.assertEqual(len(response.read()), size)
|
|
||||||
+ finally:
|
|
||||||
+ conn.close()
|
|
||||||
+ thread.join(1.0)
|
|
||||||
+
|
|
||||||
+ def test_large_content_length_truncated(self):
|
|
||||||
+ serv = socket.create_server((HOST, 0))
|
|
||||||
+ self.addCleanup(serv.close)
|
|
||||||
+
|
|
||||||
+ def run_server():
|
|
||||||
+ while True:
|
|
||||||
+ [conn, address] = serv.accept()
|
|
||||||
+ with conn:
|
|
||||||
+ conn.recv(1024)
|
|
||||||
+ if not size:
|
|
||||||
+ break
|
|
||||||
+ conn.sendall(
|
|
||||||
+ b"HTTP/1.1 200 Ok\r\n"
|
|
||||||
+ b"Content-Length: %d\r\n"
|
|
||||||
+ b"\r\n"
|
|
||||||
+ b"Text" % size)
|
|
||||||
+
|
|
||||||
+ thread = threading.Thread(target=run_server)
|
|
||||||
+ thread.start()
|
|
||||||
+ self.addCleanup(thread.join, 1.0)
|
|
||||||
+
|
|
||||||
+ conn = client.HTTPConnection(*serv.getsockname())
|
|
||||||
+ try:
|
|
||||||
+ for w in range(18, 65):
|
|
||||||
+ size = 1 << w
|
|
||||||
+ conn.request("GET", "/")
|
|
||||||
+ with conn.getresponse() as response:
|
|
||||||
+ self.assertRaises(client.IncompleteRead, response.read)
|
|
||||||
+ conn.close()
|
|
||||||
+ finally:
|
|
||||||
+ conn.close()
|
|
||||||
+ size = 0
|
|
||||||
+ conn.request("GET", "/")
|
|
||||||
+ conn.close()
|
|
||||||
+ thread.join(1.0)
|
|
||||||
+
|
|
||||||
def test_putrequest_override_domain_validation(self):
|
|
||||||
"""
|
|
||||||
It should be possible to override the default validation
|
|
||||||
diff --git a/Misc/NEWS.d/next/Security/2024-05-23-11-47-48.gh-issue-119451.qkJe9-.rst b/Misc/NEWS.d/next/Security/2024-05-23-11-47-48.gh-issue-119451.qkJe9-.rst
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..6d6f25c
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Misc/NEWS.d/next/Security/2024-05-23-11-47-48.gh-issue-119451.qkJe9-.rst
|
|
||||||
@@ -0,0 +1,5 @@
|
|
||||||
+Fix a potential memory denial of service in the :mod:`http.client` module.
|
|
||||||
+When connecting to a malicious server, it could cause
|
|
||||||
+an arbitrary amount of memory to be allocated.
|
|
||||||
+This could have led to symptoms including a :exc:`MemoryError`, swapping, out
|
|
||||||
+of memory (OOM) killed processes or containers, or even system crashes.
|
|
||||||
--
|
|
||||||
2.50.1
|
|
||||||
|
|
||||||
@@ -1,364 +0,0 @@
|
|||||||
From 892747b4cf0f95ba8beb51c0d0658bfaa381ebca Mon Sep 17 00:00:00 2001
|
|
||||||
From: Łukasz Langa <lukasz@langa.pl>
|
|
||||||
Date: Fri, 31 Oct 2025 17:51:32 +0100
|
|
||||||
Subject: [PATCH] gh-136065: Fix quadratic complexity in os.path.expandvars()
|
|
||||||
(GH-134952) (GH-140851)
|
|
||||||
|
|
||||||
(cherry picked from commit f029e8db626ddc6e3a3beea4eff511a71aaceb5c)
|
|
||||||
|
|
||||||
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
|
|
||||||
|
|
||||||
CVE: CVE-2025-6075
|
|
||||||
|
|
||||||
Upstream-Status: Backport [https://github.com/python/cpython/commit/892747b4cf0f95ba8beb51c0d0658bfaa381ebca]
|
|
||||||
|
|
||||||
Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
|
|
||||||
---
|
|
||||||
Lib/ntpath.py | 126 ++++++------------
|
|
||||||
Lib/posixpath.py | 43 +++---
|
|
||||||
Lib/test/test_genericpath.py | 14 ++
|
|
||||||
Lib/test/test_ntpath.py | 20 ++-
|
|
||||||
...-05-30-22-33-27.gh-issue-136065.bu337o.rst | 1 +
|
|
||||||
5 files changed, 93 insertions(+), 111 deletions(-)
|
|
||||||
create mode 100644 Misc/NEWS.d/next/Security/2025-05-30-22-33-27.gh-issue-136065.bu337o.rst
|
|
||||||
|
|
||||||
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
|
|
||||||
index 9b0cca4..bd2b4e2 100644
|
|
||||||
--- a/Lib/ntpath.py
|
|
||||||
+++ b/Lib/ntpath.py
|
|
||||||
@@ -374,17 +374,23 @@ def expanduser(path):
|
|
||||||
# XXX With COMMAND.COM you can use any characters in a variable name,
|
|
||||||
# XXX except '^|<>='.
|
|
||||||
|
|
||||||
+_varpattern = r"'[^']*'?|%(%|[^%]*%?)|\$(\$|[-\w]+|\{[^}]*\}?)"
|
|
||||||
+_varsub = None
|
|
||||||
+_varsubb = None
|
|
||||||
+
|
|
||||||
def expandvars(path):
|
|
||||||
"""Expand shell variables of the forms $var, ${var} and %var%.
|
|
||||||
|
|
||||||
Unknown variables are left unchanged."""
|
|
||||||
path = os.fspath(path)
|
|
||||||
+ global _varsub, _varsubb
|
|
||||||
if isinstance(path, bytes):
|
|
||||||
if b'$' not in path and b'%' not in path:
|
|
||||||
return path
|
|
||||||
- import string
|
|
||||||
- varchars = bytes(string.ascii_letters + string.digits + '_-', 'ascii')
|
|
||||||
- quote = b'\''
|
|
||||||
+ if not _varsubb:
|
|
||||||
+ import re
|
|
||||||
+ _varsubb = re.compile(_varpattern.encode(), re.ASCII).sub
|
|
||||||
+ sub = _varsubb
|
|
||||||
percent = b'%'
|
|
||||||
brace = b'{'
|
|
||||||
rbrace = b'}'
|
|
||||||
@@ -393,94 +399,44 @@ def expandvars(path):
|
|
||||||
else:
|
|
||||||
if '$' not in path and '%' not in path:
|
|
||||||
return path
|
|
||||||
- import string
|
|
||||||
- varchars = string.ascii_letters + string.digits + '_-'
|
|
||||||
- quote = '\''
|
|
||||||
+ if not _varsub:
|
|
||||||
+ import re
|
|
||||||
+ _varsub = re.compile(_varpattern, re.ASCII).sub
|
|
||||||
+ sub = _varsub
|
|
||||||
percent = '%'
|
|
||||||
brace = '{'
|
|
||||||
rbrace = '}'
|
|
||||||
dollar = '$'
|
|
||||||
environ = os.environ
|
|
||||||
- res = path[:0]
|
|
||||||
- index = 0
|
|
||||||
- pathlen = len(path)
|
|
||||||
- while index < pathlen:
|
|
||||||
- c = path[index:index+1]
|
|
||||||
- if c == quote: # no expansion within single quotes
|
|
||||||
- path = path[index + 1:]
|
|
||||||
- pathlen = len(path)
|
|
||||||
- try:
|
|
||||||
- index = path.index(c)
|
|
||||||
- res += c + path[:index + 1]
|
|
||||||
- except ValueError:
|
|
||||||
- res += c + path
|
|
||||||
- index = pathlen - 1
|
|
||||||
- elif c == percent: # variable or '%'
|
|
||||||
- if path[index + 1:index + 2] == percent:
|
|
||||||
- res += c
|
|
||||||
- index += 1
|
|
||||||
- else:
|
|
||||||
- path = path[index+1:]
|
|
||||||
- pathlen = len(path)
|
|
||||||
- try:
|
|
||||||
- index = path.index(percent)
|
|
||||||
- except ValueError:
|
|
||||||
- res += percent + path
|
|
||||||
- index = pathlen - 1
|
|
||||||
- else:
|
|
||||||
- var = path[:index]
|
|
||||||
- try:
|
|
||||||
- if environ is None:
|
|
||||||
- value = os.fsencode(os.environ[os.fsdecode(var)])
|
|
||||||
- else:
|
|
||||||
- value = environ[var]
|
|
||||||
- except KeyError:
|
|
||||||
- value = percent + var + percent
|
|
||||||
- res += value
|
|
||||||
- elif c == dollar: # variable or '$$'
|
|
||||||
- if path[index + 1:index + 2] == dollar:
|
|
||||||
- res += c
|
|
||||||
- index += 1
|
|
||||||
- elif path[index + 1:index + 2] == brace:
|
|
||||||
- path = path[index+2:]
|
|
||||||
- pathlen = len(path)
|
|
||||||
- try:
|
|
||||||
- index = path.index(rbrace)
|
|
||||||
- except ValueError:
|
|
||||||
- res += dollar + brace + path
|
|
||||||
- index = pathlen - 1
|
|
||||||
- else:
|
|
||||||
- var = path[:index]
|
|
||||||
- try:
|
|
||||||
- if environ is None:
|
|
||||||
- value = os.fsencode(os.environ[os.fsdecode(var)])
|
|
||||||
- else:
|
|
||||||
- value = environ[var]
|
|
||||||
- except KeyError:
|
|
||||||
- value = dollar + brace + var + rbrace
|
|
||||||
- res += value
|
|
||||||
- else:
|
|
||||||
- var = path[:0]
|
|
||||||
- index += 1
|
|
||||||
- c = path[index:index + 1]
|
|
||||||
- while c and c in varchars:
|
|
||||||
- var += c
|
|
||||||
- index += 1
|
|
||||||
- c = path[index:index + 1]
|
|
||||||
- try:
|
|
||||||
- if environ is None:
|
|
||||||
- value = os.fsencode(os.environ[os.fsdecode(var)])
|
|
||||||
- else:
|
|
||||||
- value = environ[var]
|
|
||||||
- except KeyError:
|
|
||||||
- value = dollar + var
|
|
||||||
- res += value
|
|
||||||
- if c:
|
|
||||||
- index -= 1
|
|
||||||
+
|
|
||||||
+ def repl(m):
|
|
||||||
+ lastindex = m.lastindex
|
|
||||||
+ if lastindex is None:
|
|
||||||
+ return m[0]
|
|
||||||
+ name = m[lastindex]
|
|
||||||
+ if lastindex == 1:
|
|
||||||
+ if name == percent:
|
|
||||||
+ return name
|
|
||||||
+ if not name.endswith(percent):
|
|
||||||
+ return m[0]
|
|
||||||
+ name = name[:-1]
|
|
||||||
else:
|
|
||||||
- res += c
|
|
||||||
- index += 1
|
|
||||||
- return res
|
|
||||||
+ if name == dollar:
|
|
||||||
+ return name
|
|
||||||
+ if name.startswith(brace):
|
|
||||||
+ if not name.endswith(rbrace):
|
|
||||||
+ return m[0]
|
|
||||||
+ name = name[1:-1]
|
|
||||||
+
|
|
||||||
+ try:
|
|
||||||
+ if environ is None:
|
|
||||||
+ return os.fsencode(os.environ[os.fsdecode(name)])
|
|
||||||
+ else:
|
|
||||||
+ return environ[name]
|
|
||||||
+ except KeyError:
|
|
||||||
+ return m[0]
|
|
||||||
+
|
|
||||||
+ return sub(repl, path)
|
|
||||||
|
|
||||||
|
|
||||||
# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A\B.
|
|
||||||
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
|
|
||||||
index b8dd563..75020ee 100644
|
|
||||||
--- a/Lib/posixpath.py
|
|
||||||
+++ b/Lib/posixpath.py
|
|
||||||
@@ -279,42 +279,41 @@ def expanduser(path):
|
|
||||||
# This expands the forms $variable and ${variable} only.
|
|
||||||
# Non-existent variables are left unchanged.
|
|
||||||
|
|
||||||
-_varprog = None
|
|
||||||
-_varprogb = None
|
|
||||||
+_varpattern = r'\$(\w+|\{[^}]*\}?)'
|
|
||||||
+_varsub = None
|
|
||||||
+_varsubb = None
|
|
||||||
|
|
||||||
def expandvars(path):
|
|
||||||
"""Expand shell variables of form $var and ${var}. Unknown variables
|
|
||||||
are left unchanged."""
|
|
||||||
path = os.fspath(path)
|
|
||||||
- global _varprog, _varprogb
|
|
||||||
+ global _varsub, _varsubb
|
|
||||||
if isinstance(path, bytes):
|
|
||||||
if b'$' not in path:
|
|
||||||
return path
|
|
||||||
- if not _varprogb:
|
|
||||||
+ if not _varsubb:
|
|
||||||
import re
|
|
||||||
- _varprogb = re.compile(br'\$(\w+|\{[^}]*\})', re.ASCII)
|
|
||||||
- search = _varprogb.search
|
|
||||||
+ _varsubb = re.compile(_varpattern.encode(), re.ASCII).sub
|
|
||||||
+ sub = _varsubb
|
|
||||||
start = b'{'
|
|
||||||
end = b'}'
|
|
||||||
environ = getattr(os, 'environb', None)
|
|
||||||
else:
|
|
||||||
if '$' not in path:
|
|
||||||
return path
|
|
||||||
- if not _varprog:
|
|
||||||
+ if not _varsub:
|
|
||||||
import re
|
|
||||||
- _varprog = re.compile(r'\$(\w+|\{[^}]*\})', re.ASCII)
|
|
||||||
- search = _varprog.search
|
|
||||||
+ _varsub = re.compile(_varpattern, re.ASCII).sub
|
|
||||||
+ sub = _varsub
|
|
||||||
start = '{'
|
|
||||||
end = '}'
|
|
||||||
environ = os.environ
|
|
||||||
- i = 0
|
|
||||||
- while True:
|
|
||||||
- m = search(path, i)
|
|
||||||
- if not m:
|
|
||||||
- break
|
|
||||||
- i, j = m.span(0)
|
|
||||||
- name = m.group(1)
|
|
||||||
- if name.startswith(start) and name.endswith(end):
|
|
||||||
+
|
|
||||||
+ def repl(m):
|
|
||||||
+ name = m[1]
|
|
||||||
+ if name.startswith(start):
|
|
||||||
+ if not name.endswith(end):
|
|
||||||
+ return m[0]
|
|
||||||
name = name[1:-1]
|
|
||||||
try:
|
|
||||||
if environ is None:
|
|
||||||
@@ -322,13 +321,11 @@ def expandvars(path):
|
|
||||||
else:
|
|
||||||
value = environ[name]
|
|
||||||
except KeyError:
|
|
||||||
- i = j
|
|
||||||
+ return m[0]
|
|
||||||
else:
|
|
||||||
- tail = path[j:]
|
|
||||||
- path = path[:i] + value
|
|
||||||
- i = len(path)
|
|
||||||
- path += tail
|
|
||||||
- return path
|
|
||||||
+ return value
|
|
||||||
+
|
|
||||||
+ return sub(repl, path)
|
|
||||||
|
|
||||||
|
|
||||||
# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A/B.
|
|
||||||
diff --git a/Lib/test/test_genericpath.py b/Lib/test/test_genericpath.py
|
|
||||||
index 1ff7f75..b0a1326 100644
|
|
||||||
--- a/Lib/test/test_genericpath.py
|
|
||||||
+++ b/Lib/test/test_genericpath.py
|
|
||||||
@@ -7,6 +7,7 @@ import os
|
|
||||||
import sys
|
|
||||||
import unittest
|
|
||||||
import warnings
|
|
||||||
+from test import support
|
|
||||||
from test.support import os_helper
|
|
||||||
from test.support import warnings_helper
|
|
||||||
from test.support.script_helper import assert_python_ok
|
|
||||||
@@ -430,6 +431,19 @@ class CommonTest(GenericTest):
|
|
||||||
os.fsencode('$bar%s bar' % nonascii))
|
|
||||||
check(b'$spam}bar', os.fsencode('%s}bar' % nonascii))
|
|
||||||
|
|
||||||
+ @support.requires_resource('cpu')
|
|
||||||
+ def test_expandvars_large(self):
|
|
||||||
+ expandvars = self.pathmodule.expandvars
|
|
||||||
+ with os_helper.EnvironmentVarGuard() as env:
|
|
||||||
+ env.clear()
|
|
||||||
+ env["A"] = "B"
|
|
||||||
+ n = 100_000
|
|
||||||
+ self.assertEqual(expandvars('$A'*n), 'B'*n)
|
|
||||||
+ self.assertEqual(expandvars('${A}'*n), 'B'*n)
|
|
||||||
+ self.assertEqual(expandvars('$A!'*n), 'B!'*n)
|
|
||||||
+ self.assertEqual(expandvars('${A}A'*n), 'BA'*n)
|
|
||||||
+ self.assertEqual(expandvars('${'*10*n), '${'*10*n)
|
|
||||||
+
|
|
||||||
def test_abspath(self):
|
|
||||||
self.assertIn("foo", self.pathmodule.abspath("foo"))
|
|
||||||
with warnings.catch_warnings():
|
|
||||||
diff --git a/Lib/test/test_ntpath.py b/Lib/test/test_ntpath.py
|
|
||||||
index f790f77..161e57d 100644
|
|
||||||
--- a/Lib/test/test_ntpath.py
|
|
||||||
+++ b/Lib/test/test_ntpath.py
|
|
||||||
@@ -5,8 +5,8 @@ import sys
|
|
||||||
import unittest
|
|
||||||
import warnings
|
|
||||||
from ntpath import ALLOW_MISSING
|
|
||||||
+from test import support
|
|
||||||
from test.support import os_helper
|
|
||||||
-from test.support import TestFailed
|
|
||||||
from test.support.os_helper import FakePath
|
|
||||||
from test import test_genericpath
|
|
||||||
from tempfile import TemporaryFile
|
|
||||||
@@ -56,7 +56,7 @@ def tester(fn, wantResult):
|
|
||||||
fn = fn.replace("\\", "\\\\")
|
|
||||||
gotResult = eval(fn)
|
|
||||||
if wantResult != gotResult and _norm(wantResult) != _norm(gotResult):
|
|
||||||
- raise TestFailed("%s should return: %s but returned: %s" \
|
|
||||||
+ raise support.TestFailed("%s should return: %s but returned: %s" \
|
|
||||||
%(str(fn), str(wantResult), str(gotResult)))
|
|
||||||
|
|
||||||
# then with bytes
|
|
||||||
@@ -72,7 +72,7 @@ def tester(fn, wantResult):
|
|
||||||
warnings.simplefilter("ignore", DeprecationWarning)
|
|
||||||
gotResult = eval(fn)
|
|
||||||
if _norm(wantResult) != _norm(gotResult):
|
|
||||||
- raise TestFailed("%s should return: %s but returned: %s" \
|
|
||||||
+ raise support.TestFailed("%s should return: %s but returned: %s" \
|
|
||||||
%(str(fn), str(wantResult), repr(gotResult)))
|
|
||||||
|
|
||||||
|
|
||||||
@@ -689,6 +689,19 @@ class TestNtpath(NtpathTestCase):
|
|
||||||
check('%spam%bar', '%sbar' % nonascii)
|
|
||||||
check('%{}%bar'.format(nonascii), 'ham%sbar' % nonascii)
|
|
||||||
|
|
||||||
+ @support.requires_resource('cpu')
|
|
||||||
+ def test_expandvars_large(self):
|
|
||||||
+ expandvars = ntpath.expandvars
|
|
||||||
+ with os_helper.EnvironmentVarGuard() as env:
|
|
||||||
+ env.clear()
|
|
||||||
+ env["A"] = "B"
|
|
||||||
+ n = 100_000
|
|
||||||
+ self.assertEqual(expandvars('%A%'*n), 'B'*n)
|
|
||||||
+ self.assertEqual(expandvars('%A%A'*n), 'BA'*n)
|
|
||||||
+ self.assertEqual(expandvars("''"*n + '%%'), "''"*n + '%')
|
|
||||||
+ self.assertEqual(expandvars("%%"*n), "%"*n)
|
|
||||||
+ self.assertEqual(expandvars("$$"*n), "$"*n)
|
|
||||||
+
|
|
||||||
def test_expanduser(self):
|
|
||||||
tester('ntpath.expanduser("test")', 'test')
|
|
||||||
|
|
||||||
@@ -923,6 +936,7 @@ class TestNtpath(NtpathTestCase):
|
|
||||||
self.assertIsInstance(b_final_path, bytes)
|
|
||||||
self.assertGreater(len(b_final_path), 0)
|
|
||||||
|
|
||||||
+
|
|
||||||
class NtCommonTest(test_genericpath.CommonTest, unittest.TestCase):
|
|
||||||
pathmodule = ntpath
|
|
||||||
attributes = ['relpath']
|
|
||||||
diff --git a/Misc/NEWS.d/next/Security/2025-05-30-22-33-27.gh-issue-136065.bu337o.rst b/Misc/NEWS.d/next/Security/2025-05-30-22-33-27.gh-issue-136065.bu337o.rst
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..1d152bb
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/Misc/NEWS.d/next/Security/2025-05-30-22-33-27.gh-issue-136065.bu337o.rst
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+Fix quadratic complexity in :func:`os.path.expandvars`.
|
|
||||||
--
|
|
||||||
2.40.0
|
|
||||||
@@ -37,8 +37,6 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
|
|||||||
file://0001-Avoid-shebang-overflow-on-python-config.py.patch \
|
file://0001-Avoid-shebang-overflow-on-python-config.py.patch \
|
||||||
file://0001-test_storlines-skip-due-to-load-variability.patch \
|
file://0001-test_storlines-skip-due-to-load-variability.patch \
|
||||||
file://0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch \
|
file://0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch \
|
||||||
file://CVE-2025-6075.patch \
|
|
||||||
file://CVE-2025-13836.patch \
|
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI:append:class-native = " \
|
SRC_URI:append:class-native = " \
|
||||||
@@ -47,7 +45,7 @@ SRC_URI:append:class-native = " \
|
|||||||
file://12-distutils-prefix-is-inside-staging-area.patch \
|
file://12-distutils-prefix-is-inside-staging-area.patch \
|
||||||
file://0001-Don-t-search-system-for-headers-libraries.patch \
|
file://0001-Don-t-search-system-for-headers-libraries.patch \
|
||||||
"
|
"
|
||||||
SRC_URI[sha256sum] = "c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076"
|
SRC_URI[sha256sum] = "de6517421601e39a9a3bc3e1bc4c7b2f239297423ee05e282598c83ec0647505"
|
||||||
|
|
||||||
# exclude pre-releases for both python 2.x and 3.x
|
# exclude pre-releases for both python 2.x and 3.x
|
||||||
UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
|
UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
|
||||||
@@ -5,8 +5,8 @@ export TZ="Europe/London"
|
|||||||
export TCL_LIBRARY=library
|
export TCL_LIBRARY=library
|
||||||
|
|
||||||
# Some tests are overly strict with timings and fail on loaded systems.
|
# Some tests are overly strict with timings and fail on loaded systems.
|
||||||
# See bugs #14825 #14882 #15081 #15321.
|
# See bugs #14825 #14882 #15081 #15321 #15467.
|
||||||
SKIPPED_TESTS='async-* cmdMZ-6.6 event-* exit-1.* socket-* socket_inet-*'
|
SKIPPED_TESTS='async-* cmdMZ-6.6 event-* exit-1.* socket-* socket_inet-* http11-*'
|
||||||
|
|
||||||
for i in `ls tests/*.test | awk -F/ '{print $2}'`; do
|
for i in `ls tests/*.test | awk -F/ '{print $2}'`; do
|
||||||
./tcltest tests/all.tcl -file $i -skip "$SKIPPED_TESTS" >$i.log 2>&1
|
./tcltest tests/all.tcl -file $i -skip "$SKIPPED_TESTS" >$i.log 2>&1
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
From 7273d04803a1e5a482f26d8d0fbaf2b204a72168 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tim Kientzle <kientzle@acm.org>
|
||||||
|
Date: Sun, 1 Mar 2026 20:24:56 -0800
|
||||||
|
Subject: [PATCH] Reject filters when the block length is nonsensical
|
||||||
|
|
||||||
|
Credit: Grzegorz Antoniak @antekone
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/libarchive/libarchive/commit/7273d04803a1e5a482f26d8d0fbaf2b204a72168]
|
||||||
|
CVE: CVE-2026-4111
|
||||||
|
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||||
|
---
|
||||||
|
libarchive/archive_read_support_format_rar5.c | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/libarchive/archive_read_support_format_rar5.c b/libarchive/archive_read_support_format_rar5.c
|
||||||
|
index 38979cb..867f0a8 100644
|
||||||
|
--- a/libarchive/archive_read_support_format_rar5.c
|
||||||
|
+++ b/libarchive/archive_read_support_format_rar5.c
|
||||||
|
@@ -2914,7 +2914,9 @@ static int parse_filter(struct archive_read* ar, const uint8_t* p) {
|
||||||
|
if(block_length < 4 ||
|
||||||
|
block_length > 0x400000 ||
|
||||||
|
filter_type > FILTER_ARM ||
|
||||||
|
- !is_valid_filter_block_start(rar, block_start))
|
||||||
|
+ !is_valid_filter_block_start(rar, block_start) ||
|
||||||
|
+ (rar->cstate.window_size > 0 &&
|
||||||
|
+ (ssize_t)block_length > rar->cstate.window_size >> 1))
|
||||||
|
{
|
||||||
|
archive_set_error(&ar->archive, ARCHIVE_ERRNO_FILE_FORMAT,
|
||||||
|
"Invalid filter encountered");
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
@@ -0,0 +1,308 @@
|
|||||||
|
From ef53e2023d75a205cf7cbddb5d01c4cc592e9ce4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tim Kientzle <kientzle@acm.org>
|
||||||
|
Date: Sun, 1 Mar 2026 10:04:01 -0800
|
||||||
|
Subject: [PATCH] Infinite loop in Rar5 decompression
|
||||||
|
|
||||||
|
Found by: Elhanan Haenel
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/libarchive/libarchive/commit/ef53e2023d75a205cf7cbddb5d01c4cc592e9ce4]
|
||||||
|
CVE: CVE-2026-4111
|
||||||
|
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||||
|
---
|
||||||
|
Makefile.am | 2 +
|
||||||
|
libarchive/test/CMakeLists.txt | 1 +
|
||||||
|
.../test/test_read_format_rar5_loop_bug.c | 53 +++++
|
||||||
|
.../test_read_format_rar5_loop_bug.rar.uu | 189 ++++++++++++++++++
|
||||||
|
4 files changed, 245 insertions(+)
|
||||||
|
create mode 100644 libarchive/test/test_read_format_rar5_loop_bug.c
|
||||||
|
create mode 100644 libarchive/test/test_read_format_rar5_loop_bug.rar.uu
|
||||||
|
|
||||||
|
diff --git a/Makefile.am b/Makefile.am
|
||||||
|
index dd1620d..14edb2a 100644
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -507,6 +507,7 @@ libarchive_test_SOURCES= \
|
||||||
|
libarchive/test/test_read_format_rar_invalid1.c \
|
||||||
|
libarchive/test/test_read_format_rar_overflow.c \
|
||||||
|
libarchive/test/test_read_format_rar5.c \
|
||||||
|
+ libarchive/test/test_read_format_rar5_loop_bug.c \
|
||||||
|
libarchive/test/test_read_format_raw.c \
|
||||||
|
libarchive/test/test_read_format_tar.c \
|
||||||
|
libarchive/test/test_read_format_tar_concatenated.c \
|
||||||
|
@@ -869,6 +870,7 @@ libarchive_test_EXTRA_DIST=\
|
||||||
|
libarchive/test/test_read_format_rar5_invalid_dict_reference.rar.uu \
|
||||||
|
libarchive/test/test_read_format_rar5_leftshift1.rar.uu \
|
||||||
|
libarchive/test/test_read_format_rar5_leftshift2.rar.uu \
|
||||||
|
+ libarchive/test/test_read_format_rar5_loop_bug.rar.uu \
|
||||||
|
libarchive/test/test_read_format_rar5_multiarchive.part01.rar.uu \
|
||||||
|
libarchive/test/test_read_format_rar5_multiarchive.part02.rar.uu \
|
||||||
|
libarchive/test/test_read_format_rar5_multiarchive.part03.rar.uu \
|
||||||
|
diff --git a/libarchive/test/CMakeLists.txt b/libarchive/test/CMakeLists.txt
|
||||||
|
index 05c6fd7..c8f2e90 100644
|
||||||
|
--- a/libarchive/test/CMakeLists.txt
|
||||||
|
+++ b/libarchive/test/CMakeLists.txt
|
||||||
|
@@ -156,6 +156,7 @@ IF(ENABLE_TEST)
|
||||||
|
test_read_format_rar_filter.c
|
||||||
|
test_read_format_rar_overflow.c
|
||||||
|
test_read_format_rar5.c
|
||||||
|
+ test_read_format_rar5_loop_bug.c
|
||||||
|
test_read_format_raw.c
|
||||||
|
test_read_format_tar.c
|
||||||
|
test_read_format_tar_concatenated.c
|
||||||
|
diff --git a/libarchive/test/test_read_format_rar5_loop_bug.c b/libarchive/test/test_read_format_rar5_loop_bug.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..77dd78c
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/libarchive/test/test_read_format_rar5_loop_bug.c
|
||||||
|
@@ -0,0 +1,53 @@
|
||||||
|
+/*-
|
||||||
|
+ * Copyright (c) 2026 Tim Kientzle
|
||||||
|
+ * All rights reserved.
|
||||||
|
+ *
|
||||||
|
+ * Redistribution and use in source and binary forms, with or without
|
||||||
|
+ * modification, are permitted provided that the following conditions
|
||||||
|
+ * are met:
|
||||||
|
+ * 1. Redistributions of source code must retain the above copyright
|
||||||
|
+ * notice, this list of conditions and the following disclaimer.
|
||||||
|
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
+ * notice, this list of conditions and the following disclaimer in the
|
||||||
|
+ * documentation and/or other materials provided with the distribution.
|
||||||
|
+ *
|
||||||
|
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
+ */
|
||||||
|
+#include "test.h"
|
||||||
|
+
|
||||||
|
+DEFINE_TEST(test_read_format_rar5_loop_bug)
|
||||||
|
+{
|
||||||
|
+ const char *reffile = "test_read_format_rar5_loop_bug.rar";
|
||||||
|
+ struct archive_entry *ae;
|
||||||
|
+ struct archive *a;
|
||||||
|
+ const void *buf;
|
||||||
|
+ size_t size;
|
||||||
|
+ la_int64_t offset;
|
||||||
|
+
|
||||||
|
+ extract_reference_file(reffile);
|
||||||
|
+ assert((a = archive_read_new()) != NULL);
|
||||||
|
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
|
||||||
|
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
|
||||||
|
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, reffile, 10240));
|
||||||
|
+
|
||||||
|
+ // This has just one entry
|
||||||
|
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
|
||||||
|
+
|
||||||
|
+ // Read blocks until the end of the entry
|
||||||
|
+ while (ARCHIVE_OK == archive_read_data_block(a, &buf, &size, &offset)) {
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
|
||||||
|
+
|
||||||
|
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
|
||||||
|
+ assertEqualInt(ARCHIVE_OK, archive_free(a));
|
||||||
|
+}
|
||||||
|
diff --git a/libarchive/test/test_read_format_rar5_loop_bug.rar.uu b/libarchive/test/test_read_format_rar5_loop_bug.rar.uu
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..3e47004
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/libarchive/test/test_read_format_rar5_loop_bug.rar.uu
|
||||||
|
@@ -0,0 +1,189 @@
|
||||||
|
+begin 644 test_read_format_rar5_loop_bug.rar
|
||||||
|
+M4F%R(1H'`0#%&C,R`P$``)T-9%L.`@+P0`"`@`P`@`,``6'(WFP@`?\7_U/^
|
||||||
|
+M8@!.`B`H````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+M````````````````````````````````````````````````````````````
|
||||||
|
+5```````````````````Y^;*!`@4`
|
||||||
|
+`
|
||||||
|
+end
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
@@ -50,6 +50,8 @@ SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
|
|||||||
file://0001-Merge-pull-request-2768-from-Commandoss-master.patch \
|
file://0001-Merge-pull-request-2768-from-Commandoss-master.patch \
|
||||||
file://CVE-2025-60753-01.patch \
|
file://CVE-2025-60753-01.patch \
|
||||||
file://CVE-2025-60753-02.patch \
|
file://CVE-2025-60753-02.patch \
|
||||||
|
file://CVE-2026-4111-1.patch \
|
||||||
|
file://CVE-2026-4111-2.patch \
|
||||||
"
|
"
|
||||||
UPSTREAM_CHECK_URI = "http://libarchive.org/"
|
UPSTREAM_CHECK_URI = "http://libarchive.org/"
|
||||||
|
|
||||||
|
|||||||
229
meta/recipes-extended/pam/libpam/CVE-2024-10963.patch
Normal file
229
meta/recipes-extended/pam/libpam/CVE-2024-10963.patch
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
From f9ccee5c4c6cb0d4197b08ebeb36c1dceffe82e8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thorsten Kukuk <kukuk@suse.com>
|
||||||
|
Date: Thu, 14 Nov 2024 10:27:28 +0100
|
||||||
|
Subject: [PATCH] pam_access: rework resolving of tokens as hostname
|
||||||
|
|
||||||
|
* modules/pam_access/pam_access.c: separate resolving of IP addresses
|
||||||
|
from hostnames. Don't resolve TTYs or display variables as hostname
|
||||||
|
(#834).
|
||||||
|
Add "nodns" option to disallow resolving of tokens as hostname.
|
||||||
|
* modules/pam_access/pam_access.8.xml: document nodns option
|
||||||
|
* modules/pam_access/access.conf.5.xml: document that hostnames should
|
||||||
|
be written as FQHN.
|
||||||
|
|
||||||
|
CVE: CVE-2024-10963
|
||||||
|
Upstream-Status: Backport [https://github.com/linux-pam/linux-pam/commit/940747f88c16e029b69a74e80a2e94f65cb3e628]
|
||||||
|
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
|
||||||
|
---
|
||||||
|
modules/pam_access/access.conf.5.xml | 4 ++
|
||||||
|
modules/pam_access/pam_access.8.xml | 46 ++++++++++++------
|
||||||
|
modules/pam_access/pam_access.c | 72 +++++++++++++++++++++++++++-
|
||||||
|
3 files changed, 105 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules/pam_access/access.conf.5.xml b/modules/pam_access/access.conf.5.xml
|
||||||
|
index 8fdbc31..dc505a6 100644
|
||||||
|
--- a/modules/pam_access/access.conf.5.xml
|
||||||
|
+++ b/modules/pam_access/access.conf.5.xml
|
||||||
|
@@ -226,6 +226,10 @@
|
||||||
|
item and the line will be most probably ignored. For this reason, it is not
|
||||||
|
recommended to put spaces around the ':' characters.
|
||||||
|
</para>
|
||||||
|
+ <para>
|
||||||
|
+ Hostnames should be written as Fully-Qualified Host Name (FQHN) to avoid
|
||||||
|
+ confusion with device names or PAM service names.
|
||||||
|
+ </para>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1 id="access.conf-see_also">
|
||||||
|
diff --git a/modules/pam_access/pam_access.8.xml b/modules/pam_access/pam_access.8.xml
|
||||||
|
index 9a6556c..eab9d9f 100644
|
||||||
|
--- a/modules/pam_access/pam_access.8.xml
|
||||||
|
+++ b/modules/pam_access/pam_access.8.xml
|
||||||
|
@@ -25,11 +25,14 @@
|
||||||
|
<arg choice="opt">
|
||||||
|
debug
|
||||||
|
</arg>
|
||||||
|
+ <arg choice="opt" rep="norepeat">
|
||||||
|
+ noaudit
|
||||||
|
+ </arg>
|
||||||
|
<arg choice="opt">
|
||||||
|
nodefgroup
|
||||||
|
</arg>
|
||||||
|
<arg choice="opt">
|
||||||
|
- noaudit
|
||||||
|
+ nodns
|
||||||
|
</arg>
|
||||||
|
<arg choice="opt">
|
||||||
|
accessfile=<replaceable>file</replaceable>
|
||||||
|
@@ -112,6 +115,33 @@
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
+ <varlistentry>
|
||||||
|
+ <term>
|
||||||
|
+ nodefgroup
|
||||||
|
+ </term>
|
||||||
|
+ <listitem>
|
||||||
|
+ <para>
|
||||||
|
+ User tokens which are not enclosed in parentheses will not be
|
||||||
|
+ matched against the group database. The backwards compatible default is
|
||||||
|
+ to try the group database match even for tokens not enclosed
|
||||||
|
+ in parentheses.
|
||||||
|
+ </para>
|
||||||
|
+ </listitem>
|
||||||
|
+ </varlistentry>
|
||||||
|
+
|
||||||
|
+ <varlistentry>
|
||||||
|
+ <term>
|
||||||
|
+ nodns
|
||||||
|
+ </term>
|
||||||
|
+ <listitem>
|
||||||
|
+ <para>
|
||||||
|
+ Do not try to resolve tokens as hostnames, only IPv4 and IPv6
|
||||||
|
+ addresses will be resolved. Which means to allow login from a
|
||||||
|
+ remote host, the IP addresses need to be specified in <filename>access.conf</filename>.
|
||||||
|
+ </para>
|
||||||
|
+ </listitem>
|
||||||
|
+ </varlistentry>
|
||||||
|
+
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<option>fieldsep=<replaceable>separators</replaceable></option>
|
||||||
|
@@ -153,20 +183,6 @@
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
|
- <varlistentry>
|
||||||
|
- <term>
|
||||||
|
- <option>nodefgroup</option>
|
||||||
|
- </term>
|
||||||
|
- <listitem>
|
||||||
|
- <para>
|
||||||
|
- User tokens which are not enclosed in parentheses will not be
|
||||||
|
- matched against the group database. The backwards compatible default is
|
||||||
|
- to try the group database match even for tokens not enclosed
|
||||||
|
- in parentheses.
|
||||||
|
- </para>
|
||||||
|
- </listitem>
|
||||||
|
- </varlistentry>
|
||||||
|
-
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
diff --git a/modules/pam_access/pam_access.c b/modules/pam_access/pam_access.c
|
||||||
|
index bca424f..00a0a77 100644
|
||||||
|
--- a/modules/pam_access/pam_access.c
|
||||||
|
+++ b/modules/pam_access/pam_access.c
|
||||||
|
@@ -92,6 +92,7 @@ struct login_info {
|
||||||
|
int debug; /* Print debugging messages. */
|
||||||
|
int only_new_group_syntax; /* Only allow group entries of the form "(xyz)" */
|
||||||
|
int noaudit; /* Do not audit denials */
|
||||||
|
+ int nodns; /* Do not try to resolve tokens as hostnames */
|
||||||
|
const char *fs; /* field separator */
|
||||||
|
const char *sep; /* list-element separator */
|
||||||
|
int from_remote_host; /* If PAM_RHOST was used for from */
|
||||||
|
@@ -143,6 +144,8 @@ parse_args(pam_handle_t *pamh, struct login_info *loginfo,
|
||||||
|
loginfo->only_new_group_syntax = YES;
|
||||||
|
} else if (strcmp (argv[i], "noaudit") == 0) {
|
||||||
|
loginfo->noaudit = YES;
|
||||||
|
+ } else if (strcmp (argv[i], "nodns") == 0) {
|
||||||
|
+ loginfo->nodns = YES;
|
||||||
|
} else {
|
||||||
|
pam_syslog(pamh, LOG_ERR, "unrecognized option [%s]", argv[i]);
|
||||||
|
}
|
||||||
|
@@ -637,7 +640,7 @@ remote_match (pam_handle_t *pamh, char *tok, struct login_info *item)
|
||||||
|
if ((str_len = strlen(string)) > tok_len
|
||||||
|
&& strcasecmp(tok, string + str_len - tok_len) == 0)
|
||||||
|
return YES;
|
||||||
|
- } else if (tok[tok_len - 1] == '.') { /* internet network numbers (end with ".") */
|
||||||
|
+ } else if (tok[tok_len - 1] == '.') { /* internet network numbers/subnet (end with ".") */
|
||||||
|
struct addrinfo hint;
|
||||||
|
|
||||||
|
memset (&hint, '\0', sizeof (hint));
|
||||||
|
@@ -712,6 +715,39 @@ string_match (pam_handle_t *pamh, const char *tok, const char *string,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+static int
|
||||||
|
+is_device (pam_handle_t *pamh, const char *tok)
|
||||||
|
+{
|
||||||
|
+ struct stat st;
|
||||||
|
+ const char *dev = "/dev/";
|
||||||
|
+ char *devname;
|
||||||
|
+
|
||||||
|
+ devname = malloc (strlen(dev) + strlen (tok) + 1);
|
||||||
|
+ if (devname == NULL) {
|
||||||
|
+ pam_syslog(pamh, LOG_ERR, "Cannot allocate memory for device name: %m");
|
||||||
|
+ /*
|
||||||
|
+ * We should return an error and abort, but pam_access has no good
|
||||||
|
+ * error handling.
|
||||||
|
+ */
|
||||||
|
+ return NO;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ char *cp = stpcpy (devname, dev);
|
||||||
|
+ strcpy (cp, tok);
|
||||||
|
+
|
||||||
|
+ if (lstat(devname, &st) != 0)
|
||||||
|
+ {
|
||||||
|
+ free (devname);
|
||||||
|
+ return NO;
|
||||||
|
+ }
|
||||||
|
+ free (devname);
|
||||||
|
+
|
||||||
|
+ if (S_ISCHR(st.st_mode))
|
||||||
|
+ return YES;
|
||||||
|
+
|
||||||
|
+ return NO;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* network_netmask_match - match a string against one token
|
||||||
|
* where string is a hostname or ip (v4,v6) address and tok
|
||||||
|
* represents either a hostname, a single ip (v4,v6) address
|
||||||
|
@@ -773,10 +809,42 @@ network_netmask_match (pam_handle_t *pamh,
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ else if (isipaddr(tok, NULL, NULL) == YES)
|
||||||
|
+ {
|
||||||
|
+ if (getaddrinfo (tok, NULL, NULL, &ai) != 0)
|
||||||
|
+ {
|
||||||
|
+ if (item->debug)
|
||||||
|
+ pam_syslog(pamh, LOG_DEBUG, "cannot resolve IP address \"%s\"", tok);
|
||||||
|
+
|
||||||
|
+ return NO;
|
||||||
|
+ }
|
||||||
|
+ netmask_ptr = NULL;
|
||||||
|
+ }
|
||||||
|
+ else if (item->nodns)
|
||||||
|
+ {
|
||||||
|
+ /* Only hostnames are left, which we would need to resolve via DNS */
|
||||||
|
+ return NO;
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
+ /* Bail out on X11 Display entries and ttys. */
|
||||||
|
+ if (tok[0] == ':')
|
||||||
|
+ {
|
||||||
|
+ if (item->debug)
|
||||||
|
+ pam_syslog (pamh, LOG_DEBUG,
|
||||||
|
+ "network_netmask_match: tok=%s is X11 display", tok);
|
||||||
|
+ return NO;
|
||||||
|
+ }
|
||||||
|
+ if (is_device (pamh, tok))
|
||||||
|
+ {
|
||||||
|
+ if (item->debug)
|
||||||
|
+ pam_syslog (pamh, LOG_DEBUG,
|
||||||
|
+ "network_netmask_match: tok=%s is a TTY", tok);
|
||||||
|
+ return NO;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
- * It is either an IP address or a hostname.
|
||||||
|
+ * It is most likely a hostname.
|
||||||
|
* Let getaddrinfo sort everything out
|
||||||
|
*/
|
||||||
|
if (getaddrinfo (tok, NULL, NULL, &ai) != 0)
|
||||||
|
--
|
||||||
|
2.50.1
|
||||||
|
|
||||||
@@ -1528,7 +1528,7 @@ diff --git a/modules/pam_namespace/pam_namespace.h b/modules/pam_namespace/pam_n
|
|||||||
index b51f284..abd570d 100644
|
index b51f284..abd570d 100644
|
||||||
--- a/modules/pam_namespace/pam_namespace.h
|
--- a/modules/pam_namespace/pam_namespace.h
|
||||||
+++ b/modules/pam_namespace/pam_namespace.h
|
+++ b/modules/pam_namespace/pam_namespace.h
|
||||||
@@ -44,21 +44,16 @@
|
@@ -44,21 +44,17 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
@@ -1542,7 +1542,7 @@ index b51f284..abd570d 100644
|
|||||||
-#include <sys/resource.h>
|
-#include <sys/resource.h>
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
-#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sched.h>
|
#include <sched.h>
|
||||||
#include <glob.h>
|
#include <glob.h>
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ SRC_URI = "https://github.com/linux-pam/linux-pam/releases/download/v${PV}/Linux
|
|||||||
file://CVE-2025-6020-01.patch \
|
file://CVE-2025-6020-01.patch \
|
||||||
file://CVE-2025-6020-02.patch \
|
file://CVE-2025-6020-02.patch \
|
||||||
file://CVE-2025-6020-03.patch \
|
file://CVE-2025-6020-03.patch \
|
||||||
|
file://CVE-2024-10963.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI[sha256sum] = "e4ec7131a91da44512574268f493c6d8ca105c87091691b8e9b56ca685d4f94d"
|
SRC_URI[sha256sum] = "e4ec7131a91da44512574268f493c6d8ca105c87091691b8e9b56ca685d4f94d"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user