Compare commits

..

87 Commits

Author SHA1 Message Date
Richard Purdie
1d54d1c473 build-appliance-image: Update to scarthgap head revision
(From OE-Core rev: a1f4ae4e569bc0e36c27c1e4651e502e54d63b28)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:49 +00:00
Richard Purdie
99047ec235 pseudo: Update to include an openat2 fix
We're seeing occasional autobuilder failures with tar issues related to openat2.
It appears there are definitions missing on debian 11 and opensuse 15.5 systems
which mean the openat2 syscall intercept isn't compiled in. This then triggers
on systems using the openat2 syscall, such as alma9 where it is used in a tar
CVE fix.

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

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

(From OE-Core rev: 34b74540ee497e2cc89211d7aa2772097b6fa79b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2c20c05b324e5d6564c8554381019170839509bb)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Ken Kurematsu
5eddd0f7fc libtheora: set CVE_PRODUCT
In the NVD database, the product name of libtheora is theora.
This was set to ensure that cve-check works correctly.

(From OE-Core rev: e86e50b8c5b16065dcb35ebf4b00eff59c5da78c)

Signed-off-by: Ken Kurematsu <k.kurematsu@nskint.co.jp>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a8ddda60332e2a3219e905c1545b5da917f855c6)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Richard Purdie
4f4691984a pseudo: Update to 1.9.3 release
Pulls in the following changes:

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

(From OE-Core rev: 7a05347a6418bfb6126e3a601489dc71efb0d2fc)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 524f4bbb11f9c7e0126e8bd46af217b452d48f5e)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Khai Dang
d02f35223e docbook-xml-dtd4: fix the fetching failure
Updating SRC_URI, the old archive url is deprecated.

(From OE-Core rev: 65ead4efec955b1b8877ec39eba44ca4da8cfff3)

Signed-off-by: Khai Dang <khai.dang@lge.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit c137d3637b6171fbd3bfd671a56096e7f2b3c318)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Fred Bacon
c7084e7f05 lighttpd: Fix trailing slash on files in mod_dirlisting
Fixes [YOCTO #16128]

Backport of upstream bug fix from lighttpd-1.4.75. Version 1.4.74 introduced a bug that
would append a trailing slash to files in a directory listing. When the user attempts to
download one of these files, the web browser could not save the file with a trailing
slash. As a consequence, every web browser tested would generate a random character string
for the saved file name.

(From OE-Core rev: 797f15116901328a9a58868edeea44614dc29043)

Signed-off-by: Fred Bacon <bacon@aerodyne.com>
[Yoann: Fixed Upstream-Status: Backport URL]
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Daniel Turull
7ba5e4b416 improve_kernel_cve_report: add script for postprocesing of kernel CVE data
Adding postprocessing script to process data from linux CNA that includes more accurate metadata and it is updated directly by the source.

Example of enhanced CVE from a report from cve-check:

{
  "id": "CVE-2024-26710",
  "status": "Ignored",
  "link": "https://nvd.nist.gov/vuln/detail/CVE-2024-26710",
  "summary": "In the Linux kernel, the following vulnerability [...]",
  "scorev2": "0.0",
  "scorev3": "5.5",
  "scorev4": "0.0",
  "modified": "2025-03-17T15:36:11.620",
  "vector": "LOCAL",
  "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
  "detail": "not-applicable-config",
  "description": "Source code not compiled by config. ['arch/powerpc/include/asm/thread_info.h']"
},

And same from a report generated with vex:
{
  "id": "CVE-2024-26710",
  "status": "Ignored",
  "link": "https://nvd.nist.gov/vuln/detail/CVE-2024-26710",
  "detail": "not-applicable-config",
  "description": "Source code not compiled by config. ['arch/powerpc/include/asm/thread_info.h']"
},

For unpatched CVEs, provide more context in the description:
Tested with 6.12.22 kernel
{
  "id": "CVE-2025-39728",
  "status": "Unpatched",
  "link": "https://nvd.nist.gov/vuln/detail/CVE-2025-39728",
  "summary": "In the Linux kernel, the following vulnerability has been [...],
  "scorev2": "0.0",
  "scorev3": "0.0",
  "scorev4": "0.0",
  "modified": "2025-04-21T14:23:45.950",
  "vector": "UNKNOWN",
  "vectorString": "UNKNOWN",
  "detail": "version-in-range",
  "description": "Needs backporting (fixed from 6.12.23)"
},

CC: Peter Marko <peter.marko@siemens.com>
CC: Marta Rybczynska <rybczynska@gmail.com>
(From OE-Core rev: 7637af0a94764ac0c6c4f02f383992bcb4753af0)

Signed-off-by: Daniel Turull <daniel.turull@ericsson.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e60b1759c1aea5b8f5317e46608f0a3e782ecf57)
Signed-off-by: Suresh H A <suresh.ha@bmwtechworks.in>

[Yoann: Stable policy exception: This change is clearly a new feature
and thus should be rejected from stables by policy. But, since this is
contrib/ an exception can be made]
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Benjamin Robin (Schneider Electric)
9628ed0111 meta/classes: fix missing vardeps for CVE status variables
Several CVE helper functions (get_patched_cves() and decode_cve_status())
implicitly depend on the CVE_STATUS and CVE_CHECK_STATUSMAP variables, but
these were not declared in the vardeps of their callers.

On Scarthgap, the upstream fix (2cc43c72ff28aa39a417dd8d57cd7c8741c0e541)
cannot be cherry-picked cleanly, as it also requires BitBake changes.

As a workaround, explicitly add CVE_STATUS and CVE_CHECK_STATUSMAP to the
vardeps of all tasks invoking these helpers, ensuring correct task
re-execution when CVE status changes.

This keeps CVE-related metadata generation consistent without requiring
BitBake modifications.

(From OE-Core rev: 111e1f2febade3c34649f33676f7f7e7cc8e0bd0)

Signed-off-by: Benjamin Robin (Schneider Electric) <benjamin.robin@bootlin.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Peter Marko
af8b964e9b glibc: stable 2.39 branch updates
git log --oneline 58cbbd43fe82910cf8ae9008351b0b0665104500..ce65d944e38a20cb70af2a48a4b8aa5d8fabe1cc
ce65d944e3 (HEAD -> release/2.39/master, origin/release/2.39/master) posix: Reset wordexp_t fields with WRDE_REUSE (CVE-2025-15281 / BZ 33814)
831f63b94c resolv: Fix NSS DNS backend for getnetbyaddr (CVE-2026-0915)
fb22fd3f5b memalign: reinstate alignment overflow check (CVE-2026-0861)
10c0bcb3d3 support: Exit on consistency check failure in resolv_response_add_name
f47dd22366 support: Fix FILE * leak in check_for_unshare_hints in test-container
4a53354eaf sprof: fix -Wformat warnings on 32-bit hosts
beb8267909 sprof: check pread size and offset for overflow
c07002038f getaddrinfo.c: Avoid uninitialized pointer access [BZ #32465]
ae5fb93559 nptl: Optimize trylock for high cache contention workloads (BZ #33704)
efff7cb659 ppc64le: Power 10 rawmemchr clobbers v20 (bug #33091)
f6becd8ae8 ppc64le: Restore optimized strncmp for power10
0daa4e46b8 ppc64le: Restore optimized strcmp for power10
28c1de6580 AArch64: Fix instability in AdvSIMD tan
03d0393343 AArch64: Optimise SVE scalar callbacks
0d05a895f1 aarch64: fix includes in SME tests
c1dc4412f8 aarch64: fix cfi directives around __libc_arm_za_disable
d60f15dc89 aarch64: tests for SME
d1d0d09e9e aarch64: clear ZA state of SME before clone and clone3 syscalls
dbe1904b7c aarch64: define macro for calling __libc_arm_za_disable
58cf4aa421 aarch64: update tests for SME
1b3bd9a9a6 aarch64: Disable ZA state of SME in setjmp and sigsetjmp
38942a336b linux: Also check pkey_get for ENOSYS on tst-pkey (BZ 31996)
c74d59a656 aarch64: Do not link conform tests with -Wl,-z,force-bti (bug 33601)
323ad087a1 x86: fix wmemset ifunc stray '!' (bug 33542)

Testing Results:
             Before    After    Diff
PASS         4926      4921     -5
XPASS        4         4         0
FAIL         223       229      +6
XFAIL        16        16        0
UNSUPPORTED  224       224       0

Changes in failed testcases:

testcase-name                                before  after
elf/tst-audit21                              PASS    FAIL
malloc/tst-malloc-too-large                  PASS    FAIL
malloc/tst-malloc-too-large-malloc-check     PASS    FAIL
malloc/tst-malloc-too-large-malloc-hugetlb1  PASS    FAIL
malloc/tst-malloc-too-large-malloc-hugetlb2  PASS    FAIL
malloc/tst-malloc-too-large-mcheck           PASS    FAIL

(From OE-Core rev: a49b898ed6d571391d90cc3ba150a0421642be23)

Signed-off-by: Peter Marko <peter.marko@siemens.com>

[Yoann: When run on the autobuilder, all those new FAIL tests are PASS:
https://valkyrie.yocto.io/pub/non-release/20260209-10/testresults/qemux86-64-tc/testresults.json]
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Ankur Tyagi
b617f833e5 ffmpeg: ignore CVE-2025-25469
Details https://nvd.nist.gov/vuln/detail/CVE-2025-25469

This vulnerability exists in IAMF (Immersive Audio Model and Formats demuxer)
which was introduced in version 7.0 [1]

$ git tag --contains 4ee05182b7cccfa6928dcb0a45c2b50b7d9ea39b
n7.0
n7.0.1
n7.0.2
n7.0.3
n7.1
n7.1-dev
n7.1.1
n7.1.2
n7.1.3
n7.2-dev
n8.0
n8.0.1
n8.1-dev

[1] 4ee05182b7

(From OE-Core rev: 935bd46fab333a29a8bf4bb511fb55d5d02b3a71)

Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Ankur Tyagi
b8600b66e4 ffmpeg: upgrade 6.1.3 -> 6.1.4
Dropped patches that are part of the upstream version.

Changelog:
34277e12e8:/Changelog

(From OE-Core rev: f9f054faca45a08507b510c8982f170edd6bf83a)

Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Peter Marko
463172affb zlib: ignore CVE-2026-22184
This is CVE for example tool contrib/untgz.
This is not compiled in Yocto zlib recipe.

This CVE has controversial CVSS3 score of 9.8.

(From OE-Core rev: b00a1990237d473971076c4f92a1060911b8b323)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit b0592c51b6ad038d737d2f6b30977bd0c5c50058)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Yoann Congal
028444d608 zlib: cleanup CVE_STATUS[CVE-2023-45853]
CVE-2023-45853: Version is now higher than NVD CPE

This is a partial cherry-pick from 73ee9789183a ("recipes: cleanup
CVE_STATUS which are resolved now").

Cc: Peter Marko <peter.marko@siemens.com>
(From OE-Core rev: 2e05844a70f97399e323f967e926075428cb5233)

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Het Patel
a2c9f142ed zlib: Add CVE_PRODUCT to exclude false positives
To avoid false positives (such as CVE-2023-6992, cloudflare:zlib), add a
CVE_PRODUCT to identify the vendors that have been used.

Removing the present existing CVE_STATUS for CVE-2023-6992.

(From OE-Core rev: 85427d225416b3b12bf05513c9427370309b2127)

Signed-off-by: Het Patel <hetpat@cisco.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 119b775b36dfd51286493763cffb6e965893b8fd)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Adarsh Jagadish Kamini
54e7eb5951 python-urllib3: Backport fix for CVE-2026-21441
Include the patch linked in the NVD report : https://nvd.nist.gov/vuln/detail/CVE-2026-21441
(From OE-Core rev: bf85dff7bf4340a691df3da21f04a651fff11a17)

Signed-off-by: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Peter Marko
534b2c966a python3: patch CVE-2025-13837
Pick patch from 3.12 branch per NVD report.

(From OE-Core rev: 37936e0e93ab5c236d8cc8e709ba1faf8380577c)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Peter Marko
8d61eb390a libxml2: add follow-up patch for CVE-2026-0992
References:
* https://gitlab.gnome.org/GNOME/libxml2/-/issues/1019
* https://gitlab.gnome.org/GNOME/libxml2/-/merge_requests/377

(From OE-Core rev: 2c8e455148e12e097ff757bcf0a57d7d5bd77c30)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Peter Marko
bd21ac68d0 libxml2: patch CVE-2026-0992
Pick patch which closed [1].
Adapt for missing xmlCatalogPrintDebug per [2].

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

(From OE-Core rev: 826dd15a99433c4066d2cd4546515d174d443350)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:35 +00:00
Peter Marko
57126cdaa7 libxml2: patch CVE-2026-0990
Pick patch which closed [1].

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

(From OE-Core rev: f1bb433bbdb0fa19d7d8cbe15d4180c9d18cca5a)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Peter Marko
35fca9ec35 libxml2: patch CVE-2026-0989
Pick patch from [1] linked from [2].

[1] https://gitlab.gnome.org/GNOME/libxml2/-/merge_requests/374
[2] https://gitlab.gnome.org/GNOME/libxml2/-/issues/998

(From OE-Core rev: d201a09eee8efca8a889f0b7a60133e850256369)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Hugo SIMELIERE
308c5dd2c9 libtasn1: Fix CVE-2025-13151
Upstream-Status: Backport from d276cc495a

(From OE-Core rev: 3f9f51783597a682efdf989bebac2934b1f7040c)

Signed-off-by: Bruno VERNAY <bruno.vernay@se.com>
Signed-off-by: Hugo SIMELIERE <hsimeliere.opensource@witekio.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Peter Marko
005e0f6daf libpng: patch CVE-2026-22801
Pick comit per [1].

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

(From OE-Core rev: fc0f0ecb694ae3042cff4472c62c78a7389662c6)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Peter Marko
f824456616 libpng: patch CVE-2026-22695
Pick commit per [1].
This CVE is regression of fix for CVE-2025-65018.

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

(From OE-Core rev: cdfeb4e55f856b1020caf58f380d3a1e7eb5cd97)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Vijay Anusuri
2541663fd1 inetutils: Fix CVE-2026-24061
Upstream-Status: Backport from
https://cgit.git.savannah.gnu.org/cgit/inetutils.git/commit/?id=ccba9f748aa8d50a38d7748e2e60362edd6a32cc
& https://cgit.git.savannah.gnu.org/cgit/inetutils.git/commit/?id=fd702c02497b2f398e739e3119bed0b23dd7aa7b

Ref: https://lists.gnu.org/archive/html/bug-inetutils/2026-01/msg00004.html

(From OE-Core rev: da89012029cb110f6d2768248981ab9c4872d871)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Peter Marko
53dbc9c218 glib-2.0: patch CVE-2026-0988
Pick relevant commit from [2] linked from [1].

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

(From OE-Core rev: 9df34167c74267b63d46c354efe9b3874efa062e)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Peter Marko
236069b7e0 expat: patch CVE-2026-25210
Pick patches from [1].

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

(From OE-Core rev: 97cf4b2341449b34e61a09437e2159b279f9f848)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Peter Marko
46fdae1b0f expat: patch CVE-2026-24515
Pick commits from PR linked in NVD report.

(From OE-Core rev: 7c4fb02b8d8668ec85f5d4ba98db5d69e1e6b712)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Amaury Couderc
cc5e0688c0 curl: patch CVE-2025-14524
(From OE-Core rev: 951113a6e8185969444b5e28292f23434dba1f6c)

Signed-off-by: Amaury Couderc <amaury.couderc@est.tech>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Hitendra Prajapati
68f03e2a9f curl: fix CVE-2025-10148
curl's websocket code did not update the 32 bit mask pattern
for each new outgoing frame as the specification says. Instead
it used a fixed mask that persisted and was used throughout
the entire connection.

A predictable mask pattern allows for a malicious server to induce
traffic between the two communicating parties that could be
interpreted by an involved proxy (configured or transparent) as
genuine, real, HTTP traffic with content and thereby poison its
cache. That cached poisoned content could then be served to all
users of that proxy.

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

Upstream patch:
https://github.com/curl/curl/commit/84db7a9eae8468c0445b15aa806fa

(From OE-Core rev: 3793ee12d8da4f8f90a0ffcad180ef8122251491)

Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Zoltan Boszormenyi
be8cc4137c bitbake: knotty: Make sure getTerminalColumns() returns two integers
Python 3.14 complains about these:

Traceback (most recent call last):
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 722, in main
    termfilter.updateFooter()
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 339, in updateFooter
    lines = self.getlines(content)
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 370, in getlines
    lines = lines + 1 + int(len(line) / (self.columns + 1))
                                         ~~~~~~~~~~~~~^~~
TypeError: can only concatenate str (not "int") to str

and

Traceback (most recent call last):
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 722, in main
    termfilter.updateFooter()
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/mnt2/zozo/yocto-5.3/bitbake/lib/bb/ui/knotty.py", line 341, in updateFooter
    for tasknum, task in enumerate(tasks[:(self.rows - 1 - lines)]):
                                           ~~~~~~~~~~^~~
TypeError: unsupported operand type(s) for -: 'str' and 'int'

Make sure getting the number of rows and columns from the terminal
via the environment variables LINES and COLUMNS are returned as a
pair of integers. This matches the return value of ioctl_GWINSZ().

(Bitbake rev: 10118785e4a670bce4980e1044c0888a8b6e84af)

Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a4e0b6f8077276a0bfb9d05c759bc752a84d1f76)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Enrico Scholz
c0ba29bb80 bitbake: knotty: fix TIOCGWINSZ call for Python 3.14 and later
Python 3.14 enforces stricter type and size checking for fcntl.ioctl()
buffer arguments. The previous code passed a short 4-byte string ('1234')
to TIOCGWINSZ, which worked by accident in older Python versions but causes
a SystemError ("buffer overflow") in 3.14.

TIOCGWINSZ expects an 8-byte (4x 16-bit) buffer corresponding to
(rows, cols, xpix, ypix). Use an 8-byte bytes literal instead and unpack
the first two values.

Tested with Python 3.11, 3.13, and 3.14.

(Bitbake rev: 9127359eb116827a1e0debe69f84e57717436847)

Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 415e9e329cf8cc0c2caa01cba80c21cfac9e2414)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-16 09:52:34 +00:00
Lee Chee Yang
727b18ba30 migration-guides: add release notes for 4.0.32
(From yocto-docs rev: 369f3307368eaea605983e80047377fd19ebd6bf)

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

(From yocto-docs rev: 2d765587de2a2f3383a400d9bdecf64d9b182af9)

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

(From yocto-docs rev: e5aaccf54494978bc8c24b4920dad7135837edb7)

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

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

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

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

[YOCTO #15729]

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

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 09f0430bc69024b9854c31ba6783ddd807aa4f19)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-12 17:00:10 +00:00
Lee Chee Yang
ceb46cce4b migration-guides: add release notes for 5.0.15
(From yocto-docs rev: 7e89c8b93f07a3a2fa50448121a6f64b1aae65f0)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 6256a73d71346275f06970c6b1be9df0dd59bc21)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
5e1f0f620d sdk-manual: appendix-obtain: fix default path for eSDK installer script
The eSDK installer script installs in poky_sdk directory but under the
user's home directory so let's make that explicit.

