mirror of
https://git.yoctoproject.org/poky
synced 2026-05-10 17:27:54 +02:00
Compare commits
58 Commits
yocto-4.0.
...
kirkstone
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
@@ -16,9 +16,13 @@ which can be found at:
|
||||
Contributing
|
||||
------------
|
||||
|
||||
Please refer to
|
||||
https://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded
|
||||
for guidelines on how to submit patches.
|
||||
Please refer to our contributor guide here: https://docs.yoctoproject.org/dev/contributor-guide/
|
||||
for full details on how to submit changes.
|
||||
|
||||
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:
|
||||
|
||||
|
||||
@@ -66,8 +66,11 @@ class Crate(Wget):
|
||||
# if using upstream just fix it up nicely
|
||||
if host == 'crates.io':
|
||||
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['name'] = name
|
||||
|
||||
|
||||
@@ -1053,7 +1053,7 @@ class FetcherNetworkTest(FetcherTest):
|
||||
# URL with ssh submodules
|
||||
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)
|
||||
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.download()
|
||||
# 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
|
||||
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
|
||||
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.
|
||||
|
||||
In any case, never fix reported issues by fixing them in new commits
|
||||
|
||||
@@ -39,3 +39,5 @@ Release 4.0 (kirkstone)
|
||||
release-notes-4.0.30
|
||||
release-notes-4.0.31
|
||||
release-notes-4.0.32
|
||||
release-notes-4.0.33
|
||||
release-notes-4.0.34
|
||||
|
||||
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
|
||||
|
||||
@@ -454,7 +454,7 @@ typically find in the distribution layer:
|
||||
(``conf/distro/distro.conf``), and any distribution-wide include
|
||||
files.
|
||||
|
||||
- *recipes-*:* Recipes and append files that affect common
|
||||
- *recipes-\*:* Recipes and append files that affect common
|
||||
functionality across the distribution. This area could include
|
||||
recipes and append files to add distribution-specific configuration,
|
||||
initialization scripts, custom image recipes, and so forth. Examples
|
||||
|
||||
@@ -84,6 +84,7 @@ organizations publishing them no longer make updates publicly available:
|
||||
|
||||
- Fedora 39
|
||||
- Fedora 40
|
||||
- Fedora 41
|
||||
|
||||
Note that the Yocto Project doesn't have access to private updates
|
||||
that some of these versions may have. Therefore, our testing has
|
||||
|
||||
@@ -99,14 +99,19 @@ em {
|
||||
[alt='Permalink'] { color: #eee; }
|
||||
[alt='Permalink']:hover { color: black; }
|
||||
|
||||
@media screen {
|
||||
/* content column
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
.literal-block {
|
||||
background: #f8f8f8;
|
||||
}
|
||||
|
||||
.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 */
|
||||
code, .rst-content tt, .rst-content code {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
DISTRO = "poky"
|
||||
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
|
||||
#DISTRO_VERSION = "3.4+snapshot-${METADATA_REVISION}"
|
||||
DISTRO_VERSION = "4.0.34"
|
||||
DISTRO_VERSION = "4.0.35"
|
||||
DISTRO_CODENAME = "kirkstone"
|
||||
SDK_VENDOR = "-pokysdk"
|
||||
SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
|
||||
|
||||
@@ -11,7 +11,7 @@ SRCREV = "1a3e1343761b30750bed70e0fd688f6d3c7b3717"
|
||||
PV = "0.1+git${SRCPV}"
|
||||
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"
|
||||
RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ DEPENDS = "dbus"
|
||||
SRCREV = "6cc6077a36fe2648a5f993fe7c16c9632f946517"
|
||||
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"
|
||||
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"
|
||||
|
||||
SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master"
|
||||
SRCREV = "a2885dd7d25380d23627e7544b7bbb55014b16ee"
|
||||
SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master;protocol=https"
|
||||
SRCREV = "f280847494763cdcf71197557a81ba7d8a6bce42"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ def get_os_release():
|
||||
key, val = line.rstrip().split('=', 1)
|
||||
except ValueError:
|
||||
continue
|
||||
data[key.strip()] = val.strip('"')
|
||||
data[key.strip()] = val.strip('"\'')
|
||||
return data
|
||||
|
||||
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"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"6": {
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
],
|
||||
"execution": {
|
||||
"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"
|
||||
},
|
||||
"2": {
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
],
|
||||
"execution": {
|
||||
"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"
|
||||
},
|
||||
"2": {
|
||||
|
||||
@@ -13,5 +13,5 @@ class BuildTests(OESDKTestCase):
|
||||
"""
|
||||
def test_docs_build(self):
|
||||
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)
|
||||
|
||||
@@ -301,8 +301,8 @@ class Archiver(OESelftestTestCase):
|
||||
|
||||
bb_vars = get_bb_vars(['DEPLOY_DIR_SRC'])
|
||||
for target_file_name in [
|
||||
'gitsmshallow_git.yoctoproject.org.git-submodule-test_a2885dd-1_master.tar.gz',
|
||||
'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test1_bare_120f4c7-1.tar.gz',
|
||||
'gitsmshallow_git.yoctoproject.org.git-submodule-test_f280847-1_master.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.openembedded.org.bitbake_bare_52a144a-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):
|
||||
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
|
||||
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
|
||||
checkrev = 'ae127b19a50aa54255e4330ccfdd9a5d058e581d'
|
||||
testrecipe = 'mraa'
|
||||
@@ -526,7 +526,7 @@ class DevtoolAddTests(DevtoolBase):
|
||||
self.track_for_cleanup(self.workspacedir)
|
||||
self.add_command_to_tearDown('bitbake -c cleansstate %s' % testrecipe)
|
||||
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.assertTrue(os.path.isfile(os.path.join(srcdir, 'imraa', 'imraa.c')), 'Unable to find imraa/imraa.c in source directory')
|
||||
# Test devtool status
|
||||
|
||||
@@ -17,7 +17,7 @@ class ExternalSrc(OESelftestTestCase):
|
||||
# so we check only that a recipe with externalsrc can be parsed
|
||||
def test_externalsrc_srctree_hash_files(self):
|
||||
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
|
||||
|
||||
self.write_config(
|
||||
|
||||
@@ -34,6 +34,7 @@ PREMIRRORS:forcevariable = ""
|
||||
# No mirrors and broken git, should fail
|
||||
features = """
|
||||
DL_DIR = "%s"
|
||||
SRC_URI:pn-dbus-wait = "git://git.yoctoproject.org/dbus-wait;branch=master;protocol=git"
|
||||
GIT_PROXY_COMMAND = "false"
|
||||
MIRRORS:forcevariable = ""
|
||||
PREMIRRORS:forcevariable = ""
|
||||
@@ -46,6 +47,7 @@ PREMIRRORS:forcevariable = ""
|
||||
# Broken git but a specific mirror
|
||||
features = """
|
||||
DL_DIR = "%s"
|
||||
SRC_URI:pn-dbus-wait = "git://git.yoctoproject.org/dbus-wait;branch=master;protocol=git"
|
||||
GIT_PROXY_COMMAND = "false"
|
||||
MIRRORS:forcevariable = "git://.*/.* http://downloads.yoctoproject.org/mirror/sources/"
|
||||
""" % dldir
|
||||
|
||||
@@ -359,7 +359,7 @@ class RecipetoolCreateTests(RecipetoolBase):
|
||||
tempsrc = os.path.join(self.tempdir, 'srctree')
|
||||
os.makedirs(tempsrc)
|
||||
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])
|
||||
self.assertTrue(os.path.isfile(recipefile), 'recipetool did not create recipe file; output:\n%s' % result.output)
|
||||
checkvars = {}
|
||||
@@ -512,13 +512,13 @@ class RecipetoolCreateTests(RecipetoolBase):
|
||||
self._test_recipetool_create_git('http://git.yoctoproject.org/git/matchbox-keyboard')
|
||||
|
||||
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):
|
||||
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):
|
||||
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):
|
||||
|
||||
@@ -31,7 +31,7 @@ class SStateTests(SStateBase):
|
||||
# Use dbus-wait as a local git repo we can add a commit between two builds in
|
||||
pn = 'dbus-wait'
|
||||
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)
|
||||
srcdir = os.path.join(tempdir, 'noname')
|
||||
result = runCmd('git reset --hard %s' % srcrev, cwd=srcdir)
|
||||
|
||||
@@ -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);
|
||||
@@ -26,6 +26,7 @@ SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.xz \
|
||||
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
|
||||
|
||||
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-2025-46394-01.patch \
|
||||
file://CVE-2025-46394-02.patch \
|
||||
file://CVE-2025-60876.patch \
|
||||
"
|
||||
SRC_URI:append:libc-musl = " file://musl.cfg "
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ SRCREV = "6cc6077a36fe2648a5f993fe7c16c9632f946517"
|
||||
PV = "0.1+git${SRCPV}"
|
||||
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"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
@@ -24,8 +24,8 @@ IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx"
|
||||
|
||||
inherit core-image setuptools3
|
||||
|
||||
SRCREV ?= "974e67818b583f5638c389e7bce662633e09a1bf"
|
||||
SRC_URI = "git://git.yoctoproject.org/poky;branch=kirkstone \
|
||||
SRCREV ?= "c0c00ef9996a8f8f7752c6f26cb2bf4779585123"
|
||||
SRC_URI = "git://git.yoctoproject.org/poky;protocol=https;branch=kirkstone \
|
||||
file://Yocto_Build_Appliance.vmx \
|
||||
file://Yocto_Build_Appliance.vmxf \
|
||||
file://README_VirtualBox_Guest_Additions.txt \
|
||||
|
||||
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-45918.patch \
|
||||
file://CVE-2025-6141.patch \
|
||||
file://CVE-2025-69720.patch \
|
||||
"
|
||||
# commit id corresponds to the revision in package version
|
||||
SRCREV = "a0bc708bc6954b5d3c0a38d92b683c3ec3135260"
|
||||
|
||||
@@ -9,7 +9,7 @@ DEPENDS = "gdk-pixbuf-native"
|
||||
SRCREV = "44afb7506d43cca15582b4c5b90ba5580344d75d"
|
||||
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-start.service \
|
||||
file://psplash-systemd.service \
|
||||
|
||||
@@ -6,7 +6,7 @@ SECTION = "base"
|
||||
LICENSE = "GPL-2.0-or-later"
|
||||
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"
|
||||
|
||||
UPSTREAM_CHECK_COMMITS = "1"
|
||||
|
||||
@@ -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 \
|
||||
file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
|
||||
file://0001-Use-proper-cast-for-PyMethodDef.ml_meth.patch \
|
||||
"
|
||||
|
||||
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 \
|
||||
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"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
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-group \
|
||||
"
|
||||
|
||||
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://reproducible.patch \
|
||||
file://CVE-2023-5752.patch \
|
||||
file://CVE-2026-1703.patch \
|
||||
"
|
||||
|
||||
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"
|
||||
inherit pypi setuptools3
|
||||
|
||||
SRC_URI += " \
|
||||
file://CVE-2026-27448.patch \
|
||||
file://CVE-2026-27459.patch \
|
||||
"
|
||||
|
||||
PACKAGES =+ "${PN}-tests"
|
||||
FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
|
||||
|
||||
|
||||
@@ -1,171 +0,0 @@
|
||||
From c97e87593063d84a2bd9fe7068b30eb44de23dc0 Mon Sep 17 00:00:00 2001
|
||||
From: "Miss Islington (bot)"
|
||||
<31488909+miss-islington@users.noreply.github.com>
|
||||
Date: Sun, 25 Jan 2026 18:10:49 +0100
|
||||
Subject: [PATCH] [3.10] gh-142145: Remove quadratic behavior in node ID cache
|
||||
clearing (GH-142146) (#142213)
|
||||
|
||||
* gh-142145: Remove quadratic behavior in node ID cache clearing (GH-142146)
|
||||
|
||||
* Remove quadratic behavior in node ID cache clearing
|
||||
|
||||
Co-authored-by: Jacob Walls <38668450+jacobtylerwalls@users.noreply.github.com>
|
||||
|
||||
* Add news fragment
|
||||
|
||||
CVE: CVE-2025-12084
|
||||
Upstream-Status: Backport [https://github.com/python/cpython/commit/c97e87593063d84a2bd9fe7068b30eb44de23dc0]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---------
|
||||
(cherry picked from commit 08d8e18ad81cd45bc4a27d6da478b51ea49486e4)
|
||||
|
||||
Co-authored-by: Seth Michael Larson <seth@python.org>
|
||||
Co-authored-by: Jacob Walls <38668450+jacobtylerwalls@users.noreply.github.com>
|
||||
|
||||
* [3.14] gh-142754: Ensure that Element & Attr instances have the ownerDocument attribute (GH-142794) (#142818)
|
||||
|
||||
gh-142754: Ensure that Element & Attr instances have the ownerDocument attribute (GH-142794)
|
||||
(cherry picked from commit 1cc7551b3f9f71efbc88d96dce90f82de98b2454)
|
||||
|
||||
Co-authored-by: Petr Viktorin <encukou@gmail.com>
|
||||
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
|
||||
|
||||
* gh-142145: relax the no-longer-quadratic test timing (GH-143030)
|
||||
|
||||
* gh-142145: relax the no-longer-quadratic test timing
|
||||
|
||||
* require cpu resource
|
||||
(cherry picked from commit 8d2d7bb2e754f8649a68ce4116271a4932f76907)
|
||||
|
||||
Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
|
||||
|
||||
* merge NEWS entries into one
|
||||
|
||||
---------
|
||||
|
||||
Co-authored-by: Seth Michael Larson <seth@python.org>
|
||||
Co-authored-by: Jacob Walls <38668450+jacobtylerwalls@users.noreply.github.com>
|
||||
Co-authored-by: Petr Viktorin <encukou@gmail.com>
|
||||
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
|
||||
Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
|
||||
Co-authored-by: Gregory P. Smith <greg@krypto.org>
|
||||
---
|
||||
Lib/test/test_minidom.py | 33 ++++++++++++++++++-
|
||||
Lib/xml/dom/minidom.py | 11 ++-----
|
||||
...-12-01-09-36-45.gh-issue-142145.tcAUhg.rst | 6 ++++
|
||||
3 files changed, 41 insertions(+), 9 deletions(-)
|
||||
create mode 100644 Misc/NEWS.d/next/Security/2025-12-01-09-36-45.gh-issue-142145.tcAUhg.rst
|
||||
|
||||
diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py
|
||||
index ef38c36210..c68bd990f7 100644
|
||||
--- a/Lib/test/test_minidom.py
|
||||
+++ b/Lib/test/test_minidom.py
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import copy
|
||||
import pickle
|
||||
+import time
|
||||
import io
|
||||
from test import support
|
||||
import unittest
|
||||
@@ -9,7 +10,7 @@ import unittest
|
||||
import pyexpat
|
||||
import xml.dom.minidom
|
||||
|
||||
-from xml.dom.minidom import parse, Attr, Node, Document, parseString
|
||||
+from xml.dom.minidom import parse, Attr, Node, Document, Element, parseString
|
||||
from xml.dom.minidom import getDOMImplementation
|
||||
from xml.parsers.expat import ExpatError
|
||||
|
||||
@@ -177,6 +178,36 @@ class MinidomTest(unittest.TestCase):
|
||||
self.confirm(dom.documentElement.childNodes[-1].data == "Hello")
|
||||
dom.unlink()
|
||||
|
||||
+ @support.requires_resource('cpu')
|
||||
+ def testAppendChildNoQuadraticComplexity(self):
|
||||
+ impl = getDOMImplementation()
|
||||
+
|
||||
+ newdoc = impl.createDocument(None, "some_tag", None)
|
||||
+ top_element = newdoc.documentElement
|
||||
+ children = [newdoc.createElement(f"child-{i}") for i in range(1, 2 ** 15 + 1)]
|
||||
+ element = top_element
|
||||
+
|
||||
+ start = time.monotonic()
|
||||
+ for child in children:
|
||||
+ element.appendChild(child)
|
||||
+ element = child
|
||||
+ end = time.monotonic()
|
||||
+
|
||||
+ # This example used to take at least 30 seconds.
|
||||
+ # Conservative assertion due to the wide variety of systems and
|
||||
+ # build configs timing based tests wind up run under.
|
||||
+ # A --with-address-sanitizer --with-pydebug build on a rpi5 still
|
||||
+ # completes this loop in <0.5 seconds.
|
||||
+ self.assertLess(end - start, 4)
|
||||
+
|
||||
+ def testSetAttributeNodeWithoutOwnerDocument(self):
|
||||
+ # regression test for gh-142754
|
||||
+ elem = Element("test")
|
||||
+ attr = Attr("id")
|
||||
+ attr.value = "test-id"
|
||||
+ elem.setAttributeNode(attr)
|
||||
+ self.assertEqual(elem.getAttribute("id"), "test-id")
|
||||
+
|
||||
def testAppendChildFragment(self):
|
||||
dom, orig, c1, c2, c3, frag = self._create_fragment_test_nodes()
|
||||
dom.documentElement.appendChild(frag)
|
||||
diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py
|
||||
index ef8a159833..cada981f39 100644
|
||||
--- a/Lib/xml/dom/minidom.py
|
||||
+++ b/Lib/xml/dom/minidom.py
|
||||
@@ -292,13 +292,6 @@ def _append_child(self, node):
|
||||
childNodes.append(node)
|
||||
node.parentNode = self
|
||||
|
||||
-def _in_document(node):
|
||||
- # return True iff node is part of a document tree
|
||||
- while node is not None:
|
||||
- if node.nodeType == Node.DOCUMENT_NODE:
|
||||
- return True
|
||||
- node = node.parentNode
|
||||
- return False
|
||||
|
||||
def _write_data(writer, data):
|
||||
"Writes datachars to writer."
|
||||
@@ -355,6 +348,7 @@ class Attr(Node):
|
||||
def __init__(self, qName, namespaceURI=EMPTY_NAMESPACE, localName=None,
|
||||
prefix=None):
|
||||
self.ownerElement = None
|
||||
+ self.ownerDocument = None
|
||||
self._name = qName
|
||||
self.namespaceURI = namespaceURI
|
||||
self._prefix = prefix
|
||||
@@ -680,6 +674,7 @@ class Element(Node):
|
||||
|
||||
def __init__(self, tagName, namespaceURI=EMPTY_NAMESPACE, prefix=None,
|
||||
localName=None):
|
||||
+ self.ownerDocument = None
|
||||
self.parentNode = None
|
||||
self.tagName = self.nodeName = tagName
|
||||
self.prefix = prefix
|
||||
@@ -1539,7 +1534,7 @@ def _clear_id_cache(node):
|
||||
if node.nodeType == Node.DOCUMENT_NODE:
|
||||
node._id_cache.clear()
|
||||
node._id_search_stack = None
|
||||
- elif _in_document(node):
|
||||
+ elif node.ownerDocument:
|
||||
node.ownerDocument._id_cache.clear()
|
||||
node.ownerDocument._id_search_stack= None
|
||||
|
||||
diff --git a/Misc/NEWS.d/next/Security/2025-12-01-09-36-45.gh-issue-142145.tcAUhg.rst b/Misc/NEWS.d/next/Security/2025-12-01-09-36-45.gh-issue-142145.tcAUhg.rst
|
||||
new file mode 100644
|
||||
index 0000000000..05c7df35d1
|
||||
--- /dev/null
|
||||
+++ b/Misc/NEWS.d/next/Security/2025-12-01-09-36-45.gh-issue-142145.tcAUhg.rst
|
||||
@@ -0,0 +1,6 @@
|
||||
+Remove quadratic behavior in ``xml.minidom`` node ID cache clearing. In order
|
||||
+to do this without breaking existing users, we also add the *ownerDocument*
|
||||
+attribute to :mod:`xml.dom.minidom` elements and attributes created by directly
|
||||
+instantiating the ``Element`` or ``Attr`` class. Note that this way of creating
|
||||
+nodes is not supported; creator functions like
|
||||
+:py:meth:`xml.dom.Document.documentElement` should be used instead.
|
||||
@@ -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,162 +0,0 @@
|
||||
From 5a8b19677d818fb41ee55f310233772e15aa1a2b Mon Sep 17 00:00:00 2001
|
||||
From: Serhiy Storchaka <storchaka@gmail.com>
|
||||
Date: Mon, 22 Dec 2025 15:49:44 +0200
|
||||
Subject: [PATCH] [3.12] gh-119342: Fix a potential denial of service in
|
||||
plistlib (GH-119343) (#142149)
|
||||
|
||||
Reading a specially prepared small Plist file could cause OOM because file's
|
||||
read(n) preallocates a bytes object for reading the specified amount of
|
||||
data. Now plistlib reads large data by chunks, therefore the upper limit of
|
||||
consumed memory is proportional to the size of the input file.
|
||||
(cherry picked from commit 694922cf40aa3a28f898b5f5ee08b71b4922df70)
|
||||
|
||||
CVE: CVE-2025-13837
|
||||
Upstream-Status: Backport [https://github.com/python/cpython/commit/5a8b19677d818fb41ee55f310233772e15aa1a2b]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
Lib/plistlib.py | 31 ++++++++++------
|
||||
Lib/test/test_plistlib.py | 37 +++++++++++++++++--
|
||||
...-05-21-22-11-31.gh-issue-119342.BTFj4Z.rst | 5 +++
|
||||
3 files changed, 59 insertions(+), 14 deletions(-)
|
||||
create mode 100644 Misc/NEWS.d/next/Security/2024-05-21-22-11-31.gh-issue-119342.BTFj4Z.rst
|
||||
|
||||
diff --git a/Lib/plistlib.py b/Lib/plistlib.py
|
||||
index 3292c30d5f..c5554ea1f7 100644
|
||||
--- a/Lib/plistlib.py
|
||||
+++ b/Lib/plistlib.py
|
||||
@@ -73,6 +73,9 @@ from xml.parsers.expat import ParserCreate
|
||||
PlistFormat = enum.Enum('PlistFormat', 'FMT_XML FMT_BINARY', module=__name__)
|
||||
globals().update(PlistFormat.__members__)
|
||||
|
||||
+# Data larger than this will be read in chunks, to prevent extreme
|
||||
+# overallocation.
|
||||
+_MIN_READ_BUF_SIZE = 1 << 20
|
||||
|
||||
class UID:
|
||||
def __init__(self, data):
|
||||
@@ -499,12 +502,24 @@ class _BinaryPlistParser:
|
||||
|
||||
return tokenL
|
||||
|
||||
+ def _read(self, size):
|
||||
+ cursize = min(size, _MIN_READ_BUF_SIZE)
|
||||
+ data = self._fp.read(cursize)
|
||||
+ while True:
|
||||
+ if len(data) != cursize:
|
||||
+ raise InvalidFileException
|
||||
+ if cursize == size:
|
||||
+ return data
|
||||
+ delta = min(cursize, size - cursize)
|
||||
+ data += self._fp.read(delta)
|
||||
+ cursize += delta
|
||||
+
|
||||
def _read_ints(self, n, size):
|
||||
- data = self._fp.read(size * n)
|
||||
+ data = self._read(size * n)
|
||||
if size in _BINARY_FORMAT:
|
||||
return struct.unpack(f'>{n}{_BINARY_FORMAT[size]}', data)
|
||||
else:
|
||||
- if not size or len(data) != size * n:
|
||||
+ if not size:
|
||||
raise InvalidFileException()
|
||||
return tuple(int.from_bytes(data[i: i + size], 'big')
|
||||
for i in range(0, size * n, size))
|
||||
@@ -561,22 +576,16 @@ class _BinaryPlistParser:
|
||||
|
||||
elif tokenH == 0x40: # data
|
||||
s = self._get_size(tokenL)
|
||||
- result = self._fp.read(s)
|
||||
- if len(result) != s:
|
||||
- raise InvalidFileException()
|
||||
+ result = self._read(s)
|
||||
|
||||
elif tokenH == 0x50: # ascii string
|
||||
s = self._get_size(tokenL)
|
||||
- data = self._fp.read(s)
|
||||
- if len(data) != s:
|
||||
- raise InvalidFileException()
|
||||
+ data = self._read(s)
|
||||
result = data.decode('ascii')
|
||||
|
||||
elif tokenH == 0x60: # unicode string
|
||||
s = self._get_size(tokenL) * 2
|
||||
- data = self._fp.read(s)
|
||||
- if len(data) != s:
|
||||
- raise InvalidFileException()
|
||||
+ data = self._read(s)
|
||||
result = data.decode('utf-16be')
|
||||
|
||||
elif tokenH == 0x80: # UID
|
||||
diff --git a/Lib/test/test_plistlib.py b/Lib/test/test_plistlib.py
|
||||
index fa46050658..229a5a242e 100644
|
||||
--- a/Lib/test/test_plistlib.py
|
||||
+++ b/Lib/test/test_plistlib.py
|
||||
@@ -838,8 +838,7 @@ class TestPlistlib(unittest.TestCase):
|
||||
|
||||
class TestBinaryPlistlib(unittest.TestCase):
|
||||
|
||||
- @staticmethod
|
||||
- def decode(*objects, offset_size=1, ref_size=1):
|
||||
+ def build(self, *objects, offset_size=1, ref_size=1):
|
||||
data = [b'bplist00']
|
||||
offset = 8
|
||||
offsets = []
|
||||
@@ -851,7 +850,11 @@ class TestBinaryPlistlib(unittest.TestCase):
|
||||
len(objects), 0, offset)
|
||||
data.extend(offsets)
|
||||
data.append(tail)
|
||||
- return plistlib.loads(b''.join(data), fmt=plistlib.FMT_BINARY)
|
||||
+ return b''.join(data)
|
||||
+
|
||||
+ def decode(self, *objects, offset_size=1, ref_size=1):
|
||||
+ data = self.build(*objects, offset_size=offset_size, ref_size=ref_size)
|
||||
+ return plistlib.loads(data, fmt=plistlib.FMT_BINARY)
|
||||
|
||||
def test_nonstandard_refs_size(self):
|
||||
# Issue #21538: Refs and offsets are 24-bit integers
|
||||
@@ -959,6 +962,34 @@ class TestBinaryPlistlib(unittest.TestCase):
|
||||
with self.assertRaises(plistlib.InvalidFileException):
|
||||
plistlib.loads(b'bplist00' + data, fmt=plistlib.FMT_BINARY)
|
||||
|
||||
+ def test_truncated_large_data(self):
|
||||
+ self.addCleanup(os_helper.unlink, os_helper.TESTFN)
|
||||
+ def check(data):
|
||||
+ with open(os_helper.TESTFN, 'wb') as f:
|
||||
+ f.write(data)
|
||||
+ # buffered file
|
||||
+ with open(os_helper.TESTFN, 'rb') as f:
|
||||
+ with self.assertRaises(plistlib.InvalidFileException):
|
||||
+ plistlib.load(f, fmt=plistlib.FMT_BINARY)
|
||||
+ # unbuffered file
|
||||
+ with open(os_helper.TESTFN, 'rb', buffering=0) as f:
|
||||
+ with self.assertRaises(plistlib.InvalidFileException):
|
||||
+ plistlib.load(f, fmt=plistlib.FMT_BINARY)
|
||||
+ for w in range(20, 64):
|
||||
+ s = 1 << w
|
||||
+ # data
|
||||
+ check(self.build(b'\x4f\x13' + s.to_bytes(8, 'big')))
|
||||
+ # ascii string
|
||||
+ check(self.build(b'\x5f\x13' + s.to_bytes(8, 'big')))
|
||||
+ # unicode string
|
||||
+ check(self.build(b'\x6f\x13' + s.to_bytes(8, 'big')))
|
||||
+ # array
|
||||
+ check(self.build(b'\xaf\x13' + s.to_bytes(8, 'big')))
|
||||
+ # dict
|
||||
+ check(self.build(b'\xdf\x13' + s.to_bytes(8, 'big')))
|
||||
+ # number of objects
|
||||
+ check(b'bplist00' + struct.pack('>6xBBQQQ', 1, 1, s, 0, 8))
|
||||
+
|
||||
|
||||
class TestKeyedArchive(unittest.TestCase):
|
||||
def test_keyed_archive_data(self):
|
||||
diff --git a/Misc/NEWS.d/next/Security/2024-05-21-22-11-31.gh-issue-119342.BTFj4Z.rst b/Misc/NEWS.d/next/Security/2024-05-21-22-11-31.gh-issue-119342.BTFj4Z.rst
|
||||
new file mode 100644
|
||||
index 0000000000..04fd8faca4
|
||||
--- /dev/null
|
||||
+++ b/Misc/NEWS.d/next/Security/2024-05-21-22-11-31.gh-issue-119342.BTFj4Z.rst
|
||||
@@ -0,0 +1,5 @@
|
||||
+Fix a potential memory denial of service in the :mod:`plistlib` module.
|
||||
+When reading a Plist file received from untrusted source, 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.
|
||||
@@ -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,10 +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-test_storlines-skip-due-to-load-variability.patch \
|
||||
file://0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch \
|
||||
file://CVE-2025-6075.patch \
|
||||
file://CVE-2025-13836.patch \
|
||||
file://CVE-2025-13837.patch \
|
||||
file://CVE-2025-12084.patch \
|
||||
"
|
||||
|
||||
SRC_URI:append:class-native = " \
|
||||
@@ -49,7 +45,7 @@ SRC_URI:append:class-native = " \
|
||||
file://12-distutils-prefix-is-inside-staging-area.patch \
|
||||
file://0001-Don-t-search-system-for-headers-libraries.patch \
|
||||
"
|
||||
SRC_URI[sha256sum] = "c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076"
|
||||
SRC_URI[sha256sum] = "de6517421601e39a9a3bc3e1bc4c7b2f239297423ee05e282598c83ec0647505"
|
||||
|
||||
# exclude pre-releases for both python 2.x and 3.x
|
||||
UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
|
||||
@@ -5,8 +5,8 @@ export TZ="Europe/London"
|
||||
export TCL_LIBRARY=library
|
||||
|
||||
# Some tests are overly strict with timings and fail on loaded systems.
|
||||
# See bugs #14825 #14882 #15081 #15321.
|
||||
SKIPPED_TESTS='async-* cmdMZ-6.6 event-* exit-1.* socket-* socket_inet-*'
|
||||
# See bugs #14825 #14882 #15081 #15321 #15467.
|
||||
SKIPPED_TESTS='async-* cmdMZ-6.6 event-* exit-1.* socket-* socket_inet-* http11-*'
|
||||
|
||||
for i in `ls tests/*.test | awk -F/ '{print $2}'`; do
|
||||
./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://CVE-2025-60753-01.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/"
|
||||
|
||||
|
||||
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
|
||||
--- a/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 <errno.h>
|
||||
#include <syslog.h>
|
||||
@@ -1542,7 +1542,7 @@ index b51f284..abd570d 100644
|
||||
-#include <sys/resource.h>
|
||||
#include <sys/mount.h>
|
||||
#include <sys/wait.h>
|
||||
-#include <libgen.h>
|
||||
#include <libgen.h>
|
||||
#include <fcntl.h>
|
||||
#include <sched.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-02.patch \
|
||||
file://CVE-2025-6020-03.patch \
|
||||
file://CVE-2024-10963.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "e4ec7131a91da44512574268f493c6d8ca105c87091691b8e9b56ca685d4f94d"
|
||||
|
||||
@@ -6,7 +6,7 @@ SECTION = "base"
|
||||
LICENSE = "PD & BSD-3-Clause"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=c679c9d6b02bc2757b3eaf8f53c43fba"
|
||||
|
||||
PV = "2025b"
|
||||
PV = "2026a"
|
||||
|
||||
SRC_URI =" https://www.iana.org/time-zones/repository/releases/tzcode${PV}.tar.gz;name=tzcode;subdir=tz \
|
||||
https://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata;subdir=tz \
|
||||
@@ -16,5 +16,5 @@ S = "${WORKDIR}/tz"
|
||||
|
||||
UPSTREAM_CHECK_URI = "https://www.iana.org/time-zones"
|
||||
|
||||
SRC_URI[tzcode.sha256sum] = "05f8fedb3525ee70d49c87d3fae78a8a0dbae4fe87aa565c65cda9948ae135ec"
|
||||
SRC_URI[tzdata.sha256sum] = "11810413345fc7805017e27ea9fa4885fd74cd61b2911711ad038f5d28d71474"
|
||||
SRC_URI[tzcode.sha256sum] = "f80a17a2eddd2b54041f9c98d75b0aa8038b016d7c5de72892a146d9938740e1"
|
||||
SRC_URI[tzdata.sha256sum] = "77b541725937bb53bd92bd484c0b43bec8545e2d3431ee01f04ef8f2203ba2b7"
|
||||
|
||||
36
meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/CVE-2025-6199.patch
Normal file
36
meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/CVE-2025-6199.patch
Normal file
@@ -0,0 +1,36 @@
|
||||
From 140200be0b4d5355aab76a6fd474e17d117045ca Mon Sep 17 00:00:00 2001
|
||||
From: lumi <lumi@suwi.moe>
|
||||
Date: Sat, 7 Jun 2025 22:27:06 +0200
|
||||
Subject: [PATCH] lzw: Fix reporting of bytes written in decoder
|
||||
|
||||
When the LZW decoder encounters an invalid code, it stops
|
||||
processing the image and returns the whole buffer size.
|
||||
It should return the amount of bytes written, instead.
|
||||
|
||||
Fixes #257
|
||||
|
||||
CVE: CVE-2025-6199
|
||||
|
||||
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/commit/c4986342b241cdc075259565f3fa7a7597d32a32]
|
||||
|
||||
Signed-off-by: Shaik Moin <moins@kpit.com>
|
||||
---
|
||||
gdk-pixbuf/lzw.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gdk-pixbuf/lzw.c b/gdk-pixbuf/lzw.c
|
||||
index 15293560b..4f3dd8beb 100644
|
||||
--- a/gdk-pixbuf/lzw.c
|
||||
+++ b/gdk-pixbuf/lzw.c
|
||||
@@ -208,7 +208,7 @@ lzw_decoder_feed (LZWDecoder *self,
|
||||
/* Invalid code received - just stop here */
|
||||
if (self->code >= self->code_table_size) {
|
||||
self->last_code = self->eoi_code;
|
||||
- return output_length;
|
||||
+ return n_written;
|
||||
}
|
||||
|
||||
/* Convert codeword into indexes */
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -21,6 +21,7 @@ SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
|
||||
file://fatal-loader.patch \
|
||||
file://0001-meson.build-allow-a-subset-of-tests-in-cross-compile.patch \
|
||||
file://CVE-2025-7345.patch \
|
||||
file://CVE-2025-6199.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "ee9b6c75d13ba096907a2e3c6b27b61bcd17f5c7ebeab5a5b439d2f2e39fe44b"
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From a3e82f20a1a1e7d8ffbc960a8bb4aa65b0d151ee Mon Sep 17 00:00:00 2001
|
||||
From: Yoann Congal <yoann.congal@smile.fr>
|
||||
Date: Tue, 6 Dec 2022 21:49:22 +0000
|
||||
Subject: [PATCH] Use the right type when calling GtkWidget methods
|
||||
|
||||
From: Emmanuele Bassi <ebassi@gnome.org>
|
||||
|
||||
Let's avoid complaints from the compiler.
|
||||
|
||||
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gtk/-/commit/a3e82f20a1a1e7d8ffbc960a8bb4aa65b0d151ee]
|
||||
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
|
||||
---
|
||||
gtk/gtklabel.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
|
||||
index 7933ab2af73..40a569004b6 100644
|
||||
--- a/gtk/gtklabel.c
|
||||
+++ b/gtk/gtklabel.c
|
||||
@@ -4232,7 +4232,7 @@ gtk_label_style_updated (GtkWidget *widget)
|
||||
if (change == NULL || gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_FONT))
|
||||
{
|
||||
gtk_label_clear_layout (GTK_LABEL (widget));
|
||||
- gtk_widget_queue_resize (label);
|
||||
+ gtk_widget_queue_resize (widget);
|
||||
}
|
||||
|
||||
if (change == NULL || gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_TEXT_ATTRS) ||
|
||||
@@ -0,0 +1,48 @@
|
||||
From 76bc2a57136fd6cf0374fa3f86a7ba646b779803 Mon Sep 17 00:00:00 2001
|
||||
From: Yoann Congal <yoann.congal@smile.fr>
|
||||
Date: Fri, 19 Jan 2024 10:41:33 +0000
|
||||
Subject: [PATCH] tests: Add GdkEvent casts in testinput
|
||||
|
||||
From: David King <amigadave@amigadave.com>
|
||||
|
||||
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gtk/-/commit/76bc2a57136fd6cf0374fa3f86a7ba646b779803]
|
||||
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
|
||||
---
|
||||
tests/testinput.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/tests/testinput.c b/tests/testinput.c
|
||||
index b68552a4280..3d4d7f6f875 100644
|
||||
--- a/tests/testinput.c
|
||||
+++ b/tests/testinput.c
|
||||
@@ -194,7 +194,7 @@ button_press_event (GtkWidget *widget, GdkEventButton *event)
|
||||
|
||||
print_axes (event->device, event->axes);
|
||||
gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure);
|
||||
- draw_brush (widget, gdk_device_get_source (gdk_event_get_source_device (event)),
|
||||
+ draw_brush (widget, gdk_device_get_source (gdk_event_get_source_device ((GdkEvent *)event)),
|
||||
event->x, event->y, pressure);
|
||||
|
||||
motion_time = event->time;
|
||||
@@ -239,10 +239,10 @@ motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
|
||||
gdk_device_get_axis (event->device, events[i]->axes, GDK_AXIS_X, &x);
|
||||
gdk_device_get_axis (event->device, events[i]->axes, GDK_AXIS_Y, &y);
|
||||
gdk_device_get_axis (event->device, events[i]->axes, GDK_AXIS_PRESSURE, &pressure);
|
||||
- draw_brush (widget, gdk_device_get_source (gdk_event_get_source_device (event)),
|
||||
+ draw_brush (widget, gdk_device_get_source (gdk_event_get_source_device ((GdkEvent *)event)),
|
||||
x, y, pressure);
|
||||
|
||||
- print_axes (gdk_event_get_source_device (event), events[i]->axes);
|
||||
+ print_axes (gdk_event_get_source_device ((GdkEvent *)event), events[i]->axes);
|
||||
}
|
||||
gdk_device_free_history (events, n_events);
|
||||
}
|
||||
@@ -252,7 +252,7 @@ motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
|
||||
|
||||
gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure);
|
||||
|
||||
- draw_brush (widget, gdk_device_get_source (gdk_event_get_source_device (event)),
|
||||
+ draw_brush (widget, gdk_device_get_source (gdk_event_get_source_device ((GdkEvent *)event)),
|
||||
event->x, event->y, pressure);
|
||||
}
|
||||
motion_time = event->time;
|
||||
@@ -7,6 +7,8 @@ SRC_URI = "${GNOME_MIRROR}/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
|
||||
file://0003-Add-disable-opengl-configure-option.patch \
|
||||
file://link_fribidi.patch \
|
||||
file://CVE-2024-6655.patch \
|
||||
file://0001-Use-the-right-type-when-calling-GtkWidget-methods.patch \
|
||||
file://0002-tests-Add-GdkEvent-casts-in-testinput.patch \
|
||||
"
|
||||
SRC_URI[sha256sum] = "dbc69f90ddc821b8d1441f00374dc1da4323a2eafa9078e61edbe5eeefa852ec"
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ SECTION = "x11/wm"
|
||||
SRCREV = "7ad885912efb2131e80914e964d5e635b0d07b40"
|
||||
PV = "0.3+git${SRCPV}"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master"
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};protocol=https;branch=master"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ DEPENDS = "virtual/libx11 libxext"
|
||||
|
||||
#SRCREV for 1.12
|
||||
SRCREV = "e846ee434f8e23d9db38af13c523f791495e0e87"
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master"
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};protocol=https;branch=master"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ DEPENDS = "libmatchbox virtual/libx11 libxext libxrender startup-notification ex
|
||||
|
||||
# SRCREV tagged 1.2.2
|
||||
SRCREV = "27da947e7fbdf9659f7e5bd1e92af92af6c03970"
|
||||
SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager;branch=master \
|
||||
SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager;protocol=https;branch=master \
|
||||
file://0001-Fix-build-with-gcc-10.patch \
|
||||
file://kbdconfig"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ SECTION = "x11/base"
|
||||
SRCREV = "23c8af5ba4a1b7efbaf0bbca59a65ff7e10a1a06"
|
||||
PV = "0.1.1+git${SRCPV}"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master"
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};protocol=https;branch=master"
|
||||
UPSTREAM_CHECK_COMMITS = "1"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
@@ -16,7 +16,7 @@ PV = "0.3+git${SRCPV}"
|
||||
|
||||
inherit native
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git;branch=master"
|
||||
SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git;protocol=https;branch=master"
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_configure() {
|
||||
|
||||
@@ -17,8 +17,8 @@ include recipes-kernel/linux/linux-yocto-dev-revisions.inc
|
||||
KBRANCH = "v5.18/standard/base"
|
||||
KMETA = "kernel-meta"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=master;destsuffix=${KMETA}"
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;protocol=https;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;protocol=https;type=kmeta;name=meta;branch=master;destsuffix=${KMETA}"
|
||||
|
||||
# Set default SRCREVs. Both the machine and meta SRCREVs are statically set
|
||||
# to the korg v3.7 tag, and hence prevent network access during parsing. If
|
||||
|
||||
@@ -14,8 +14,8 @@ python () {
|
||||
SRCREV_machine ?= "c8a23ffc90611d97d4e0d8b05e5aa30db4795e87"
|
||||
SRCREV_meta ?= "876ae2ac4c2844426ff953a696e455b44d953527"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;protocol=https;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;protocol=https;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
|
||||
LINUX_VERSION ?= "5.10.234"
|
||||
|
||||
|
||||
@@ -11,13 +11,13 @@ python () {
|
||||
raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
|
||||
}
|
||||
|
||||
SRCREV_machine ?= "27c8048897d9d7ff1ed6d2643cbc024eb13ae342"
|
||||
SRCREV_meta ?= "78eca082b68ad521c3bb9a1f9f0325e044045f18"
|
||||
SRCREV_machine ?= "46e4e1200a4fa889438a2cc62151bb7f1057421a"
|
||||
SRCREV_meta ?= "b75d71b7f2455467f2260d514040ccb44d4bdda5"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;protocol=https;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;protocol=https;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
|
||||
|
||||
LINUX_VERSION ?= "5.15.199"
|
||||
LINUX_VERSION ?= "5.15.201"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@ SRCREV_meta ?= "876ae2ac4c2844426ff953a696e455b44d953527"
|
||||
|
||||
PV = "${LINUX_VERSION}+git${SRCPV}"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;protocol=https;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;protocol=https;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
|
||||
COMPATIBLE_MACHINE = "^(qemux86|qemux86-64|qemuarm|qemuarmv5)$"
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ KCONFIG_MODE = "--allnoconfig"
|
||||
|
||||
require recipes-kernel/linux/linux-yocto.inc
|
||||
|
||||
LINUX_VERSION ?= "5.15.199"
|
||||
LINUX_VERSION ?= "5.15.201"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
|
||||
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
|
||||
@@ -14,13 +14,13 @@ DEPENDS += "openssl-native util-linux-native"
|
||||
KMETA = "kernel-meta"
|
||||
KCONF_BSP_AUDIT_LEVEL = "2"
|
||||
|
||||
SRCREV_machine ?= "7b20eb2129d25bb2a1cb963d30c2f3adb1e144b3"
|
||||
SRCREV_meta ?= "78eca082b68ad521c3bb9a1f9f0325e044045f18"
|
||||
SRCREV_machine ?= "5ae014d6b48449ae38584cc174ef362f6582a8fc"
|
||||
SRCREV_meta ?= "b75d71b7f2455467f2260d514040ccb44d4bdda5"
|
||||
|
||||
PV = "${LINUX_VERSION}+git${SRCPV}"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;protocol=https;branch=${KBRANCH};name=machine \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;protocol=https;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
|
||||
|
||||
COMPATIBLE_MACHINE = "^(qemux86|qemux86-64|qemuarm64|qemuarm|qemuarmv5)$"
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@ SRCREV_machine:qemumips64 ?= "4bae0f4714f4afc50c02ea884ec8ba6026d2ec16"
|
||||
SRCREV_machine ?= "0ef80b08429534f460a78de68ee5c6a05f722eb0"
|
||||
SRCREV_meta ?= "876ae2ac4c2844426ff953a696e455b44d953527"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;protocol=https;name=machine;branch=${KBRANCH}; \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;protocol=https;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
LINUX_VERSION ?= "5.10.234"
|
||||
|
||||
@@ -14,32 +14,32 @@ KBRANCH:qemux86 ?= "v5.15/standard/base"
|
||||
KBRANCH:qemux86-64 ?= "v5.15/standard/base"
|
||||
KBRANCH:qemumips64 ?= "v5.15/standard/mti-malta64"
|
||||
|
||||
SRCREV_machine:qemuarm ?= "0ea8d4a7d24642475c1d1e0d8be44976600eb630"
|
||||
SRCREV_machine:qemuarm64 ?= "33aae9ebda82736fc0246e4d2bd7967bb7ef492a"
|
||||
SRCREV_machine:qemumips ?= "0d159686c17443503bc7b59f25b5129c8543193d"
|
||||
SRCREV_machine:qemuppc ?= "c8e213f83bae4792c1042bdcedd46fa60963c69b"
|
||||
SRCREV_machine:qemuriscv64 ?= "e7bbf58a0f6828ffb92109eb423eb3d1327f091a"
|
||||
SRCREV_machine:qemuriscv32 ?= "e7bbf58a0f6828ffb92109eb423eb3d1327f091a"
|
||||
SRCREV_machine:qemux86 ?= "e7bbf58a0f6828ffb92109eb423eb3d1327f091a"
|
||||
SRCREV_machine:qemux86-64 ?= "e7bbf58a0f6828ffb92109eb423eb3d1327f091a"
|
||||
SRCREV_machine:qemumips64 ?= "58c96e47bbd784e078e265426b9276bad2bb7e22"
|
||||
SRCREV_machine ?= "e7bbf58a0f6828ffb92109eb423eb3d1327f091a"
|
||||
SRCREV_meta ?= "78eca082b68ad521c3bb9a1f9f0325e044045f18"
|
||||
SRCREV_machine:qemuarm ?= "9750e854c9e92d55a2cb042c5ce72e712b24217d"
|
||||
SRCREV_machine:qemuarm64 ?= "8634ca1dd87be9b55bd383dc8636b73b82a28051"
|
||||
SRCREV_machine:qemumips ?= "54eca1788efd507120c9dc08681a6a31038513a1"
|
||||
SRCREV_machine:qemuppc ?= "3a3a4ecdcebb4d3deaa8b5c4ec3e167d5f31305c"
|
||||
SRCREV_machine:qemuriscv64 ?= "b5ccd2e275c9b68e5dc564b6febeaae8dda42bc5"
|
||||
SRCREV_machine:qemuriscv32 ?= "b5ccd2e275c9b68e5dc564b6febeaae8dda42bc5"
|
||||
SRCREV_machine:qemux86 ?= "b5ccd2e275c9b68e5dc564b6febeaae8dda42bc5"
|
||||
SRCREV_machine:qemux86-64 ?= "b5ccd2e275c9b68e5dc564b6febeaae8dda42bc5"
|
||||
SRCREV_machine:qemumips64 ?= "e643e82fef4b4352b8f6ddf802181526edc806ca"
|
||||
SRCREV_machine ?= "b5ccd2e275c9b68e5dc564b6febeaae8dda42bc5"
|
||||
SRCREV_meta ?= "b75d71b7f2455467f2260d514040ccb44d4bdda5"
|
||||
|
||||
# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
|
||||
# get the <version>/base branch, which is pure upstream -stable, and the same
|
||||
# meta SRCREV as the linux-yocto-standard builds. Select your version using the
|
||||
# normal PREFERRED_VERSION settings.
|
||||
BBCLASSEXTEND = "devupstream:target"
|
||||
SRCREV_machine:class-devupstream ?= "7b232985052fcf6a78bf0f965aa4241c0678c2ba"
|
||||
SRCREV_machine:class-devupstream ?= "3330a8d33e086f76608bb4e80a3dc569d04a8814"
|
||||
PN:class-devupstream = "linux-yocto-upstream"
|
||||
KBRANCH:class-devupstream = "v5.15/base"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
|
||||
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;protocol=https;name=machine;branch=${KBRANCH}; \
|
||||
git://git.yoctoproject.org/yocto-kernel-cache;protocol=https;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
||||
LINUX_VERSION ?= "5.15.199"
|
||||
LINUX_VERSION ?= "5.15.201"
|
||||
|
||||
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
|
||||
DEPENDS += "openssl-native util-linux-native"
|
||||
|
||||
34
meta/recipes-multimedia/alsa/alsa-lib/CVE-2026-25068.patch
Normal file
34
meta/recipes-multimedia/alsa/alsa-lib/CVE-2026-25068.patch
Normal file
@@ -0,0 +1,34 @@
|
||||
From 5f7fe33002d2d98d84f72e381ec2cccc0d5d3d40 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Thu, 29 Jan 2026 16:51:09 +0100
|
||||
Subject: [PATCH] topology: decoder - add boundary check for channel mixer
|
||||
count
|
||||
|
||||
Malicious binary topology file may cause heap corruption.
|
||||
|
||||
CVE: CVE-2026-25068
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
|
||||
Upstream-Status: Backport [https://github.com/alsa-project/alsa-lib/commit/5f7fe33002d2d98d84f72e381ec2cccc0d5d3d40]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
src/topology/ctl.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/topology/ctl.c b/src/topology/ctl.c
|
||||
index a0c24518..322c461c 100644
|
||||
--- a/src/topology/ctl.c
|
||||
+++ b/src/topology/ctl.c
|
||||
@@ -1246,6 +1246,11 @@ int tplg_decode_control_mixer1(snd_tplg_t *tplg,
|
||||
if (mc->num_channels > 0) {
|
||||
map = tplg_calloc(heap, sizeof(*map));
|
||||
map->num_channels = mc->num_channels;
|
||||
+ if (map->num_channels > SND_TPLG_MAX_CHAN ||
|
||||
+ map->num_channels > SND_SOC_TPLG_MAX_CHAN) {
|
||||
+ SNDERR("mixer: unexpected channel count %d", map->num_channels);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
for (i = 0; i < map->num_channels; i++) {
|
||||
map->channel[i].reg = mc->channel[i].reg;
|
||||
map->channel[i].shift = mc->channel[i].shift;
|
||||
@@ -10,6 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7 \
|
||||
"
|
||||
|
||||
SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2"
|
||||
SRC_URI += "file://CVE-2026-25068.patch"
|
||||
SRC_URI[sha256sum] = "ad582993d52cdb5fb159a0beab60a6ac57eab0cc1bdf85dc4db6d6197f02333f"
|
||||
|
||||
inherit autotools pkgconfig
|
||||
|
||||
31
meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-10256.patch
Normal file
31
meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-10256.patch
Normal file
@@ -0,0 +1,31 @@
|
||||
From a25462482c02c004d685a8fcf2fa63955aaa0931 Mon Sep 17 00:00:00 2001
|
||||
From: Jiasheng Jiang <jiashengjiangcool@gmail.com>
|
||||
Date: Wed, 6 Aug 2025 16:39:47 +0000
|
||||
Subject: [PATCH] libavfilter/af_firequalizer: Add check for av_malloc_array()
|
||||
|
||||
Add check for the return value of av_malloc_array() to avoid potential NULL pointer dereference.
|
||||
|
||||
Fixes: d3be186ed1 ("avfilter/firequalizer: add dumpfile and dumpscale option")
|
||||
Signed-off-by: Jiasheng Jiang <jiashengjiangcool@gmail.com>
|
||||
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
||||
|
||||
CVE: CVE-2025-10256
|
||||
Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/a25462482c02c004d685a8fcf2fa63955aaa0931]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
libavfilter/af_firequalizer.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/libavfilter/af_firequalizer.c b/libavfilter/af_firequalizer.c
|
||||
index 38663200eb..f14983b431 100644
|
||||
--- a/libavfilter/af_firequalizer.c
|
||||
+++ b/libavfilter/af_firequalizer.c
|
||||
@@ -793,6 +793,8 @@ static int config_input(AVFilterLink *inlink)
|
||||
if (s->dumpfile) {
|
||||
s->analysis_rdft = av_rdft_init(rdft_bits, DFT_R2C);
|
||||
s->dump_buf = av_malloc_array(s->analysis_rdft_len, sizeof(*s->dump_buf));
|
||||
+ if (!s->dump_buf)
|
||||
+ return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
s->analysis_buf = av_malloc_array(s->analysis_rdft_len, sizeof(*s->analysis_buf));
|
||||
@@ -53,6 +53,7 @@ SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz \
|
||||
file://CVE-2023-6602-CVE-2023-6604-CVE-2023-6605-0002.patch \
|
||||
file://CVE-2023-6602-CVE-2023-6604-CVE-2023-6605-0003.patch \
|
||||
file://CVE-2025-1594.patch \
|
||||
file://CVE-2025-10256.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "04c70c377de233a4b217c2fdf76b19aeb225a287daeb2348bccd978c47b1a1db"
|
||||
|
||||
@@ -17,6 +17,11 @@ SRC_URI[sha256sum] = "b6ae1ee2fa3d42ac489287d3ec34c5885730b1296f0801ae577a35193d
|
||||
|
||||
UPSTREAM_CHECK_REGEX = "libtheora-(?P<pver>\d+(\.\d)+)\.(tar\.gz|tgz)"
|
||||
|
||||
CVE_PRODUCT = "theora"
|
||||
|
||||
inherit autotools pkgconfig
|
||||
|
||||
EXTRA_OECONF = "--disable-examples"
|
||||
|
||||
# fixed-version:branch 1.1 is not affected, vulnerable code is not present yet
|
||||
CVE_CHECK_IGNORE += "CVE-2024-56431"
|
||||
|
||||
44
meta/recipes-multimedia/libtiff/tiff/CVE-2025-61143.patch
Normal file
44
meta/recipes-multimedia/libtiff/tiff/CVE-2025-61143.patch
Normal file
@@ -0,0 +1,44 @@
|
||||
From 4d28af5fe61b1760f10981f5072ff1e6fd44f210 Mon Sep 17 00:00:00 2001
|
||||
From: Lee Howard <faxguy@howardsilvan.com>
|
||||
Date: Fri, 5 Sep 2025 21:44:49 +0000
|
||||
Subject: [PATCH] tiffcrop: avoid nullptr dereference
|
||||
|
||||
Fixes #734
|
||||
|
||||
CVE: CVE-2025-61143
|
||||
Upstream-Status: Backport [https://gitlab.com/libtiff/libtiff/-/commit/4d28af5fe61b1760f10981f5072ff1e6fd44f210]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
tools/tiffcrop.c | 2 +-
|
||||
tools/tiffdither.c | 5 +++++
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
|
||||
index ae414efc..1cbb49b6 100644
|
||||
--- a/tools/tiffcrop.c
|
||||
+++ b/tools/tiffcrop.c
|
||||
@@ -2561,7 +2561,7 @@ main(int argc, char* argv[])
|
||||
|
||||
if (dump.outfile != NULL)
|
||||
{
|
||||
- dump_info (dump.outfile, dump.format, "", "Completed run for %s", TIFFFileName(out));
|
||||
+ dump_info (dump.outfile, dump.format, "", "Completed run for %s", out ? TIFFFileName(out) : "(not opened)");
|
||||
fclose (dump.outfile);
|
||||
}
|
||||
}
|
||||
diff --git a/tools/tiffdither.c b/tools/tiffdither.c
|
||||
index 3c64fdc0..405527c7 100644
|
||||
--- a/tools/tiffdither.c
|
||||
+++ b/tools/tiffdither.c
|
||||
@@ -84,6 +84,11 @@ fsdither(TIFF* in, TIFF* out)
|
||||
fprintf(stderr, "Out of memory.\n");
|
||||
goto skip_on_error;
|
||||
}
|
||||
+ if (imagewidth > TIFFScanlineSize(in))
|
||||
+ {
|
||||
+ fprintf(stderr, "Image width exceeds scanline size.\n");
|
||||
+ goto skip_on_error;
|
||||
+ }
|
||||
|
||||
/*
|
||||
* Get first line
|
||||
27
meta/recipes-multimedia/libtiff/tiff/CVE-2025-61144.patch
Normal file
27
meta/recipes-multimedia/libtiff/tiff/CVE-2025-61144.patch
Normal file
@@ -0,0 +1,27 @@
|
||||
From 88cf9dbb48f6e172629795ecffae35d5052f68aa Mon Sep 17 00:00:00 2001
|
||||
From: Lee Howard <faxguy@howardsilvan.com>
|
||||
Date: Fri, 5 Sep 2025 21:46:03 +0000
|
||||
Subject: [PATCH] tiffcrop: avoid buffer overflow
|
||||
|
||||
Fixes #740
|
||||
|
||||
CVE: CVE-2025-61144
|
||||
Upstream-Status: Backport [https://gitlab.com/libtiff/libtiff/-/commit/88cf9dbb48f6e172629795ecffae35d5052f68aa]
|
||||
Signed-off-by: Peter Marko <peter.marko@siemens.com>
|
||||
---
|
||||
tools/tiffcrop.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
|
||||
index ae414efc..afa1cce5 100644
|
||||
--- a/tools/tiffcrop.c
|
||||
+++ b/tools/tiffcrop.c
|
||||
@@ -3913,7 +3913,7 @@ combineSeparateSamplesBytes (unsigned char *srcbuffs[], unsigned char *out,
|
||||
{
|
||||
if ((dumpfile != NULL) && (level == 2))
|
||||
{
|
||||
- for (s = 0; s < spp; s++)
|
||||
+ for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
|
||||
{
|
||||
dump_info (dumpfile, format, "combineSeparateSamplesBytes","Input data, Sample %"PRIu16, s);
|
||||
dump_buffer(dumpfile, format, 1, cols, row, srcbuffs[s] + (row * src_rowsize));
|
||||
@@ -6,6 +6,7 @@ Subject: [PATCH] tiffcrop: fix double-free and memory leak exposed by issue
|
||||
|
||||
Upstream-Status: Backport [https://gitlab.com/libtiff/libtiff/-/commit/0ac97aa7a5bffddd88f7cdbe517264e9db3f5bd5]
|
||||
CVE: CVE-2025-8961
|
||||
CVE: CVE-2025-61145
|
||||
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||
---
|
||||
tools/tiffcrop.c | 8 +++++++-
|
||||
|
||||
@@ -65,6 +65,8 @@ SRC_URI = "http://download.osgeo.org/libtiff/tiff-${PV}.tar.gz \
|
||||
file://CVE-2025-9900.patch \
|
||||
file://CVE-2025-8961.patch \
|
||||
file://CVE-2025-9165.patch \
|
||||
file://CVE-2025-61143.patch \
|
||||
file://CVE-2025-61144.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8"
|
||||
|
||||
@@ -11,7 +11,7 @@ RDEPENDS:${PN} = "settings-daemon"
|
||||
|
||||
# SRCREV tagged 0.2
|
||||
SRCREV = "ef2192ce98d9374ffdad5f78544c3f8f353c16aa"
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master \
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};protocol=https;branch=master \
|
||||
file://no-handed.patch"
|
||||
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ SECTION = "x11/wm"
|
||||
|
||||
# SRCREV tagged 2.2
|
||||
SRCREV = "6bc67d09da4147e5552fe30011a05a2c59d2f777"
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN}-2;branch=master \
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN}-2;protocol=https;branch=master \
|
||||
file://vfolders/ \
|
||||
"
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ DEPENDS = "libfakekey expat libxft"
|
||||
|
||||
#SRCREV for 0.1.1
|
||||
SRCREV = "630d89068dc0a1e9199306d405cb32f892dfa4d3"
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};branch=matchbox-keyboard-0-1 \
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};protocol=https;branch=matchbox-keyboard-0-1 \
|
||||
file://0001-desktop-file-Hide-the-keyboard-from-app-list.patch \
|
||||
file://80matchboxkeyboard.sh"
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ RPROVIDES:${PN} = "matchbox-panel"
|
||||
RREPLACES:${PN} = "matchbox-panel"
|
||||
RCONFLICTS:${PN} = "matchbox-panel"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master \
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};protocol=https;branch=master \
|
||||
file://0001-applets-systray-Allow-icons-to-be-smaller.patch \
|
||||
"
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ SECTION = "x11/utils"
|
||||
|
||||
#SRCREV tagged 0.2
|
||||
SRCREV = "161276d0f5d1be8187010fd0d9581a6feca70ea5"
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master"
|
||||
SRC_URI = "git://git.yoctoproject.org/${BPN};protocol=https;branch=master"
|
||||
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
@@ -2,7 +2,7 @@ require matchbox-theme-sato.inc
|
||||
|
||||
# SRCREV tagged 0.2
|
||||
SRCREV = "df085ba9cdaeaf2956890b0e29d7ea1779bf6c78"
|
||||
SRC_URI = "git://git.yoctoproject.org/matchbox-sato;branch=master"
|
||||
SRC_URI = "git://git.yoctoproject.org/matchbox-sato;protocol=https;branch=master"
|
||||
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
@@ -11,7 +11,7 @@ DEPENDS = "matchbox-panel-2 gtk+3"
|
||||
|
||||
# SRCREV tagged 0.3
|
||||
SRCREV = "9250fa5a012d84ff45984e8c4345ee7635227756"
|
||||
SRC_URI = "git://git.yoctoproject.org/screenshot;branch=master"
|
||||
SRC_URI = "git://git.yoctoproject.org/screenshot;protocol=https;branch=master"
|
||||
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
@@ -9,7 +9,7 @@ SECTION = "x11"
|
||||
|
||||
# SRCREV tagged 0.0.2
|
||||
SRCREV = "b2e5da502f8c5ff75e9e6da771372ef8e40fd9a2"
|
||||
SRC_URI = "git://git.yoctoproject.org/xsettings-daemon;branch=master \
|
||||
SRC_URI = "git://git.yoctoproject.org/xsettings-daemon;protocol=https;branch=master \
|
||||
file://addsoundkeys.patch \
|
||||
file://70settings-daemon.sh \
|
||||
"
|
||||
|
||||
42
meta/recipes-support/curl/curl/CVE-2025-14524.patch
Normal file
42
meta/recipes-support/curl/curl/CVE-2025-14524.patch
Normal file
@@ -0,0 +1,42 @@
|
||||
From b3e2318ff3cbe4a9babe5b6875916a429bd584be Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stenberg <daniel@haxx.se>
|
||||
Date: Wed, 10 Dec 2025 11:40:47 +0100
|
||||
Subject: [PATCH] curl_sasl: if redirected, require permission to use bearer
|
||||
|
||||
Closes #19933
|
||||
|
||||
CVE: CVE-2025-14524
|
||||
Upstream-Status: Backport [https://github.com/curl/curl/commit/1a822275d333dc6da6043497160fd04c8fa48640]
|
||||
|
||||
Signed-off-by: Amaury Couderc <amaury.couderc@est.tech>
|
||||
|
||||
---
|
||||
lib/curl_sasl.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/curl_sasl.c b/lib/curl_sasl.c
|
||||
index 7e28c92..f0b0341 100644
|
||||
--- a/lib/curl_sasl.c
|
||||
+++ b/lib/curl_sasl.c
|
||||
@@ -345,7 +345,9 @@ CURLcode Curl_sasl_start(struct SASL *sasl, struct Curl_easy *data,
|
||||
data->set.str[STRING_SERVICE_NAME] :
|
||||
sasl->params->service;
|
||||
#endif
|
||||
- const char *oauth_bearer = data->set.str[STRING_BEARER];
|
||||
+ const char *oauth_bearer =
|
||||
+ (!data->state.this_is_a_follow || data->set.allow_auth_to_other_hosts) ?
|
||||
+ data->set.str[STRING_BEARER] : NULL;
|
||||
struct bufref nullmsg;
|
||||
|
||||
Curl_bufref_init(&nullmsg);
|
||||
@@ -531,7 +533,9 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
|
||||
data->set.str[STRING_SERVICE_NAME] :
|
||||
sasl->params->service;
|
||||
#endif
|
||||
- const char *oauth_bearer = data->set.str[STRING_BEARER];
|
||||
+ const char *oauth_bearer =
|
||||
+ (!data->state.this_is_a_follow || data->set.allow_auth_to_other_hosts) ?
|
||||
+ data->set.str[STRING_BEARER] : NULL;
|
||||
struct bufref serverdata;
|
||||
|
||||
Curl_bufref_init(&serverdata);
|
||||
98
meta/recipes-support/curl/curl/CVE-2026-1965-1.patch
Normal file
98
meta/recipes-support/curl/curl/CVE-2026-1965-1.patch
Normal file
@@ -0,0 +1,98 @@
|
||||
From 34fa034d9a390c4bd65e2d05262755ec8646ac12 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stenberg <daniel@haxx.se>
|
||||
Date: Thu, 5 Feb 2026 08:34:21 +0100
|
||||
Subject: [PATCH] url: fix reuse of connections using HTTP Negotiate
|
||||
|
||||
Assume Negotiate means connection-based
|
||||
|
||||
Reported-by: Zhicheng Chen
|
||||
Closes #20534
|
||||
|
||||
Upstream-Status: Backport [https://github.com/curl/curl/commit/34fa034d9a390c4bd6]
|
||||
Backported by Ubuntu team https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/curl/7.81.0-1ubuntu1.23/curl_7.81.0-1ubuntu1.23.debian.tar.xz
|
||||
|
||||
CVE: CVE-2026-1965
|
||||
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||
---
|
||||
lib/url.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++----
|
||||
1 file changed, 82 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/lib/url.c
|
||||
+++ b/lib/url.c
|
||||
@@ -1145,6 +1145,18 @@ ConnectionExists(struct Curl_easy *data,
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+#if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
|
||||
+ bool wantNegohttp =
|
||||
+ (data->state.authhost.want & CURLAUTH_NEGOTIATE) &&
|
||||
+ (needle->handler->protocol & PROTO_FAMILY_HTTP);
|
||||
+#ifndef CURL_DISABLE_PROXY
|
||||
+ bool wantProxyNegohttp =
|
||||
+ needle->bits.proxy_user_passwd &&
|
||||
+ (data->state.authproxy.want & CURLAUTH_NEGOTIATE) &&
|
||||
+ (needle->handler->protocol & PROTO_FAMILY_HTTP);
|
||||
+#endif
|
||||
+#endif
|
||||
+
|
||||
*force_reuse = FALSE;
|
||||
*waitpipe = FALSE;
|
||||
|
||||
@@ -1496,6 +1508,57 @@ ConnectionExists(struct Curl_easy *data,
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
+
|
||||
+#ifdef USE_SPNEGO
|
||||
+ /* If we are looking for an HTTP+Negotiate connection, check if this is
|
||||
+ already authenticating with the right credentials. If not, keep looking
|
||||
+ so that we can reuse Negotiate connections if possible. */
|
||||
+ if(wantNegohttp) {
|
||||
+ if(Curl_timestrcmp(needle->user, check->user) ||
|
||||
+ Curl_timestrcmp(needle->passwd, check->passwd))
|
||||
+ continue;
|
||||
+ }
|
||||
+ else if(check->http_negotiate_state != GSS_AUTHNONE) {
|
||||
+ /* Connection is using Negotiate auth but we do not want Negotiate */
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+#ifndef CURL_DISABLE_PROXY
|
||||
+ /* Same for Proxy Negotiate authentication */
|
||||
+ if(wantProxyNegohttp) {
|
||||
+ /* Both check->http_proxy.user and check->http_proxy.passwd can be
|
||||
+ * NULL */
|
||||
+ if(!check->http_proxy.user || !check->http_proxy.passwd)
|
||||
+ continue;
|
||||
+
|
||||
+ if(Curl_timestrcmp(needle->http_proxy.user,
|
||||
+ check->http_proxy.user) ||
|
||||
+ Curl_timestrcmp(needle->http_proxy.passwd,
|
||||
+ check->http_proxy.passwd))
|
||||
+ continue;
|
||||
+ }
|
||||
+ else if(check->proxy_negotiate_state != GSS_AUTHNONE) {
|
||||
+ /* Proxy connection is using Negotiate auth but we do not want Negotiate */
|
||||
+ continue;
|
||||
+ }
|
||||
+#endif
|
||||
+ if(wantNTLMhttp || wantProxyNTLMhttp) {
|
||||
+ /* Credentials are already checked, we may use this connection. We MUST
|
||||
+ * use a connection where it has already been fully negotiated. If it has
|
||||
+ * not, we keep on looking for a better one. */
|
||||
+ chosen = check;
|
||||
+ if((wantNegohttp &&
|
||||
+ (check->http_negotiate_state != GSS_AUTHNONE)) ||
|
||||
+ (wantProxyNegohttp &&
|
||||
+ (check->proxy_negotiate_state != GSS_AUTHNONE))) {
|
||||
+ /* We must use this connection, no other */
|
||||
+ *force_reuse = TRUE;
|
||||
+ break;
|
||||
+ }
|
||||
+ continue; /* get another */
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if(canmultiplex) {
|
||||
/* We can multiplex if we want to. Let's continue looking for
|
||||
the optimal connection to use. */
|
||||
29
meta/recipes-support/curl/curl/CVE-2026-1965-2.patch
Normal file
29
meta/recipes-support/curl/curl/CVE-2026-1965-2.patch
Normal file
@@ -0,0 +1,29 @@
|
||||
From f1a39f221d57354990e3eeeddc3404aede2aff70 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stenberg <daniel@haxx.se>
|
||||
Date: Sat, 21 Feb 2026 18:11:41 +0100
|
||||
Subject: [PATCH] url: fix copy and paste url_match_auth_nego mistake
|
||||
|
||||
Follow-up to 34fa034
|
||||
Reported-by: dahmono on github
|
||||
Closes #20662
|
||||
|
||||
Upstream-Status: Backport [https://github.com/curl/curl/commit/f1a39f221d57354990]
|
||||
Backported by Ubuntu team https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/curl/7.81.0-1ubuntu1.23/curl_7.81.0-1ubuntu1.23.debian.tar.xz
|
||||
|
||||
CVE: CVE-2026-1965
|
||||
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||
---
|
||||
lib/url.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/lib/url.c
|
||||
+++ b/lib/url.c
|
||||
@@ -1542,7 +1542,7 @@ ConnectionExists(struct Curl_easy *data,
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
- if(wantNTLMhttp || wantProxyNTLMhttp) {
|
||||
+ if(wantNegohttp || wantProxyNegohttp) {
|
||||
/* Credentials are already checked, we may use this connection. We MUST
|
||||
* use a connection where it has already been fully negotiated. If it has
|
||||
* not, we keep on looking for a better one. */
|
||||
66
meta/recipes-support/curl/curl/CVE-2026-3783-pre1.patch
Normal file
66
meta/recipes-support/curl/curl/CVE-2026-3783-pre1.patch
Normal file
@@ -0,0 +1,66 @@
|
||||
From d7b970e46ba29a7e558e21d19f485977ffed6266 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stenberg <daniel@haxx.se>
|
||||
Date: Fri, 29 Apr 2022 22:56:47 +0200
|
||||
Subject: [PATCH] http: move Curl_allow_auth_to_host()
|
||||
|
||||
It was mistakenly put within the CURL_DISABLE_HTTP_AUTH #ifdef
|
||||
|
||||
Reported-by: Michael Olbrich
|
||||
Fixes #8772
|
||||
Closes #8775
|
||||
|
||||
Upstream-Status: Backport [https://github.com/curl/curl/commit/d7b970e46ba29a7e558e21d19f485977ffed6266]
|
||||
CVE: CVE-2026-3783 #Dependency Patch
|
||||
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||
---
|
||||
lib/http.c | 30 +++++++++++++++---------------
|
||||
1 file changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/lib/http.c b/lib/http.c
|
||||
index 0d5c449bc72a..b215307dcaaa 100644
|
||||
--- a/lib/http.c
|
||||
+++ b/lib/http.c
|
||||
@@ -651,6 +651,21 @@ CURLcode Curl_http_auth_act(struct Curl_easy *data)
|
||||
return result;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Curl_allow_auth_to_host() tells if authentication, cookies or other
|
||||
+ * "sensitive data" can (still) be sent to this host.
|
||||
+ */
|
||||
+bool Curl_allow_auth_to_host(struct Curl_easy *data)
|
||||
+{
|
||||
+ struct connectdata *conn = data->conn;
|
||||
+ return (!data->state.this_is_a_follow ||
|
||||
+ data->set.allow_auth_to_other_hosts ||
|
||||
+ (data->state.first_host &&
|
||||
+ strcasecompare(data->state.first_host, conn->host.name) &&
|
||||
+ (data->state.first_remote_port == conn->remote_port) &&
|
||||
+ (data->state.first_remote_protocol == conn->handler->protocol)));
|
||||
+}
|
||||
+
|
||||
#ifndef CURL_DISABLE_HTTP_AUTH
|
||||
/*
|
||||
* Output the correct authentication header depending on the auth type
|
||||
@@ -775,21 +790,6 @@ output_auth_headers(struct Curl_easy *data,
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
-/*
|
||||
- * Curl_allow_auth_to_host() tells if authentication, cookies or other
|
||||
- * "sensitive data" can (still) be sent to this host.
|
||||
- */
|
||||
-bool Curl_allow_auth_to_host(struct Curl_easy *data)
|
||||
-{
|
||||
- struct connectdata *conn = data->conn;
|
||||
- return (!data->state.this_is_a_follow ||
|
||||
- data->set.allow_auth_to_other_hosts ||
|
||||
- (data->state.first_host &&
|
||||
- strcasecompare(data->state.first_host, conn->host.name) &&
|
||||
- (data->state.first_remote_port == conn->remote_port) &&
|
||||
- (data->state.first_remote_protocol == conn->handler->protocol)));
|
||||
-}
|
||||
-
|
||||
/**
|
||||
* Curl_http_output_auth() setups the authentication headers for the
|
||||
* host/proxy and the correct authentication
|
||||
157
meta/recipes-support/curl/curl/CVE-2026-3783.patch
Normal file
157
meta/recipes-support/curl/curl/CVE-2026-3783.patch
Normal file
@@ -0,0 +1,157 @@
|
||||
From e3d7401a32a46516c9e5ee877e613e62ed35bddc Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stenberg <daniel@haxx.se>
|
||||
Date: Fri, 6 Mar 2026 23:13:07 +0100
|
||||
Subject: [PATCH] http: only send bearer if auth is allowed
|
||||
|
||||
Verify with test 2006
|
||||
|
||||
Closes #20843
|
||||
|
||||
Curl_auth_allowed_to_host() function got renamed from
|
||||
Curl_allow_auth_to_host() by the commit
|
||||
https://github.com/curl/curl/commit/72652c0613d37ce18e99cca17a42887f12ad43da
|
||||
|
||||
Current curl version 7.82.0 has function Curl_allow_auth_to_host()
|
||||
|
||||
Upstream-Status: Backport [https://github.com/curl/curl/commit/e3d7401a32a46516c9e5ee877]
|
||||
CVE: CVE-2026-3783
|
||||
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||
---
|
||||
lib/http.c | 1 +
|
||||
tests/data/Makefile.inc | 2 +-
|
||||
tests/data/test2006 | 98 +++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 100 insertions(+), 1 deletion(-)
|
||||
create mode 100644 tests/data/test2006
|
||||
|
||||
diff --git a/lib/http.c b/lib/http.c
|
||||
index 691091b..6acd537 100644
|
||||
--- a/lib/http.c
|
||||
+++ b/lib/http.c
|
||||
@@ -757,6 +757,7 @@ output_auth_headers(struct Curl_easy *data,
|
||||
if(authstatus->picked == CURLAUTH_BEARER) {
|
||||
/* Bearer */
|
||||
if((!proxy && data->set.str[STRING_BEARER] &&
|
||||
+ Curl_allow_auth_to_host(data) &&
|
||||
!Curl_checkheaders(data, STRCONST("Authorization")))) {
|
||||
auth = "Bearer";
|
||||
result = http_output_bearer(data);
|
||||
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
|
||||
index ad41a5e..e641cb8 100644
|
||||
--- a/tests/data/Makefile.inc
|
||||
+++ b/tests/data/Makefile.inc
|
||||
@@ -221,7 +221,7 @@ test1916 test1917 test1918 \
|
||||
\
|
||||
test1933 test1934 test1935 test1936 test1937 test1938 test1939 \
|
||||
\
|
||||
-test2000 test2001 test2002 test2003 test2004 \
|
||||
+test2000 test2001 test2002 test2003 test2004 test2006 \
|
||||
\
|
||||
test2023 \
|
||||
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
|
||||
diff --git a/tests/data/test2006 b/tests/data/test2006
|
||||
new file mode 100644
|
||||
index 0000000..200d30a
|
||||
--- /dev/null
|
||||
+++ b/tests/data/test2006
|
||||
@@ -0,0 +1,98 @@
|
||||
+<?xml version="1.0" encoding="US-ASCII"?>
|
||||
+<testcase>
|
||||
+<info>
|
||||
+<keywords>
|
||||
+netrc
|
||||
+HTTP
|
||||
+</keywords>
|
||||
+</info>
|
||||
+# Server-side
|
||||
+<reply>
|
||||
+<data crlf="headers">
|
||||
+HTTP/1.1 301 Follow this you fool
|
||||
+Date: Tue, 09 Nov 2010 14:49:00 GMT
|
||||
+Server: test-server/fake
|
||||
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
|
||||
+ETag: "21025-dc7-39462498"
|
||||
+Accept-Ranges: bytes
|
||||
+Content-Length: 6
|
||||
+Connection: close
|
||||
+Location: http://b.com/%TESTNUMBER0002
|
||||
+
|
||||
+-foo-
|
||||
+</data>
|
||||
+
|
||||
+<data2 crlf="headers">
|
||||
+HTTP/1.1 200 OK
|
||||
+Date: Tue, 09 Nov 2010 14:49:00 GMT
|
||||
+Server: test-server/fake
|
||||
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
|
||||
+ETag: "21025-dc7-39462498"
|
||||
+Accept-Ranges: bytes
|
||||
+Content-Length: 7
|
||||
+Connection: close
|
||||
+
|
||||
+target
|
||||
+</data2>
|
||||
+
|
||||
+<datacheck crlf="headers">
|
||||
+HTTP/1.1 301 Follow this you fool
|
||||
+Date: Tue, 09 Nov 2010 14:49:00 GMT
|
||||
+Server: test-server/fake
|
||||
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
|
||||
+ETag: "21025-dc7-39462498"
|
||||
+Accept-Ranges: bytes
|
||||
+Content-Length: 6
|
||||
+Connection: close
|
||||
+Location: http://b.com/%TESTNUMBER0002
|
||||
+
|
||||
+HTTP/1.1 200 OK
|
||||
+Date: Tue, 09 Nov 2010 14:49:00 GMT
|
||||
+Server: test-server/fake
|
||||
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
|
||||
+ETag: "21025-dc7-39462498"
|
||||
+Accept-Ranges: bytes
|
||||
+Content-Length: 7
|
||||
+Connection: close
|
||||
+
|
||||
+target
|
||||
+</datacheck>
|
||||
+</reply>
|
||||
+
|
||||
+# Client-side
|
||||
+<client>
|
||||
+<server>
|
||||
+http
|
||||
+</server>
|
||||
+<features>
|
||||
+proxy
|
||||
+</features>
|
||||
+<name>
|
||||
+.netrc default with redirect plus oauth2-bearer
|
||||
+</name>
|
||||
+<command>
|
||||
+--netrc --netrc-file %LOGDIR/netrc%TESTNUMBER --oauth2-bearer SECRET_TOKEN -L -x http://%HOSTIP:%HTTPPORT/ http://a.com/
|
||||
+</command>
|
||||
+<file name="%LOGDIR/netrc%TESTNUMBER" >
|
||||
+default login testuser password testpass
|
||||
+</file>
|
||||
+</client>
|
||||
+
|
||||
+<verify>
|
||||
+<protocol crlf="headers">
|
||||
+GET http://a.com/ HTTP/1.1
|
||||
+Host: a.com
|
||||
+Authorization: Bearer SECRET_TOKEN
|
||||
+User-Agent: curl/%VERSION
|
||||
+Accept: */*
|
||||
+Proxy-Connection: Keep-Alive
|
||||
+
|
||||
+GET http://b.com/%TESTNUMBER0002 HTTP/1.1
|
||||
+Host: b.com
|
||||
+User-Agent: curl/%VERSION
|
||||
+Accept: */*
|
||||
+Proxy-Connection: Keep-Alive
|
||||
+
|
||||
+</protocol>
|
||||
+</verify>
|
||||
+</testcase>
|
||||
--
|
||||
2.25.1
|
||||
|
||||
73
meta/recipes-support/curl/curl/CVE-2026-3784.patch
Normal file
73
meta/recipes-support/curl/curl/CVE-2026-3784.patch
Normal file
@@ -0,0 +1,73 @@
|
||||
From 5f13a7645e565c5c1a06f3ef86e97afb856fb364 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Eissing <stefan@eissing.org>
|
||||
Date: Fri, 6 Mar 2026 14:54:09 +0100
|
||||
Subject: [PATCH] proxy-auth: additional tests
|
||||
|
||||
Also eliminate the special handling for socks proxy match.
|
||||
|
||||
Closes #20837
|
||||
|
||||
Upstream-Status: Backport [https://github.com/curl/curl/commit/5f13a7645e565c5c1a06f3]
|
||||
Backported by Ubuntu team https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/curl/7.81.0-1ubuntu1.23/curl_7.81.0-1ubuntu1.23.debian.tar.xz
|
||||
|
||||
CVE: CVE-2026-3784
|
||||
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||
---
|
||||
lib/url.c | 28 +++++++---------------------
|
||||
tests/http/test_13_proxy_auth.py | 20 ++++++++++++++++++++
|
||||
tests/http/testenv/curl.py | 18 +++++++++++++++---
|
||||
3 files changed, 42 insertions(+), 24 deletions(-)
|
||||
|
||||
--- a/lib/url.c
|
||||
+++ b/lib/url.c
|
||||
@@ -930,33 +930,15 @@ proxy_info_matches(const struct proxy_in
|
||||
{
|
||||
if((data->proxytype == needle->proxytype) &&
|
||||
(data->port == needle->port) &&
|
||||
- Curl_safe_strcasecompare(data->host.name, needle->host.name))
|
||||
- return TRUE;
|
||||
+ curl_strequal(data->host.name, needle->host.name)) {
|
||||
|
||||
+ if(Curl_timestrcmp(data->user, needle->user) ||
|
||||
+ Curl_timestrcmp(data->passwd, needle->passwd))
|
||||
+ return FALSE;
|
||||
+ return TRUE;
|
||||
+ }
|
||||
return FALSE;
|
||||
}
|
||||
-
|
||||
-static bool
|
||||
-socks_proxy_info_matches(const struct proxy_info *data,
|
||||
- const struct proxy_info *needle)
|
||||
-{
|
||||
- if(!proxy_info_matches(data, needle))
|
||||
- return FALSE;
|
||||
-
|
||||
- /* the user information is case-sensitive
|
||||
- or at least it is not defined as case-insensitive
|
||||
- see https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.1 */
|
||||
-
|
||||
- /* curl_strequal does a case insentive comparison, so do not use it here! */
|
||||
- if(Curl_timestrcmp(data->user, needle->user) ||
|
||||
- Curl_timestrcmp(data->passwd, needle->passwd))
|
||||
- return FALSE;
|
||||
- return TRUE;
|
||||
-}
|
||||
-#else
|
||||
-/* disabled, won't get called */
|
||||
-#define proxy_info_matches(x,y) FALSE
|
||||
-#define socks_proxy_info_matches(x,y) FALSE
|
||||
#endif
|
||||
|
||||
/* A connection has to have been idle for a shorter time than 'maxage_conn'
|
||||
@@ -1282,8 +1264,8 @@ ConnectionExists(struct Curl_easy *data,
|
||||
continue;
|
||||
|
||||
if(needle->bits.socksproxy &&
|
||||
- !socks_proxy_info_matches(&needle->socks_proxy,
|
||||
- &check->socks_proxy))
|
||||
+ !proxy_info_matches(&needle->socks_proxy,
|
||||
+ &check->socks_proxy))
|
||||
continue;
|
||||
#endif
|
||||
if(needle->bits.conn_to_host != check->bits.conn_to_host)
|
||||
@@ -70,6 +70,12 @@ SRC_URI = "https://curl.se/download/${BP}.tar.xz \
|
||||
file://CVE-2025-14017.patch \
|
||||
file://CVE-2025-15079.patch \
|
||||
file://CVE-2025-15224.patch \
|
||||
file://CVE-2025-14524.patch \
|
||||
file://CVE-2026-1965-1.patch \
|
||||
file://CVE-2026-1965-2.patch \
|
||||
file://CVE-2026-3783-pre1.patch \
|
||||
file://CVE-2026-3783.patch \
|
||||
file://CVE-2026-3784.patch \
|
||||
"
|
||||
SRC_URI[sha256sum] = "0aaa12d7bd04b0966254f2703ce80dd5c38dbbd76af0297d3d690cdce58a583c"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
|
||||
SRCREV = "bcb82804daa8f725b6add259dcef2067e61a75aa"
|
||||
PV .= "+git${SRCPV}"
|
||||
|
||||
SRC_URI = "git://git.yoctoproject.org/ptest-runner2;branch=master \
|
||||
SRC_URI = "git://git.yoctoproject.org/ptest-runner2;protocol=https;branch=master \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user