(From yocto-docs rev: 9811bee2e33002b449d073a3f3be1889e249ee2a)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 52ec12522bad3bbdff937f1c66224aa9b2d299cd)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
0ad5299bcd sdk-manual: using: fix SDK filename example
I'm pretty sure we meant to use the DISTRO poky.yaml.in placeholder
which can only be replaced when surrounding by & and ; characters.
Therefore let's fix this oversight.

Also, the example isn't actually pointing at the snapshot, but the
actual release, so let's reword that as well so it matches the example.
I decided to do that instead of adding +snapshot to the filename because
the example in the next section is actually using that same filename so
for consistency it seemed more appropriate.

(From yocto-docs rev: 27f259434f5bc3914d2c2b74961d744f7bffbcdc)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit ede411d70ffc837e5bea4666da9706e67960b0f2)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
10ce846e13 sdk-manual: appendix-obtain: use parsed-literal block for naming convention of the installer scripts
It's easier on the eye to use a parsed-literal block for highlighting
things that must be changed than simply stating the word, so this makes
use of a parsed-literal block instead of a simple inline code-block and
also highlight in italic which words are placeholders.

Also make the explanation below the literal-block use the same
highlighting (italic).

(From yocto-docs rev: 648b3c3e80a3916917763e3892a5e8c8d8a72162)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 41ee642c33cc2e7435e6037bf49fe7495ffa6133)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
917f8442ab sdk-manual: delete sdk-title PNG
It hasn't been used since the migration to Sphinx so let's remove it.

(From yocto-docs rev: 5ad326e61cf9f1d5fb8718dcf4e5f693bd3c4c28)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit ffaea8391b3d78c2ccf964474e03c50a1c043c6c)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
23abcf73f7 sdk-manual: replace sdk-environment PNG with SVG
This replaces the PNG figure with an SVG.

(From yocto-docs rev: 2b14e4d9646b6be25876865def28c07334194874)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 39fb148792cd6b8e567a496bdbe63a50759eef36)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
2d42466d9d sdk-manual: appendix-obtain: replace eSDK directory structure PNG with a parsed-literal block
This PNG is totally unnecessary and makes accessibility much worse, so
let's simply replace the PNG with a parsed-literal block showing the
same directory layout with the same highlighted placeholders.

While at it, update the layout to match the more recent one (5.0.15) and
have it alphabetically sorted (mixed files and directories).

The placeholders are highlighted the same way inside and outside the
parsed-literal block for consistency.

(From yocto-docs rev: 923a35a87f72af7a678bb942186cef1cc81e1ab9)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 77b24b4a8d437797ab25dfeb37ae5cd911c52d31)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
6ab741ee86 sdk-manual: appendix-obtain: replace directory structure PNG with a parsed-literal block
This PNG is totally unnecessary and makes accessibility much worse, so
let's simply replace the PNG with a parsed-literal block showing the
same directory layout with the same highlighted placeholders.

While at it, update the layout to match the more recent one (5.0.15) and
have it alphabetically sorted (mixed files and directories).

The placeholders are highlighted the same way inside and outside the
parsed-literal block for consistency.

(From yocto-docs rev: 56355f9dacc9b5cdfa6ad86d6c07dcb0511bc394)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 0c68497ec5f6525483e5a98e15db24f651bf28ba)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
bd4027365a sdk-manual: appending-customizing: use none lexer for BitBake code blocks
No lexer exists for BitBake right now, so let's simply disable the lexer
entirely by using the "none" lexer.

I'm using "none" instead of "text" to be able to "easily" replace none
code blocks the day a BitBake lexer exists. I "reserve" "text" for
actual text content (e.g. a filename, or the output of a command line
without the command line).

(From yocto-docs rev: 27d3921725b71a3346a6b76c7de4c11ebbced01c)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit d682bce63cdc5aad9c2d3b932a6ba2d27ecfe107)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
a9615a2335 sdk-manual: working-projects: properly highlight code code-blocks
There are some blocks containing C code so highlight them as C with the
"c" lexer.

For autotool'ed files, there's no lexer available so "none" will do just
fine.

Finally, there's one Makefile code block so highlight it with the
"makefile" lexer.

(From yocto-docs rev: 6c3802113231393ff02d8ac96418f59cfc4c0124)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 10d40604cb4affb17dda2253f82a2422d5a9bcf6)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
aadcf56af2 sdk-manual: fix improper indent of general form of tarball installer scripts
poky-glibc-host_system-image_type-arch-toolchain-ext-release_version.sh
is in a code-block and thus requires to be indented (it is). Sphinx
knows a block has ended when the indentation of the next line is smaller
than in the block, otherwise it's all in the same block.

The explanation of the replaceable parts in the tarball installer script
filename should be text and not part of the block, so let's do that.

While at it, reformat by putting each replaceable part in a bullet list,
highlight the replaceable part or what it can replaced with as well as
putting the replacement on the same line instead of making it a quote by
having them indented in the bullet list.

Finally, replace the literal block (::) with a parsed-literal block so
we can highlight the placeholders appropriately.

(From yocto-docs rev: 0f0ce9012349f4bb18a0c209b77b45a125f2d387)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 04c883216158edafe6a4c4ddfb38f63ffb5d5c24)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
3056341eb5 sdk-manual: fix incorrect highlight language for console code-blocks
When unspecified in conf.py via the highlight_language variable (and
highlight variable for code-blocks), the lexer used for literal blocks
is "default" which tries to highlight the block as Python code.

These blocks aren't Python but simple command lines prefixed by a
prompt so let's use the "console" lexer to properly highlight.

(From yocto-docs rev: cb27e3264bcfdeec20d590dfff5cba99051d825e)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit c6039ce11d638a0b64844480e51d126fcda304b4)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Quentin Schulz
d38081ece2 sdk-manual: fix incorrect highlight language for text code-blocks
When unspecified in conf.py via the highlight_language variable (and
highlight variable for code-blocks), the lexer used for literal blocks
is "default" which tries to highlight the block as Python code.

These blocks aren't Python but either simply the console output or a
file name (which we should probably just double tick-quote instead), so
let's render those blocks with the "text" lexer.

(From yocto-docs rev: ff5a0859620327e4eada0082b20ad62b032d8d5f)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 72354c27000aba3ae583894ff6112a1a017e33d5)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-02-10 13:11:48 +00:00
Richard Purdie
3534914790 build-appliance-image: Update to scarthgap head revision
(From OE-Core rev: d50e4680ed6f930582d907b37c9ed545a89f5c27)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:50:55 +00:00
Richard Purdie
fb693aab03 pseudo: Update to pull in 'makewrappers: Fix EFAULT implementation'
The pseudo update was causing hangs in builds, pull in the fix.

(From OE-Core rev: a845c75096c381f45c13451b1baedc7774e4eff2)

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

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

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

(From OE-Core rev: a872357343b29530d05823368cfc8863a798412d)

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

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

[YOCTO #15963]

(From OE-Core rev: c73e9513f26cd9e073fc2eb0a67378ad7864d677)

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

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

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

(From OE-Core rev: a019d270cd6f41c751e685f36581c00e65287b9d)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 994e508b2a0ede8b5cc4fe39444cf25dc9a53faf)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:39 +00:00
Peter Marko
4581b795c6 curl: patch CVE-2025-15224
Pick patch per [1].

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

(From OE-Core rev: 83c7d4acc5da661b44055db95355c3c420f7afac)

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

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

(From OE-Core rev: 48a162d90daada0f992e665696f7f2e738780af1)

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

Additionally pick commit with definition of CURL_UNCONST to make the
cherry-pick possible without build errors.
It will be probably needed also by further CVE patches.

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

(From OE-Core rev: 3a8e5ae08380ca201df950546dd5f02f9bbe1237)

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

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

(From OE-Core rev: 2284de47317ada818f916be65abf13969294541c)

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

(From OE-Core rev: c316c6e50e73a681c22fa03cdb59a0317495a418)

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

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

(From OE-Core rev: 2f36a12a72cf1f91a2d6ee68bd04292979608eb9)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:39 +00:00
Peter Marko
bfe84d74fe libpcap: patch CVE-2025-11964
Pick patch per [1].

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

(From OE-Core rev: 64c2af571190f7c2b3bb5c53517f0cbcb5dddd6e)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:39 +00:00
Peter Marko
5941c9425f libpcap: patch CVE-2025-11961
Pick patch per [1].
Also pick additional preparation patch to apply it cleanly.

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

(From OE-Core rev: f28be1d360056949a56c62c7d5ce98d15ca8b7d5)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:39 +00:00
Peter Marko
38071ff688 dropbear: patch CVE-2019-6111
Pick patch mentioning this CVE number.

(From OE-Core rev: 8fa0c278c269ed1ef0225cf22a86d0b36632058e)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:38 +00:00
Peter Marko
6b53fa118e glib-2.0: patch CVE-2025-14512
Pick patch from [1] linked from [2].

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

(From OE-Core rev: 9a526a195241dff60707b99b46d1d43f2f5ad2fd)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:38 +00:00
Peter Marko
6e462f0df2 glib-2.0: patch CVE-2025-14087
Pick commits from [1] linked from [2].

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

(From OE-Core rev: f477d209a56a4f382636d49fd5cfba3e8169f7f0)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:38 +00:00
Peter Marko
d77b73fd3f glib-2.0: patch CVE-2025-13601
Pick commits from [1] per [2].

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

(From OE-Core rev: 5744d66b8f2f0ee8ed963bb3e6d93a9a167070e3)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:38 +00:00
Peter Marko
47124f2fda qemu: ignore CVE-2025-54566 and CVE-2025-54567
These CVEs are not applicable to version 8.2.x as the vulnerable code
was introduced inly in 10.0.0.

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

(From OE-Core rev: 77533b3dbd9cb82d6fad3c3d07872913a2991627)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:38 +00:00
Peter Marko
6152ee6778 util-linux: patch CVE-2025-14104
Pick patches per [1].

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

(From OE-Core rev: 0dee49ec49c341235863ec75fc80619e70dfd836)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:38 +00:00
Peter Marko
2104407814 python3: patch CVE-2025-13836
Pick commit from branch 3.12 mentioned in [1].

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

(From OE-Core rev: 05aa143fb5f63de0f53e916daa3392917da46131)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:38 +00:00
Peter Marko
5ae239f8ea python3: patch CVE-2025-12084
Pick patch from 3.12 branch according to [1].

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

(From OE-Core rev: c3ed0dfa3a7b8716008968b0d7f80885b2f61a84)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:45:38 +00:00
Antonin Godard
8c2c3b114e contributor-guide/recipe-style-guide.rst: explain difference between layer and recipe license(s)
Explain that the LICENSE set in a recipe does not apply to the recipe
file itself, but to the underlying software. The license of the recipe
file is the license provided in the layer itself. Give OpenEmbedded-Core
as an example for this.

Fixes [YOCTO #14410]

(From yocto-docs rev: 9d586f22b04528a12e71ee4fa794d8130320515b)

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

Fixes [YOCTO #16052]

(From yocto-docs rev: 32818c927bde8014e855b10b1d78d3f09beec024)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 550ef8340b550f8d4e9c3d0672190dc09592c621)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:41:31 +00:00
Antonin Godard
c8e301569e overview-manual: convert YP-flow-diagram.png to SVG
Based on diagrams/poky-buildprocess/Pokyarch_diag.svg, replace the PNG
graphic for the YP flow to an SVG graphic.

(From yocto-docs rev: ae424ae6d382b83312fa401122bb81e6ad49cf73)

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

(From yocto-docs rev: 0f4df623bff6c3c46b4649b8237dd0e417e0f86f)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit f02c64286504353e97c7e5fe5c0d193776469ad1)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:41:31 +00:00
Antonin Godard
0da3cd0ae6 ref-manual/release-process.rst: add a "Development Cycle" section
Add a new section to release-process.rst to document the development
cycle of each release and namely the milestones and feature freeze
occuring after M3.

Fixes [YOCTO #15979]

(From yocto-docs rev: 1cc5321c162ce36079d661ea1d35c2694c20ed9b)

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

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

Fixes [YOCTO #15832]

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

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

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

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

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

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

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

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

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

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

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

(From yocto-docs rev: 80556704f8b60b5bf903da497909cfda7dd1b28b)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 81e14ca2d5cff9e2104c556655144b069633790c)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:41:30 +00:00
Antonin Godard
495e1c2ed0 Makefile: fix rsvg-convert --format capitalization
On some versions of rsvg-convert, capitalized formats are unknown.

For example on CentOS Stream 9:

  $ rsvg-convert --format=Png --output=ref-manual/svg/releases.png ref-manual/svg/releases.svg
  Unknown output format.

While the same command with "png" runs fine.

On Ubuntu 22.04, both are accepted.

Switch to the un-capitalized options, compatible with all versions.

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

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit cb60df269ef6329372f2676ab705134bbf2490eb)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:41:30 +00:00
Antonin Godard
d4eb015d2b contributor-guide/submit-changes.rst: remove mention of Upstream-Status
The Upstream-Status tag is not used for patches sent on mailing lists,
but for patches to be applied to recipes. To avoid confusion in this
Contributor Guide, remove the mention of this tag as part of the
Patchtest examples as it can be misinterpreted as something to include
in a regular patch.

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

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

(From yocto-docs rev: b0ae6483dd916eea3d144466e597a8e86187d9f7)

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

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

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

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

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

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

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit a8a8d810f0505529aaaa90678e03152c8ac0c00b)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:41:30 +00:00
Antonin Godard
8c85aee61c dev-manual/temporary-source-code.rst: fix definition of WORKDIR
Fix the definition of WORKDIR to match OE-Core.
Rename the Source Directory to "project" as part of the transition to
bitbake-setup and the removal of Poky as in "the Poky repository".

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

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 9cb0e8a94590563491e210b403519ccfbde866e9)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:41:30 +00:00
Lee Chee Yang
2935492192 migration-guides: add release notes for 5.0.14
(From yocto-docs rev: d316352e3b695d213535d7f43811ba40c7a63756)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 79e597aa45c4b171c8340d48803fa9987926851e)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2026-01-26 09:41:30 +00:00
117 changed files with 7433 additions and 687 deletions

View File

@@ -131,7 +131,7 @@ class TerminalFilter(object):
def getTerminalColumns(self):
def ioctl_GWINSZ(fd):
try:
cr = struct.unpack('hh', fcntl.ioctl(fd, self.termios.TIOCGWINSZ, '1234'))
cr = struct.unpack('hhhh', fcntl.ioctl(fd, self.termios.TIOCGWINSZ, b'12345678'))[0:2]
except:
return None
return cr
@@ -145,7 +145,7 @@ class TerminalFilter(object):
pass
if not cr:
try:
cr = (os.environ['LINES'], os.environ['COLUMNS'])
cr = (int(os.environ['LINES']), int(os.environ['COLUMNS']))
except:
cr = (25, 80)
return cr

View File

@@ -43,11 +43,11 @@ PNGs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.png,$(wildcard $(SOURCED
# Pattern rule for converting SVG to PDF
%.pdf : %.svg
$(SVG2PDF) --format=Pdf --output=$@ $<
$(SVG2PDF) --format=pdf --output=$@ $<
# Pattern rule for converting SVG to PNG
%.png : %.svg
$(SVG2PNG) --format=Png --output=$@ $<
$(SVG2PNG) --format=png --output=$@ $<
clean:
@rm -rf $(BUILDDIR) $(PNGs) $(PDFs) poky.yaml sphinx-static/switchers.js releases.rst

View File

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

View File

@@ -329,10 +329,10 @@ Validating Patches with Patchtest
``patchtest`` is available in ``openembedded-core`` as a tool for making
sure that your patches are well-formatted and contain important info for
maintenance purposes, such as ``Signed-off-by`` and ``Upstream-Status``
tags. Note that no functional testing of the changes will be performed by ``patchtest``.
Currently, it only supports testing patches for ``openembedded-core`` branches.
To setup, perform the following::
maintenance purposes, such as the ``Signed-off-by`` presence. Note that no
functional testing of the changes will be performed by ``patchtest``. Currently,
it only supports testing patches for ``openembedded-core`` branches. To setup,
perform the following::
pip install -r meta/lib/patchtest/requirements.txt
source oe-init-build-env

View File

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

View File

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

View File

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

View File

@@ -36,11 +36,11 @@ The path to the work directory for the recipe
(:term:`WORKDIR`) is defined as
follows::
${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}/${PN}/${PV}
The actual directory depends on several things:
- :term:`TMPDIR`: The top-level build
- :term:`BASE_WORKDIR`: The top-level build
output directory.
- :term:`MULTIMACH_TARGET_SYS`:
@@ -48,19 +48,13 @@ The actual directory depends on several things:
- :term:`PN`: The recipe name.
- :term:`EXTENDPE`: The epoch --- if
:term:`PE` is not specified, which is
usually the case for most recipes, then :term:`EXTENDPE` is blank.
- :term:`PV`: The recipe version.
- :term:`PR`: The recipe revision.
As an example, assume a Source Directory top-level folder named
``poky``, a default :term:`Build Directory` at ``poky/build``, and a
``project``, a default :term:`Build Directory` at ``project/build``, and a
``qemux86-poky-linux`` machine target system. Furthermore, suppose your
recipe is named ``foo_1.3.0.bb``. In this case, the work directory the
build system uses to build the package would be as follows::
poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0
project/build/tmp/work/qemux86-poky-linux/foo/1.3.0

View File

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

View File

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

View File

@@ -20,3 +20,5 @@ Release 5.0 (scarthgap)
release-notes-5.0.11
release-notes-5.0.12
release-notes-5.0.13
release-notes-5.0.14
release-notes-5.0.15

View File

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

View File

@@ -274,7 +274,7 @@ New Features / Enhancements in 4.3
- New :doc:`../contributor-guide/index` document.
- New :doc:`../dev-manual/security-subjects` chapter in the Development
- New "Dealing with Vulnerability Reports" chapter in the Development
Tasks Manual.
- Long overdue documentation for the :ref:`ref-classes-devicetree` class.

View File

@@ -0,0 +1,211 @@
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
Release notes for Yocto-5.0.14 (Scarthgap)
------------------------------------------
Security Fixes in Yocto-5.0.14
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- bind: Fix :cve_nist:`2025-8677`, :cve_nist:`2025-40778` and :cve_nist:`2025-40780`
- binutils: Fix :cve_nist:`2025-8225`, :cve_nist:`2025-11081`, :cve_nist:`2025-11082`,
:cve_nist:`2025-11083`, :cve_nist:`2025-11412`, :cve_nist:`2025-11413` and :cve_nist:`2025-11414`
- cmake: fix :cve_nist:`2025-9301`
- curl: Ignore :cve_nist:`2025-10966`
- elfutils: Fix :cve_nist:`2025-1376` and :cve_nist:`2025-1377`
- expat: Fix :cve_nist:`2025-59375`
- glib-networking: Fix :cve_nist:`2025-60018` and :cve_nist:`2025-60019`
- gnupg: Ignore :cve_nist:`2025-30258`
- go: Fix :cve_nist:`2025-47912`, :cve_nist:`2025-58185`, :cve_nist:`2025-58187`,
:cve_nist:`2025-58188`, :cve_nist:`2025-58189`, :cve_nist:`2025-61723` and :cve_nist:`2025-61724`
- libpam: Ignore :cve_nist:`2025-6018`
- lz4: Fix :cve_nist:`2025-62813`
- openssh: Fix :cve_nist:`2025-61984` and :cve_nist:`2025-61985`
- python3: Fix :cve_nist:`2025-59375`
- python3-xmltodict: Fix :cve_nist:`2025-9375`
- qemu: Fix :cve_nist:`2024-8354`
- tiff: Ignore :cve_nist:`2025-8961`
- u-boot: Fix :cve_nist:`2024-42040`
- wpa-supplicant: Fix :cve_nist:`2025-24912`
Fixes in Yocto-5.0.14
~~~~~~~~~~~~~~~~~~~~~
- bind: upgrade to 9.18.41
- bitbake: bb/fetch2/__init__.py: remove a DeprecationWarning in uri_replace()
- bitbake: fetch2/wget: Keep query parameters in URL during checkstatus
- build-appliance-image: Update to scarthgap head revision
- ca-certificates: Add comment for provenance of :term:`SRCREV`
- ca-certificates: fix on-target postinstall script
- ca-certificates: get sources from debian tarballs
- ca-certificates: submit sysroot patch upstream, drop default-sysroot.patch
- ca-certificates: upgrade to 20250419
- classes/create-spdx-2.2: align DEPLOY_DIR_SPDX with SPDX_VERSION layout
- classes/create-spdx-2.2: Handle empty packages
- classes-global/license: Move functions to library code
- classes-global/staging: Exclude do_create_spdx from automatic sysroot extension
- classes-recipe/baremetal-image: Add image file manifest
- classes-recipe/image: Add image file manifest
- curl: only set CA bundle in target build
- dev-manual, test-manual: Update autobuilder output links
- flex: fix build with gcc-15 on host
- glibc: stable 2.39 branch updates
- gstreamer1.0-plugins-bad: fix buffer allocation fail for v4l2codecs
- icu: Backport patch to fix build issues with long paths (>512 chars)
- iptables: remove /etc/ethertypes
- lib/license: Move package license skip to library
- lib: oe: license: Add missing import
- lib: oeqa: spdx: Add tests for extra options
- linux-yocto/6.6: update to v6.6.111
- meta: backport :term:`SPDX` 3.0 fixes and tasks from upstream version Walnascar
- migration-guides: add release notes for 4.0.30
- oe-build-perf-report: relax metadata matching rules
- oe-core: Remove empty file
- oeqa/runtime/ping: don't bother trying to ping localhost
- oeqa/selftest: Add :term:`SPDX` 3.0 include source case for work-share
- oeqa/selftest/devtool: Update after upstream repo changes
- oeqa: spdx: Add tar test for :term:`SPDX` 2.2
- overview-manual/yp-intro.rst: update on-target packaging info
- perf: add arm64 source files for unistd_64.h
- poky.conf: bump version for 5.0.14
- python3: upgrade to 3.12.12
- ref-manual/classes.rst: document the relative_symlinks class
- ref-manual/classes.rst: extend the uninative class documentation
- ref-manual/classes.rst: gettext: extend the documentation of the class
- ref-manual/variables.rst: document :term:`CCACHE_DISABLE` CHECKSUM :term:`UNINATIVE_URL`
:term:`REQUIRED_COMBINED_FEATURES` :term:`REQUIRED_IMAGE_FEATURES`
:term:`REQUIRED_MACHINE_FEATURES` :term:`USE_NLS` variable
- ref-manual/variables.rst: fix :term:`LAYERDEPENDS` description
- selftest: spdx: Add :term:`SPDX` 3.0 test cases
- selftest/spdx: Fix for SPDX_VERSION addition
- spdx 3.0: Rework how :term:`SPDX` aliases are linked
- spdx30_tasks: adapt CVE handling to new cve-check API
- spdx30_tasks: fix FetchData attribute in add_download_files
- util-linux: fix pointer usage in hwclock param handling
- vulnerabilities: update nvdcve file name
- webkitgtk: upgrade to 2.44.4
- wireless-regdb: upgrade to 2025.10.07
- xf86-video-intel: correct :term:`SRC_URI` as freedesktop anongit is down
Known Issues in Yocto-5.0.14
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- N/A
Contributors to Yocto-5.0.14
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thanks to the following people who contributed to this release:
- Alexander Kanavin
- Anders Heimer
- Ankur Tyagi
- Antonin Godard
- Archana Polampalli
- Bastian Krause
- Bin Lan
- Bruce Ashfield
- Carlos Alberto Lopez Perez
- Daniel Semkowicz
- David Nyström
- Deepesh Varatharajan
- Gyorgy Sarvari
- Hongxu Jia
- Joshua Watt
- João Marcos Costa
- Kamel Bouhara (Schneider Electric)
- Lee Chee Yang
- Martin Jansa
- Matthias Schiffer
- Michael Haener
- Paul Barker
- Peter Marko
- Philippe-Alexandre Mathieu
- Praveen Kumar
- Rajeshkumar Ramasamy
- Rasmus Villemoes
- Richard Purdie
- Robert P. J. Day
- Saravanan
- Soumya Sambu
- Steve Sakoman
- Theodore A. Roth
- Wang Mingyu
- Yannic Moog
- Yash Shinde
- Yogita Urade
Repositories / Downloads for Yocto-5.0.14
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yocto-docs
- Repository Location: :yocto_git:`/yocto-docs`
- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
- Tag: :yocto_git:`yocto-5.0.14 </yocto-docs/log/?h=yocto-5.0.14>`
- Git Revision: :yocto_git:`a8687e4bb2e822670b6ad110613a12fa02943d3d </yocto-docs/commit/?id=a8687e4bb2e822670b6ad110613a12fa02943d3d>`
- Release Artefact: yocto-docs-a8687e4bb2e822670b6ad110613a12fa02943d3d
- sha: 72a51b6049a59f773720d9b0aa94f090222a41aeb22d65c5f4211c78418fb6fa
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.14/yocto-docs-a8687e4bb2e822670b6ad110613a12fa02943d3d.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.14/yocto-docs-a8687e4bb2e822670b6ad110613a12fa02943d3d.tar.bz2
poky
- Repository Location: :yocto_git:`/poky`
- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
- Tag: :yocto_git:`yocto-5.0.14 </poky/log/?h=yocto-5.0.14>`
- Git Revision: :yocto_git:`7e8674996b0164b07e56bc066d0fba790e627061 </poky/commit/?id=7e8674996b0164b07e56bc066d0fba790e627061>`
- Release Artefact: poky-7e8674996b0164b07e56bc066d0fba790e627061
- sha: 071e189ebccfad99d4d79ea9021475296fa642611828249f0963b019f842a021
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.14/poky-7e8674996b0164b07e56bc066d0fba790e627061.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.14/poky-7e8674996b0164b07e56bc066d0fba790e627061.tar.bz2
openembedded-core
- Repository Location: :oe_git:`/openembedded-core`
- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
- Tag: :oe_git:`yocto-5.0.14 </openembedded-core/log/?h=yocto-5.0.14>`
- Git Revision: :oe_git:`471adaa5f77fa3b974eab60a2ded48e360042828 </openembedded-core/commit/?id=471adaa5f77fa3b974eab60a2ded48e360042828>`
- Release Artefact: oecore-471adaa5f77fa3b974eab60a2ded48e360042828
- sha: 4dfad047a68aea2293845cdb4a86911bb3b1b0444a63f51b4e5a2448018d6a5e
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.14/oecore-471adaa5f77fa3b974eab60a2ded48e360042828.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.14/oecore-471adaa5f77fa3b974eab60a2ded48e360042828.tar.bz2
meta-yocto
- Repository Location: :yocto_git:`/meta-yocto`
- Branch: :yocto_git:`scarthgap </meta-yocto/log/?h=scarthgap>`
- Tag: :yocto_git:`yocto-5.0.14 </meta-yocto/log/?h=yocto-5.0.14>`
- Git Revision: :yocto_git:`bf6aea52c4009e08f26565c33ce432eec7cfb090 </meta-yocto/commit/?id=bf6aea52c4009e08f26565c33ce432eec7cfb090>`
- Release Artefact: meta-yocto-bf6aea52c4009e08f26565c33ce432eec7cfb090
- sha: 92c9da1027efaf945d80bcd44984d5f8e7606c7ded485b57c0c8f47c9fa1302d
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.14/meta-yocto-bf6aea52c4009e08f26565c33ce432eec7cfb090.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.14/meta-yocto-bf6aea52c4009e08f26565c33ce432eec7cfb090.tar.bz2
meta-mingw
- Repository Location: :yocto_git:`/meta-mingw`
- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
- Tag: :yocto_git:`yocto-5.0.14 </meta-mingw/log/?h=yocto-5.0.14>`
- Git Revision: :yocto_git:`bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f </meta-mingw/commit/?id=bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f>`
- Release Artefact: meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f
- sha: ab073def6487f237ac125d239b3739bf02415270959546b6b287778664f0ae65
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.14/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.14/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
bitbake
- Repository Location: :oe_git:`/bitbake`
- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
- Tag: :oe_git:`yocto-5.0.14 </bitbake/log/?h=yocto-5.0.14>`
- Git Revision: :oe_git:`8dcf084522b9c66a6639b5f117f554fde9b6b45a </bitbake/commit/?id=8dcf084522b9c66a6639b5f117f554fde9b6b45a>`
- Release Artefact: bitbake-8dcf084522b9c66a6639b5f117f554fde9b6b45a
- sha: 766eda21f2a914276d2723b1d8248be11507f954aef8fc5bb1767f3cb65688dd
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.14/bitbake-8dcf084522b9c66a6639b5f117f554fde9b6b45a.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.14/bitbake-8dcf084522b9c66a6639b5f117f554fde9b6b45a.tar.bz2

View File

@@ -0,0 +1,219 @@
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
Release notes for Yocto-5.0.15 (Scarthgap)
------------------------------------------
Users of Alma 9, Rocky 9 and Centos Stream 9 rolling releases have seen obtuse failures in the execution of tar in various tasks after recent host distro updates. These newer versions of tar contain a CVE fix which uses a new glibc call/syscall (openat2). The fix is to update to a newer pseudo version which handles this syscall. This is not included in this stable release but we aim to include it in the next one.
Security Fixes in Yocto-5.0.15
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- binutils: Fix :cve_nist:`2025-11494`, :cve_nist:`2025-11839` and :cve_nist:`2025-11840`
- cmake-native: Fix :cve_nist:`2025-9301`
- cups: Fix :cve_nist:`2025-58436` and :cve_nist:`2025-61915`
- gnutls: Fix CVE-2025-9820
- go: Fix :cve_nist:`2025-61727` and :cve_nist:`2025-61729`
- go: Update :cve_nist:`2025-58187` patches
- grub: Fix :cve_nist:`2025-54770`, :cve_nist:`2025-61661`, :cve_nist:`2025-61662`,
:cve_nist:`2025-61663` and :cve_nist:`2025-61664`
- libarchive: Fix :cve_nist:`2025-60753`
- libarchive: Fix 2 security issue (https://github.com/libarchive/libarchive/pull/2753 and
https://github.com/libarchive/libarchive/pull/2768)
- libmicrohttpd: Ignore :cve_nist:`2025-59777` and :cve_nist:`2025-62689`
- libpng: Fix :cve_nist:`2025-64505`, :cve_nist:`2025-64506`, :cve_nist:`2025-64720`,
:cve_nist:`2025-65018` and :cve_nist:`2025-66293`
- libsoup: Fix :cve_nist:`2025-12105`
- libssh2: Fix :cve_nist:`2023-48795`
- libxml2: Fix :cve_nist:`2025-7425`
- libxslt: Fix :cve_nist:`2025-11731`
- musl: Fix :cve_nist:`2025-26519`
- python3-urllib3: Fix :cve_nist:`2025-66418` and :cve_nist:`2025-66471`
- python3: Fix :cve_nist:`2025-6075`
- qemu: Fix :cve_nist:`2025-12464`
- rsync: Fix :cve_nist:`2025-10158`
- ruby: Fix :cve_nist:`2025-24294`, :cve_nist:`2025-25186` and :cve_nist:`2025-61594`
- sqlite3: Fix :cve_nist:`2025-7709`
- xserver-xorg: Fix :cve_nist:`2025-62229`, :cve_nist:`2025-62230` and :cve_nist:`2025-62231`
- xwayland: Fix :cve_nist:`2025-62229`, :cve_nist:`2025-62230` and :cve_nist:`2025-62231`
Fixes and Feature Changes in Yocto-5.0.15
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- build-appliance-image: Update to scarthgap head revision
- classes/create-spdx-2.2: Define SPDX_VERSION to 2.2
- cml1.bbclass: use consistent make flags for menuconfig
- cross.bbclass: Propagate dependencies to outhash
- curl: Ensure 'CURL_CA_BUNDLE' from host env is indeed respected
- curl: Use host CA bundle by default for native(sdk) builds
- cve-check: extract extending :term:`CVE_STATUS` to library function
- dev-manual/layers.rst: document "bitbake-layers show-machines"
- dev-manual/new-recipe.rst: replace 'bitbake -e' with 'bitbake-getvar'
- dev-manual/new-recipe.rst: typo, "whith" -> "which"
- dev-manual/new-recipe.rst: update "recipetool -h" output
- dev-manual/sbom.rst: reflect that create-spdx is enabled by default
- dev-manual: debugging: use bitbake-getvar in Viewing Variable Values section
- documentation: link to the Releases page on yoctoproject.org instead of wiki
- glslang: fix compiling with gcc15
- go: add sdk test
- go: extend runtime test
- go: remove duplicate arch map in sdk test
- goarch.bbclass: do not leak :term:`TUNE_FEATURES` into crosssdk task signatures
- kernel-dev: add disable config example
- kernel-dev: common: migrate bitbake -e to bitbake-getvar
- kernel.bbclass: Add task to export kernel configuration to :term:`SPDX`
- libssh2: fix regression in KEX method validation (GH-1553)
- libssh2: upgrade to 1.11.1
- migration-guides: add release notes for 4.0.31 and 5.0.13
- oe/sdk: fix empty SDK manifests
- oeqa/sdk/buildepoxy: skip test in eSDK
- oeqa/selftest: oe-selftest: Add :term:`SPDX` tests for kernel config and :term:`PACKAGECONFIG`
- oeqa: drop unnecessary dependency from go runtime tests
- oeqa: fix package detection in go sdk tests
- overview-manual: migrate to SVG + fix typo
- poky.conf: bump version for 5.0.15
- ref-manual: variables: migrate the :term:`OVERRIDES` note to bitbake-getvar
- ruby: Upgrade to 3.3.10
- rust-target-config: fix nativesdk-libstd-rs build with baremetal
- scripts/install-buildtools: Update to 5.0.14
- spdx30: Provide software_packageUrl field in :term:`SPDX` 3.0 SBOM
- spdx30: fix cve status for patch files in VEX
- spdx30: provide all CVE_STATUS, not only Patched status
- spdx30_tasks: Add support for exporting :term:`PACKAGECONFIG` to :term:`SPDX`
- spdx: Revert "spdx: Update for bitbake changes"
- spdx: extend :term:`CVE_STATUS` variables
- testsdk: allow user to specify which tests to run
- vex.bbclass: add a new class
- vex: fix rootfs manifest
- xserver-xorg: remove redundant patch
Known Issues in Yocto-5.0.15
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- N/A
Contributors to Yocto-5.0.15
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thanks to the following people who contributed to this release:
- Adarsh Jagadish Kamini
- Aleksandar Nikolic
- Alexander Kanavin
- Benjamin Robin (Schneider Electric)
- Changqing Li
- Daniel Turull
- Deepak Rathore
- Deepesh Varatharajan
- Enrico Jörns
- Gyorgy Sarvari
- Hitendra Prajapati
- Hongxu Jia
- Hugo SIMELIERE
- Jiaying Song
- Kai Kang
- Kamel Bouhara (Schneider Electric)
- Lee Chee Yang
- Martin Jansa
- Mingli Yu
- Moritz Haase
- Osama Abdelkader
- Ovidiu Panait
- Peter Marko
- Praveen Kumar
- Quentin Schulz
- Robert P. J. Day
- Ross Burton
- Steve Sakoman
- Vijay Anusuri
- Walter Werner SCHNEIDER
- Yash Shinde
- Yogita Urade
Repositories / Downloads for Yocto-5.0.15
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yocto-docs
- Repository Location: :yocto_git:`/yocto-docs`
- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
- Tag: :yocto_git:`yocto-5.0.15 </yocto-docs/log/?h=yocto-5.0.15>`
- Git Revision: :yocto_git:`b0f5cc276639916df197435780b3e94accd4af41 </yocto-docs/commit/?id=b0f5cc276639916df197435780b3e94accd4af41>`
- Release Artefact: yocto-docs-b0f5cc276639916df197435780b3e94accd4af41
- sha: 28ebedfa6471e4ed7583aca0925cd31f4429af3d27ffc0a7e250f7b75404edd7
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.15/yocto-docs-b0f5cc276639916df197435780b3e94accd4af41.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.15/yocto-docs-b0f5cc276639916df197435780b3e94accd4af41.tar.bz2
poky
- Repository Location: :yocto_git:`/poky`
- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
- Tag: :yocto_git:`yocto-5.0.15 </poky/log/?h=yocto-5.0.15>`
- Git Revision: :yocto_git:`72983ac391008ebceb45edc7a8f0f6d5f4fe715c </poky/commit/?id=72983ac391008ebceb45edc7a8f0f6d5f4fe715c>`
- Release Artefact: poky-72983ac391008ebceb45edc7a8f0f6d5f4fe715c
- sha: d5336d1ef1dd48b88cb92748c669360901004d458b7786ddc1918da12fef4edd
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.15/poky-72983ac391008ebceb45edc7a8f0f6d5f4fe715c.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.15/poky-72983ac391008ebceb45edc7a8f0f6d5f4fe715c.tar.bz2
openembedded-core
- Repository Location: :oe_git:`/openembedded-core`
- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
- Tag: :oe_git:`yocto-5.0.15 </openembedded-core/log/?h=yocto-5.0.15>`
- Git Revision: :oe_git:`6988157ad983978ffd6b12bcefedd4deaffdbbd1 </openembedded-core/commit/?id=6988157ad983978ffd6b12bcefedd4deaffdbbd1>`
- Release Artefact: oecore-6988157ad983978ffd6b12bcefedd4deaffdbbd1
- sha: 98a691ce87f9aba57007e91b56bbe0af6d6c8f62aacb68820026478ff8e1f819
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.15/oecore-6988157ad983978ffd6b12bcefedd4deaffdbbd1.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.15/oecore-6988157ad983978ffd6b12bcefedd4deaffdbbd1.tar.bz2
meta-yocto
- Repository Location: :yocto_git:`/meta-yocto`
- Branch: :yocto_git:`scarthgap </meta-yocto/log/?h=scarthgap>`
- Tag: :yocto_git:`yocto-5.0.15 </meta-yocto/log/?h=yocto-5.0.15>`
- Git Revision: :yocto_git:`9bb6e6e8b016a0c9dfe290369a6ed91ef4020535 </meta-yocto/commit/?id=9bb6e6e8b016a0c9dfe290369a6ed91ef4020535>`
- Release Artefact: meta-yocto-9bb6e6e8b016a0c9dfe290369a6ed91ef4020535
- sha: 01778c43673ef11ec5d0fb76bd7c600031f5fc9bcfd9bfa586d5fb6b6babff95
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.15/meta-yocto-9bb6e6e8b016a0c9dfe290369a6ed91ef4020535.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.15/meta-yocto-9bb6e6e8b016a0c9dfe290369a6ed91ef4020535.tar.bz2
meta-mingw
- Repository Location: :yocto_git:`/meta-mingw`
- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
- Tag: :yocto_git:`yocto-5.0.15 </meta-mingw/log/?h=yocto-5.0.15>`
- Git Revision: :yocto_git:`bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f </meta-mingw/commit/?id=bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f>`
- Release Artefact: meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f
- sha: ab073def6487f237ac125d239b3739bf02415270959546b6b287778664f0ae65
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.15/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.15/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
bitbake
- Repository Location: :oe_git:`/bitbake`
- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
- Tag: :oe_git:`yocto-5.0.15 </bitbake/log/?h=yocto-5.0.15>`
- Git Revision: :oe_git:`8dcf084522b9c66a6639b5f117f554fde9b6b45a </bitbake/commit/?id=8dcf084522b9c66a6639b5f117f554fde9b6b45a>`
- Release Artefact: bitbake-8dcf084522b9c66a6639b5f117f554fde9b6b45a
- sha: 766eda21f2a914276d2723b1d8248be11507f954aef8fc5bb1767f3cb65688dd
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.15/bitbake-8dcf084522b9c66a6639b5f117f554fde9b6b45a.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-5.0.15/bitbake-8dcf084522b9c66a6639b5f117f554fde9b6b45a.tar.bz2

View File

@@ -162,7 +162,7 @@ The following diagram represents the high-level workflow of a build. The
remainder of this section expands on the fundamental input, output,
process, and metadata logical blocks that make up the workflow.
.. image:: figures/YP-flow-diagram.png
.. image:: svg/yp-flow-diagram.*
:width: 100%
In general, the build's workflow consists of several functional areas:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

View File

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

After

Width:  |  Height:  |  Size: 38 KiB

View File

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

View File

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

View File

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

View File

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

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View File

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

View File

@@ -147,7 +147,9 @@ from the :term:`DISTRO` variable.
The
:ref:`populate_sdk_base <ref-classes-populate-sdk-*>`
class defines the default value of the :term:`SDK_TITLE` variable as
follows::
follows:
.. code-block:: none
SDK_TITLE ??= "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} SDK"
@@ -159,7 +161,9 @@ an example, assume you have your own layer for your distribution named
does the default "poky" distribution. If so, you could update the
:term:`SDK_TITLE` variable in the
``~/meta-mydistro/conf/distro/mydistro.conf`` file using the following
form::
form:
.. code-block:: none
SDK_TITLE = "your_title"
@@ -189,7 +193,9 @@ the installed SDKs to update the installed SDKs by using the
#. Build the extensible SDK normally (i.e., use the
``bitbake -c populate_sdk_ext`` imagename command).
#. Publish the SDK using the following command::
#. Publish the SDK using the following command:
.. code-block:: console
$ oe-publish-sdk some_path/sdk-installer.sh path_to_shared_http_directory
@@ -212,7 +218,9 @@ installation directory for the SDK is based on the
:term:`SDKEXTPATH` variables from
within the
:ref:`populate_sdk_base <ref-classes-populate-sdk-*>`
class as follows::
class as follows:
.. code-block:: none
SDKEXTPATH ??= "~/${@d.getVar('DISTRO')}_sdk"
@@ -229,7 +237,9 @@ assume you have your own layer for your distribution named
does the default "poky" distribution. If so, you could update the
:term:`SDKEXTPATH` variable in the
``~/meta-mydistro/conf/distro/mydistro.conf`` file using the following
form::
form:
.. code-block:: none
SDKEXTPATH = "some_path_for_your_installed_sdk"
@@ -263,7 +273,9 @@ source, you need to do a number of things:
#. Set the appropriate configuration so that the produced SDK knows how
to find the configuration. The variable you need to set is
:term:`SSTATE_MIRRORS`::
:term:`SSTATE_MIRRORS`:
.. code-block:: none
SSTATE_MIRRORS = "file://.* https://example.com/some_path/sstate-cache/PATH"
@@ -276,7 +288,9 @@ source, you need to do a number of things:
side, and its contents will not interfere with the build), then
you can set the variable in your ``local.conf`` or custom distro
configuration file. You can then pass the variable to the SDK by
adding the following::
adding the following:
.. code-block:: none
ESDK_LOCALCONF_ALLOW = "SSTATE_MIRRORS"
@@ -299,7 +313,9 @@ everything needed to reconstruct the image for which the SDK was built.
This bundling can lead to an SDK installer file that is a Gigabyte or
more in size. If the size of this file causes a problem, you can build
an SDK that has just enough in it to install and provide access to the
``devtool command`` by setting the following in your configuration::
``devtool command`` by setting the following in your configuration:
.. code-block:: none
SDK_EXT_TYPE = "minimal"
@@ -321,7 +337,9 @@ information enables the ``devtool search`` command to return useful
results.
To facilitate this wider range of information, you would need to set the
following::
following:
.. code-block:: none
SDK_INCLUDE_PKGDATA = "1"

View File

@@ -40,15 +40,20 @@ Follow these steps to locate and hand-install the toolchain:
hardware, and image type.
The installer files (``*.sh``) follow this naming convention:
``poky-glibc-host_system-core-image-type-arch-toolchain[-ext]-release.sh``:
- ``host_system``: string representing your development system: ``i686`` or ``x86_64``
.. parsed-literal::
- ``type``: string representing the image: ``sato`` or ``minimal``
poky-glibc-*host_system*-core-image-*type*-*arch*-toolchain[-ext]-*release*.sh
- ``arch``: string representing the target architecture such as ``cortexa57-qemuarm64``
With:
- ``release``: version of the Yocto Project.
- *host_system*: string representing your development system: ``i686`` or ``x86_64``
- *type*: string representing the image: ``sato`` or ``minimal``
- *arch*: string representing the target architecture such as ``cortexa57-qemuarm64``
- *release*: version of the Yocto Project.
.. note::
The standard SDK installer does not have the ``-ext`` string as
@@ -61,13 +66,17 @@ Follow these steps to locate and hand-install the toolchain:
For example, if your build host is a 64-bit x86 system and you need
an extended SDK for a 64-bit core2 QEMU target, go into the ``x86_64``
folder and download the following installer::
folder and download the following installer:
.. code-block:: text
poky-glibc-x86_64-core-image-sato-core2-64-qemux86-64-toolchain-&DISTRO;.sh
#. *Run the Installer:* Be sure you have execution privileges and run
the installer. Here is an example from the ``Downloads``
directory::
directory:
.. code-block:: console
$ ~/Downloads/poky-glibc-x86_64-core-image-sato-core2-64-qemux86-64-toolchain-&DISTRO;.sh
@@ -104,7 +113,9 @@ build the SDK installer. Follow these steps:
the Source Directory (i.e. ``poky``), run the
:ref:`structure-core-script` environment
setup script to define the OpenEmbedded build environment on your
build host::
build host:
.. code-block:: console
$ source oe-init-build-env
@@ -130,7 +141,9 @@ build the SDK installer. Follow these steps:
:term:`SDKMACHINE` value must be set for the architecture of the
machine you are using to build the installer. If :term:`SDKMACHINE`
is not set appropriately, the build fails and provides an error
message similar to the following::
message similar to the following:
.. code-block:: text
The extensible SDK can currently only be built for the same
architecture as the machine being built on - SDK_ARCH
@@ -141,11 +154,15 @@ build the SDK installer. Follow these steps:
#. *Build the SDK Installer:* To build the SDK installer for a standard
SDK and populate the SDK image, use the following command form. Be
sure to replace ``image`` with an image (e.g. "core-image-sato")::
sure to replace ``image`` with an image (e.g. "core-image-sato"):
.. code-block:: console
$ bitbake image -c populate_sdk
You can do the same for the extensible SDK using this command form::
You can do the same for the extensible SDK using this command form:
.. code-block:: console
$ bitbake image -c populate_sdk_ext
@@ -170,7 +187,9 @@ build the SDK installer. Follow these steps:
libc-staticdev"
#. *Run the Installer:* You can now run the SDK installer from
``tmp/deploy/sdk`` in the :term:`Build Directory`. Here is an example::
``tmp/deploy/sdk`` in the :term:`Build Directory`. Here is an example:
.. code-block:: console
$ cd poky/build/tmp/deploy/sdk
$ ./poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh
@@ -209,14 +228,19 @@ Follow these steps to extract the root filesystem:
also contain flattened root filesystem image files (``*.ext4``),
which you can use with QEMU directly.
The pre-built root filesystem image files follow the
``core-image-profile-machine.tar.bz2`` naming convention:
The pre-built root filesystem image files follow this naming convention:
- ``profile``: filesystem image's profile, such as ``minimal``,
.. parsed-literal::
core-image-*profile*-*machine*.tar.bz2
With:
- *profile*: filesystem image's profile, such as ``minimal``,
``minimal-dev`` or ``sato``. For information on these types of image
profiles, see the "Images" chapter in the Yocto Project Reference Manual.
- ``machine``: same string as the name of the parent download directory.
- *machine*: same string as the name of the parent download directory.
The root filesystems
provided by the Yocto Project are based off of the
@@ -224,7 +248,9 @@ Follow these steps to extract the root filesystem:
For example, if you plan on using a BeagleBone device as your target
hardware and your image is a ``core-image-sato-sdk`` image, you can
download the following file::
download the following file:
.. code-block:: text
core-image-sato-sdk-beaglebone-yocto.tar.bz2
@@ -236,7 +262,9 @@ Follow these steps to extract the root filesystem:
installed the toolchain (e.g. ``poky_sdk``).
Here is an example based on the toolchain installed in the
":ref:`sdk-manual/appendix-obtain:locating pre-built sdk installers`" section::
":ref:`sdk-manual/appendix-obtain:locating pre-built sdk installers`" section:
.. code-block:: console
$ source poky_sdk/environment-setup-core2-64-poky-linux
@@ -247,7 +275,9 @@ Follow these steps to extract the root filesystem:
from a previously built root filesystem image that was downloaded
from the :yocto_dl:`Index of Releases </releases/yocto/&DISTRO_REL_LATEST_TAG;/machines/>`.
This command extracts the root filesystem into the ``core2-64-sato``
directory::
directory:
.. code-block:: console
$ runqemu-extract-sdk ~/Downloads/core-image-sato-sdk-beaglebone-yocto.tar.bz2 ~/beaglebone-sato
@@ -256,24 +286,52 @@ Follow these steps to extract the root filesystem:
Installed Standard SDK Directory Structure
==========================================
The following figure shows the resulting directory structure after you
install the Standard SDK by running the ``*.sh`` SDK installation
script:
After you install the Standard SDK by running the ``*.sh`` SDK installation
script, the following directory structure should be observed:
.. image:: figures/sdk-installed-standard-sdk-directory.png
:scale: 100%
.. parsed-literal::
*install_dir*/*version*/
├── buildinfo
├── environment-setup-*target*-poky-linux
├── site-config-*target*-poky-linux
├── sysroots/
│ ├── *target*-poky-linux/
│ │ ├── bin/
│ │ ├── boot/
│ │ ├── etc/
│ │ ├── home/
│ │ ├── lib/
│ │ ├── media/
│ │ ├── mnt/
│ │ ├── proc/
│ │ ├── run/
│ │ ├── sbin/
│ │ ├── sys/
│ │ ├── tmp/
│ │ ├── usr/
│ │ └── var/
│ └── *host*-pokysdk-linux/
│ ├── bin/
│ ├── environment-setup.d/
│ ├── etc/
│ ├── lib/
│ ├── sbin/
│ ├── usr/
│ └── var/
└── version-*target*-poky-linux
The installed SDK consists of an environment setup script for the SDK, a
configuration file for the target, a version file for the target, and
the root filesystem (``sysroots``) needed to develop objects for the
target system.
Within the figure, italicized text is used to indicate replaceable
portions of the file or directory name. For example, install_dir/version
is the directory where the SDK is installed. By default, this directory
is ``/opt/poky/``. And, version represents the specific snapshot of the
SDK (e.g. &DISTRO;). Furthermore, target represents the target architecture
(e.g. ``i586``) and host represents the development system's
In the layout above, italicized text is used to indicate replaceable
portions of the file or directory name. For example, *install_dir*/*version*
is the directory where the SDK is installed. By default, *install_dir*
is ``/opt/poky/``. And, *version* represents the specific snapshot of the
SDK (e.g. &DISTRO;). Furthermore, *target* represents the target architecture
(e.g. ``i586``) and *host* represents the development system's
architecture (e.g. ``x86_64``). Thus, the complete names of the two
directories within the ``sysroots`` could be ``i586-poky-linux`` and
``x86_64-pokysdk-linux`` for the target and host, respectively.
@@ -281,13 +339,29 @@ directories within the ``sysroots`` could be ``i586-poky-linux`` and
Installed Extensible SDK Directory Structure
============================================
The following figure shows the resulting directory structure after you
install the Extensible SDK by running the ``*.sh`` SDK installation
script:
After you install the Extensible SDK by running the ``*.sh`` SDK installation
script, the following directory structure should be observed:
.. image:: figures/sdk-installed-extensible-sdk-directory.png
:scale: 80%
:align: center
.. parsed-literal::
*install_dir*/
├── bitbake-cookerdaemon.log
├── buildinfo
├── buildtools/
├── cache/
├── conf/
├── .devtoolbase
├── downloads/
├── environment-setup-*target*-poky-linux
├── layers/
├── oe-time-dd-test.dat
├── preparing_system_build.log
├── site-config-*target*-poky-linux
├── sstate-cache/
├── sysroots/
├── tmp/
├── version-*target*-poky-linux
└── workspace/
The installed directory structure for the extensible SDK is quite
different than the installed structure for the standard SDK. The
@@ -300,7 +374,7 @@ the SDK, a configuration file for the target, a version file for the
target, and log files for the OpenEmbedded build system preparation
script run by the installer and BitBake.
Within the figure, italicized text is used to indicate replaceable
portions of the file or directory name. For example, install_dir is the
directory where the SDK is installed, which is ``poky_sdk`` by default,
and target represents the target architecture (e.g. ``i586``).
In the layout above, italicized text is used to indicate replaceable
portions of the file or directory name. For example, *install_dir* is the
directory where the SDK is installed, which is by default ``poky_sdk`` in your
home directory and *target* represents the target architecture (e.g. ``i586``).

View File

@@ -71,7 +71,9 @@ Setting up the Extensible SDK environment directly in a Yocto build
#. Set up all the needed layers and a Yocto :term:`Build Directory`, e.g. a regular Yocto
build where ``bitbake`` can be executed.
#. Run::
#. Run:
.. code-block:: console
$ bitbake meta-ide-support
$ bitbake -c populate_sysroot gtk+3
@@ -98,30 +100,27 @@ The names of the tarball installer scripts are such that a string
representing the host system appears first in the filename and then is
immediately followed by a string representing the target architecture.
An extensible SDK has the string "-ext" as part of the name. Following
is the general form::
is the general form:
poky-glibc-host_system-image_type-arch-toolchain-ext-release_version.sh
.. parsed-literal::
Where:
host_system is a string representing your development system:
poky-glibc-*host_system*-*image_type*-*arch*-toolchain-ext-*release_version*.sh
i686 or x86_64.
Where:
image_type is the image for which the SDK was built:
- *host_system* is a string representing your development system: ``i686`` or ``x86_64``.
core-image-sato or core-image-minimal
- *image_type* is the image for which the SDK was built: ``core-image-sato`` or ``core-image-minimal``.
arch is a string representing the tuned target architecture:
- *arch* is a string representing the tuned target architecture: ``aarch64``, ``armv5e``, ``core2-64``, ``i586``, ``mips32r2``, ``mips64``, ``ppc7400``, or ``cortexa8hf-neon``.
aarch64, armv5e, core2-64, i586, mips32r2, mips64, ppc7400, or cortexa8hf-neon
release_version is a string representing the release number of the Yocto Project:
&DISTRO;, &DISTRO;+snapshot
- *release_version* is a string representing the release number of the Yocto Project: ``&DISTRO;``, ``&DISTRO;+snapshot``.
For example, the following SDK installer is for a 64-bit
development host system and a i586-tuned target architecture based off
the SDK for ``core-image-sato`` and using the current &DISTRO; snapshot::
the SDK for ``core-image-sato`` and using the current &DISTRO; snapshot:
.. code-block:: text
poky-glibc-x86_64-core-image-sato-i586-toolchain-ext-&DISTRO;.sh
@@ -142,7 +141,9 @@ must be writable for whichever users need to use the SDK.
The following command shows how to run the installer given a toolchain
tarball for a 64-bit x86 development host system and a 64-bit x86 target
architecture. The example assumes the SDK installer is located in
``~/Downloads/`` and has execution rights::
``~/Downloads/`` and has execution rights:
.. code-block:: console
$ ./Downloads/poky-glibc-x86_64-core-image-minimal-core2-64-toolchain-ext-2.5.sh
Poky (Yocto Project Reference Distro) Extensible SDK installer version 2.5
@@ -192,7 +193,9 @@ begin with the string "``environment-setup``" and include as part of
their name the tuned target architecture. As an example, the following
commands set the working directory to where the SDK was installed and
then source the environment setup script. In this example, the setup
script is for an IA-based target machine using i586 tuning::
script is for an IA-based target machine using i586 tuning:
.. code-block:: console
$ cd /home/scottrif/poky_sdk
$ source environment-setup-core2-64-poky-linux
@@ -200,7 +203,9 @@ script is for an IA-based target machine using i586 tuning::
Run devtool --help for further details.
When using the environment script directly in a Yocto build, it can
be run similarly::
be run similarly:
.. code-block:: console
$ source tmp/deploy/images/qemux86-64/environment-setup-core2-64-poky-linux
@@ -1585,7 +1590,9 @@ populated on-demand. Sometimes you must explicitly install extra items
into the SDK. If you need these extra items, you can first search for
the items using the ``devtool search`` command. For example, suppose you
need to link to libGL but you are not sure which recipe provides libGL.
You can use the following command to find out::
You can use the following command to find out:
.. code-block:: console
$ devtool search libGL mesa
A free implementation of the OpenGL API
@@ -1598,7 +1605,9 @@ When using the extensible SDK directly in a Yocto build
In this scenario, the Yocto build tooling, e.g. ``bitbake``
is directly accessible to build additional items, and it
can simply be executed directly::
can simply be executed directly:
.. code-block:: console
$ bitbake curl-native
# Add newly built native items to native sysroot
@@ -1610,14 +1619,16 @@ can simply be executed directly::
When using a standalone installer for the Extensible SDK
--------------------------------------------------------
::
.. code-block:: console
$ devtool sdk-install mesa
By default, the ``devtool sdk-install`` command assumes
the item is available in pre-built form from your SDK provider. If the
item is not available and it is acceptable to build the item from
source, you can add the "-s" option as follows::
source, you can add the "-s" option as follows:
.. code-block:: console
$ devtool sdk-install -s mesa
@@ -1633,7 +1644,9 @@ If you are working with an installed extensible SDK that gets
occasionally updated (e.g. a third-party SDK), then you will need to
manually "pull down" the updates into the installed SDK.
To update your installed SDK, use ``devtool`` as follows::
To update your installed SDK, use ``devtool`` as follows:
.. code-block:: console
$ devtool sdk-update
@@ -1641,7 +1654,9 @@ The previous command assumes your SDK provider has set the default update URL
for you through the :term:`SDK_UPDATE_URL` variable as described in the
":ref:`sdk-manual/appendix-customizing:Providing Updates to the Extensible SDK After Installation`"
section. If the SDK provider has not set that default URL, you need to
specify it yourself in the command as follows::
specify it yourself in the command as follows:
.. code-block:: console
$ devtool sdk-update path_to_update_directory

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -148,7 +148,7 @@ SDK Development Model
Fundamentally, the SDK fits into the development process as follows:
.. image:: figures/sdk-environment.png
.. image:: svg/sdk-environment.*
:width: 100%
The SDK is installed on any machine and can be used to develop applications,

View File

@@ -0,0 +1,463 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="152.07843mm"
height="104.79381mm"
viewBox="0 0 152.07843 104.79381"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
sodipodi:docname="sdk-environment.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1.7923962"
inkscape:cx="323.86813"
inkscape:cy="222.32808"
inkscape:window-width="2560"
inkscape:window-height="1440"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="layer2" /><defs
id="defs1"><marker
style="overflow:visible"
id="marker27"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Triangle arrow"
markerWidth="1.5"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="none"><path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path27" /></marker><marker
style="overflow:visible"
id="marker24"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Triangle arrow"
markerWidth="1.5"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="none"><path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path24" /></marker><marker
style="overflow:visible"
id="Triangle"
refX="-1"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Triangle arrow"
markerWidth="0.25"
markerHeight="0.44999999"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="none"
markerUnits="strokeWidth"><path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 5.77,0 -2.88,5 V -5 Z"
id="path135" /></marker></defs><g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline"
transform="translate(-15.261151,-139.49913)"><g
id="g5"
inkscape:label="yp-machine"><rect
style="display:inline;fill:#7399cb;fill-opacity:1;stroke:#4d6fad;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="rect1"
width="79.70993"
height="38.067791"
x="15.552484"
y="150.90607"
inkscape:label="yp-machine-rect" /><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="19.153561"
y="161.57883"
id="text3"
inkscape:label="yp-machine-rect-hosts-yp-text"><tspan
sodipodi:role="line"
id="tspan3"
style="stroke-width:0"
x="19.153561"
y="161.57883">Hosts Yocto Project</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="19.240089"
y="166.77032"
id="text3-0"
inkscape:label="yp-machine-rect-host-sdk-text"><tspan
sodipodi:role="line"
id="tspan3-5"
style="stroke-width:0"
x="19.240089"
y="166.77032">Can Host an SDK</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="19.36305"
y="171.6631"
id="text3-0-3"
inkscape:label="yp-machine-rect-build-sdk-text"><tspan
sodipodi:role="line"
id="tspan3-5-3"
style="stroke-width:0"
x="19.36305"
y="171.6631">Can Build an SDK</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="19.291393"
y="176.81357"
id="text3-0-3-3"
inkscape:label="yp-machine-rect-build-img-text"><tspan
sodipodi:role="line"
id="tspan3-5-3-4"
style="stroke-width:0"
x="19.291393"
y="176.81357">Can Build an Image</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="19.267235"
y="181.81523"
id="text3-0-3-3-8"
inkscape:label="yp-machine-rect-build-app-text"><tspan
sodipodi:role="line"
id="tspan3-5-3-4-1"
style="stroke-width:0"
x="19.267235"
y="181.81523">Can Build an Application</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.93636px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#4d6fad;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="15.660255"
y="155.1917"
id="text2"
inkscape:label="yp-machine-text"
transform="scale(1.0510998,0.95138443)"><tspan
id="tspan2"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.93636px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;stroke:#000000;stroke-width:0;stroke-dasharray:none;stroke-opacity:1"
x="15.660255"
y="155.1917"
sodipodi:role="line">Yocto Project Machine</tspan></text></g><g
id="g7"
inkscape:label="target-hw"><rect
style="display:inline;fill:#ff8e98;fill-opacity:1;stroke:#4d6fad;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="rect5"
width="54.540253"
height="21.210974"
x="15.461151"
y="222.88196"
inkscape:label="target-hw-rect" /><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="19.230175"
y="229.96002"
id="text3-0-3-3-8-6"
inkscape:label="target-hw-rect-boot-run-app-text"><tspan
sodipodi:role="line"
id="tspan3-5-3-4-1-7"
style="stroke-width:0"
x="19.230175"
y="229.96002">Boots and Runs Images</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="19.216074"
y="235.00998"
id="text3-0-3-3-8-6-3"
inkscape:label="target-hw-rect-rt-debug-text"><tspan
sodipodi:role="line"
id="tspan3-5-3-4-1-7-7"
style="stroke-width:0"
x="19.216074"
y="235.00998">Real Time Debugging</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="19.318588"
y="239.95505"
id="text3-0-3-3-8-6-3-1"
inkscape:label="target-hw-rect-run-apps-text"><tspan
sodipodi:role="line"
id="tspan3-5-3-4-1-7-7-0"
style="stroke-width:0"
x="19.318588"
y="239.95505">Runs Applications</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.85198px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="15.431406"
y="240.36668"
id="text5"
transform="scale(1.0919034,0.9158319)"
inkscape:label="target-hw-text"><tspan
sodipodi:role="line"
id="tspan5"
style="stroke-width:0"
x="15.431406"
y="240.36668">Target Hardware</tspan></text></g><g
id="g22"
inkscape:label="sdk-machine-bot"
transform="translate(-0.02339256,71.952437)"
style="display:inline"><rect
style="display:inline;opacity:1;fill:#bcff75;fill-opacity:1;stroke:#4d6fad;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="rect18"
width="35.780399"
height="24.143047"
x="131.34613"
y="144.82916"
inkscape:label="sdk-machine-rect" /><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="135.18832"
y="163.78954"
id="text19"
inkscape:label="sdk-machine-rect-host-sdk-text"><tspan
sodipodi:role="line"
id="tspan19"
style="stroke-width:0"
x="135.18832"
y="163.78954">Hosts an SDK</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="135.28667"
y="158.73506"
id="text20"
inkscape:label="sdk-machine-rect-dbg-text"><tspan
sodipodi:role="line"
id="tspan20"
style="stroke-width:0"
x="135.28667"
y="158.73506">Debug Code</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="135.0829"
y="153.75328"
id="text21"
inkscape:label="sdk-machine-rect-compile-text"><tspan
sodipodi:role="line"
id="tspan21"
style="stroke-width:0"
x="135.0829"
y="153.75328">Compile Code</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.8036px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="123.12138"
y="153.16264"
id="text22"
transform="scale(1.0781897,0.92748058)"
inkscape:label="sdk-machine-text"><tspan
sodipodi:role="line"
id="tspan22"
style="stroke-width:0"
x="123.12138"
y="153.16264">SDK Machine</tspan></text></g><g
id="g11"
inkscape:label="sdk-machine-mid"
transform="translate(0.01304739,36.040971)"
style="display:inline"><rect
style="display:inline;opacity:1;fill:#bcff75;fill-opacity:1;stroke:#4d6fad;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="rect8"
width="35.780399"
height="24.143047"
x="131.34613"
y="144.82916"
inkscape:label="sdk-machine-rect" /><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="135.18832"
y="163.78954"
id="text8"
inkscape:label="sdk-machine-rect-host-sdk-text"><tspan
sodipodi:role="line"
id="tspan8"
style="stroke-width:0"
x="135.18832"
y="163.78954">Hosts an SDK</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="135.28667"
y="158.73506"
id="text9"
inkscape:label="sdk-machine-rect-dbg-text"><tspan
sodipodi:role="line"
id="tspan9"
style="stroke-width:0"
x="135.28667"
y="158.73506">Debug Code</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="135.0829"
y="153.75328"
id="text10"
inkscape:label="sdk-machine-rect-compile-text"><tspan
sodipodi:role="line"
id="tspan10"
style="stroke-width:0"
x="135.0829"
y="153.75328">Compile Code</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.8036px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="123.12138"
y="153.16264"
id="text11"
transform="scale(1.0781897,0.92748058)"
inkscape:label="sdk-machine-text"><tspan
sodipodi:role="line"
id="tspan11"
style="stroke-width:0"
x="123.12138"
y="153.16264">SDK Machine</tspan></text></g><g
id="g18"
inkscape:label="sdk-machine-top"
style="display:inline"><rect
style="display:inline;opacity:1;fill:#bcff75;fill-opacity:1;stroke:#4d6fad;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="rect15"
width="35.780399"
height="24.143047"
x="131.34613"
y="144.82916"
inkscape:label="sdk-machine-rect" /><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="135.18832"
y="163.78954"
id="text15"
inkscape:label="sdk-machine-rect-host-sdk-text"><tspan
sodipodi:role="line"
id="tspan15"
style="stroke-width:0"
x="135.18832"
y="163.78954">Hosts an SDK</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="135.28667"
y="158.73506"
id="text16"
inkscape:label="sdk-machine-rect-dbg-text"><tspan
sodipodi:role="line"
id="tspan16"
style="stroke-width:0"
x="135.28667"
y="158.73506">Debug Code</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="135.0829"
y="153.75328"
id="text17"
inkscape:label="sdk-machine-rect-compile-text"><tspan
sodipodi:role="line"
id="tspan17"
style="stroke-width:0"
x="135.0829"
y="153.75328">Compile Code</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.8036px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="123.12138"
y="153.16264"
id="text18"
transform="scale(1.0781897,0.92748058)"
inkscape:label="sdk-machine-text"><tspan
sodipodi:role="line"
id="tspan18"
style="stroke-width:0"
x="123.12138"
y="153.16264">SDK Machine</tspan></text></g><g
id="g24"
inkscape:label="deploy"><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="67.689835"
y="202.65199"
id="text4"
inkscape:label="deploy-text"><tspan
sodipodi:role="line"
id="tspan4"
style="stroke-width:0"
x="67.689835"
y="202.65199">Deploy</tspan></text><path
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:6;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Triangle)"
d="m 61.112324,191.97241 -0.104376,23.8825"
id="path22"
sodipodi:nodetypes="cc"
inkscape:label="arrow-deploy" /></g><g
id="g27"
inkscape:label="objects-bot"
style="display:inline"><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.55315px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="112.58056"
y="228.37267"
id="text4-0-7-2"
inkscape:label="objects-text"
transform="scale(1.0071938,0.99285757)"><tspan
sodipodi:role="line"
id="tspan4-7-2-7"
style="stroke-width:0"
x="112.58056"
y="228.37267">Objects</tspan></text><path
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.799999;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker27)"
d="m 130.78047,228.73371 -20.13864,0.0652 0.10438,-43.68265 -10.933713,-0.10439"
id="path26"
sodipodi:nodetypes="cccc"
inkscape:label="arrow" /></g><g
id="g26"
style="display:inline"
inkscape:label="objects-mid"><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.56577px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="104.3705"
y="170.58327"
id="text4-0-7"
inkscape:label="objects-text"
transform="scale(1.0107715,0.98934328)"><tspan
sodipodi:role="line"
id="tspan4-7-2"
style="stroke-width:0"
x="104.3705"
y="170.58327">Objects</tspan></text><path
style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.8;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker24)"
d="m 130.9339,191.93551 -11.2556,-0.0369 0.18452,-21.88383 -20.038641,0.18453"
id="path25"
sodipodi:nodetypes="cccc"
inkscape:label="arrow" /></g><g
id="g25"
inkscape:label="objects-top"><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.55676px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;writing-mode:lr-tb;direction:ltr;display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
x="104.78993"
y="157.1425"
id="text4-0"
inkscape:label="objects-text"
transform="scale(1.0082173,0.99184966)"><tspan
sodipodi:role="line"
id="tspan4-7"
style="stroke-width:0"
x="104.78993"
y="157.1425">Objects</tspan></text><path
style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.9;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker24)"
d="m 130.91375,157.65432 -30.64596,-0.24975"
id="path23"
sodipodi:nodetypes="cc"
inkscape:label="arrow" /></g></g></svg>

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -52,32 +52,29 @@ libraries appropriate for developing against the corresponding image.
The names of the tarball installer scripts are such that a string
representing the host system appears first in the filename and then is
immediately followed by a string representing the target architecture::
immediately followed by a string representing the target architecture:
poky-glibc-host_system-image_type-arch-toolchain-release_version.sh
.. parsed-literal::
Where:
host_system is a string representing your development system:
poky-glibc-*host_system*-*image_type*-*arch*-toolchain-*release_version*.sh
i686 or x86_64.
Where:
image_type is the image for which the SDK was built:
- *host_system* is a string representing your development system: ``i686`` or ``x86_64``.
core-image-minimal or core-image-sato.
- *image_type* is the image for which the SDK was built: ``core-image-minimal`` or ``core-image-sato``.
arch is a string representing the tuned target architecture:
- *arch* is a string representing the tuned target architecture: ``aarch64``, ``armv5e``, ``core2-64``, ``i586``, ``mips32r2``, ``mips64``, ``ppc7400``, or ``cortexa8hf-neon``.
aarch64, armv5e, core2-64, i586, mips32r2, mips64, ppc7400, or cortexa8hf-neon.
release_version is a string representing the release number of the Yocto Project:
&DISTRO;, &DISTRO;+snapshot
- *release_version* is a string representing the release number of the Yocto Project: ``&DISTRO;``, ``&DISTRO;+snapshot``.
For example, the following SDK installer is for a 64-bit
development host system and a i586-tuned target architecture based off
the SDK for ``core-image-sato`` and using the current DISTRO snapshot::
the SDK for ``core-image-sato`` and the ``&DISTRO;`` release:
poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
.. code-block:: text
poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
.. note::
@@ -96,7 +93,9 @@ must be writable for whichever users need to use the SDK.
The following command shows how to run the installer given a toolchain
tarball for a 64-bit x86 development host system and a 64-bit x86 target
architecture. The example assumes the SDK installer is located in
``~/Downloads/`` and has execution rights::
``~/Downloads/`` and has execution rights:
.. code-block:: console
$ ./Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
Poky (Yocto Project Reference Distro) SDK installer version &DISTRO;
@@ -136,7 +135,9 @@ begin with the string "``environment-setup``" and include as part of
their name the tuned target architecture. As an example, the following
commands set the working directory to where the SDK was installed and
then source the environment setup script. In this example, the setup
script is for an IA-based target machine using i586 tuning::
script is for an IA-based target machine using i586 tuning:
.. code-block:: console
$ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux

View File

@@ -33,7 +33,9 @@ project:
#. *Create a Working Directory and Populate It:* Create a clean
directory for your project and then make that directory your working
location::
location:
.. code-block:: console
$ mkdir $HOME/helloworld
$ cd $HOME/helloworld
@@ -45,14 +47,18 @@ project:
respectively.
Use the following command to create an empty README file, which is
required by GNU Coding Standards::
required by GNU Coding Standards:
.. code-block:: console
$ touch README
Create the remaining
three files as follows:
- ``hello.c``::
- ``hello.c``:
.. code-block:: c
#include <stdio.h>
@@ -62,7 +68,9 @@ project:
return 0;
}
- ``configure.ac``::
- ``configure.ac``:
.. code-block:: none
AC_INIT(hello,0.1)
AM_INIT_AUTOMAKE([foreign])
@@ -70,7 +78,9 @@ project:
AC_CONFIG_FILES(Makefile)
AC_OUTPUT
- ``Makefile.am``::
- ``Makefile.am``:
.. code-block:: none
bin_PROGRAMS = hello
hello_SOURCES = hello.c
@@ -84,17 +94,23 @@ project:
which is followed by the string "poky-linux". For this example, the
command sources a script from the default SDK installation directory
that uses the 32-bit Intel x86 Architecture and the &DISTRO; Yocto
Project release::
Project release:
.. code-block:: console
$ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
Another example is sourcing the environment setup directly in a Yocto
build::
build:
.. code-block:: console
$ source tmp/deploy/images/qemux86-64/environment-setup-core2-64-poky-linux
#. *Create the configure Script:* Use the ``autoreconf`` command to
generate the ``configure`` script::
generate the ``configure`` script:
.. code-block:: console
$ autoreconf
@@ -113,7 +129,9 @@ project:
the cross-compiler. The
:term:`CONFIGURE_FLAGS`
environment variable provides the minimal arguments for GNU
configure::
configure:
.. code-block:: console
$ ./configure ${CONFIGURE_FLAGS}
@@ -126,12 +144,16 @@ project:
``armv5te-poky-linux-gnueabi``. You will notice that the name of the
script is ``environment-setup-armv5te-poky-linux-gnueabi``. Thus, the
following command works to update your project and rebuild it using
the appropriate cross-toolchain tools::
the appropriate cross-toolchain tools:
.. code-block:: console
$ ./configure --host=armv5te-poky-linux-gnueabi --with-libtool-sysroot=sysroot_dir
#. *Make and Install the Project:* These two commands generate and
install the project into the destination directory::
install the project into the destination directory:
.. code-block:: console
$ make
$ make install DESTDIR=./tmp
@@ -146,13 +168,17 @@ project:
This next command is a simple way to verify the installation of your
project. Running the command prints the architecture on which the
binary file can run. This architecture should be the same
architecture that the installed cross-toolchain supports::
architecture that the installed cross-toolchain supports:
.. code-block:: console
$ file ./tmp/usr/local/bin/hello
#. *Execute Your Project:* To execute the project, you would need to run
it on your target hardware. If your target hardware happens to be
your build host, you could run the project as follows::
your build host, you could run the project as follows:
.. code-block:: console
$ ./tmp/usr/local/bin/hello
@@ -198,7 +224,9 @@ regarding variable behavior:
.. note::
Regardless of how you set your variables, if you use the "-e" option
with ``make``, the variables from the SDK setup script take precedence::
with ``make``, the variables from the SDK setup script take precedence:
.. code-block:: console
$ make -e target
@@ -209,7 +237,9 @@ demonstrates these variable behaviors.
In a new shell environment variables are not established for the SDK
until you run the setup script. For example, the following commands show
a null value for the compiler variable (i.e.
:term:`CC`)::
:term:`CC`):
.. code-block:: console
$ echo ${CC}
@@ -219,7 +249,9 @@ Running the
SDK setup script for a 64-bit build host and an i586-tuned target
architecture for a ``core-image-sato`` image using the current &DISTRO;
Yocto Project release and then echoing that variable shows the value
established through the script::
established through the script:
.. code-block:: console
$ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
$ echo ${CC}
@@ -230,7 +262,9 @@ example:
#. *Create a Working Directory and Populate It:* Create a clean
directory for your project and then make that directory your working
location::
location:
.. code-block:: console
$ mkdir $HOME/helloworld
$ cd $HOME/helloworld
@@ -243,7 +277,9 @@ example:
Create the three files as follows:
- ``main.c``::
- ``main.c``:
.. code-block:: c
#include "module.h"
void sample_func();
@@ -253,12 +289,16 @@ example:
return 0;
}
- ``module.h``::
- ``module.h``:
.. code-block:: c
#include <stdio.h>
void sample_func();
- ``module.c``::
- ``module.c``:
.. code-block:: c
#include "module.h"
void sample_func()
@@ -276,12 +316,16 @@ example:
which is followed by the string "poky-linux". For this example, the
command sources a script from the default SDK installation directory
that uses the 32-bit Intel x86 Architecture and the &DISTRO_NAME; Yocto
Project release::
Project release:
.. code-block:: console
$ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
Another example is sourcing the environment setup directly in a Yocto
build::
build:
.. code-block:: console
$ source tmp/deploy/images/qemux86-64/environment-setup-core2-64-poky-linux
@@ -289,7 +333,9 @@ example:
two lines that can be used to set the :term:`CC` variable. One line is
identical to the value that is set when you run the SDK environment
setup script, and the other line sets :term:`CC` to "gcc", the default
GNU compiler on the build host::
GNU compiler on the build host:
.. code-block:: Makefile
# CC=i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux
# CC="gcc"
@@ -306,7 +352,9 @@ example:
#. *Make the Project:* Use the ``make`` command to create the binary
output file. Because variables are commented out in the Makefile, the
value used for :term:`CC` is the value set when the SDK environment setup
file was run::
file was run:
.. code-block:: console
$ make
i586-poky-linux-gcc -m32 -march=i586 --sysroot=/opt/poky/2.5/sysroots/i586-poky-linux -I . -c main.c
@@ -319,7 +367,9 @@ example:
You can override the :term:`CC` environment variable with the same
variable as set from the Makefile by uncommenting the line in the
Makefile and running ``make`` again::
Makefile and running ``make`` again:
.. code-block:: console
$ make clean
rm -rf *.o
@@ -340,7 +390,9 @@ example:
variable as part of the command line. Go into the Makefile and
re-insert the comment character so that running ``make`` uses the
established SDK compiler. However, when you run ``make``, use a
command-line argument to set :term:`CC` to "gcc"::
command-line argument to set :term:`CC` to "gcc":
.. code-block:: console
$ make clean
rm -rf *.o
@@ -364,7 +416,9 @@ example:
environment variable.
In this last case, edit Makefile again to use the "gcc" compiler but
then use the "-e" option on the ``make`` command line::
then use the "-e" option on the ``make`` command line:
.. code-block:: console
$ make clean
rm -rf *.o
@@ -389,7 +443,9 @@ example:
Makefile.
#. *Execute Your Project:* To execute the project (i.e. ``target_bin``),
use the following command::
use the following command:
.. code-block:: console
$ ./target_bin
Hello World!

View File

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

View File

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

View File

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

View File

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

View File

@@ -710,6 +710,7 @@ python do_create_spdx() {
oe.sbom.write_doc(d, package_doc, pkg_arch, "packages", indent=get_json_indent(d))
}
do_create_spdx[vardeps] += "CVE_STATUS"
do_create_spdx[vardepsexclude] += "BB_NUMBER_THREADS"
# NOTE: depending on do_unpack is a hack that is necessary to get it's dependencies for archive the source
addtask do_create_spdx after do_package do_packagedata do_unpack do_collect_spdx_deps before do_populate_sdk do_build do_rm_work

View File

@@ -159,6 +159,8 @@ do_create_spdx[vardeps] += "\
SPDX_PROFILES \
SPDX_NAMESPACE_PREFIX \
SPDX_UUID_NAMESPACE \
CVE_STATUS \
CVE_CHECK_STATUSMAP \
"
addtask do_create_spdx after \

View File

@@ -187,6 +187,7 @@ python do_cve_check () {
}
addtask cve_check before do_build
do_cve_check[vardeps] += "CVE_STATUS CVE_CHECK_STATUSMAP"
do_cve_check[depends] = "cve-update-nvd2-native:do_unpack"
do_cve_check[nostamp] = "1"

View File

@@ -160,6 +160,7 @@ python do_generate_vex () {
cve_write_data_json(d, cve_data, cves_status)
}
do_generate_vex[vardeps] += "CVE_STATUS CVE_CHECK_STATUSMAP"
addtask generate_vex before do_build

View File

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

View File

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

View File

@@ -18,6 +18,8 @@ SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.xz \
file://rsh.xinetd.inetutils \
file://telnet.xinetd.inetutils \
file://tftpd.xinetd.inetutils \
file://CVE-2026-24061-1.patch \
file://CVE-2026-24061-2.patch \
"
inherit autotools gettext update-alternatives texinfo

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -29,6 +29,7 @@ SRC_URI = "http://matt.ucc.asn.au/dropbear/releases/dropbear-${PV}.tar.bz2 \
file://0001-cli-runopts.c-add-missing-DROPBEAR_CLI_PUBKEY_AUTH.patch \
file://0001-Avoid-unused-variable-with-DROPBEAR_CLI_PUBKEY_AUTH-.patch \
file://CVE-2025-47203.patch \
file://CVE-2019-6111.patch \
"
SRC_URI[sha256sum] = "bc5a121ffbc94b5171ad5ebe01be42746d50aa797c9549a4639894a16749443b"

View File

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

View File

@@ -0,0 +1,117 @@
From 8efea3e255d55c7e0a5b70b226f4652ab00e1a27 Mon Sep 17 00:00:00 2001
From: Sebastian Pipping <sebastian@pipping.org>
Date: Sun, 18 Jan 2026 17:26:31 +0100
Subject: [PATCH] tests: Cover effect of XML_SetUnknownEncodingHandler user
data
CVE: CVE-2026-24515
Upstream-Status: Backport [https://github.com/libexpat/libexpat/commit/8efea3e255d55c7e0a5b70b226f4652ab00e1a27]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
tests/basic_tests.c | 42 +++++++++++++++++++++++++++++++++++++++
tests/handlers.c | 10 ++++++++++
tests/handlers.h | 3 +++
3 files changed, 55 insertions(+)
diff --git a/tests/basic_tests.c b/tests/basic_tests.c
index 0231e094..0ed98d86 100644
--- a/tests/basic_tests.c
+++ b/tests/basic_tests.c
@@ -4527,6 +4527,46 @@ START_TEST(test_unknown_encoding_invalid_attr_value) {
}
END_TEST
+START_TEST(test_unknown_encoding_user_data_primary) {
+ // This test is based on ideas contributed by Artiphishell Inc.
+ const char *const text = "<?xml version='1.0' encoding='x-unk'?>\n"
+ "<root />\n";
+ XML_Parser parser = XML_ParserCreate(NULL);
+ XML_SetUnknownEncodingHandler(parser,
+ user_data_checking_unknown_encoding_handler,
+ (void *)(intptr_t)0xC0FFEE);
+
+ assert_true(_XML_Parse_SINGLE_BYTES(parser, text, (int)strlen(text), XML_TRUE)
+ == XML_STATUS_OK);
+
+ XML_ParserFree(parser);
+}
+END_TEST
+
+START_TEST(test_unknown_encoding_user_data_secondary) {
+ // This test is based on ideas contributed by Artiphishell Inc.
+ const char *const text_main = "<!DOCTYPE r [\n"
+ " <!ENTITY ext SYSTEM 'ext.ent'>\n"
+ "]>\n"
+ "<r>&ext;</r>\n";
+ const char *const text_external = "<?xml version='1.0' encoding='x-unk'?>\n"
+ "<e>data</e>";
+ ExtTest2 test_data = {text_external, (int)strlen(text_external), NULL, NULL};
+ XML_Parser parser = XML_ParserCreate(NULL);
+ XML_SetExternalEntityRefHandler(parser, external_entity_loader2);
+ XML_SetUnknownEncodingHandler(parser,
+ user_data_checking_unknown_encoding_handler,
+ (void *)(intptr_t)0xC0FFEE);
+ XML_SetUserData(parser, &test_data);
+
+ assert_true(_XML_Parse_SINGLE_BYTES(parser, text_main, (int)strlen(text_main),
+ XML_TRUE)
+ == XML_STATUS_OK);
+
+ XML_ParserFree(parser);
+}
+END_TEST
+
/* Test an external entity parser set to use latin-1 detects UTF-16
* BOMs correctly.
*/
@@ -6372,6 +6412,8 @@ make_basic_test_case(Suite *s) {
tcase_add_test(tc_basic, test_unknown_encoding_invalid_surrogate);
tcase_add_test(tc_basic, test_unknown_encoding_invalid_high);
tcase_add_test(tc_basic, test_unknown_encoding_invalid_attr_value);
+ tcase_add_test(tc_basic, test_unknown_encoding_user_data_primary);
+ tcase_add_test(tc_basic, test_unknown_encoding_user_data_secondary);
tcase_add_test__if_xml_ge(tc_basic, test_ext_entity_latin1_utf16le_bom);
tcase_add_test__if_xml_ge(tc_basic, test_ext_entity_latin1_utf16be_bom);
tcase_add_test__if_xml_ge(tc_basic, test_ext_entity_latin1_utf16le_bom2);
diff --git a/tests/handlers.c b/tests/handlers.c
index 5bca2b1f..d077f688 100644
--- a/tests/handlers.c
+++ b/tests/handlers.c
@@ -45,6 +45,7 @@
# undef NDEBUG /* because test suite relies on assert(...) at the moment */
#endif
+#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <assert.h>
@@ -407,6 +408,15 @@ long_encoding_handler(void *userData, const XML_Char *encoding,
return XML_STATUS_OK;
}
+int XMLCALL
+user_data_checking_unknown_encoding_handler(void *userData,
+ const XML_Char *encoding,
+ XML_Encoding *info) {
+ const intptr_t number = (intptr_t)userData;
+ assert_true(number == 0xC0FFEE);
+ return long_encoding_handler(userData, encoding, info);
+}
+
/* External Entity Handlers */
int XMLCALL
diff --git a/tests/handlers.h b/tests/handlers.h
index fa6267fb..915040e5 100644
--- a/tests/handlers.h
+++ b/tests/handlers.h
@@ -159,6 +159,9 @@ extern int XMLCALL long_encoding_handler(void *userData,
const XML_Char *encoding,
XML_Encoding *info);
+extern int XMLCALL user_data_checking_unknown_encoding_handler(
+ void *userData, const XML_Char *encoding, XML_Encoding *info);
+
/* External Entity Handlers */
typedef struct ExtOption {

View File

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

View File

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

View File

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

View File

@@ -41,6 +41,11 @@ SRC_URI = "${GITHUB_BASE_URI}/download/R_${VERSION_TAG}/expat-${PV}.tar.bz2 \
file://CVE-2025-59375-22.patch \
file://CVE-2025-59375-23.patch \
file://CVE-2025-59375-24.patch \
file://CVE-2026-24515-01.patch \
file://CVE-2026-24515-02.patch \
file://CVE-2026-25210-01.patch \
file://CVE-2026-25210-02.patch \
file://CVE-2026-25210-03.patch \
"
GITHUB_BASE_URI = "https://github.com/libexpat/libexpat/releases/"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -33,6 +33,13 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
file://CVE-2025-6052-01.patch \
file://CVE-2025-6052-02.patch \
file://CVE-2025-6052-03.patch \
file://CVE-2025-13601-01.patch \
file://CVE-2025-13601-02.patch \
file://CVE-2025-14087-01.patch \
file://CVE-2025-14087-02.patch \
file://CVE-2025-14087-03.patch \
file://CVE-2025-14512.patch \
file://CVE-2026-0988.patch \
"
SRC_URI:append:class-native = " file://relocate-modules.patch \
file://0001-meson.build-do-not-enable-pidfd-features-on-native-g.patch \

View File

@@ -1,6 +1,6 @@
SRCBRANCH ?= "release/2.39/master"
PV = "2.39+git"
SRCREV_glibc ?= "58cbbd43fe82910cf8ae9008351b0b0665104500"
SRCREV_glibc ?= "ce65d944e38a20cb70af2a48a4b8aa5d8fabe1cc"
SRCREV_localedef ?= "cba02c503d7c853a38ccfb83c57e343ca5ecd7e5"
GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git;protocol=https"

View File

@@ -18,7 +18,7 @@ easier access for another. 'ASLR bypass itself is not a vulnerability.'"
CVE_STATUS_GROUPS += "CVE_STATUS_STABLE_BACKPORTS"
CVE_STATUS_STABLE_BACKPORTS = "CVE-2024-2961 CVE-2024-33599 CVE-2024-33600 CVE-2024-33601 CVE-2024-33602 CVE-2025-0395 \
CVE-2025-4802 CVE-2025-5702 CVE-2025-8058"
CVE-2025-4802 CVE-2025-5702 CVE-2025-8058 CVE-2025-15281 CVE-2026-0861 CVE-2026-0915"
CVE_STATUS_STABLE_BACKPORTS[status] = "cpe-stable-backport: fix available in used git hash"
DEPENDS += "gperf-native bison-native"

View File

@@ -26,7 +26,7 @@ inherit core-image setuptools3 features_check
REQUIRED_DISTRO_FEATURES += "xattr"
SRCREV ?= "828c9d09b4d056f77399fcb4bca8582f9c26ac84"
SRCREV ?= "99047ec235e0aa53987fa93e906d97fca3ad205e"
SRC_URI = "git://git.yoctoproject.org/poky;branch=scarthgap \
file://Yocto_Build_Appliance.vmx \
file://Yocto_Build_Appliance.vmxf \

View File

@@ -0,0 +1,309 @@
From 19549c61590c1873468c53e0026a2fbffae428ef Mon Sep 17 00:00:00 2001
From: Daniel Garcia Moreno <daniel.garcia@suse.com>
Date: Fri, 10 Oct 2025 09:38:31 +0200
Subject: [PATCH] Add RelaxNG include limit
This patch adds a default xmlRelaxNGIncludeLimit of 1.000, and that
limit can be modified at runtime with the env variable
RNG_INCLUDE_LIMIT.
Fix https://gitlab.gnome.org/GNOME/libxml2/-/issues/998
CVE: CVE-2026-0989
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/19549c61590c1873468c53e0026a2fbffae428ef]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
include/libxml/relaxng.h | 4 ++
relaxng.c | 63 ++++++++++++++++++++--
runtest.c | 67 ++++++++++++++++++++++++
test/relaxng/include/include-limit.rng | 4 ++
test/relaxng/include/include-limit_1.rng | 4 ++
test/relaxng/include/include-limit_2.rng | 4 ++
test/relaxng/include/include-limit_3.rng | 8 +++
7 files changed, 150 insertions(+), 4 deletions(-)
create mode 100644 test/relaxng/include/include-limit.rng
create mode 100644 test/relaxng/include/include-limit_1.rng
create mode 100644 test/relaxng/include/include-limit_2.rng
create mode 100644 test/relaxng/include/include-limit_3.rng
diff --git a/include/libxml/relaxng.h b/include/libxml/relaxng.h
index eafc6604..099dacd8 100644
--- a/include/libxml/relaxng.h
+++ b/include/libxml/relaxng.h
@@ -138,6 +138,10 @@ XMLPUBFUN int
xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
int flag);
+XMLPUBFUN int
+ xmlRelaxParserSetIncLImit (xmlRelaxNGParserCtxt *ctxt,
+ int limit);
+
XMLPUBFUN void
xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
XMLPUBFUN void
diff --git a/relaxng.c b/relaxng.c
index 1d74ba9f..c0e94a3c 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -18,6 +18,8 @@
#ifdef LIBXML_SCHEMAS_ENABLED
+#include <errno.h>
+#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stddef.h>
@@ -44,6 +46,12 @@
static const xmlChar *xmlRelaxNGNs = (const xmlChar *)
"http://relaxng.org/ns/structure/1.0";
+/*
+ * Default include limit, this can be override with RNG_INCLUDE_LIMIT
+ * env variable
+ */
+static const int _xmlRelaxNGIncludeLimit = 1000;
+
#define IS_RELAXNG(node, typ) \
((node != NULL) && (node->ns != NULL) && \
(node->type == XML_ELEMENT_NODE) && \
@@ -225,6 +233,7 @@ struct _xmlRelaxNGParserCtxt {
int incNr; /* Depth of the include parsing stack */
int incMax; /* Max depth of the parsing stack */
xmlRelaxNGIncludePtr *incTab; /* array of incs */
+ int incLimit; /* Include limit, to avoid stack-overflow on parse */
int idref; /* requires idref checking */
@@ -1410,6 +1419,23 @@ xmlRelaxParserSetFlag(xmlRelaxNGParserCtxtPtr ctxt, int flags)
return(0);
}
+/**
+ * Semi private function used to set the include recursion limit to a
+ * parser context. Set to 0 to use the default value.
+ *
+ * @param ctxt a RelaxNG parser context
+ * @param limit the new include depth limit
+ * @returns 0 if success and -1 in case of error
+ */
+int
+xmlRelaxParserSetIncLImit(xmlRelaxNGParserCtxt *ctxt, int limit)
+{
+ if (ctxt == NULL) return(-1);
+ if (limit < 0) return(-1);
+ ctxt->incLimit = limit;
+ return(0);
+}
+
/************************************************************************
* *
* Document functions *
@@ -1425,7 +1451,7 @@ static xmlDocPtr xmlRelaxNGCleanupDoc(xmlRelaxNGParserCtxtPtr ctxt,
*
* Pushes a new include on top of the include stack
*
- * Returns 0 in case of error, the index in the stack otherwise
+ * Returns -1 in case of error, the index in the stack otherwise
*/
static int
xmlRelaxNGIncludePush(xmlRelaxNGParserCtxtPtr ctxt,
@@ -1439,9 +1465,15 @@ xmlRelaxNGIncludePush(xmlRelaxNGParserCtxtPtr ctxt,
sizeof(ctxt->incTab[0]));
if (ctxt->incTab == NULL) {
xmlRngPErrMemory(ctxt, "allocating include\n");
- return (0);
+ return (-1);
}
}
+ if (ctxt->incNr >= ctxt->incLimit) {
+ xmlRngPErr(ctxt, (xmlNodePtr)value->doc, XML_RNGP_PARSE_ERROR,
+ "xmlRelaxNG: inclusion recursion limit reached\n", NULL, NULL);
+ return(-1);
+ }
+
if (ctxt->incNr >= ctxt->incMax) {
ctxt->incMax *= 2;
ctxt->incTab =
@@ -1450,7 +1482,7 @@ xmlRelaxNGIncludePush(xmlRelaxNGParserCtxtPtr ctxt,
sizeof(ctxt->incTab[0]));
if (ctxt->incTab == NULL) {
xmlRngPErrMemory(ctxt, "allocating include\n");
- return (0);
+ return (-1);
}
}
ctxt->incTab[ctxt->incNr] = value;
@@ -1620,7 +1652,9 @@ xmlRelaxNGLoadInclude(xmlRelaxNGParserCtxtPtr ctxt, const xmlChar * URL,
/*
* push it on the stack
*/
- xmlRelaxNGIncludePush(ctxt, ret);
+ if (xmlRelaxNGIncludePush(ctxt, ret) < 0) {
+ return (NULL);
+ }
/*
* Some preprocessing of the document content, this include recursing
@@ -7357,11 +7391,32 @@ xmlRelaxNGParse(xmlRelaxNGParserCtxtPtr ctxt)
xmlDocPtr doc;
xmlNodePtr root;
+ const char *include_limit_env = getenv("RNG_INCLUDE_LIMIT");
+
xmlRelaxNGInitTypes();
if (ctxt == NULL)
return (NULL);
+ if (ctxt->incLimit == 0) {
+ ctxt->incLimit = _xmlRelaxNGIncludeLimit;
+ if (include_limit_env != NULL) {
+ char *strEnd;
+ unsigned long val = 0;
+ errno = 0;
+ val = strtoul(include_limit_env, &strEnd, 10);
+ if (errno != 0 || *strEnd != 0 || val > INT_MAX) {
+ xmlRngPErr(ctxt, NULL, XML_RNGP_PARSE_ERROR,
+ "xmlRelaxNGParse: invalid RNG_INCLUDE_LIMIT %s\n",
+ (const xmlChar*)include_limit_env,
+ NULL);
+ return(NULL);
+ }
+ if (val)
+ ctxt->incLimit = val;
+ }
+ }
+
/*
* First step is to parse the input document into an DOM/Infoset
*/
diff --git a/runtest.c b/runtest.c
index 49519aef..45109f0a 100644
--- a/runtest.c
+++ b/runtest.c
@@ -3781,6 +3781,70 @@ rngTest(const char *filename,
return(ret);
}
+/**
+ * Parse an RNG schemas with a custom RNG_INCLUDE_LIMIT
+ *
+ * @param filename the schemas file
+ * @param result the file with expected result
+ * @param err the file with error messages
+ * @returns 0 in case of success, an error code otherwise
+ */
+static int
+rngIncludeTest(const char *filename,
+ const char *resul ATTRIBUTE_UNUSED,
+ const char *errr ATTRIBUTE_UNUSED,
+ int options ATTRIBUTE_UNUSED) {
+ xmlRelaxNGParserCtxtPtr ctxt;
+ xmlRelaxNGPtr schemas;
+ int ret = 0;
+
+ /* first compile the schemas if possible */
+ ctxt = xmlRelaxNGNewParserCtxt(filename);
+ xmlRelaxNGSetParserStructuredErrors(ctxt, testStructuredErrorHandler,
+ NULL);
+
+ /* Should work */
+ schemas = xmlRelaxNGParse(ctxt);
+ if (schemas == NULL) {
+ testErrorHandler(NULL, "Relax-NG schema %s failed to compile\n",
+ filename);
+ ret = -1;
+ goto done;
+ }
+ xmlRelaxNGFree(schemas);
+ xmlRelaxNGFreeParserCtxt(ctxt);
+
+ ctxt = xmlRelaxNGNewParserCtxt(filename);
+ /* Should fail */
+ xmlRelaxParserSetIncLImit(ctxt, 2);
+ xmlRelaxNGSetParserStructuredErrors(ctxt, testStructuredErrorHandler,
+ NULL);
+ schemas = xmlRelaxNGParse(ctxt);
+ if (schemas != NULL) {
+ ret = -1;
+ xmlRelaxNGFree(schemas);
+ }
+ xmlRelaxNGFreeParserCtxt(ctxt);
+
+ ctxt = xmlRelaxNGNewParserCtxt(filename);
+ /* Should work */
+ xmlRelaxParserSetIncLImit(ctxt, 3);
+ xmlRelaxNGSetParserStructuredErrors(ctxt, testStructuredErrorHandler,
+ NULL);
+ schemas = xmlRelaxNGParse(ctxt);
+ if (schemas == NULL) {
+ testErrorHandler(NULL, "Relax-NG schema %s failed to compile\n",
+ filename);
+ ret = -1;
+ goto done;
+ }
+ xmlRelaxNGFree(schemas);
+
+done:
+ xmlRelaxNGFreeParserCtxt(ctxt);
+ return(ret);
+}
+
#ifdef LIBXML_READER_ENABLED
/**
* rngStreamTest:
@@ -5112,6 +5176,9 @@ testDesc testDescriptions[] = {
{ "Relax-NG regression tests" ,
rngTest, "./test/relaxng/*.rng", NULL, NULL, NULL,
XML_PARSE_DTDATTR | XML_PARSE_NOENT },
+ { "Relax-NG include limit tests" ,
+ rngIncludeTest, "./test/relaxng/include/include-limit.rng", NULL, NULL, NULL,
+ 0 },
#ifdef LIBXML_READER_ENABLED
{ "Relax-NG streaming regression tests" ,
rngStreamTest, "./test/relaxng/*.rng", NULL, NULL, NULL,
diff --git a/test/relaxng/include/include-limit.rng b/test/relaxng/include/include-limit.rng
new file mode 100644
index 00000000..51f03942
--- /dev/null
+++ b/test/relaxng/include/include-limit.rng
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="include-limit_1.rng"/>
+</grammar>
diff --git a/test/relaxng/include/include-limit_1.rng b/test/relaxng/include/include-limit_1.rng
new file mode 100644
index 00000000..4672da38
--- /dev/null
+++ b/test/relaxng/include/include-limit_1.rng
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="include-limit_2.rng"/>
+</grammar>
diff --git a/test/relaxng/include/include-limit_2.rng b/test/relaxng/include/include-limit_2.rng
new file mode 100644
index 00000000..b35ecaa8
--- /dev/null
+++ b/test/relaxng/include/include-limit_2.rng
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="include-limit_3.rng"/>
+</grammar>
diff --git a/test/relaxng/include/include-limit_3.rng b/test/relaxng/include/include-limit_3.rng
new file mode 100644
index 00000000..86213c62
--- /dev/null
+++ b/test/relaxng/include/include-limit_3.rng
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element name="root">
+ <empty/>
+ </element>
+ </start>
+</grammar>

View File

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

View File

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

View File

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

View File

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

View File

@@ -25,6 +25,11 @@ SRC_URI += "http://www.w3.org/XML/Test/xmlts20130923.tar;subdir=${BP};name=testt
file://CVE-2025-49795.patch \
file://CVE-2025-6170.patch \
file://CVE-2025-7425.patch \
file://CVE-2026-0989.patch \
file://CVE-2026-0990.patch \
file://CVE-2026-0992-01.patch \
file://CVE-2026-0992-02.patch \
file://CVE-2026-0992-03.patch \
"
SRC_URI[archive.sha256sum] = "c3d8c0c34aa39098f66576fe51969db12a5100b956233dc56506f7a8679be995"

View File

@@ -44,6 +44,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-lin
file://CVE-2024-28085-0002.patch \
file://fstab-isolation.patch \
file://sys-utils-hwclock-rtc-fix-pointer-usage.patch \
file://CVE-2025-14104-01.patch \
file://CVE-2025-14104-02.patch \
"
SRC_URI[sha256sum] = "7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f"

View File

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

View File

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

View File

@@ -46,5 +46,7 @@ do_install_ptest() {
BBCLASSEXTEND = "native nativesdk"
CVE_STATUS[CVE-2023-45853] = "not-applicable-config: we don't build minizip"
CVE_STATUS[CVE-2023-6992] = "cpe-incorrect: this CVE is for cloudflare zlib"
# Adding 'CVE_PRODUCT' to avoid false detection of CVEs
CVE_PRODUCT = "zlib:zlib gnu:zlib"
CVE_STATUS[CVE-2026-22184] = "not-applicable-config: vulnerable file is not compiled"

View File

@@ -25,11 +25,11 @@ LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE-OASIS;md5=c608985dd5f7f215e669e763
# bitbake build system.
#
SRC_URI = "https://docbook.org/xml/4.1.2/docbkx412.zip;name=payload412;subdir=docbook-4.1.2 \
https://docbook.org/xml/4.2/docbook-xml-4.2.zip;name=payload42;subdir=docbook-4.2 \
https://docbook.org/xml/4.3/docbook-xml-4.3.zip;name=payload43;subdir=docbook-4.3 \
https://docbook.org/xml/4.4/docbook-xml-4.4.zip;name=payload44;subdir=docbook-4.4 \
https://docbook.org/xml/${PV}/docbook-xml-${PV}.zip;name=payloadPV;subdir=docbook-${PV} \
SRC_URI = "https://archive.docbook.org/xml/4.1.2/docbkx412.zip;name=payload412;subdir=docbook-4.1.2 \
https://archive.docbook.org/xml/4.2/docbook-xml-4.2.zip;name=payload42;subdir=docbook-4.2 \
https://archive.docbook.org/xml/4.3/docbook-xml-4.3.zip;name=payload43;subdir=docbook-4.3 \
https://archive.docbook.org/xml/4.4/docbook-xml-4.4.zip;name=payload44;subdir=docbook-4.4 \
https://archive.docbook.org/xml/${PV}/docbook-xml-${PV}.zip;name=payloadPV;subdir=docbook-${PV} \
file://docbook-xml-update-catalog.xml.patch \
file://LICENSE-OASIS"

View File

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

View File

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

View File

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

View File

@@ -156,3 +156,10 @@ do_install:append:class-nativesdk () {
}
BBCLASSEXTEND = "native nativesdk"
# Setscene tasks which run under fakeroot must not be executed before
# pseudo-native and *all* its runtime dependencies are available in the
# sysroot.
PSEUDO_SETSCENE_DEPS = ""
PSEUDO_SETSCENE_DEPS:class-native = "sqlite3-native:do_populate_sysroot"
do_populate_sysroot_setscene[depends] += "${PSEUDO_SETSCENE_DEPS}"

View File

@@ -1,8 +1,6 @@
require pseudo.inc
SRC_URI = "git://git.yoctoproject.org/pseudo;branch=master;protocol=https \
file://0001-configure-Prune-PIE-flags.patch \
file://glibc238.patch \
file://fallback-passwd \
file://fallback-group \
"
@@ -14,9 +12,9 @@ SRC_URI:append:class-nativesdk = " \
file://older-glibc-symbols.patch"
SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
SRCREV = "28dcefb809ce95db997811b5662f0b893b9923e0"
SRCREV = "9ab513512d8b5180a430ae4fa738cb531154cdef"
S = "${WORKDIR}/git"
PV = "1.9.0+git"
PV = "1.9.3+git"
# largefile and 64bit time_t support adds these macros via compiler flags globally
# remove them for pseudo since pseudo intercepts some of the functions which will be

View File

@@ -0,0 +1,105 @@
From 686d2bdd4affd3c86e605f54a72afe53c920f72f Mon Sep 17 00:00:00 2001
From: Illia Volochii <illia.volochii@gmail.com>
Date: Wed, 7 Jan 2026 18:07:30 +0200
Subject: [PATCH] Backport fix CVE-2026-21441 python urllib3
Original commit: 8864ac407bba8607950025e0979c4c69bc7abc7b
Original-author: Illia Volochii <illia.volochii@gmail.com>
Bugfixes
--------
- Fixed a high-severity security issue where decompression-bomb safeguards of
the streaming API were bypassed when HTTP redirects were followed.
(`GHSA-38jv-5279-wg99 <https://github.com/urllib3/urllib3/security/advisories/GHSA-38jv-5279-wg99>`__)
* Stop decoding response content during redirects needlessly
* Rename the new query parameter
* Add a changelog entry
Fixes CVE-2026-21441
CVE: CVE-2026-21441
Upstream-Status: Backport [https://github.com/urllib3/urllib3/commit/8864ac407bba8607950025e0979c4c69bc7abc7b]
Signed-off-by: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
---
dummyserver/app.py | 8 +++++++-
src/urllib3/response.py | 6 +++++-
test/with_dummyserver/test_connectionpool.py | 19 +++++++++++++++++++
3 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/dummyserver/app.py b/dummyserver/app.py
index 9fc9d1b7..c4978152 100644
--- a/dummyserver/app.py
+++ b/dummyserver/app.py
@@ -233,10 +233,16 @@ async def redirect() -> ResponseReturnValue:
values = await request.values
target = values.get("target", "/")
status = values.get("status", "303 See Other")
+ compressed = values.get("compressed") == "true"
status_code = status.split(" ")[0]
headers = [("Location", target)]
- return await make_response("", status_code, headers)
+ if compressed:
+ headers.append(("Content-Encoding", "gzip"))
+ data = gzip.compress(b"foo")
+ else:
+ data = b""
+ return await make_response(data, status_code, headers)
@hypercorn_app.route("/redirect_after")
diff --git a/src/urllib3/response.py b/src/urllib3/response.py
index a0273d65..909da62b 100644
--- a/src/urllib3/response.py
+++ b/src/urllib3/response.py
@@ -646,7 +646,11 @@ class HTTPResponse(BaseHTTPResponse):
Unread data in the HTTPResponse connection blocks the connection from being released back to the pool.
"""
try:
- self.read()
+ self.read(
+ # Do not spend resources decoding the content unless
+ # decoding has already been initiated.
+ decode_content=self._has_decoded_content,
+ )
except (HTTPError, OSError, BaseSSLError, HTTPException):
pass
diff --git a/test/with_dummyserver/test_connectionpool.py b/test/with_dummyserver/test_connectionpool.py
index 4fbe6a4f..ebcdf9bf 100644
--- a/test/with_dummyserver/test_connectionpool.py
+++ b/test/with_dummyserver/test_connectionpool.py
@@ -480,6 +480,25 @@ class TestConnectionPool(HypercornDummyServerTestCase):
assert r.status == 200
assert r.data == b"Dummy server!"
+ @mock.patch("urllib3.response.GzipDecoder.decompress")
+ def test_no_decoding_with_redirect_when_preload_disabled(
+ self, gzip_decompress: mock.MagicMock
+ ) -> None:
+ """
+ Test that urllib3 does not attempt to decode a gzipped redirect
+ response when `preload_content` is set to `False`.
+ """
+ with HTTPConnectionPool(self.host, self.port) as pool:
+ # Three requests are expected: two redirects and one final / 200 OK.
+ response = pool.request(
+ "GET",
+ "/redirect",
+ fields={"target": "/redirect?compressed=true", "compressed": "true"},
+ preload_content=False,
+ )
+ assert response.status == 200
+ gzip_decompress.assert_not_called()
+
def test_303_redirect_makes_request_lose_body(self) -> None:
with HTTPConnectionPool(self.host, self.port) as pool:
response = pool.request(
--
2.44.0

View File

@@ -11,6 +11,7 @@ SRC_URI += " \
file://CVE-2025-50181.patch \
file://CVE-2025-66418.patch \
file://CVE-2025-66471.patch \
file://CVE-2026-21441.patch \
"
RDEPENDS:${PN} += "\

View File

@@ -0,0 +1,144 @@
From 9c9dda6625a2a90d2a06c657eee021d6be19842d Mon Sep 17 00:00:00 2001
From: "Miss Islington (bot)"
<31488909+miss-islington@users.noreply.github.com>
Date: Mon, 22 Dec 2025 14:48:49 +0100
Subject: [PATCH] [3.12] gh-142145: Remove quadratic behavior in node ID cache
clearing (GH-142146) (#142211)
* gh-142145: Remove quadratic behavior in node ID cache clearing (GH-142146)
* gh-142754: Ensure that Element & Attr instances have the ownerDocument attribute (GH-142794)
(cherry picked from commit 1cc7551b3f9f71efbc88d96dce90f82de98b2454)
(cherry picked from commit 08d8e18ad81cd45bc4a27d6da478b51ea49486e4)
(cherry picked from commit 8d2d7bb2e754f8649a68ce4116271a4932f76907)
Co-authored-by: Jacob Walls <38668450+jacobtylerwalls@users.noreply.github.com>
Co-authored-by: Seth Michael Larson <seth@python.org>
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: 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>
CVE: CVE-2025-12084
Upstream-Status: Backport [https://github.com/python/cpython/commit/9c9dda6625a2a90d2a06c657eee021d6be19842d]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
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 699265ccadc..ab4823c8315 100644
--- a/Lib/test/test_minidom.py
+++ b/Lib/test/test_minidom.py
@@ -2,13 +2,14 @@
import copy
import pickle
+import time
import io
from test import support
import unittest
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
@@ -176,6 +177,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 ef8a159833b..cada981f39f 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 00000000000..05c7df35d14
--- /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.

View File

@@ -0,0 +1,162 @@
From 14b1fdb0a94b96f86fc7b86671ea9582b8676628 Mon Sep 17 00:00:00 2001
From: "Miss Islington (bot)"
<31488909+miss-islington@users.noreply.github.com>
Date: Mon, 22 Dec 2025 14:50:18 +0100
Subject: [PATCH] [3.12] gh-119451: Fix a potential denial of service in
http.client (GH-119454) (#142140)
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)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
CVE: CVE-2025-13836
Upstream-Status: Backport [https://github.com/python/cpython/commit/14b1fdb0a94b96f86fc7b86671ea9582b8676628]
Signed-off-by: Peter Marko <peter.marko@siemens.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 fb29923d942..70451d67d4c 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
@@ -639,10 +644,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 01f5a101901..e46dac00779 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -1452,6 +1452,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 00000000000..6d6f25cd2f8
--- /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.

View File

@@ -0,0 +1,162 @@
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
@@ -841,8 +841,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 = []
@@ -854,7 +853,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
@@ -963,6 +966,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.

View File

@@ -35,6 +35,9 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
file://0001-test_active_children-skip-problematic-test.patch \
file://0001-test_readline-skip-limited-history-test.patch \
file://CVE-2025-6075.patch \
file://CVE-2025-12084.patch \
file://CVE-2025-13836.patch \
file://CVE-2025-13837.patch \
"
SRC_URI:append:class-native = " \

View File

@@ -88,6 +88,9 @@ CVE_STATUS[CVE-2023-1386] = "disputed: not an issue as per https://bugzilla.redh
CVE_STATUS[CVE-2024-7730] = "fixed-version: this is fixed in v8.2.7"
CVE_STATUS[CVE-2025-54566] = "cpe-incorrect: This issue was introduced in v10.0.0-rc0"
CVE_STATUS[CVE-2025-54567] = "cpe-incorrect: This issue was introduced in v10.0.0-rc0"
COMPATIBLE_HOST:mipsarchn32 = "null"
COMPATIBLE_HOST:mipsarchn64 = "null"
COMPATIBLE_HOST:riscv32 = "null"

View File

@@ -19,6 +19,7 @@ SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/cups-${PV}-source.tar.gz \
file://CVE-2025-58364.patch \
file://CVE-2025-58436.patch \
file://CVE-2025-61915.patch \
file://0001-conf.c-Fix-stopping-scheduler-on-unknown-directive.patch \
"
GITHUB_BASE_URI = "https://github.com/OpenPrinting/cups/releases"

View File

@@ -0,0 +1,43 @@
From 277d3b1c49895f070bbf4b73cada011d71fbf9f3 Mon Sep 17 00:00:00 2001
From: Zdenek Dohnal <zdohnal@redhat.com>
Date: Thu, 4 Dec 2025 09:04:37 +0100
Subject: [PATCH] conf.c: Fix stopping scheduler on unknown directive
Change the return value to do not trigger stopping the scheduler in case
of unknown directive, because stopping the scheduler on config errors
should only happen in case of syntax errors.
Upstream-Status: Backport [https://github.com/OpenPrinting/cups/commit/277d3b1c49895f070bbf4b73cada011d71fbf9f3]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
scheduler/conf.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/scheduler/conf.c b/scheduler/conf.c
index 7d6da0252..0e7be0ef4 100644
--- a/scheduler/conf.c
+++ b/scheduler/conf.c
@@ -2697,16 +2697,16 @@ parse_variable(
{
/*
* Unknown directive! Output an error message and continue...
+ *
+ * Return value 1 is on purpose - we ignore unknown directives to log
+ * error, but do not stop the scheduler in case error in configuration
+ * is set to be fatal.
*/
- if (!value)
- cupsdLogMessage(CUPSD_LOG_ERROR, "Missing value for %s on line %d of %s.",
- line, linenum, filename);
- else
- cupsdLogMessage(CUPSD_LOG_ERROR, "Unknown directive %s on line %d of %s.",
- line, linenum, filename);
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unknown directive %s on line %d of %s.",
+ line, linenum, filename);
- return (0);
+ return (1);
}
switch (var->type)

View File

@@ -0,0 +1,46 @@
From cfb02de558d843dc5355c4aa2aeb4af49f88bdb9 Mon Sep 17 00:00:00 2001
From: Martin Matuska <martin@matuska.de>
Date: Mon, 8 Dec 2025 21:40:46 +0100
Subject: [PATCH] tar: fix off-bounds read resulting from #2787 (3150539ed)
CVE: CVE-2025-60753
Upstream-Status: Backport [https://github.com/libarchive/libarchive/commit/cfb02de558d843dc5355c4aa2aeb4af49f88bdb9]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
tar/subst.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/tar/subst.c b/tar/subst.c
index a466f653..53497ad0 100644
--- a/tar/subst.c
+++ b/tar/subst.c
@@ -237,7 +237,7 @@ apply_substitution(struct bsdtar *bsdtar, const char *name, char **result,
char isEnd = 0;
do {
- isEnd = *name == '\0';
+ isEnd = *name == '\0';
if (regexec(&rule->re, name, 10, matches, 0))
break;
@@ -293,13 +293,13 @@ apply_substitution(struct bsdtar *bsdtar, const char *name, char **result,
realloc_strcat(result, rule->result + j);
if (matches[0].rm_eo > 0) {
- name += matches[0].rm_eo;
- } else {
- // We skip a character because the match is 0-length
- // so we need to add it to the output
- realloc_strncat(result, name, 1);
- name += 1;
- }
+ name += matches[0].rm_eo;
+ } else if (!isEnd) {
+ // We skip a character because the match is 0-length
+ // so we need to add it to the output
+ realloc_strncat(result, name, 1);
+ name += 1;
+ }
} while (rule->global && !isEnd); // Testing one step after because sed et al. run 0-length patterns a last time on the empty string at the end
}

View File

@@ -42,7 +42,8 @@ SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
file://0001-Merge-pull-request-2749-from-KlaraSystems-des-tempdi.patch \
file://0001-Merge-pull-request-2753-from-KlaraSystems-des-temp-f.patch \
file://0001-Merge-pull-request-2768-from-Commandoss-master.patch \
file://CVE-2025-60753.patch \
file://CVE-2025-60753-01.patch \
file://CVE-2025-60753-02.patch \
"
UPSTREAM_CHECK_URI = "http://libarchive.org/"

View File

@@ -0,0 +1,48 @@
From 3d400ce06dcb950a61363f87330324db244f4bac Mon Sep 17 00:00:00 2001
From: Glenn Strauss <gstrauss@gluelogic.com>
Date: Thu, 29 Feb 2024 20:59:57 -0500
Subject: [PATCH] [mod_dirlisting] fix suffix display of '/' on file (fixes
#3242)
fix incorrect suffix display of '/' on files
(regression in lighttpd 1.4.74)
(thx guy)
Upstream-Status: Backport [https://github.com/lighttpd/lighttpd1.4/commit/3d400ce06dcb950a61363f87330324db244f4bac]
References:
[1] https://redmine.lighttpd.net/issues/3242
Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
---
src/mod_dirlisting.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/mod_dirlisting.c b/src/mod_dirlisting.c
index a3432211..2686cd3e 100644
--- a/src/mod_dirlisting.c
+++ b/src/mod_dirlisting.c
@@ -1022,10 +1022,19 @@ static void http_list_directory_dirname(buffer * const out, const dirls_entry_t
buffer_append_string_len(out, CONST_STR_LEN("</td><td class=\"s\">- &nbsp;</td><td class=\"t\">Directory</td></tr>\n"));
}
+static void http_list_file_ent(buffer * const out, const dirls_entry_t * const ent, const char * const name) {
+ buffer_append_string_encoded(out, name, ent->namelen, ENCODING_REL_URI_PART);
+ buffer_append_string_len(out, CONST_STR_LEN("\">"));
+ buffer_append_string_encoded(out, name, ent->namelen, ENCODING_MINIMAL_XML);
+ buffer_append_string_len(out, CONST_STR_LEN("</a></td><td class=\"m\">"));
+
+ http_list_directory_mtime(out, ent);
+}
+
static void http_list_directory_filename(buffer * const out, const dirls_entry_t * const ent, const char * const name, handler_ctx * const hctx) {
buffer_append_string_len(out, CONST_STR_LEN("<tr><td class=\"n\"><a href=\""));
- http_list_directory_ent(out, ent, name);
+ http_list_file_ent(out, ent, name);
const buffer *content_type;
#if defined(HAVE_XATTR) || defined(HAVE_EXTATTR) /*(pass full path)*/

View File

@@ -14,6 +14,7 @@ SRC_URI = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${PV}.t
file://index.html.lighttpd \
file://lighttpd.conf \
file://lighttpd \
file://0001-mod_dirlisting.patch \
"
SRC_URI[sha256sum] = "5c08736e83088f7e019797159f306e88ec729abe976dc98fb3bed71b9d3e53b5"

View File

@@ -1,62 +0,0 @@
From ced5c5fdb8634d39ca9472a2026b2d2fea16c4e5 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Date: Mon, 25 Mar 2024 16:54:25 +0100
Subject: [PATCH] fftools/ffmpeg_mux_init: Fix double-free on error
MATCH_PER_STREAM_OPT iterates over all options of a given
OptionDef and tests whether they apply to the current stream;
if so, they are set to ost->apad, otherwise, the code errors
out. If no error happens, ost->apad is av_strdup'ed in order
to take ownership of this pointer.
But this means that setting it originally was premature,
as it leads to double-frees when an error happens lateron.
This can simply be reproduced with
ffmpeg -filter_complex anullsrc -apad bar -apad:n baz -f null -
This is a regression since 83ace80bfd80fcdba2c65fa1d554923ea931d5bd.
Fix this by using a temporary variable instead of directly
setting ost->apad. Also only strdup the string if it actually
is != NULL.
Reviewed-by: Marth64 <marth64@proxyid.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
CVE: CVE-2024-35365
Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/ced5c5fdb8634d39ca9472a2026b2d2fea16c4e5]
Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
---
fftools/ffmpeg_mux_init.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c
index 63a25a3..685c064 100644
--- a/fftools/ffmpeg_mux_init.c
+++ b/fftools/ffmpeg_mux_init.c
@@ -845,6 +845,7 @@ static int new_stream_audio(Muxer *mux, const OptionsContext *o,
int channels = 0;
char *layout = NULL;
char *sample_fmt = NULL;
+ const char *apad = NULL;
MATCH_PER_STREAM_OPT(audio_channels, i, channels, oc, st);
if (channels) {
@@ -882,8 +883,12 @@ static int new_stream_audio(Muxer *mux, const OptionsContext *o,
MATCH_PER_STREAM_OPT(audio_sample_rate, i, audio_enc->sample_rate, oc, st);
- MATCH_PER_STREAM_OPT(apad, str, ost->apad, oc, st);
- ost->apad = av_strdup(ost->apad);
+ MATCH_PER_STREAM_OPT(apad, str, apad, oc, st);
+ if (apad) {
+ ost->apad = av_strdup(apad);
+ if (!ost->apad)
+ return AVERROR(ENOMEM);
+ }
#if FFMPEG_OPT_MAP_CHANNEL
/* check for channel mapping for this audio stream */
--
2.40.0

View File

@@ -1,36 +0,0 @@
From 7a089ed8e049e3bfcb22de1250b86f2106060857 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Date: Tue, 12 Mar 2024 23:23:17 +0100
Subject: [PATCH] avformat/avidec: Fix integer overflow iff ULONG_MAX <
INT64_MAX
Affects many FATE-tests, see
https://fate.ffmpeg.org/report.cgi?time=20240312011016&slot=ppc-linux-gcc-13.2-ubsan-altivec-qemu
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
CVE: CVE-2024-36618
Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/7a089ed8e049e3bfcb22de1250b86f2106060857]
Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
---
libavformat/avidec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 00bd7a9..bc95466 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -1696,7 +1696,7 @@ static int check_stream_max_drift(AVFormatContext *s)
int *idx = av_calloc(s->nb_streams, sizeof(*idx));
if (!idx)
return AVERROR(ENOMEM);
- for (min_pos = pos = 0; min_pos != INT64_MAX; pos = min_pos + 1LU) {
+ for (min_pos = pos = 0; min_pos != INT64_MAX; pos = min_pos + 1ULL) {
int64_t max_dts = INT64_MIN / 2;
int64_t min_dts = INT64_MAX / 2;
int64_t max_buffer = 0;
--
2.40.0

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