summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbitbake/bin/bitbake-diffsigs9
-rw-r--r--bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst2
-rw-r--r--bitbake/lib/bb/asyncrpc/client.py6
-rw-r--r--bitbake/lib/bb/command.py21
-rw-r--r--bitbake/lib/bb/cooker.py43
-rw-r--r--bitbake/lib/bb/data_smart.py8
-rw-r--r--bitbake/lib/bb/event.py19
-rw-r--r--bitbake/lib/bb/exceptions.py96
-rw-r--r--bitbake/lib/bb/fetch2/__init__.py64
-rw-r--r--bitbake/lib/bb/fetch2/gcp.py14
-rw-r--r--bitbake/lib/bb/fetch2/git.py3
-rw-r--r--bitbake/lib/bb/fetch2/gitsm.py44
-rw-r--r--bitbake/lib/bb/fetch2/wget.py4
-rw-r--r--bitbake/lib/bb/msg.py4
-rw-r--r--bitbake/lib/bb/parse/ast.py20
-rw-r--r--bitbake/lib/bb/persist_data.py1
-rw-r--r--bitbake/lib/bb/runqueue.py22
-rw-r--r--bitbake/lib/bb/tests/fetch.py6
-rw-r--r--bitbake/lib/bb/tinfoil.py16
-rw-r--r--bitbake/lib/bb/ui/knotty.py20
-rw-r--r--bitbake/lib/bb/ui/teamcity.py5
-rw-r--r--bitbake/lib/bb/utils.py20
-rw-r--r--bitbake/lib/bblayers/query.py15
-rw-r--r--bitbake/lib/toaster/tests/builds/buildtest.py2
-rw-r--r--documentation/Makefile36
-rw-r--r--documentation/README39
-rw-r--r--documentation/brief-yoctoprojectqs/index.rst12
-rw-r--r--documentation/bsp-guide/bsp.rst56
-rw-r--r--documentation/conf.py33
-rw-r--r--documentation/contributor-guide/recipe-style-guide.rst8
-rw-r--r--documentation/contributor-guide/submit-changes.rst90
-rw-r--r--documentation/dev-manual/bblock.rst129
-rw-r--r--documentation/dev-manual/bmaptool.rst29
-rw-r--r--documentation/dev-manual/building.rst84
-rw-r--r--documentation/dev-manual/customizing-images.rst17
-rw-r--r--documentation/dev-manual/debugging.rst2
-rw-r--r--documentation/dev-manual/external-scm.rst9
-rw-r--r--documentation/dev-manual/index.rst2
-rw-r--r--documentation/dev-manual/layers.rst90
-rw-r--r--documentation/dev-manual/new-recipe.rst12
-rw-r--r--documentation/dev-manual/packages.rst125
-rw-r--r--documentation/dev-manual/qemu.rst13
-rw-r--r--documentation/dev-manual/sbom.rst15
-rw-r--r--documentation/dev-manual/start.rst2
-rw-r--r--documentation/dev-manual/upgrading-recipes.rst2
-rw-r--r--documentation/dev-manual/vulnerabilities.rst96
-rw-r--r--documentation/dev-manual/wic.rst4
-rw-r--r--documentation/downloads.rst11
-rw-r--r--documentation/index.rst7
-rw-r--r--documentation/kernel-dev/common.rst27
-rw-r--r--documentation/kernel-dev/intro.rst2
-rw-r--r--documentation/migration-guides/migration-1.5.rst4
-rw-r--r--documentation/migration-guides/migration-1.6.rst2
-rw-r--r--documentation/migration-guides/release-4.0.rst8
-rw-r--r--documentation/migration-guides/release-5.0.rst7
-rw-r--r--documentation/migration-guides/release-notes-3.4.1.rst14
-rw-r--r--documentation/migration-guides/release-notes-3.4.2.rst40
-rw-r--r--documentation/migration-guides/release-notes-3.4.3.rst10
-rw-r--r--documentation/migration-guides/release-notes-3.4.4.rst6
-rw-r--r--documentation/migration-guides/release-notes-3.4.rst56
-rw-r--r--documentation/migration-guides/release-notes-4.0.1.rst10
-rw-r--r--documentation/migration-guides/release-notes-4.0.10.rst42
-rw-r--r--documentation/migration-guides/release-notes-4.0.11.rst24
-rw-r--r--documentation/migration-guides/release-notes-4.0.12.rst48
-rw-r--r--documentation/migration-guides/release-notes-4.0.13.rst68
-rw-r--r--documentation/migration-guides/release-notes-4.0.14.rst56
-rw-r--r--documentation/migration-guides/release-notes-4.0.15.rst34
-rw-r--r--documentation/migration-guides/release-notes-4.0.16.rst30
-rw-r--r--documentation/migration-guides/release-notes-4.0.17.rst42
-rw-r--r--documentation/migration-guides/release-notes-4.0.18.rst32
-rw-r--r--documentation/migration-guides/release-notes-4.0.19.rst36
-rw-r--r--documentation/migration-guides/release-notes-4.0.2.rst14
-rw-r--r--documentation/migration-guides/release-notes-4.0.20.rst16
-rw-r--r--documentation/migration-guides/release-notes-4.0.21.rst166
-rw-r--r--documentation/migration-guides/release-notes-4.0.22.rst196
-rw-r--r--documentation/migration-guides/release-notes-4.0.23.rst209
-rw-r--r--documentation/migration-guides/release-notes-4.0.24.rst383
-rw-r--r--documentation/migration-guides/release-notes-4.0.25.rst167
-rw-r--r--documentation/migration-guides/release-notes-4.0.26.rst263
-rw-r--r--documentation/migration-guides/release-notes-4.0.27.rst153
-rw-r--r--documentation/migration-guides/release-notes-4.0.3.rst30
-rw-r--r--documentation/migration-guides/release-notes-4.0.4.rst22
-rw-r--r--documentation/migration-guides/release-notes-4.0.5.rst10
-rw-r--r--documentation/migration-guides/release-notes-4.0.6.rst44
-rw-r--r--documentation/migration-guides/release-notes-4.0.7.rst40
-rw-r--r--documentation/migration-guides/release-notes-4.0.8.rst20
-rw-r--r--documentation/migration-guides/release-notes-4.0.9.rst42
-rw-r--r--documentation/migration-guides/release-notes-4.0.rst64
-rw-r--r--documentation/migration-guides/release-notes-4.1.1.rst22
-rw-r--r--documentation/migration-guides/release-notes-4.1.2.rst24
-rw-r--r--documentation/migration-guides/release-notes-4.1.3.rst36
-rw-r--r--documentation/migration-guides/release-notes-4.1.4.rst34
-rw-r--r--documentation/migration-guides/release-notes-4.1.rst60
-rw-r--r--documentation/migration-guides/release-notes-4.2.1.rst14
-rw-r--r--documentation/migration-guides/release-notes-4.2.2.rst30
-rw-r--r--documentation/migration-guides/release-notes-4.2.3.rst34
-rw-r--r--documentation/migration-guides/release-notes-4.2.4.rst72
-rw-r--r--documentation/migration-guides/release-notes-4.2.rst64
-rw-r--r--documentation/migration-guides/release-notes-4.3.1.rst16
-rw-r--r--documentation/migration-guides/release-notes-4.3.2.rst24
-rw-r--r--documentation/migration-guides/release-notes-4.3.3.rst22
-rw-r--r--documentation/migration-guides/release-notes-4.3.4.rst34
-rw-r--r--documentation/migration-guides/release-notes-4.3.rst82
-rw-r--r--documentation/migration-guides/release-notes-5.0.10.rst208
-rw-r--r--documentation/migration-guides/release-notes-5.0.2.rst22
-rw-r--r--documentation/migration-guides/release-notes-5.0.3.rst48
-rw-r--r--documentation/migration-guides/release-notes-5.0.4.rst212
-rw-r--r--documentation/migration-guides/release-notes-5.0.5.rst227
-rw-r--r--documentation/migration-guides/release-notes-5.0.6.rst223
-rw-r--r--documentation/migration-guides/release-notes-5.0.7.rst331
-rw-r--r--documentation/migration-guides/release-notes-5.0.8.rst226
-rw-r--r--documentation/migration-guides/release-notes-5.0.9.rst206
-rw-r--r--documentation/migration-guides/release-notes-5.0.rst68
-rw-r--r--documentation/overview-manual/concepts.rst91
-rw-r--r--documentation/overview-manual/yp-intro.rst2
-rw-r--r--documentation/poky.yaml.in276
-rw-r--r--documentation/ref-manual/classes.rst89
-rw-r--r--documentation/ref-manual/devtool-reference.rst94
-rw-r--r--documentation/ref-manual/faq.rst41
-rw-r--r--documentation/ref-manual/features.rst4
-rw-r--r--documentation/ref-manual/images.rst25
-rw-r--r--documentation/ref-manual/qa-checks.rst10
-rw-r--r--documentation/ref-manual/release-process.rst25
-rw-r--r--documentation/ref-manual/structure.rst44
-rw-r--r--documentation/ref-manual/svg/releases.svg1223
-rw-r--r--documentation/ref-manual/system-requirements.rst72
-rw-r--r--documentation/ref-manual/tasks.rst12
-rw-r--r--documentation/ref-manual/terms.rst4
-rw-r--r--documentation/ref-manual/variables.rst728
-rw-r--r--documentation/sdk-manual/appendix-obtain.rst6
-rw-r--r--documentation/sdk-manual/extensible.rst219
-rw-r--r--documentation/sdk-manual/intro.rst4
-rw-r--r--documentation/sdk-manual/using.rst2
-rwxr-xr-xdocumentation/set_versions.py16
-rw-r--r--documentation/sphinx-static/favicon.icobin0 -> 1291 bytes
-rw-r--r--documentation/sphinx-static/switchers.js.in6
-rw-r--r--documentation/standards.md17
-rw-r--r--documentation/styles/config/vocabularies/Yocto/accept.txt1
-rw-r--r--documentation/test-manual/index.rst2
-rw-r--r--documentation/test-manual/intro.rst18
-rw-r--r--documentation/test-manual/ptest.rst128
-rw-r--r--documentation/test-manual/reproducible-builds.rst30
-rw-r--r--documentation/test-manual/runtime-testing.rst (renamed from documentation/dev-manual/runtime-testing.rst)5
-rw-r--r--documentation/test-manual/test-process.rst2
-rw-r--r--documentation/test-manual/understand-autobuilder.rst2
-rw-r--r--documentation/toaster-manual/reference.rst6
-rw-r--r--meta-poky/conf/distro/poky.conf7
-rw-r--r--meta-poky/conf/templates/default/local.conf.sample5
-rw-r--r--meta/classes-global/license.bbclass10
-rw-r--r--meta/classes-global/package_rpm.bbclass19
-rw-r--r--meta/classes-global/sanity.bbclass26
-rw-r--r--meta/classes-global/sstate.bbclass16
-rw-r--r--meta/classes-recipe/cmake.bbclass2
-rw-r--r--meta/classes-recipe/cml1.bbclass3
-rw-r--r--meta/classes-recipe/image.bbclass20
-rw-r--r--meta/classes-recipe/kernel-arch.bbclass8
-rw-r--r--meta/classes-recipe/kernel-fitimage.bbclass53
-rw-r--r--meta/classes-recipe/module.bbclass1
-rw-r--r--meta/classes-recipe/nativesdk.bbclass1
-rw-r--r--meta/classes-recipe/populate_sdk_base.bbclass2
-rw-r--r--meta/classes-recipe/populate_sdk_ext.bbclass2
-rw-r--r--meta/classes-recipe/qemu.bbclass8
-rw-r--r--meta/classes-recipe/rootfs-postcommands.bbclass4
-rw-r--r--meta/classes-recipe/rust-common.bbclass2
-rw-r--r--meta/classes-recipe/rust-target-config.bbclass10
-rw-r--r--meta/classes-recipe/testimage.bbclass4
-rw-r--r--meta/classes-recipe/uboot-config.bbclass17
-rw-r--r--meta/classes-recipe/uboot-sign.bbclass83
-rw-r--r--meta/classes/cve-check.bbclass27
-rw-r--r--meta/conf/ccache.conf6
-rw-r--r--meta/conf/distro/include/maintainers.inc3
-rw-r--r--meta/conf/distro/include/ptest-packagelists.inc3
-rw-r--r--meta/conf/distro/include/time64.inc2
-rw-r--r--meta/conf/distro/include/yocto-uninative.inc10
-rw-r--r--meta/conf/image-fitimage.conf53
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc2
-rw-r--r--meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc5
-rw-r--r--meta/files/overlayfs-create-dirs.service.in5
-rw-r--r--meta/files/overlayfs-unit.mount.in2
-rw-r--r--meta/files/toolchain-shar-extract.sh9
-rw-r--r--meta/lib/oe/package_manager/__init__.py76
-rw-r--r--meta/lib/oe/patch.py14
-rw-r--r--meta/lib/oe/rootfs.py4
-rw-r--r--meta/lib/oe/sstatesig.py7
-rw-r--r--meta/lib/oe/utils.py13
-rw-r--r--meta/lib/oeqa/core/runner.py2
-rw-r--r--meta/lib/oeqa/core/target/ssh.py16
-rw-r--r--meta/lib/oeqa/runtime/cases/ssh.py4
-rw-r--r--meta/lib/oeqa/sdk/context.py12
-rw-r--r--meta/lib/oeqa/selftest/cases/devtool.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/meta_ide.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/overlayfs.py41
-rw-r--r--meta/lib/oeqa/selftest/cases/reproducible.py10
-rw-r--r--meta/lib/oeqa/selftest/cases/rust.py13
-rw-r--r--meta/lib/oeqa/selftest/cases/sstatetests.py2
-rw-r--r--meta/lib/oeqa/utils/gitarchive.py4
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py11
-rw-r--r--meta/recipes-bsp/grub/files/0001-misc-Implement-grub_strlcpy.patch68
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2024-45774.patch37
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2024-45775.patch38
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2024-45776.patch39
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2024-45777.patch57
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2024-45778_CVE-2024-45779.patch55
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2024-45780.patch93
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2024-45781.patch35
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2024-45782_CVE-2024-56737.patch36
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2024-45783.patch39
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2025-0622-01.patch35
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2025-0622-02.patch41
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2025-0622-03.patch38
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2025-0624.patch84
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2025-0677_CVE-2025-0684_CVE-2025-0685_CVE-2025-0686_CVE-2025-0689.patch377
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2025-0678_CVE-2025-1125.patch87
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2025-0690.patch73
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2025-1118.patch37
-rw-r--r--meta/recipes-bsp/grub/grub2.inc21
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2024-57254.patch47
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2024-57255.patch53
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2024-57256.patch51
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2024-57257.patch227
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2024-57258-1.patch47
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2024-57258-2.patch43
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2024-57258-3.patch40
-rw-r--r--meta/recipes-bsp/u-boot/files/CVE-2024-57259.patch41
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-common.inc11
-rwxr-xr-xmeta/recipes-bsp/usbutils/usbutils/0001-usb-devices-Fix-usb-devices-with-busybox.patch37
-rw-r--r--meta/recipes-bsp/usbutils/usbutils_017.bb1
-rw-r--r--meta/recipes-connectivity/avahi/avahi_0.8.bb1
-rw-r--r--meta/recipes-connectivity/avahi/files/CVE-2024-52616.patch104
-rw-r--r--meta/recipes-connectivity/bind/bind_9.18.33.bb (renamed from meta/recipes-connectivity/bind/bind_9.18.28.bb)2
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5.inc12
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/0001-adapter-Fix-up-address-type-when-loading-keys.patch52
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5/toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch29
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5_5.72.bb8
-rw-r--r--meta/recipes-connectivity/connman/connman/CVE-2025-32366.patch41
-rw-r--r--meta/recipes-connectivity/connman/connman/CVE-2025-32743.patch48
-rw-r--r--meta/recipes-connectivity/connman/connman_1.42.bb2
-rw-r--r--meta/recipes-connectivity/kea/kea_2.4.2.bb (renamed from meta/recipes-connectivity/kea/kea_2.4.1.bb)4
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver28
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2023-4232.patch31
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2023-4235.patch38
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2024-7537.patch59
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2024-7539.patch88
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2024-7540_CVE-2024-7541_CVE-2024-7542.patch52
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2024-7543.patch30
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2024-7544.patch30
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2024-7545.patch32
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2024-7546.patch30
-rw-r--r--meta/recipes-connectivity/ofono/ofono/CVE-2024-7547.patch29
-rw-r--r--meta/recipes-connectivity/ofono/ofono_2.4.bb10
-rw-r--r--meta/recipes-connectivity/openssh/openssh/CVE-2025-26465.patch169
-rw-r--r--meta/recipes-connectivity/openssh/openssh/CVE-2025-26466.patch38
-rw-r--r--meta/recipes-connectivity/openssh/openssh/CVE-2025-32728.patch44
-rw-r--r--meta/recipes-connectivity/openssh/openssh_9.6p1.bb4
-rw-r--r--meta/recipes-connectivity/openssl/files/environment.d-openssl.sh22
-rw-r--r--meta/recipes-connectivity/openssl/openssl/0001-Added-handshake-history-reporting-when-test-fails.patch40
-rw-r--r--meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch2
-rw-r--r--meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch4
-rw-r--r--meta/recipes-connectivity/openssl/openssl/run-ptest19
-rw-r--r--meta/recipes-connectivity/openssl/openssl_3.2.4.bb (renamed from meta/recipes-connectivity/openssl/openssl_3.2.3.bb)69
-rw-r--r--meta/recipes-connectivity/ppp/ppp/0001-Revert-lock-path-to-var-lock-435.patch63
-rw-r--r--meta/recipes-connectivity/ppp/ppp/CVE-2024-58250.patch194
-rw-r--r--meta/recipes-connectivity/ppp/ppp_2.5.0.bb3
-rw-r--r--meta/recipes-connectivity/socat/files/CVE-2024-54661.patch113
-rw-r--r--meta/recipes-connectivity/socat/socat_1.8.0.0.bb1
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-SAE-Check-for-invalid-Rejected-Groups-element-length.patch52
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-SAE-Check-for-invalid-Rejected-Groups-element-length.patch50
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0003-SAE-Reject-invalid-Rejected-Groups-element-in-the-pa.patch38
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_00.patch82
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_01.patch165
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_02.patch62
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_03.patch37
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_04.patch52
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_05.patch51
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_06.patch46
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_07.patch67
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_08.patch47
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bb14
-rw-r--r--meta/recipes-core/base-files/base-files_3.0.14.bb23
-rw-r--r--meta/recipes-core/coreutils/coreutils/CVE-2025-5278.patch112
-rw-r--r--meta/recipes-core/coreutils/coreutils_9.4.bb1
-rw-r--r--meta/recipes-core/dropbear/dropbear/0007-Don-t-close-channels-when-a-PID-hasn-t-started.patch45
-rw-r--r--meta/recipes-core/dropbear/dropbear/CVE-2023-48795.patch234
-rw-r--r--meta/recipes-core/dropbear/dropbear_2022.83.bb2
-rw-r--r--meta/recipes-core/expat/expat/0001-tests-Cover-indirect-entity-recursion.patch103
-rw-r--r--meta/recipes-core/expat/expat/CVE-2024-8176-01.patch1477
-rw-r--r--meta/recipes-core/expat/expat/CVE-2024-8176-02.patch248
-rw-r--r--meta/recipes-core/expat/expat_2.6.4.bb (renamed from meta/recipes-core/expat/expat_2.6.3.bb)5
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2024-52533.patch49
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-01.patch57
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-02.patch53
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-03.patch36
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-04.patch76
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-05.patch57
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-06.patch50
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-01.patch120
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-02.patch29
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0001.patch72
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0002.patch65
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0003.patch63
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb14
-rw-r--r--meta/recipes-core/glibc/glibc-version.inc2
-rw-r--r--meta/recipes-core/glibc/glibc-y2038-tests_2.39.bb119
-rw-r--r--meta/recipes-core/glibc/glibc/0001-stdlib-Add-single-threaded-fast-path-to-rand.patch47
-rw-r--r--meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch1
-rw-r--r--meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch2
-rw-r--r--meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch8
-rwxr-xr-xmeta/recipes-core/glibc/glibc/run-ptest37
-rw-r--r--meta/recipes-core/glibc/glibc_2.39.bb4
-rw-r--r--meta/recipes-core/images/build-appliance-image_15.0.0.bb2
-rwxr-xr-xmeta/recipes-core/initscripts/initscripts-1.0/functions21
-rw-r--r--meta/recipes-core/initscripts/initscripts_1.0.bb1
-rw-r--r--meta/recipes-core/libxml/libxml2/CVE-2025-32414.patch74
-rw-r--r--meta/recipes-core/libxml/libxml2/CVE-2025-32415.patch39
-rw-r--r--meta/recipes-core/libxml/libxml2_2.12.10.bb (renamed from meta/recipes-core/libxml/libxml2_2.12.8.bb)4
-rw-r--r--meta/recipes-core/meta/buildtools-tarball.bb29
-rw-r--r--meta/recipes-core/meta/cve-update-nvd2-native.bb44
-rw-r--r--meta/recipes-core/meta/meta-ide-support.bb1
-rw-r--r--meta/recipes-core/meta/meta-world-pkgdata.bb1
-rw-r--r--meta/recipes-core/ovmf/ovmf/0001-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch51
-rw-r--r--meta/recipes-core/ovmf/ovmf/0001-MdePkg-Fix-overflow-issue-in-BasePeCoffLib.patch36
-rw-r--r--meta/recipes-core/ovmf/ovmf_git.bb3
-rw-r--r--meta/recipes-core/systemd/systemd-boot-native_255.21.bb (renamed from meta/recipes-core/systemd/systemd-boot-native_255.4.bb)0
-rw-r--r--meta/recipes-core/systemd/systemd-boot_255.21.bb (renamed from meta/recipes-core/systemd/systemd-boot_255.4.bb)2
-rw-r--r--meta/recipes-core/systemd/systemd.inc2
-rw-r--r--meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch7
-rw-r--r--meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch13
-rw-r--r--meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch9
-rw-r--r--meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch84
-rw-r--r--meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch14
-rw-r--r--meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch7
-rw-r--r--meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch11
-rw-r--r--meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch17
-rw-r--r--meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch8
-rw-r--r--meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch5
-rw-r--r--meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch9
-rw-r--r--meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch13
-rw-r--r--meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch7
-rw-r--r--meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch61
-rw-r--r--meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch7
-rw-r--r--meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch13
-rw-r--r--meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch13
-rw-r--r--meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch9
-rw-r--r--meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch21
-rw-r--r--meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch9
-rw-r--r--meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch7
-rw-r--r--meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch9
-rw-r--r--meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch7
-rw-r--r--meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch11
-rw-r--r--meta/recipes-core/systemd/systemd_255.21.bb (renamed from meta/recipes-core/systemd/systemd_255.4.bb)19
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/0001-Accepted-patch-from-Mark-Hindley-which-avoids-cleari.patch31
-rw-r--r--meta/recipes-core/sysvinit/sysvinit_3.04.bb6
-rw-r--r--meta/recipes-core/udev/udev-extraconf/network.sh32
-rw-r--r--meta/recipes-core/util-linux/util-linux.inc1
-rw-r--r--meta/recipes-core/util-linux/util-linux/fstab-isolation.patch448
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.42.inc19
-rw-r--r--meta/recipes-devtools/binutils/binutils/0016-CVE-2024-53589.patch92
-rw-r--r--meta/recipes-devtools/binutils/binutils/0017-dlltool-file-name-too-long.patch208
-rw-r--r--meta/recipes-devtools/binutils/binutils/0018-CVE-2025-0840.patch53
-rw-r--r--meta/recipes-devtools/binutils/binutils/0019-CVE-2025-1153-1.patch3207
-rw-r--r--meta/recipes-devtools/binutils/binutils/0020-CVE-2025-1153-2.patch840
-rw-r--r--meta/recipes-devtools/binutils/binutils/0021-CVE-2025-1153-3.patch3756
-rw-r--r--meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5244.patch25
-rw-r--r--meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5245.patch38
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2024-57360.patch75
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2025-1176.patch156
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2025-1178.patch38
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2025-1179-pre.patch1086
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2025-1179.patch269
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2025-1181-pre.patch151
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2025-1181.patch345
-rw-r--r--meta/recipes-devtools/binutils/binutils/CVE-2025-1182.patch33
-rw-r--r--meta/recipes-devtools/binutils/binutils_2.42.bb4
-rw-r--r--meta/recipes-devtools/cmake/cmake-native_3.28.3.bb2
-rw-r--r--meta/recipes-devtools/cmake/cmake.inc3
-rw-r--r--meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineCompilerABI-Strip-pipe-from-compile-fl.patch52
-rw-r--r--meta/recipes-devtools/cmake/cmake/0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch205
-rw-r--r--meta/recipes-devtools/cmake/cmake_3.28.3.bb1
-rw-r--r--meta/recipes-devtools/dnf/dnf_4.19.0.bb3
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/run-ptest3
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.191.bb4
-rw-r--r--meta/recipes-devtools/elfutils/files/CVE-2025-1352.patch153
-rw-r--r--meta/recipes-devtools/elfutils/files/CVE-2025-1365.patch151
-rw-r--r--meta/recipes-devtools/elfutils/files/CVE-2025-1371.patch41
-rw-r--r--meta/recipes-devtools/elfutils/files/CVE-2025-1372.patch50
-rw-r--r--meta/recipes-devtools/gcc/gcc-13.4.inc (renamed from meta/recipes-devtools/gcc/gcc-13.3.inc)6
-rw-r--r--meta/recipes-devtools/gcc/gcc-common.inc26
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-common.inc1
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian.inc5
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-cross-canadian_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross.inc17
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-cross_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-crosssdk_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-runtime_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-sanitizers_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-source_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc-source_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-target.inc47
-rw-r--r--meta/recipes-devtools/gcc/gcc-testsuite.inc4
-rw-r--r--meta/recipes-devtools/gcc/gcc_13.4.bb (renamed from meta/recipes-devtools/gcc/gcc_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/libgcc-initial_13.4.bb (renamed from meta/recipes-devtools/gcc/libgcc-initial_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/libgcc_13.4.bb (renamed from meta/recipes-devtools/gcc/libgcc_13.3.bb)0
-rw-r--r--meta/recipes-devtools/gcc/libgfortran.inc2
-rw-r--r--meta/recipes-devtools/gcc/libgfortran_13.4.bb (renamed from meta/recipes-devtools/gcc/libgfortran_13.3.bb)0
-rw-r--r--meta/recipes-devtools/git/git/environment.d-git.sh19
-rw-r--r--meta/recipes-devtools/git/git_2.44.3.bb (renamed from meta/recipes-devtools/git/git_2.44.1.bb)10
-rw-r--r--meta/recipes-devtools/go/go-1.22.12.inc (renamed from meta/recipes-devtools/go/go-1.22.6.inc)4
-rw-r--r--meta/recipes-devtools/go/go-binary-native_1.22.12.bb (renamed from meta/recipes-devtools/go/go-binary-native_1.22.6.bb)7
-rw-r--r--meta/recipes-devtools/go/go-common.inc1
-rw-r--r--meta/recipes-devtools/go/go-cross-canadian_1.22.12.bb (renamed from meta/recipes-devtools/go/go-cross-canadian_1.22.6.bb)0
-rw-r--r--meta/recipes-devtools/go/go-cross_1.22.12.bb (renamed from meta/recipes-devtools/go/go-cross_1.22.6.bb)0
-rw-r--r--meta/recipes-devtools/go/go-crosssdk_1.22.12.bb (renamed from meta/recipes-devtools/go/go-crosssdk_1.22.6.bb)0
-rw-r--r--meta/recipes-devtools/go/go-runtime_1.22.12.bb (renamed from meta/recipes-devtools/go/go-runtime_1.22.6.bb)0
-rw-r--r--meta/recipes-devtools/go/go/CVE-2025-22870.patch80
-rw-r--r--meta/recipes-devtools/go/go/CVE-2025-22871.patch172
-rw-r--r--meta/recipes-devtools/go/go_1.22.12.bb (renamed from meta/recipes-devtools/go/go_1.22.6.bb)0
-rw-r--r--meta/recipes-devtools/libtool/libtool_2.4.7.bb15
-rw-r--r--meta/recipes-devtools/libtool/nativesdk-libtool_2.4.7.bb1
-rw-r--r--meta/recipes-devtools/libtool/remove-buildpaths.inc13
-rw-r--r--meta/recipes-devtools/llvm/llvm_18.1.6.bb2
-rw-r--r--meta/recipes-devtools/makedevs/makedevs/makedevs.c33
-rw-r--r--meta/recipes-devtools/ninja/ninja/885b4efb41c039789b81f0dc0d67c1ed0faea17c.patch62
-rw-r--r--meta/recipes-devtools/ninja/ninja_1.11.1.bb5
-rw-r--r--meta/recipes-devtools/orc/orc_0.4.40.bb (renamed from meta/recipes-devtools/orc/orc_0.4.39.bb)2
-rw-r--r--meta/recipes-devtools/perl-cross/files/0001-Makefile-check-the-file-if-patched-or-not.patch3
-rw-r--r--meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch9
-rw-r--r--meta/recipes-devtools/perl-cross/files/determinism.patch41
-rw-r--r--meta/recipes-devtools/perl-cross/perlcross_1.6.2.bb (renamed from meta/recipes-devtools/perl-cross/perlcross_1.5.2.bb)2
-rw-r--r--meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb2
-rw-r--r--meta/recipes-devtools/perl/perl_5.38.4.bb (renamed from meta/recipes-devtools/perl/perl_5.38.2.bb)2
-rw-r--r--meta/recipes-devtools/pkgconf/pkgconf/pkg-config-native.in2
-rw-r--r--meta/recipes-devtools/pkgconfig/pkgconfig/pkg-config-native.in2
-rw-r--r--meta/recipes-devtools/pseudo/pseudo_git.bb2
-rw-r--r--meta/recipes-devtools/python/python3-jinja2_3.1.6.bb (renamed from meta/recipes-devtools/python/python3-jinja2_3.1.4.bb)5
-rw-r--r--meta/recipes-devtools/python/python3-lxml_5.0.2.bb (renamed from meta/recipes-devtools/python/python3-lxml_5.0.0.bb)3
-rw-r--r--meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb1
-rw-r--r--meta/recipes-devtools/python/python3-requests/environment.d-python3-requests.sh11
-rw-r--r--meta/recipes-devtools/python/python3-requests_2.31.0.bb24
-rw-r--r--meta/recipes-devtools/python/python3-requests_2.32.4.bb35
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-scm/0001-respect-GIT_CEILING_DIRECTORIES.patch36
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-scm_8.0.4.bb1
-rw-r--r--meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273-pre1.patch54
-rw-r--r--meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273.patch59
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_69.1.1.bb4
-rw-r--r--meta/recipes-devtools/python/python3-urllib3_2.2.2.bb (renamed from meta/recipes-devtools/python/python3-urllib3_2.2.1.bb)2
-rw-r--r--meta/recipes-devtools/python/python3-zipp/CVE-2024-5569.patch138
-rw-r--r--meta/recipes-devtools/python/python3-zipp_3.17.0.bb1
-rw-r--r--meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch6
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch3
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch7
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch6
-rw-r--r--meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch16
-rw-r--r--meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch7
-rw-r--r--meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch9
-rw-r--r--meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch26
-rw-r--r--meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch20
-rw-r--r--meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch6
-rw-r--r--meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch5
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch9
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch5
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch9
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch7
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch14
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch11
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch7
-rw-r--r--meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch6
-rw-r--r--meta/recipes-devtools/python/python3/cgi_py.patch3
-rw-r--r--meta/recipes-devtools/python/python3/crosspythonpath.patch5
-rw-r--r--meta/recipes-devtools/python/python3/deterministic_imports.patch5
-rw-r--r--meta/recipes-devtools/python/python3/makerace.patch6
-rw-r--r--meta/recipes-devtools/python/python3/python3-manifest.json2
-rw-r--r--meta/recipes-devtools/python/python3_3.12.11.bb (renamed from meta/recipes-devtools/python/python3_3.12.6.bb)3
-rw-r--r--meta/recipes-devtools/qemu/qemu-native_8.2.7.bb (renamed from meta/recipes-devtools/qemu/qemu-native_8.2.3.bb)0
-rw-r--r--meta/recipes-devtools/qemu/qemu-system-native_8.2.7.bb (renamed from meta/recipes-devtools/qemu/qemu-system-native_8.2.3.bb)0
-rw-r--r--meta/recipes-devtools/qemu/qemu.inc20
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-sched_attr-Do-not-define-for-glibc-2.41.patch47
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-target-riscv-kvm-change-KVM_REG_RISCV_FP_F-to-u32.patch75
-rw-r--r--meta/recipes-devtools/qemu/qemu/0002-target-riscv-kvm-change-KVM_REG_RISCV_FP_D-to-u64.patch73
-rw-r--r--meta/recipes-devtools/qemu/qemu/0003-target-riscv-kvm-change-timer-regs-size-to-u64.patch107
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0001.patch112
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0002.patch55
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0003.patch57
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0004.patch1187
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0005.patch239
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0001.patch167
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0002.patch175
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0003.patch126
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0004.patch164
-rw-r--r--meta/recipes-devtools/qemu/qemu_8.2.7.bb (renamed from meta/recipes-devtools/qemu/qemu_8.2.3.bb)0
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12084-0001.patch156
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12084-0002.patch43
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12085.patch32
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12086-0001.patch42
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12086-0002.patch108
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12086-0003.patch108
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12086-0004.patch41
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12087-0001.patch49
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12087-0002.patch31
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12087-0003.patch40
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12088.patch141
-rw-r--r--meta/recipes-devtools/rsync/files/CVE-2024-12747.patch192
-rw-r--r--meta/recipes-devtools/rsync/rsync_3.2.7.bb12
-rw-r--r--meta/recipes-devtools/ruby/ruby/0001-fiddle-Use-C11-_Alignof-to-define-ALIGN_OF-when-poss.patch52
-rw-r--r--meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch32
-rw-r--r--meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch25
-rw-r--r--meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch42
-rw-r--r--meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch26
-rw-r--r--meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch18
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2023-36617_1.patch56
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2023-36617_2.patch52
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2024-27281.patch97
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2024-27282.patch28
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2025-27219.patch31
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2025-27220.patch78
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0001.patch57
-rw-r--r--meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0002.patch73
-rw-r--r--meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch35
-rw-r--r--meta/recipes-devtools/ruby/ruby_3.3.5.bb (renamed from meta/recipes-devtools/ruby/ruby_3.2.2.bb)17
-rw-r--r--meta/recipes-devtools/rust/cargo_1.75.0.bb13
-rw-r--r--meta/recipes-devtools/rust/files/0001-cargo-do-not-write-host-information-into-compilation.patch51
-rw-r--r--meta/recipes-devtools/rust/files/cargo-path.patch37
-rw-r--r--meta/recipes-devtools/rust/rust-cross-canadian.inc28
-rw-r--r--meta/recipes-devtools/rust/rust-llvm/0004-llvm-Fix-CVE-2024-0151.patch1086
-rw-r--r--meta/recipes-devtools/rust/rust-llvm_1.75.0.bb3
-rw-r--r--meta/recipes-devtools/rust/rust-source.inc3
-rw-r--r--meta/recipes-devtools/rust/rust_1.75.0.bb35
-rw-r--r--meta/recipes-devtools/strace/strace_6.7.bb4
-rw-r--r--meta/recipes-devtools/subversion/subversion/CVE-2024-46901.patch161
-rw-r--r--meta/recipes-devtools/subversion/subversion_1.14.3.bb5
-rw-r--r--meta/recipes-devtools/tcltk/tcl/run-ptest2
-rw-r--r--meta/recipes-extended/acpica/acpica_20240322.bb3
-rw-r--r--meta/recipes-extended/acpica/files/CVE-2024-24856.patch31
-rw-r--r--meta/recipes-extended/cups/cups.inc5
-rw-r--r--meta/recipes-extended/cups/cups/CVE-2024-47175-1.patch73
-rw-r--r--meta/recipes-extended/cups/cups/CVE-2024-47175-2.patch151
-rw-r--r--meta/recipes-extended/cups/cups/CVE-2024-47175-3.patch119
-rw-r--r--meta/recipes-extended/cups/cups/CVE-2024-47175-4.patch249
-rw-r--r--meta/recipes-extended/cups/cups/CVE-2024-47175-5.patch40
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch6
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript_10.05.1.bb (renamed from meta/recipes-extended/ghostscript/ghostscript_10.03.1.bb)2
-rw-r--r--meta/recipes-extended/groff/files/0001-contrib-hdtbl-hdtbl.am-Fix-race-issues-for-parallel-.patch31
-rw-r--r--meta/recipes-extended/groff/files/0001-hdtbl-Fix-Savannah-66316-missing-grn-dep.patch38
-rw-r--r--meta/recipes-extended/groff/groff_1.23.0.bb2
-rw-r--r--meta/recipes-extended/iputils/iputils/CVE-2025-47268.patch143
-rw-r--r--meta/recipes-extended/iputils/iputils_20240117.bb4
-rw-r--r--meta/recipes-extended/libarchive/libarchive/configurehack.patch4
-rw-r--r--meta/recipes-extended/libarchive/libarchive_3.7.9.bb (renamed from meta/recipes-extended/libarchive/libarchive_3.7.4.bb)9
-rw-r--r--meta/recipes-extended/lsb/lsb-release_1.4.bb2
-rw-r--r--meta/recipes-extended/mc/mc_4.8.31.bb1
-rw-r--r--meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-01.patch91
-rw-r--r--meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-02.patch31
-rw-r--r--meta/recipes-extended/net-tools/net-tools_2.10.bb2
-rw-r--r--meta/recipes-extended/pam/libpam/CVE-2024-10041-1.patch98
-rw-r--r--meta/recipes-extended/pam/libpam/CVE-2024-10041-2.patch77
-rw-r--r--meta/recipes-extended/pam/libpam_1.5.3.bb4
-rw-r--r--meta/recipes-extended/screen/screen/CVE-2025-46802.patch146
-rw-r--r--meta/recipes-extended/screen/screen/CVE-2025-46804.patch131
-rw-r--r--meta/recipes-extended/screen/screen/CVE-2025-46805.patch101
-rw-r--r--meta/recipes-extended/screen/screen_4.9.1.bb3
-rw-r--r--meta/recipes-extended/timezone/timezone.inc6
-rw-r--r--meta/recipes-extended/timezone/tzcode-native.bb2
-rw-r--r--meta/recipes-extended/wget/wget/CVE-2024-10524.patch197
-rw-r--r--meta/recipes-extended/wget/wget_1.21.4.bb1
-rw-r--r--meta/recipes-extended/xz/xz/CVE-2025-31115-01.patch29
-rw-r--r--meta/recipes-extended/xz/xz/CVE-2025-31115-02.patch152
-rw-r--r--meta/recipes-extended/xz/xz/CVE-2025-31115-03.patch98
-rw-r--r--meta/recipes-extended/xz/xz/CVE-2025-31115-04.patch56
-rw-r--r--meta/recipes-extended/xz/xz_5.4.7.bb (renamed from meta/recipes-extended/xz/xz_5.4.6.bb)8
-rw-r--r--meta/recipes-gnome/gtk+/gtk4_4.14.1.bb1
-rw-r--r--meta/recipes-graphics/builder/builder_0.1.bb3
-rw-r--r--meta/recipes-graphics/freetype/freetype/CVE-2025-27363.patch33
-rw-r--r--meta/recipes-graphics/freetype/freetype_2.13.2.bb4
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2_2.30.1.bb1
-rw-r--r--meta/recipes-graphics/virglrenderer/virglrenderer/0001-vrend-Fix-int-conversion-fatal-build-error-with-GCC-.patch41
-rw-r--r--meta/recipes-graphics/virglrenderer/virglrenderer_1.0.1.bb1
-rw-r--r--meta/recipes-graphics/wayland/weston/0001-vnc-Allow-neatvnc-in-version-0.8.0.patch27
-rw-r--r--meta/recipes-graphics/wayland/weston_13.0.1.bb1
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuall/noblank.conf7
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf42
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf42
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf42
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86-64/xorg.conf37
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86/xorg.conf37
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb6
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg.inc4
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.16.bb (renamed from meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.13.bb)2
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2024-9632.patch59
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26594-1.patch54
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26594-2.patch51
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26595.patch65
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26596.patch49
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26597.patch46
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26598.patch120
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26599-1.patch66
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26599-2.patch129
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26600.patch68
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-1.patch71
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-2.patch85
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-3.patch52
-rw-r--r--meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-4.patch132
-rw-r--r--meta/recipes-graphics/xwayland/xwayland_23.2.5.bb17
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-linux_1.14.bb (renamed from meta/recipes-kernel/cryptodev/cryptodev-linux_1.13.bb)0
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-module_1.14.bb (renamed from meta/recipes-kernel/cryptodev/cryptodev-module_1.13.bb)3
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-tests_1.14.bb (renamed from meta/recipes-kernel/cryptodev/cryptodev-tests_1.13.bb)4
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev.inc4
-rw-r--r--meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch25
-rw-r--r--meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch25
-rw-r--r--meta/recipes-kernel/linux-firmware/linux-firmware_20240909.bb (renamed from meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb)8
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb6
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb6
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_6.6.bb28
-rw-r--r--meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb12
-rw-r--r--meta/recipes-kernel/lttng/babeltrace_1.5.11.bb2
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/0001-Fix-sched_stat_runtime-changed-in-Linux-6.6.66.patch51
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb1
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust/0001-Fix-Build-examples-when-rpath-is-stripped-from-in-bu.patch161
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch33
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb2
-rw-r--r--meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.10.07.bb (renamed from meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.07.04.bb)2
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-49501.patch30
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-49528.patch58
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-50007.patch78
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-28661.patch37
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-32230.patch36
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35365.patch62
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35367.patch47
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35368.patch41
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35369.patch37
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36618.patch36
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-0518.patch34
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-22919.patch39
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-22921.patch34
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-25473.patch36
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch40
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.2.bb (renamed from meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.1.bb)22
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-vorbisdec-Set-at-most-64-channels-to-NONE-position.patch35
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-opusdec-Set-at-most-64-channels-to-NONE-position.patch41
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0006-vorbis_parse-check-writes-to-GstOggStream.vorbis_mod.patch80
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0007-oggstream-review-and-fix-per-format-min_packet_size.patch168
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0008-ssaparse-Search-for-closing-brace-after-opening-brac.patch38
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-ssaparse-Don-t-use-strstr-on-strings-that-are-potent.patch99
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-id3v2-Don-t-try-parsing-extended-header-if-not-enoug.patch64
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-discoverer-Don-t-print-channel-layout-for-more-than-.patch38
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0012-subparse-Check-for-NULL-return-of-strchr-when-parsin.patch39
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.12.bb9
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qtdemux-Skip-zero-sized-boxes-instead-of-stopping-to.patch124
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0002-qtdemux-Fix-integer-overflow-when-allocating-the-sam.patch63
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-qtdemux-Fix-debug-output-during-trun-parsing.patch72
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0004-qtdemux-Don-t-iterate-over-all-trun-entries-if-none-.patch35
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0005-qtdemux-Check-sizes-of-stsc-stco-stts-before-trying-.patch63
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0006-qtdemux-Make-sure-only-an-even-number-of-bytes-is-pr.patch44
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0007-qtdemux-Make-sure-enough-data-is-available-before-re.patch120
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0008-qtdemux-Fix-length-checks-and-offsets-in-stsd-entry-.patch450
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0009-qtdemux-Fix-error-handling-when-parsing-cenc-sample-.patch56
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0010-qtdemux-Make-sure-there-are-enough-offsets-to-read-w.patch49
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0011-qtdemux-Actually-handle-errors-returns-from-various-.patch97
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0012-qtdemux-Check-for-invalid-atom-length-when-extractin.patch36
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0013-qtdemux-Add-size-check-for-parsing-SMI-SEQH-atom.patch37
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0014-gdkpixbufdec-Check-if-initializing-the-video-info-ac.patch53
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0015-matroskademux-Only-unmap-GstMapInfo-in-WavPack-heade.patch60
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0016-matroskademux-Fix-off-by-one-when-parsing-multi-chan.patch35
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0017-matroskademux-Check-for-big-enough-WavPack-codec-pri.patch43
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0018-matroskademux-Don-t-take-data-out-of-an-empty-adapte.patch51
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0019-matroskademux-Skip-over-laces-directly-when-postproc.patch52
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0020-matroskademux-Skip-over-zero-sized-Xiph-stream-heade.patch43
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0021-matroskademux-Put-a-copy-of-the-codec-data-into-the-.patch44
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0022-jpegdec-Directly-error-out-on-negotiation-failures.patch99
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0023-qtdemux-Avoid-integer-overflow-when-parsing-Theora-e.patch44
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0024-avisubtitle-Fix-size-checks-and-avoid-overflows-when.patch46
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0025-wavparse-Check-for-short-reads-when-parsing-headers-.patch174
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0026-wavparse-Make-sure-enough-data-for-the-tag-list-tag-.patch41
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0027-wavparse-Fix-parsing-of-acid-chunk.patch65
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0028-wavparse-Check-that-at-least-4-bytes-are-available-b.patch37
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0029-wavparse-Check-that-at-least-32-bytes-are-available-.patch40
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0030-wavparse-Fix-clipping-of-size-to-the-file-size.patch47
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0031-wavparse-Check-size-before-reading-ds64-chunk.patch41
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.12.bb34
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/CVE-2024-44331.patch44
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.12.bb4
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-allocator-Avoid-integer-overflow-when-allocating-sys.patch56
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.12.bb16
-rw-r--r--meta/recipes-multimedia/liba52/liba52_0.7.4.bb2
-rw-r--r--meta/recipes-multimedia/libpng/files/run-ptest7
-rw-r--r--meta/recipes-multimedia/libpng/libpng_1.6.42.bb42
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2024-50612.patch412
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1_1.2.2.bb1
-rw-r--r--meta/recipes-multimedia/mpg123/mpg123_1.32.10.bb (renamed from meta/recipes-multimedia/mpg123/mpg123_1.32.6.bb)2
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio.inc2
-rw-r--r--meta/recipes-sato/puzzles/puzzles_git.bb3
-rw-r--r--meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc3
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-CMake-Add-a-variable-to-control-macro-__PAS_ALWAYS_I.patch6
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch2
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Remove-ARM-specific-declarations-in-FELighting.h-unn.patch44
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0002-More-dynamicDowncast-adoption-in-platform-code.patch65
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch2
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/no-musttail-arm.patch6
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/reproducibility.patch2
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/t6-not-declared.patch12
-rw-r--r--meta/recipes-sato/webkit/webkitgtk_2.44.3.bb (renamed from meta/recipes-sato/webkit/webkitgtk_2.44.1.bb)4
-rw-r--r--meta/recipes-support/boost/boost-1.84.0.inc2
-rw-r--r--meta/recipes-support/curl/curl/CVE-2024-11053-0001.patch353
-rw-r--r--meta/recipes-support/curl/curl/CVE-2024-11053-0002.patch728
-rw-r--r--meta/recipes-support/curl/curl/CVE-2024-11053-0003.patch130
-rw-r--r--meta/recipes-support/curl/curl/CVE-2024-9681.patch85
-rw-r--r--meta/recipes-support/curl/curl/CVE-2025-0167.patch178
-rw-r--r--meta/recipes-support/curl/curl/environment.d-curl.sh19
-rw-r--r--meta/recipes-support/curl/curl_8.7.1.bb16
-rw-r--r--meta/recipes-support/enchant/enchant2_2.6.7.bb2
-rw-r--r--meta/recipes-support/gnupg/gnupg_2.4.5.bb (renamed from meta/recipes-support/gnupg/gnupg_2.4.4.bb)3
-rw-r--r--meta/recipes-support/gnutls/gnutls/CVE-2024-12243.patch1149
-rw-r--r--meta/recipes-support/gnutls/gnutls_3.8.4.bb1
-rw-r--r--meta/recipes-support/gnutls/libtasn1_4.20.0.bb (renamed from meta/recipes-support/gnutls/libtasn1_4.19.0.bb)7
-rw-r--r--meta/recipes-support/icu/icu/fix-install-manx.patch4
-rw-r--r--meta/recipes-support/icu/icu_74-2.bb35
-rw-r--r--meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb4
-rw-r--r--meta/recipes-support/libcap/files/CVE-2025-1390.patch36
-rw-r--r--meta/recipes-support/libcap/libcap_2.69.bb1
-rw-r--r--meta/recipes-support/libgcrypt/files/0001-Fix-building-error-with-O2-in-sysroot-path.patch64
-rw-r--r--meta/recipes-support/libgcrypt/files/0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch39
-rw-r--r--meta/recipes-support/libgcrypt/libgcrypt_1.10.3.bb2
-rw-r--r--meta/recipes-support/libpcre/libpcre2_10.43.bb2
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52530.patch149
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-1.patch131
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-2.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-1.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-2.patch42
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-3.patch46
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-2784.patch56
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32050.patch29
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32052.patch32
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32053.patch39
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-1.patch61
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-2.patch83
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32907.patch39
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32909.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch106
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch26
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-1.patch72
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-2.patch44
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-1.patch33
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-2.patch30
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32914.patch137
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4476.patch38
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46420.patch60
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46421.patch47
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4948.patch38
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4969.patch76
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb30
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52530.patch150
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-1.patch116
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-2.patch40
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-3.patch136
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52532-0001.patch42
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52532-0002.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-2784.patch137
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32050.patch29
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-1.patch29
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-2.patch57
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32052.patch31
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32053.patch40
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32906-1.patch61
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32906-2.patch83
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-1.patch200
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-2.patch68
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-1.patch89
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-2.patch53
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32909.patch36
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-1.patch98
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-2.patch149
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-3.patch27
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32911_CVE-2025-32913-1.patch72
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32911_CVE-2025-32913-2.patch44
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32912-1.patch41
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32912-2.patch30
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32914.patch111
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4476.patch38
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46420.patch60
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46421.patch139
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4948.patch97
-rw-r--r--meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4969.patch76
-rw-r--r--meta/recipes-support/libsoup/libsoup_3.4.4.bb35
-rw-r--r--meta/recipes-support/libxslt/libxslt_1.1.43.bb (renamed from meta/recipes-support/libxslt/libxslt_1.1.39.bb)4
-rw-r--r--meta/recipes-support/ptest-runner/ptest-runner_2.4.5.bb (renamed from meta/recipes-support/ptest-runner/ptest-runner_2.4.4.bb)2
-rw-r--r--meta/recipes-support/shared-mime-info/shared-mime-info_2.4.bb2
-rw-r--r--meta/recipes-support/sqlite/sqlite3/CVE-2025-29088.patch179
-rw-r--r--meta/recipes-support/sqlite/sqlite3/CVE-2025-3277.patch29
-rw-r--r--meta/recipes-support/sqlite/sqlite3_3.45.1.bb8
-rw-r--r--meta/recipes-support/sqlite/sqlite3_3.45.3.bb11
-rw-r--r--meta/recipes-support/vim/vim.inc4
-rwxr-xr-xscripts/install-buildtools4
-rwxr-xr-xscripts/lib/devtool/ide_sdk.py63
-rw-r--r--scripts/lib/devtool/standard.py3
-rwxr-xr-xscripts/lib/resulttool/manualexecution.py2
-rw-r--r--scripts/lib/resulttool/report.py2
-rw-r--r--scripts/lib/resulttool/resultutils.py76
-rw-r--r--scripts/lib/resulttool/store.py26
-rw-r--r--scripts/lib/wic/plugins/source/bootimg-efi.py2
-rwxr-xr-xscripts/runqemu4
798 files changed, 45062 insertions, 7123 deletions
diff --git a/bitbake/bin/bitbake-diffsigs b/bitbake/bin/bitbake-diffsigs
index 8202c78623..9d6cb8c944 100755
--- a/bitbake/bin/bitbake-diffsigs
+++ b/bitbake/bin/bitbake-diffsigs
@@ -72,16 +72,17 @@ def find_siginfo_task(bbhandler, pn, taskname, sig1=None, sig2=None):
72 elif sig2 not in sigfiles: 72 elif sig2 not in sigfiles:
73 logger.error('No sigdata files found matching %s %s with signature %s' % (pn, taskname, sig2)) 73 logger.error('No sigdata files found matching %s %s with signature %s' % (pn, taskname, sig2))
74 sys.exit(1) 74 sys.exit(1)
75
76 latestfiles = [sigfiles[sig1]['path'], sigfiles[sig2]['path']]
75 else: 77 else:
76 sigfiles = find_siginfo(bbhandler, pn, taskname) 78 sigfiles = find_siginfo(bbhandler, pn, taskname)
77 latestsigs = sorted(sigfiles.keys(), key=lambda h: sigfiles[h]['time'])[-2:] 79 latestsigs = sorted(sigfiles.keys(), key=lambda h: sigfiles[h]['time'])[-2:]
78 if not latestsigs: 80 if not latestsigs:
79 logger.error('No sigdata files found matching %s %s' % (pn, taskname)) 81 logger.error('No sigdata files found matching %s %s' % (pn, taskname))
80 sys.exit(1) 82 sys.exit(1)
81 sig1 = latestsigs[0] 83 latestfiles = [sigfiles[latestsigs[0]]['path']]
82 sig2 = latestsigs[1] 84 if len(latestsigs) > 1:
83 85 latestfiles.append(sigfiles[latestsigs[1]]['path'])
84 latestfiles = [sigfiles[sig1]['path'], sigfiles[sig2]['path']]
85 86
86 return latestfiles 87 return latestfiles
87 88
diff --git a/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst b/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst
index 899e584f91..f23fb7f2a7 100644
--- a/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst
+++ b/bitbake/doc/bitbake-user-manual/bitbake-user-manual-ref-variables.rst
@@ -424,7 +424,7 @@ overview of their function and contents.
424 424
425 Example usage:: 425 Example usage::
426 426
427 BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687" 427 BB_HASHSERVE_UPSTREAM = "hashserv.yoctoproject.org:8686"
428 428
429 :term:`BB_INVALIDCONF` 429 :term:`BB_INVALIDCONF`
430 Used in combination with the ``ConfigParsed`` event to trigger 430 Used in combination with the ``ConfigParsed`` event to trigger
diff --git a/bitbake/lib/bb/asyncrpc/client.py b/bitbake/lib/bb/asyncrpc/client.py
index a350b4fb12..6fa2839f48 100644
--- a/bitbake/lib/bb/asyncrpc/client.py
+++ b/bitbake/lib/bb/asyncrpc/client.py
@@ -87,7 +87,11 @@ class AsyncClient(object):
87 import websockets 87 import websockets
88 88
89 async def connect_sock(): 89 async def connect_sock():
90 websocket = await websockets.connect(uri, ping_interval=None) 90 websocket = await websockets.connect(
91 uri,
92 ping_interval=None,
93 open_timeout=self.timeout,
94 )
91 return WebsocketConnection(websocket, self.timeout) 95 return WebsocketConnection(websocket, self.timeout)
92 96
93 self._connect_sock = connect_sock 97 self._connect_sock = connect_sock
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py
index 1fcb9bf14c..5e166fe45c 100644
--- a/bitbake/lib/bb/command.py
+++ b/bitbake/lib/bb/command.py
@@ -420,15 +420,30 @@ class CommandsSync:
420 return command.cooker.recipecaches[mc].pkg_dp 420 return command.cooker.recipecaches[mc].pkg_dp
421 getDefaultPreference.readonly = True 421 getDefaultPreference.readonly = True
422 422
423
423 def getSkippedRecipes(self, command, params): 424 def getSkippedRecipes(self, command, params):
425 """
426 Get the map of skipped recipes for the specified multiconfig/mc name (`params[0]`).
427
428 Invoked by `bb.tinfoil.Tinfoil.get_skipped_recipes`
429
430 :param command: Internally used parameter.
431 :param params: Parameter array. params[0] is multiconfig/mc name. If not given, then default mc '' is assumed.
432 :return: Dict whose keys are virtualfns and values are `bb.cooker.SkippedPackage`
433 """
434 try:
435 mc = params[0]
436 except IndexError:
437 mc = ''
438
424 # Return list sorted by reverse priority order 439 # Return list sorted by reverse priority order
425 import bb.cache 440 import bb.cache
426 def sortkey(x): 441 def sortkey(x):
427 vfn, _ = x 442 vfn, _ = x
428 realfn, _, mc = bb.cache.virtualfn2realfn(vfn) 443 realfn, _, item_mc = bb.cache.virtualfn2realfn(vfn)
429 return (-command.cooker.collections[mc].calc_bbfile_priority(realfn)[0], vfn) 444 return -command.cooker.collections[item_mc].calc_bbfile_priority(realfn)[0], vfn
430 445
431 skipdict = OrderedDict(sorted(command.cooker.skiplist.items(), key=sortkey)) 446 skipdict = OrderedDict(sorted(command.cooker.skiplist_by_mc[mc].items(), key=sortkey))
432 return list(skipdict.items()) 447 return list(skipdict.items())
433 getSkippedRecipes.readonly = True 448 getSkippedRecipes.readonly = True
434 449
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 6318ef4a8f..6fce19b464 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -17,7 +17,7 @@ import threading
17from io import StringIO, UnsupportedOperation 17from io import StringIO, UnsupportedOperation
18from contextlib import closing 18from contextlib import closing
19from collections import defaultdict, namedtuple 19from collections import defaultdict, namedtuple
20import bb, bb.exceptions, bb.command 20import bb, bb.command
21from bb import utils, data, parse, event, cache, providers, taskdata, runqueue, build 21from bb import utils, data, parse, event, cache, providers, taskdata, runqueue, build
22import queue 22import queue
23import signal 23import signal
@@ -134,7 +134,8 @@ class BBCooker:
134 self.baseconfig_valid = False 134 self.baseconfig_valid = False
135 self.parsecache_valid = False 135 self.parsecache_valid = False
136 self.eventlog = None 136 self.eventlog = None
137 self.skiplist = {} 137 # The skiplists, one per multiconfig
138 self.skiplist_by_mc = defaultdict(dict)
138 self.featureset = CookerFeatures() 139 self.featureset = CookerFeatures()
139 if featureSet: 140 if featureSet:
140 for f in featureSet: 141 for f in featureSet:
@@ -612,8 +613,8 @@ class BBCooker:
612 localdata = {} 613 localdata = {}
613 614
614 for mc in self.multiconfigs: 615 for mc in self.multiconfigs:
615 taskdata[mc] = bb.taskdata.TaskData(halt, skiplist=self.skiplist, allowincomplete=allowincomplete) 616 taskdata[mc] = bb.taskdata.TaskData(halt, skiplist=self.skiplist_by_mc[mc], allowincomplete=allowincomplete)
616 localdata[mc] = data.createCopy(self.databuilder.mcdata[mc]) 617 localdata[mc] = bb.data.createCopy(self.databuilder.mcdata[mc])
617 bb.data.expandKeys(localdata[mc]) 618 bb.data.expandKeys(localdata[mc])
618 619
619 current = 0 620 current = 0
@@ -933,7 +934,7 @@ class BBCooker:
933 for mc in self.multiconfigs: 934 for mc in self.multiconfigs:
934 # First get list of recipes, including skipped 935 # First get list of recipes, including skipped
935 recipefns = list(self.recipecaches[mc].pkg_fn.keys()) 936 recipefns = list(self.recipecaches[mc].pkg_fn.keys())
936 recipefns.extend(self.skiplist.keys()) 937 recipefns.extend(self.skiplist_by_mc[mc].keys())
937 938
938 # Work out list of bbappends that have been applied 939 # Work out list of bbappends that have been applied
939 applied_appends = [] 940 applied_appends = []
@@ -2097,7 +2098,6 @@ class Parser(multiprocessing.Process):
2097 except Exception as exc: 2098 except Exception as exc:
2098 tb = sys.exc_info()[2] 2099 tb = sys.exc_info()[2]
2099 exc.recipe = filename 2100 exc.recipe = filename
2100 exc.traceback = list(bb.exceptions.extract_traceback(tb, context=3))
2101 return True, None, exc 2101 return True, None, exc
2102 # Need to turn BaseExceptions into Exceptions here so we gracefully shutdown 2102 # Need to turn BaseExceptions into Exceptions here so we gracefully shutdown
2103 # and for example a worker thread doesn't just exit on its own in response to 2103 # and for example a worker thread doesn't just exit on its own in response to
@@ -2298,8 +2298,12 @@ class CookerParser(object):
2298 return False 2298 return False
2299 except ParsingFailure as exc: 2299 except ParsingFailure as exc:
2300 self.error += 1 2300 self.error += 1
2301 logger.error('Unable to parse %s: %s' % 2301
2302 (exc.recipe, bb.exceptions.to_string(exc.realexception))) 2302 exc_desc = str(exc)
2303 if isinstance(exc, SystemExit) and not isinstance(exc.code, str):
2304 exc_desc = 'Exited with "%d"' % exc.code
2305
2306 logger.error('Unable to parse %s: %s' % (exc.recipe, exc_desc))
2303 self.shutdown(clean=False) 2307 self.shutdown(clean=False)
2304 return False 2308 return False
2305 except bb.parse.ParseError as exc: 2309 except bb.parse.ParseError as exc:
@@ -2308,20 +2312,33 @@ class CookerParser(object):
2308 self.shutdown(clean=False, eventmsg=str(exc)) 2312 self.shutdown(clean=False, eventmsg=str(exc))
2309 return False 2313 return False
2310 except bb.data_smart.ExpansionError as exc: 2314 except bb.data_smart.ExpansionError as exc:
2315 def skip_frames(f, fn_prefix):
2316 while f and f.tb_frame.f_code.co_filename.startswith(fn_prefix):
2317 f = f.tb_next
2318 return f
2319
2311 self.error += 1 2320 self.error += 1
2312 bbdir = os.path.dirname(__file__) + os.sep 2321 bbdir = os.path.dirname(__file__) + os.sep
2313 etype, value, _ = sys.exc_info() 2322 etype, value, tb = sys.exc_info()
2314 tb = list(itertools.dropwhile(lambda e: e.filename.startswith(bbdir), exc.traceback)) 2323
2324 # Remove any frames where the code comes from bitbake. This
2325 # prevents deep (and pretty useless) backtraces for expansion error
2326 tb = skip_frames(tb, bbdir)
2327 cur = tb
2328 while cur:
2329 cur.tb_next = skip_frames(cur.tb_next, bbdir)
2330 cur = cur.tb_next
2331
2315 logger.error('ExpansionError during parsing %s', value.recipe, 2332 logger.error('ExpansionError during parsing %s', value.recipe,
2316 exc_info=(etype, value, tb)) 2333 exc_info=(etype, value, tb))
2317 self.shutdown(clean=False) 2334 self.shutdown(clean=False)
2318 return False 2335 return False
2319 except Exception as exc: 2336 except Exception as exc:
2320 self.error += 1 2337 self.error += 1
2321 etype, value, tb = sys.exc_info() 2338 _, value, _ = sys.exc_info()
2322 if hasattr(value, "recipe"): 2339 if hasattr(value, "recipe"):
2323 logger.error('Unable to parse %s' % value.recipe, 2340 logger.error('Unable to parse %s' % value.recipe,
2324 exc_info=(etype, value, exc.traceback)) 2341 exc_info=sys.exc_info())
2325 else: 2342 else:
2326 # Most likely, an exception occurred during raising an exception 2343 # Most likely, an exception occurred during raising an exception
2327 import traceback 2344 import traceback
@@ -2342,7 +2359,7 @@ class CookerParser(object):
2342 for virtualfn, info_array in result: 2359 for virtualfn, info_array in result:
2343 if info_array[0].skipped: 2360 if info_array[0].skipped:
2344 self.skipped += 1 2361 self.skipped += 1
2345 self.cooker.skiplist[virtualfn] = SkippedPackage(info_array[0]) 2362 self.cooker.skiplist_by_mc[mc][virtualfn] = SkippedPackage(info_array[0])
2346 self.bb_caches[mc].add_info(virtualfn, info_array, self.cooker.recipecaches[mc], 2363 self.bb_caches[mc].add_info(virtualfn, info_array, self.cooker.recipecaches[mc],
2347 parsed=parsed, watcher = self.cooker.add_filewatch) 2364 parsed=parsed, watcher = self.cooker.add_filewatch)
2348 return True 2365 return True
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index c6049d578e..7b67127c06 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -31,7 +31,7 @@ logger = logging.getLogger("BitBake.Data")
31 31
32__setvar_keyword__ = [":append", ":prepend", ":remove"] 32__setvar_keyword__ = [":append", ":prepend", ":remove"]
33__setvar_regexp__ = re.compile(r'(?P<base>.*?)(?P<keyword>:append|:prepend|:remove)(:(?P<add>[^A-Z]*))?$') 33__setvar_regexp__ = re.compile(r'(?P<base>.*?)(?P<keyword>:append|:prepend|:remove)(:(?P<add>[^A-Z]*))?$')
34__expand_var_regexp__ = re.compile(r"\${[a-zA-Z0-9\-_+./~:]+?}") 34__expand_var_regexp__ = re.compile(r"\${[a-zA-Z0-9\-_+./~:]+}")
35__expand_python_regexp__ = re.compile(r"\${@(?:{.*?}|.)+?}") 35__expand_python_regexp__ = re.compile(r"\${@(?:{.*?}|.)+?}")
36__whitespace_split__ = re.compile(r'(\s)') 36__whitespace_split__ = re.compile(r'(\s)')
37__override_regexp__ = re.compile(r'[a-z0-9]+') 37__override_regexp__ = re.compile(r'[a-z0-9]+')
@@ -580,12 +580,9 @@ class DataSmart(MutableMapping):
580 else: 580 else:
581 loginfo['op'] = keyword 581 loginfo['op'] = keyword
582 self.varhistory.record(**loginfo) 582 self.varhistory.record(**loginfo)
583 # todo make sure keyword is not __doc__ or __module__
584 # pay the cookie monster
585 583
586 # more cookies for the cookie monster 584 # more cookies for the cookie monster
587 if ':' in var: 585 self._setvar_update_overrides(base, **loginfo)
588 self._setvar_update_overrides(base, **loginfo)
589 586
590 if base in self.overridevars: 587 if base in self.overridevars:
591 self._setvar_update_overridevars(var, value) 588 self._setvar_update_overridevars(var, value)
@@ -638,6 +635,7 @@ class DataSmart(MutableMapping):
638 nextnew.update(vardata.contains.keys()) 635 nextnew.update(vardata.contains.keys())
639 new = nextnew 636 new = nextnew
640 self.overrides = None 637 self.overrides = None
638 self.expand_cache = {}
641 639
642 def _setvar_update_overrides(self, var, **loginfo): 640 def _setvar_update_overrides(self, var, **loginfo):
643 # aka pay the cookie monster 641 # aka pay the cookie monster
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py
index 4761c86880..a12adbc937 100644
--- a/bitbake/lib/bb/event.py
+++ b/bitbake/lib/bb/event.py
@@ -19,7 +19,6 @@ import sys
19import threading 19import threading
20import traceback 20import traceback
21 21
22import bb.exceptions
23import bb.utils 22import bb.utils
24 23
25# This is the pid for which we should generate the event. This is set when 24# This is the pid for which we should generate the event. This is set when
@@ -195,7 +194,12 @@ def fire_ui_handlers(event, d):
195 ui_queue.append(event) 194 ui_queue.append(event)
196 return 195 return
197 196
198 with bb.utils.lock_timeout(_thread_lock): 197 with bb.utils.lock_timeout_nocheck(_thread_lock) as lock:
198 if not lock:
199 # If we can't get the lock, we may be recursively called, queue and return
200 ui_queue.append(event)
201 return
202
199 errors = [] 203 errors = []
200 for h in _ui_handlers: 204 for h in _ui_handlers:
201 #print "Sending event %s" % event 205 #print "Sending event %s" % event
@@ -214,6 +218,9 @@ def fire_ui_handlers(event, d):
214 for h in errors: 218 for h in errors:
215 del _ui_handlers[h] 219 del _ui_handlers[h]
216 220
221 while ui_queue:
222 fire_ui_handlers(ui_queue.pop(), d)
223
217def fire(event, d): 224def fire(event, d):
218 """Fire off an Event""" 225 """Fire off an Event"""
219 226
@@ -759,13 +766,7 @@ class LogHandler(logging.Handler):
759 766
760 def emit(self, record): 767 def emit(self, record):
761 if record.exc_info: 768 if record.exc_info:
762 etype, value, tb = record.exc_info 769 record.bb_exc_formatted = traceback.format_exception(*record.exc_info)
763 if hasattr(tb, 'tb_next'):
764 tb = list(bb.exceptions.extract_traceback(tb, context=3))
765 # Need to turn the value into something the logging system can pickle
766 record.bb_exc_info = (etype, value, tb)
767 record.bb_exc_formatted = bb.exceptions.format_exception(etype, value, tb, limit=5)
768 value = str(value)
769 record.exc_info = None 770 record.exc_info = None
770 fire(record, None) 771 fire(record, None)
771 772
diff --git a/bitbake/lib/bb/exceptions.py b/bitbake/lib/bb/exceptions.py
deleted file mode 100644
index 801db9c82f..0000000000
--- a/bitbake/lib/bb/exceptions.py
+++ /dev/null
@@ -1,96 +0,0 @@
1#
2# Copyright BitBake Contributors
3#
4# SPDX-License-Identifier: GPL-2.0-only
5#
6
7import inspect
8import traceback
9import bb.namedtuple_with_abc
10from collections import namedtuple
11
12
13class TracebackEntry(namedtuple.abc):
14 """Pickleable representation of a traceback entry"""
15 _fields = 'filename lineno function args code_context index'
16 _header = ' File "{0.filename}", line {0.lineno}, in {0.function}{0.args}'
17
18 def format(self, formatter=None):
19 if not self.code_context:
20 return self._header.format(self) + '\n'
21
22 formatted = [self._header.format(self) + ':\n']
23
24 for lineindex, line in enumerate(self.code_context):
25 if formatter:
26 line = formatter(line)
27
28 if lineindex == self.index:
29 formatted.append(' >%s' % line)
30 else:
31 formatted.append(' %s' % line)
32 return formatted
33
34 def __str__(self):
35 return ''.join(self.format())
36
37def _get_frame_args(frame):
38 """Get the formatted arguments and class (if available) for a frame"""
39 arginfo = inspect.getargvalues(frame)
40
41 try:
42 if not arginfo.args:
43 return '', None
44 # There have been reports from the field of python 2.6 which doesn't
45 # return a namedtuple here but simply a tuple so fallback gracefully if
46 # args isn't present.
47 except AttributeError:
48 return '', None
49
50 firstarg = arginfo.args[0]
51 if firstarg == 'self':
52 self = arginfo.locals['self']
53 cls = self.__class__.__name__
54
55 arginfo.args.pop(0)
56 del arginfo.locals['self']
57 else:
58 cls = None
59
60 formatted = inspect.formatargvalues(*arginfo)
61 return formatted, cls
62
63def extract_traceback(tb, context=1):
64 frames = inspect.getinnerframes(tb, context)
65 for frame, filename, lineno, function, code_context, index in frames:
66 formatted_args, cls = _get_frame_args(frame)
67 if cls:
68 function = '%s.%s' % (cls, function)
69 yield TracebackEntry(filename, lineno, function, formatted_args,
70 code_context, index)
71
72def format_extracted(extracted, formatter=None, limit=None):
73 if limit:
74 extracted = extracted[-limit:]
75
76 formatted = []
77 for tracebackinfo in extracted:
78 formatted.extend(tracebackinfo.format(formatter))
79 return formatted
80
81
82def format_exception(etype, value, tb, context=1, limit=None, formatter=None):
83 formatted = ['Traceback (most recent call last):\n']
84
85 if hasattr(tb, 'tb_next'):
86 tb = extract_traceback(tb, context)
87
88 formatted.extend(format_extracted(tb, formatter, limit))
89 formatted.extend(traceback.format_exception_only(etype, value))
90 return formatted
91
92def to_string(exc):
93 if isinstance(exc, SystemExit):
94 if not isinstance(exc.code, str):
95 return 'Exited with "%d"' % exc.code
96 return str(exc)
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
index 5bf2c4b8cf..1a6ff25d4d 100644
--- a/bitbake/lib/bb/fetch2/__init__.py
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -237,7 +237,7 @@ class URI(object):
237 # to RFC compliant URL format. E.g.: 237 # to RFC compliant URL format. E.g.:
238 # file://foo.diff -> file:foo.diff 238 # file://foo.diff -> file:foo.diff
239 if urlp.scheme in self._netloc_forbidden: 239 if urlp.scheme in self._netloc_forbidden:
240 uri = re.sub("(?<=:)//(?!/)", "", uri, 1) 240 uri = re.sub(r"(?<=:)//(?!/)", "", uri, count=1)
241 reparse = 1 241 reparse = 1
242 242
243 if reparse: 243 if reparse:
@@ -499,30 +499,30 @@ def fetcher_init(d):
499 Calls before this must not hit the cache. 499 Calls before this must not hit the cache.
500 """ 500 """
501 501
502 revs = bb.persist_data.persist('BB_URI_HEADREVS', d) 502 with bb.persist_data.persist('BB_URI_HEADREVS', d) as revs:
503 try: 503 try:
504 # fetcher_init is called multiple times, so make sure we only save the 504 # fetcher_init is called multiple times, so make sure we only save the
505 # revs the first time it is called. 505 # revs the first time it is called.
506 if not bb.fetch2.saved_headrevs: 506 if not bb.fetch2.saved_headrevs:
507 bb.fetch2.saved_headrevs = dict(revs) 507 bb.fetch2.saved_headrevs = dict(revs)
508 except: 508 except:
509 pass 509 pass
510
511 # When to drop SCM head revisions controlled by user policy
512 srcrev_policy = d.getVar('BB_SRCREV_POLICY') or "clear"
513 if srcrev_policy == "cache":
514 logger.debug("Keeping SRCREV cache due to cache policy of: %s", srcrev_policy)
515 elif srcrev_policy == "clear":
516 logger.debug("Clearing SRCREV cache due to cache policy of: %s", srcrev_policy)
517 revs.clear()
518 else:
519 raise FetchError("Invalid SRCREV cache policy of: %s" % srcrev_policy)
520 510
521 _checksum_cache.init_cache(d.getVar("BB_CACHEDIR")) 511 # When to drop SCM head revisions controlled by user policy
512 srcrev_policy = d.getVar('BB_SRCREV_POLICY') or "clear"
513 if srcrev_policy == "cache":
514 logger.debug("Keeping SRCREV cache due to cache policy of: %s", srcrev_policy)
515 elif srcrev_policy == "clear":
516 logger.debug("Clearing SRCREV cache due to cache policy of: %s", srcrev_policy)
517 revs.clear()
518 else:
519 raise FetchError("Invalid SRCREV cache policy of: %s" % srcrev_policy)
520
521 _checksum_cache.init_cache(d.getVar("BB_CACHEDIR"))
522 522
523 for m in methods: 523 for m in methods:
524 if hasattr(m, "init"): 524 if hasattr(m, "init"):
525 m.init(d) 525 m.init(d)
526 526
527def fetcher_parse_save(): 527def fetcher_parse_save():
528 _checksum_cache.save_extras() 528 _checksum_cache.save_extras()
@@ -536,8 +536,8 @@ def fetcher_compare_revisions(d):
536 when bitbake was started and return true if they have changed. 536 when bitbake was started and return true if they have changed.
537 """ 537 """
538 538
539 headrevs = dict(bb.persist_data.persist('BB_URI_HEADREVS', d)) 539 with dict(bb.persist_data.persist('BB_URI_HEADREVS', d)) as headrevs:
540 return headrevs != bb.fetch2.saved_headrevs 540 return headrevs != bb.fetch2.saved_headrevs
541 541
542def mirror_from_string(data): 542def mirror_from_string(data):
543 mirrors = (data or "").replace('\\n',' ').split() 543 mirrors = (data or "").replace('\\n',' ').split()
@@ -1662,13 +1662,13 @@ class FetchMethod(object):
1662 if not hasattr(self, "_latest_revision"): 1662 if not hasattr(self, "_latest_revision"):
1663 raise ParameterError("The fetcher for this URL does not support _latest_revision", ud.url) 1663 raise ParameterError("The fetcher for this URL does not support _latest_revision", ud.url)
1664 1664
1665 revs = bb.persist_data.persist('BB_URI_HEADREVS', d) 1665 with bb.persist_data.persist('BB_URI_HEADREVS', d) as revs:
1666 key = self.generate_revision_key(ud, d, name) 1666 key = self.generate_revision_key(ud, d, name)
1667 try: 1667 try:
1668 return revs[key] 1668 return revs[key]
1669 except KeyError: 1669 except KeyError:
1670 revs[key] = rev = self._latest_revision(ud, d, name) 1670 revs[key] = rev = self._latest_revision(ud, d, name)
1671 return rev 1671 return rev
1672 1672
1673 def sortable_revision(self, ud, d, name): 1673 def sortable_revision(self, ud, d, name):
1674 latest_rev = self._build_revision(ud, d, name) 1674 latest_rev = self._build_revision(ud, d, name)
diff --git a/bitbake/lib/bb/fetch2/gcp.py b/bitbake/lib/bb/fetch2/gcp.py
index eb3e0c6a6b..2ee9ed2194 100644
--- a/bitbake/lib/bb/fetch2/gcp.py
+++ b/bitbake/lib/bb/fetch2/gcp.py
@@ -23,7 +23,6 @@ import urllib.parse, urllib.error
23from bb.fetch2 import FetchMethod 23from bb.fetch2 import FetchMethod
24from bb.fetch2 import FetchError 24from bb.fetch2 import FetchError
25from bb.fetch2 import logger 25from bb.fetch2 import logger
26from bb.fetch2 import runfetchcmd
27 26
28class GCP(FetchMethod): 27class GCP(FetchMethod):
29 """ 28 """
@@ -48,7 +47,6 @@ class GCP(FetchMethod):
48 ud.basename = os.path.basename(ud.path) 47 ud.basename = os.path.basename(ud.path)
49 48
50 ud.localfile = d.expand(urllib.parse.unquote(ud.basename)) 49 ud.localfile = d.expand(urllib.parse.unquote(ud.basename))
51 ud.basecmd = "gsutil stat"
52 50
53 def get_gcp_client(self): 51 def get_gcp_client(self):
54 from google.cloud import storage 52 from google.cloud import storage
@@ -59,17 +57,20 @@ class GCP(FetchMethod):
59 Fetch urls using the GCP API. 57 Fetch urls using the GCP API.
60 Assumes localpath was called first. 58 Assumes localpath was called first.
61 """ 59 """
60 from google.api_core.exceptions import NotFound
62 logger.debug2(f"Trying to download gs://{ud.host}{ud.path} to {ud.localpath}") 61 logger.debug2(f"Trying to download gs://{ud.host}{ud.path} to {ud.localpath}")
63 if self.gcp_client is None: 62 if self.gcp_client is None:
64 self.get_gcp_client() 63 self.get_gcp_client()
65 64
66 bb.fetch2.check_network_access(d, ud.basecmd, f"gs://{ud.host}{ud.path}") 65 bb.fetch2.check_network_access(d, "blob.download_to_filename", f"gs://{ud.host}{ud.path}")
67 runfetchcmd("%s %s" % (ud.basecmd, f"gs://{ud.host}{ud.path}"), d)
68 66
69 # Path sometimes has leading slash, so strip it 67 # Path sometimes has leading slash, so strip it
70 path = ud.path.lstrip("/") 68 path = ud.path.lstrip("/")
71 blob = self.gcp_client.bucket(ud.host).blob(path) 69 blob = self.gcp_client.bucket(ud.host).blob(path)
72 blob.download_to_filename(ud.localpath) 70 try:
71 blob.download_to_filename(ud.localpath)
72 except NotFound:
73 raise FetchError("The GCP API threw a NotFound exception")
73 74
74 # Additional sanity checks copied from the wget class (although there 75 # Additional sanity checks copied from the wget class (although there
75 # are no known issues which mean these are required, treat the GCP API 76 # are no known issues which mean these are required, treat the GCP API
@@ -91,8 +92,7 @@ class GCP(FetchMethod):
91 if self.gcp_client is None: 92 if self.gcp_client is None:
92 self.get_gcp_client() 93 self.get_gcp_client()
93 94
94 bb.fetch2.check_network_access(d, ud.basecmd, f"gs://{ud.host}{ud.path}") 95 bb.fetch2.check_network_access(d, "gcp_client.bucket(ud.host).blob(path).exists()", f"gs://{ud.host}{ud.path}")
95 runfetchcmd("%s %s" % (ud.basecmd, f"gs://{ud.host}{ud.path}"), d)
96 96
97 # Path sometimes has leading slash, so strip it 97 # Path sometimes has leading slash, so strip it
98 path = ud.path.lstrip("/") 98 path = ud.path.lstrip("/")
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index c7ff769fdf..6029144601 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -926,9 +926,8 @@ class Git(FetchMethod):
926 commits = None 926 commits = None
927 else: 927 else:
928 if not os.path.exists(rev_file) or not os.path.getsize(rev_file): 928 if not os.path.exists(rev_file) or not os.path.getsize(rev_file):
929 from pipes import quote
930 commits = bb.fetch2.runfetchcmd( 929 commits = bb.fetch2.runfetchcmd(
931 "git rev-list %s -- | wc -l" % quote(rev), 930 "git rev-list %s -- | wc -l" % shlex.quote(rev),
932 d, quiet=True).strip().lstrip('0') 931 d, quiet=True).strip().lstrip('0')
933 if commits: 932 if commits:
934 open(rev_file, "w").write("%d\n" % int(commits)) 933 open(rev_file, "w").write("%d\n" % int(commits))
diff --git a/bitbake/lib/bb/fetch2/gitsm.py b/bitbake/lib/bb/fetch2/gitsm.py
index f7f3af7212..fab4b1164c 100644
--- a/bitbake/lib/bb/fetch2/gitsm.py
+++ b/bitbake/lib/bb/fetch2/gitsm.py
@@ -147,6 +147,19 @@ class GitSM(Git):
147 147
148 return submodules != [] 148 return submodules != []
149 149
150 def call_process_submodules(self, ud, d, extra_check, subfunc):
151 # If we're using a shallow mirror tarball it needs to be
152 # unpacked temporarily so that we can examine the .gitmodules file
153 if ud.shallow and os.path.exists(ud.fullshallow) and extra_check:
154 tmpdir = tempfile.mkdtemp(dir=d.getVar("DL_DIR"))
155 try:
156 runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=tmpdir)
157 self.process_submodules(ud, tmpdir, subfunc, d)
158 finally:
159 shutil.rmtree(tmpdir)
160 else:
161 self.process_submodules(ud, ud.clonedir, subfunc, d)
162
150 def need_update(self, ud, d): 163 def need_update(self, ud, d):
151 if Git.need_update(self, ud, d): 164 if Git.need_update(self, ud, d):
152 return True 165 return True
@@ -164,15 +177,7 @@ class GitSM(Git):
164 logger.error('gitsm: submodule update check failed: %s %s' % (type(e).__name__, str(e))) 177 logger.error('gitsm: submodule update check failed: %s %s' % (type(e).__name__, str(e)))
165 need_update_result = True 178 need_update_result = True
166 179
167 # If we're using a shallow mirror tarball it needs to be unpacked 180 self.call_process_submodules(ud, d, not os.path.exists(ud.clonedir), need_update_submodule)
168 # temporarily so that we can examine the .gitmodules file
169 if ud.shallow and os.path.exists(ud.fullshallow) and not os.path.exists(ud.clonedir):
170 tmpdir = tempfile.mkdtemp(dir=d.getVar("DL_DIR"))
171 runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=tmpdir)
172 self.process_submodules(ud, tmpdir, need_update_submodule, d)
173 shutil.rmtree(tmpdir)
174 else:
175 self.process_submodules(ud, ud.clonedir, need_update_submodule, d)
176 181
177 if need_update_list: 182 if need_update_list:
178 logger.debug('gitsm: Submodules requiring update: %s' % (' '.join(need_update_list))) 183 logger.debug('gitsm: Submodules requiring update: %s' % (' '.join(need_update_list)))
@@ -195,16 +200,7 @@ class GitSM(Git):
195 raise 200 raise
196 201
197 Git.download(self, ud, d) 202 Git.download(self, ud, d)
198 203 self.call_process_submodules(ud, d, self.need_update(ud, d), download_submodule)
199 # If we're using a shallow mirror tarball it needs to be unpacked
200 # temporarily so that we can examine the .gitmodules file
201 if ud.shallow and os.path.exists(ud.fullshallow) and self.need_update(ud, d):
202 tmpdir = tempfile.mkdtemp(dir=d.getVar("DL_DIR"))
203 runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=tmpdir)
204 self.process_submodules(ud, tmpdir, download_submodule, d)
205 shutil.rmtree(tmpdir)
206 else:
207 self.process_submodules(ud, ud.clonedir, download_submodule, d)
208 204
209 def unpack(self, ud, destdir, d): 205 def unpack(self, ud, destdir, d):
210 def unpack_submodules(ud, url, module, modpath, workdir, d): 206 def unpack_submodules(ud, url, module, modpath, workdir, d):
@@ -263,14 +259,6 @@ class GitSM(Git):
263 newfetch = Fetch([url], d, cache=False) 259 newfetch = Fetch([url], d, cache=False)
264 urldata.extend(newfetch.expanded_urldata()) 260 urldata.extend(newfetch.expanded_urldata())
265 261
266 # If we're using a shallow mirror tarball it needs to be unpacked 262 self.call_process_submodules(ud, d, ud.method.need_update(ud, d), add_submodule)
267 # temporarily so that we can examine the .gitmodules file
268 if ud.shallow and os.path.exists(ud.fullshallow) and ud.method.need_update(ud, d):
269 tmpdir = tempfile.mkdtemp(dir=d.getVar("DL_DIR"))
270 subprocess.check_call("tar -xzf %s" % ud.fullshallow, cwd=tmpdir, shell=True)
271 self.process_submodules(ud, tmpdir, add_submodule, d)
272 shutil.rmtree(tmpdir)
273 else:
274 self.process_submodules(ud, ud.clonedir, add_submodule, d)
275 263
276 return urldata 264 return urldata
diff --git a/bitbake/lib/bb/fetch2/wget.py b/bitbake/lib/bb/fetch2/wget.py
index 2e92117634..5bb3b2f361 100644
--- a/bitbake/lib/bb/fetch2/wget.py
+++ b/bitbake/lib/bb/fetch2/wget.py
@@ -87,7 +87,7 @@ class Wget(FetchMethod):
87 if not ud.localfile: 87 if not ud.localfile:
88 ud.localfile = d.expand(urllib.parse.unquote(ud.host + ud.path).replace("/", ".")) 88 ud.localfile = d.expand(urllib.parse.unquote(ud.host + ud.path).replace("/", "."))
89 89
90 self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env wget -t 2 -T 30" 90 self.basecmd = d.getVar("FETCHCMD_wget") or "/usr/bin/env wget -t 2 -T 100"
91 91
92 if ud.type == 'ftp' or ud.type == 'ftps': 92 if ud.type == 'ftp' or ud.type == 'ftps':
93 self.basecmd += " --passive-ftp" 93 self.basecmd += " --passive-ftp"
@@ -371,7 +371,7 @@ class Wget(FetchMethod):
371 except (FileNotFoundError, netrc.NetrcParseError): 371 except (FileNotFoundError, netrc.NetrcParseError):
372 pass 372 pass
373 373
374 with opener.open(r, timeout=30) as response: 374 with opener.open(r, timeout=100) as response:
375 pass 375 pass
376 except (urllib.error.URLError, ConnectionResetError, TimeoutError) as e: 376 except (urllib.error.URLError, ConnectionResetError, TimeoutError) as e:
377 if try_again: 377 if try_again:
diff --git a/bitbake/lib/bb/msg.py b/bitbake/lib/bb/msg.py
index 3e18596faa..4f616ff42e 100644
--- a/bitbake/lib/bb/msg.py
+++ b/bitbake/lib/bb/msg.py
@@ -89,10 +89,6 @@ class BBLogFormatter(logging.Formatter):
89 msg = logging.Formatter.format(self, record) 89 msg = logging.Formatter.format(self, record)
90 if hasattr(record, 'bb_exc_formatted'): 90 if hasattr(record, 'bb_exc_formatted'):
91 msg += '\n' + ''.join(record.bb_exc_formatted) 91 msg += '\n' + ''.join(record.bb_exc_formatted)
92 elif hasattr(record, 'bb_exc_info'):
93 etype, value, tb = record.bb_exc_info
94 formatted = bb.exceptions.format_exception(etype, value, tb, limit=5)
95 msg += '\n' + ''.join(formatted)
96 return msg 92 return msg
97 93
98 def colorize(self, record): 94 def colorize(self, record):
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index 7581d003fd..327e45c8ac 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -391,6 +391,14 @@ def finalize(fn, d, variant = None):
391 if d.getVar("_FAILPARSINGERRORHANDLED", False) == True: 391 if d.getVar("_FAILPARSINGERRORHANDLED", False) == True:
392 raise bb.BBHandledException() 392 raise bb.BBHandledException()
393 393
394 while True:
395 inherits = d.getVar('__BBDEFINHERITS', False) or []
396 if not inherits:
397 break
398 inherit, filename, lineno = inherits.pop(0)
399 d.setVar('__BBDEFINHERITS', inherits)
400 bb.parse.BBHandler.inherit(inherit, filename, lineno, d, deferred=True)
401
394 for var in d.getVar('__BBHANDLERS', False) or []: 402 for var in d.getVar('__BBHANDLERS', False) or []:
395 # try to add the handler 403 # try to add the handler
396 handlerfn = d.getVarFlag(var, "filename", False) 404 handlerfn = d.getVarFlag(var, "filename", False)
@@ -444,14 +452,6 @@ def multi_finalize(fn, d):
444 logger.debug("Appending .bbappend file %s to %s", append, fn) 452 logger.debug("Appending .bbappend file %s to %s", append, fn)
445 bb.parse.BBHandler.handle(append, d, True) 453 bb.parse.BBHandler.handle(append, d, True)
446 454
447 while True:
448 inherits = d.getVar('__BBDEFINHERITS', False) or []
449 if not inherits:
450 break
451 inherit, filename, lineno = inherits.pop(0)
452 d.setVar('__BBDEFINHERITS', inherits)
453 bb.parse.BBHandler.inherit(inherit, filename, lineno, d, deferred=True)
454
455 onlyfinalise = d.getVar("__ONLYFINALISE", False) 455 onlyfinalise = d.getVar("__ONLYFINALISE", False)
456 456
457 safe_d = d 457 safe_d = d
@@ -487,7 +487,9 @@ def multi_finalize(fn, d):
487 d.setVar("BBEXTENDVARIANT", variantmap[name]) 487 d.setVar("BBEXTENDVARIANT", variantmap[name])
488 else: 488 else:
489 d.setVar("PN", "%s-%s" % (pn, name)) 489 d.setVar("PN", "%s-%s" % (pn, name))
490 bb.parse.BBHandler.inherit(extendedmap[name], fn, 0, d) 490 inherits = d.getVar('__BBDEFINHERITS', False) or []
491 inherits.append((extendedmap[name], fn, 0))
492 d.setVar('__BBDEFINHERITS', inherits)
491 493
492 safe_d.setVar("BBCLASSEXTEND", extended) 494 safe_d.setVar("BBCLASSEXTEND", extended)
493 _create_variants(datastores, extendedmap.keys(), extendfunc, onlyfinalise) 495 _create_variants(datastores, extendedmap.keys(), extendfunc, onlyfinalise)
diff --git a/bitbake/lib/bb/persist_data.py b/bitbake/lib/bb/persist_data.py
index bcca791edf..c4454b153a 100644
--- a/bitbake/lib/bb/persist_data.py
+++ b/bitbake/lib/bb/persist_data.py
@@ -154,6 +154,7 @@ class SQLTable(collections.abc.MutableMapping):
154 154
155 def __exit__(self, *excinfo): 155 def __exit__(self, *excinfo):
156 self.connection.__exit__(*excinfo) 156 self.connection.__exit__(*excinfo)
157 self.connection.close()
157 158
158 @_Decorators.retry() 159 @_Decorators.retry()
159 @_Decorators.transaction 160 @_Decorators.transaction
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 93079a9776..439da2bb44 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -14,6 +14,7 @@ import os
14import sys 14import sys
15import stat 15import stat
16import errno 16import errno
17import itertools
17import logging 18import logging
18import re 19import re
19import bb 20import bb
@@ -2189,12 +2190,20 @@ class RunQueueExecute:
2189 if not hasattr(self, "sorted_setscene_tids"): 2190 if not hasattr(self, "sorted_setscene_tids"):
2190 # Don't want to sort this set every execution 2191 # Don't want to sort this set every execution
2191 self.sorted_setscene_tids = sorted(self.rqdata.runq_setscene_tids) 2192 self.sorted_setscene_tids = sorted(self.rqdata.runq_setscene_tids)
2193 # Resume looping where we left off when we returned to feed the mainloop
2194 self.setscene_tids_generator = itertools.cycle(self.rqdata.runq_setscene_tids)
2192 2195
2193 task = None 2196 task = None
2194 if not self.sqdone and self.can_start_task(): 2197 if not self.sqdone and self.can_start_task():
2195 # Find the next setscene to run 2198 loopcount = 0
2196 for nexttask in self.sorted_setscene_tids: 2199 # Find the next setscene to run, exit the loop when we've processed all tids or found something to execute
2200 while loopcount < len(self.rqdata.runq_setscene_tids):
2201 loopcount += 1
2202 nexttask = next(self.setscene_tids_generator)
2197 if nexttask in self.sq_buildable and nexttask not in self.sq_running and self.sqdata.stamps[nexttask] not in self.build_stamps.values() and nexttask not in self.sq_harddep_deferred: 2203 if nexttask in self.sq_buildable and nexttask not in self.sq_running and self.sqdata.stamps[nexttask] not in self.build_stamps.values() and nexttask not in self.sq_harddep_deferred:
2204 if nexttask in self.sq_deferred and self.sq_deferred[nexttask] not in self.runq_complete:
2205 # Skip deferred tasks quickly before the 'expensive' tests below - this is key to performant multiconfig builds
2206 continue
2198 if nexttask not in self.sqdata.unskippable and self.sqdata.sq_revdeps[nexttask] and \ 2207 if nexttask not in self.sqdata.unskippable and self.sqdata.sq_revdeps[nexttask] and \
2199 nexttask not in self.sq_needed_harddeps and \ 2208 nexttask not in self.sq_needed_harddeps and \
2200 self.sqdata.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and \ 2209 self.sqdata.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and \
@@ -2224,8 +2233,7 @@ class RunQueueExecute:
2224 if t in self.runq_running and t not in self.runq_complete: 2233 if t in self.runq_running and t not in self.runq_complete:
2225 continue 2234 continue
2226 if nexttask in self.sq_deferred: 2235 if nexttask in self.sq_deferred:
2227 if self.sq_deferred[nexttask] not in self.runq_complete: 2236 # Deferred tasks that were still deferred were skipped above so we now need to process
2228 continue
2229 logger.debug("Task %s no longer deferred" % nexttask) 2237 logger.debug("Task %s no longer deferred" % nexttask)
2230 del self.sq_deferred[nexttask] 2238 del self.sq_deferred[nexttask]
2231 valid = self.rq.validate_hashes(set([nexttask]), self.cooker.data, 0, False, summary=False) 2239 valid = self.rq.validate_hashes(set([nexttask]), self.cooker.data, 0, False, summary=False)
@@ -2751,8 +2759,12 @@ class RunQueueExecute:
2751 logger.debug2("%s was unavailable and is a hard dependency of %s so skipping" % (task, dep)) 2759 logger.debug2("%s was unavailable and is a hard dependency of %s so skipping" % (task, dep))
2752 self.sq_task_failoutright(dep) 2760 self.sq_task_failoutright(dep)
2753 continue 2761 continue
2762
2763 # For performance, only compute allcovered once if needed
2764 if self.sqdata.sq_deps[task]:
2765 allcovered = self.scenequeue_covered | self.scenequeue_notcovered
2754 for dep in sorted(self.sqdata.sq_deps[task]): 2766 for dep in sorted(self.sqdata.sq_deps[task]):
2755 if self.sqdata.sq_revdeps[dep].issubset(self.scenequeue_covered | self.scenequeue_notcovered): 2767 if self.sqdata.sq_revdeps[dep].issubset(allcovered):
2756 if dep not in self.sq_buildable: 2768 if dep not in self.sq_buildable:
2757 self.sq_buildable.add(dep) 2769 self.sq_buildable.add(dep)
2758 2770
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py
index 33cc9bcac6..afabaeba18 100644
--- a/bitbake/lib/bb/tests/fetch.py
+++ b/bitbake/lib/bb/tests/fetch.py
@@ -1419,12 +1419,12 @@ class FetchLatestVersionTest(FetcherTest):
1419 ("dtc", "git://git.yoctoproject.org/bbfetchtests-dtc.git;branch=master;protocol=https", "65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf", "", "") 1419 ("dtc", "git://git.yoctoproject.org/bbfetchtests-dtc.git;branch=master;protocol=https", "65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf", "", "")
1420 : "1.4.0", 1420 : "1.4.0",
1421 # combination version pattern 1421 # combination version pattern
1422 ("sysprof", "git://gitlab.gnome.org/GNOME/sysprof.git;protocol=https;branch=master", "cd44ee6644c3641507fb53b8a2a69137f2971219", "", "") 1422 ("sysprof", "git://git.yoctoproject.org/sysprof.git;protocol=https;branch=master", "cd44ee6644c3641507fb53b8a2a69137f2971219", "", "")
1423 : "1.2.0", 1423 : "1.2.0",
1424 ("u-boot-mkimage", "git://source.denx.de/u-boot/u-boot.git;branch=master;protocol=https", "62c175fbb8a0f9a926c88294ea9f7e88eb898f6c", "", "") 1424 ("u-boot-mkimage", "git://source.denx.de/u-boot/u-boot.git;branch=master;protocol=https", "62c175fbb8a0f9a926c88294ea9f7e88eb898f6c", "", "")
1425 : "2014.01", 1425 : "2014.01",
1426 # version pattern "yyyymmdd" 1426 # version pattern "yyyymmdd"
1427 ("mobile-broadband-provider-info", "git://gitlab.gnome.org/GNOME/mobile-broadband-provider-info.git;protocol=https;branch=master", "4ed19e11c2975105b71b956440acdb25d46a347d", "", "") 1427 ("mobile-broadband-provider-info", "git://git.yoctoproject.org/mobile-broadband-provider-info.git;protocol=https;branch=master", "4ed19e11c2975105b71b956440acdb25d46a347d", "", "")
1428 : "20120614", 1428 : "20120614",
1429 # packages with a valid UPSTREAM_CHECK_GITTAGREGEX 1429 # packages with a valid UPSTREAM_CHECK_GITTAGREGEX
1430 # mirror of git://anongit.freedesktop.org/xorg/driver/xf86-video-omap since network issues interfered with testing 1430 # mirror of git://anongit.freedesktop.org/xorg/driver/xf86-video-omap since network issues interfered with testing
@@ -1715,6 +1715,8 @@ class GitShallowTest(FetcherTest):
1715 if cwd is None: 1715 if cwd is None:
1716 cwd = self.gitdir 1716 cwd = self.gitdir
1717 actual_refs = self.git(['for-each-ref', '--format=%(refname)'], cwd=cwd).splitlines() 1717 actual_refs = self.git(['for-each-ref', '--format=%(refname)'], cwd=cwd).splitlines()
1718 # Resolve references into the same format as the comparision (needed by git 2.48 onwards)
1719 actual_refs = self.git(['rev-parse', '--symbolic-full-name'] + actual_refs, cwd=cwd).splitlines()
1718 full_expected = self.git(['rev-parse', '--symbolic-full-name'] + expected_refs, cwd=cwd).splitlines() 1720 full_expected = self.git(['rev-parse', '--symbolic-full-name'] + expected_refs, cwd=cwd).splitlines()
1719 self.assertEqual(sorted(set(full_expected)), sorted(set(actual_refs))) 1721 self.assertEqual(sorted(set(full_expected)), sorted(set(actual_refs)))
1720 1722
diff --git a/bitbake/lib/bb/tinfoil.py b/bitbake/lib/bb/tinfoil.py
index dcd3910cc4..4dc4590c31 100644
--- a/bitbake/lib/bb/tinfoil.py
+++ b/bitbake/lib/bb/tinfoil.py
@@ -188,11 +188,19 @@ class TinfoilCookerAdapter:
188 self._cache[name] = attrvalue 188 self._cache[name] = attrvalue
189 return attrvalue 189 return attrvalue
190 190
191 class TinfoilSkiplistByMcAdapter:
192 def __init__(self, tinfoil):
193 self.tinfoil = tinfoil
194
195 def __getitem__(self, mc):
196 return self.tinfoil.get_skipped_recipes(mc)
197
191 def __init__(self, tinfoil): 198 def __init__(self, tinfoil):
192 self.tinfoil = tinfoil 199 self.tinfoil = tinfoil
193 self.multiconfigs = [''] + (tinfoil.config_data.getVar('BBMULTICONFIG') or '').split() 200 self.multiconfigs = [''] + (tinfoil.config_data.getVar('BBMULTICONFIG') or '').split()
194 self.collections = {} 201 self.collections = {}
195 self.recipecaches = {} 202 self.recipecaches = {}
203 self.skiplist_by_mc = self.TinfoilSkiplistByMcAdapter(tinfoil)
196 for mc in self.multiconfigs: 204 for mc in self.multiconfigs:
197 self.collections[mc] = self.TinfoilCookerCollectionAdapter(tinfoil, mc) 205 self.collections[mc] = self.TinfoilCookerCollectionAdapter(tinfoil, mc)
198 self.recipecaches[mc] = self.TinfoilRecipeCacheAdapter(tinfoil, mc) 206 self.recipecaches[mc] = self.TinfoilRecipeCacheAdapter(tinfoil, mc)
@@ -201,8 +209,6 @@ class TinfoilCookerAdapter:
201 # Grab these only when they are requested since they aren't always used 209 # Grab these only when they are requested since they aren't always used
202 if name in self._cache: 210 if name in self._cache:
203 return self._cache[name] 211 return self._cache[name]
204 elif name == 'skiplist':
205 attrvalue = self.tinfoil.get_skipped_recipes()
206 elif name == 'bbfile_config_priorities': 212 elif name == 'bbfile_config_priorities':
207 ret = self.tinfoil.run_command('getLayerPriorities') 213 ret = self.tinfoil.run_command('getLayerPriorities')
208 bbfile_config_priorities = [] 214 bbfile_config_priorities = []
@@ -514,12 +520,12 @@ class Tinfoil:
514 """ 520 """
515 return defaultdict(list, self.run_command('getOverlayedRecipes', mc)) 521 return defaultdict(list, self.run_command('getOverlayedRecipes', mc))
516 522
517 def get_skipped_recipes(self): 523 def get_skipped_recipes(self, mc=''):
518 """ 524 """
519 Find recipes which were skipped (i.e. SkipRecipe was raised 525 Find recipes which were skipped (i.e. SkipRecipe was raised
520 during parsing). 526 during parsing).
521 """ 527 """
522 return OrderedDict(self.run_command('getSkippedRecipes')) 528 return OrderedDict(self.run_command('getSkippedRecipes', mc))
523 529
524 def get_all_providers(self, mc=''): 530 def get_all_providers(self, mc=''):
525 return defaultdict(list, self.run_command('allProviders', mc)) 531 return defaultdict(list, self.run_command('allProviders', mc))
@@ -533,6 +539,7 @@ class Tinfoil:
533 def get_runtime_providers(self, rdep): 539 def get_runtime_providers(self, rdep):
534 return self.run_command('getRuntimeProviders', rdep) 540 return self.run_command('getRuntimeProviders', rdep)
535 541
542 # TODO: teach this method about mc
536 def get_recipe_file(self, pn): 543 def get_recipe_file(self, pn):
537 """ 544 """
538 Get the file name for the specified recipe/target. Raises 545 Get the file name for the specified recipe/target. Raises
@@ -541,6 +548,7 @@ class Tinfoil:
541 """ 548 """
542 best = self.find_best_provider(pn) 549 best = self.find_best_provider(pn)
543 if not best or (len(best) > 3 and not best[3]): 550 if not best or (len(best) > 3 and not best[3]):
551 # TODO: pass down mc
544 skiplist = self.get_skipped_recipes() 552 skiplist = self.get_skipped_recipes()
545 taskdata = bb.taskdata.TaskData(None, skiplist=skiplist) 553 taskdata = bb.taskdata.TaskData(None, skiplist=skiplist)
546 skipreasons = taskdata.get_reasons(pn) 554 skipreasons = taskdata.get_reasons(pn)
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index f86999bb09..3784c93ad8 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -577,6 +577,8 @@ def main(server, eventHandler, params, tf = TerminalFilter):
577 else: 577 else:
578 log_exec_tty = False 578 log_exec_tty = False
579 579
580 should_print_hyperlinks = sys.stdout.isatty() and os.environ.get('NO_COLOR', '') == ''
581
580 helper = uihelper.BBUIHelper() 582 helper = uihelper.BBUIHelper()
581 583
582 # Look for the specially designated handlers which need to be passed to the 584 # Look for the specially designated handlers which need to be passed to the
@@ -640,7 +642,7 @@ def main(server, eventHandler, params, tf = TerminalFilter):
640 return_value = 0 642 return_value = 0
641 errors = 0 643 errors = 0
642 warnings = 0 644 warnings = 0
643 taskfailures = [] 645 taskfailures = {}
644 646
645 printintervaldelta = 10 * 60 # 10 minutes 647 printintervaldelta = 10 * 60 # 10 minutes
646 printinterval = printintervaldelta 648 printinterval = printintervaldelta
@@ -726,6 +728,8 @@ def main(server, eventHandler, params, tf = TerminalFilter):
726 if isinstance(event, bb.build.TaskFailed): 728 if isinstance(event, bb.build.TaskFailed):
727 return_value = 1 729 return_value = 1
728 print_event_log(event, includelogs, loglines, termfilter) 730 print_event_log(event, includelogs, loglines, termfilter)
731 k = "{}:{}".format(event._fn, event._task)
732 taskfailures[k] = event.logfile
729 if isinstance(event, bb.build.TaskBase): 733 if isinstance(event, bb.build.TaskBase):
730 logger.info(event._message) 734 logger.info(event._message)
731 continue 735 continue
@@ -821,7 +825,7 @@ def main(server, eventHandler, params, tf = TerminalFilter):
821 825
822 if isinstance(event, bb.runqueue.runQueueTaskFailed): 826 if isinstance(event, bb.runqueue.runQueueTaskFailed):
823 return_value = 1 827 return_value = 1
824 taskfailures.append(event.taskstring) 828 taskfailures.setdefault(event.taskstring)
825 logger.error(str(event)) 829 logger.error(str(event))
826 continue 830 continue
827 831
@@ -942,11 +946,21 @@ def main(server, eventHandler, params, tf = TerminalFilter):
942 try: 946 try:
943 termfilter.clearFooter() 947 termfilter.clearFooter()
944 summary = "" 948 summary = ""
949 def format_hyperlink(url, link_text):
950 if should_print_hyperlinks:
951 start = f'\033]8;;{url}\033\\'
952 end = '\033]8;;\033\\'
953 return f'{start}{link_text}{end}'
954 return link_text
955
945 if taskfailures: 956 if taskfailures:
946 summary += pluralise("\nSummary: %s task failed:", 957 summary += pluralise("\nSummary: %s task failed:",
947 "\nSummary: %s tasks failed:", len(taskfailures)) 958 "\nSummary: %s tasks failed:", len(taskfailures))
948 for failure in taskfailures: 959 for (failure, log_file) in taskfailures.items():
949 summary += "\n %s" % failure 960 summary += "\n %s" % failure
961 if log_file:
962 hyperlink = format_hyperlink(f"file://{log_file}", log_file)
963 summary += "\n log: {}".format(hyperlink)
950 if warnings: 964 if warnings:
951 summary += pluralise("\nSummary: There was %s WARNING message.", 965 summary += pluralise("\nSummary: There was %s WARNING message.",
952 "\nSummary: There were %s WARNING messages.", warnings) 966 "\nSummary: There were %s WARNING messages.", warnings)
diff --git a/bitbake/lib/bb/ui/teamcity.py b/bitbake/lib/bb/ui/teamcity.py
index fca46c2874..7eeaab8d63 100644
--- a/bitbake/lib/bb/ui/teamcity.py
+++ b/bitbake/lib/bb/ui/teamcity.py
@@ -30,7 +30,6 @@ import bb.build
30import bb.command 30import bb.command
31import bb.cooker 31import bb.cooker
32import bb.event 32import bb.event
33import bb.exceptions
34import bb.runqueue 33import bb.runqueue
35from bb.ui import uihelper 34from bb.ui import uihelper
36 35
@@ -102,10 +101,6 @@ class TeamcityLogFormatter(logging.Formatter):
102 details = "" 101 details = ""
103 if hasattr(record, 'bb_exc_formatted'): 102 if hasattr(record, 'bb_exc_formatted'):
104 details = ''.join(record.bb_exc_formatted) 103 details = ''.join(record.bb_exc_formatted)
105 elif hasattr(record, 'bb_exc_info'):
106 etype, value, tb = record.bb_exc_info
107 formatted = bb.exceptions.format_exception(etype, value, tb, limit=5)
108 details = ''.join(formatted)
109 104
110 if record.levelno in [bb.msg.BBLogFormatter.ERROR, bb.msg.BBLogFormatter.CRITICAL]: 105 if record.levelno in [bb.msg.BBLogFormatter.ERROR, bb.msg.BBLogFormatter.CRITICAL]:
111 # ERROR gets a separate errorDetails field 106 # ERROR gets a separate errorDetails field
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index ebee65d3dd..67e22f4389 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -1857,12 +1857,30 @@ def path_is_descendant(descendant, ancestor):
1857# If we don't have a timeout of some kind and a process/thread exits badly (for example 1857# If we don't have a timeout of some kind and a process/thread exits badly (for example
1858# OOM killed) and held a lock, we'd just hang in the lock futex forever. It is better 1858# OOM killed) and held a lock, we'd just hang in the lock futex forever. It is better
1859# we exit at some point than hang. 5 minutes with no progress means we're probably deadlocked. 1859# we exit at some point than hang. 5 minutes with no progress means we're probably deadlocked.
1860# This function can still deadlock python since it can't signal the other threads to exit
1861# (signals are handled in the main thread) and even os._exit() will wait on non-daemon threads
1862# to exit.
1860@contextmanager 1863@contextmanager
1861def lock_timeout(lock): 1864def lock_timeout(lock):
1862 held = lock.acquire(timeout=5*60)
1863 try: 1865 try:
1866 s = signal.pthread_sigmask(signal.SIG_BLOCK, signal.valid_signals())
1867 held = lock.acquire(timeout=5*60)
1864 if not held: 1868 if not held:
1869 bb.server.process.serverlog("Couldn't get the lock for 5 mins, timed out, exiting.\n%s" % traceback.format_stack())
1865 os._exit(1) 1870 os._exit(1)
1866 yield held 1871 yield held
1867 finally: 1872 finally:
1868 lock.release() 1873 lock.release()
1874 signal.pthread_sigmask(signal.SIG_SETMASK, s)
1875
1876# A version of lock_timeout without the check that the lock was locked and a shorter timeout
1877@contextmanager
1878def lock_timeout_nocheck(lock):
1879 try:
1880 s = signal.pthread_sigmask(signal.SIG_BLOCK, signal.valid_signals())
1881 l = lock.acquire(timeout=10)
1882 yield l
1883 finally:
1884 if l:
1885 lock.release()
1886 signal.pthread_sigmask(signal.SIG_SETMASK, s)
diff --git a/bitbake/lib/bblayers/query.py b/bitbake/lib/bblayers/query.py
index bfc18a7593..9b2e081cfd 100644
--- a/bitbake/lib/bblayers/query.py
+++ b/bitbake/lib/bblayers/query.py
@@ -142,10 +142,11 @@ skipped recipes will also be listed, with a " (skipped)" suffix.
142 # Ensure we list skipped recipes 142 # Ensure we list skipped recipes
143 # We are largely guessing about PN, PV and the preferred version here, 143 # We are largely guessing about PN, PV and the preferred version here,
144 # but we have no choice since skipped recipes are not fully parsed 144 # but we have no choice since skipped recipes are not fully parsed
145 skiplist = list(self.tinfoil.cooker.skiplist.keys()) 145 skiplist = list(self.tinfoil.cooker.skiplist_by_mc[mc].keys())
146 mcspec = 'mc:%s:' % mc 146
147 if mc: 147 if mc:
148 skiplist = [s[len(mcspec):] for s in skiplist if s.startswith(mcspec)] 148 mcspec = f'mc:{mc}:'
149 skiplist = [s[len(mcspec):] if s.startswith(mcspec) else s for s in skiplist]
149 150
150 for fn in skiplist: 151 for fn in skiplist:
151 recipe_parts = os.path.splitext(os.path.basename(fn))[0].split('_') 152 recipe_parts = os.path.splitext(os.path.basename(fn))[0].split('_')
@@ -162,7 +163,7 @@ skipped recipes will also be listed, with a " (skipped)" suffix.
162 def print_item(f, pn, ver, layer, ispref): 163 def print_item(f, pn, ver, layer, ispref):
163 if not selected_layer or layer == selected_layer: 164 if not selected_layer or layer == selected_layer:
164 if not bare and f in skiplist: 165 if not bare and f in skiplist:
165 skipped = ' (skipped: %s)' % self.tinfoil.cooker.skiplist[f].skipreason 166 skipped = ' (skipped: %s)' % self.tinfoil.cooker.skiplist_by_mc[mc][f].skipreason
166 else: 167 else:
167 skipped = '' 168 skipped = ''
168 if show_filenames: 169 if show_filenames:
@@ -301,7 +302,7 @@ Lists recipes with the bbappends that apply to them as subitems.
301 if self.show_appends_for_pn(pn, cooker_data, args.mc): 302 if self.show_appends_for_pn(pn, cooker_data, args.mc):
302 appends = True 303 appends = True
303 304
304 if not args.pnspec and self.show_appends_for_skipped(): 305 if not args.pnspec and self.show_appends_for_skipped(args.mc):
305 appends = True 306 appends = True
306 307
307 if not appends: 308 if not appends:
@@ -317,9 +318,9 @@ Lists recipes with the bbappends that apply to them as subitems.
317 318
318 return self.show_appends_output(filenames, best_filename) 319 return self.show_appends_output(filenames, best_filename)
319 320
320 def show_appends_for_skipped(self): 321 def show_appends_for_skipped(self, mc):
321 filenames = [os.path.basename(f) 322 filenames = [os.path.basename(f)
322 for f in self.tinfoil.cooker.skiplist.keys()] 323 for f in self.tinfoil.cooker.skiplist_by_mc[mc].keys()]
323 return self.show_appends_output(filenames, None, " (skipped)") 324 return self.show_appends_output(filenames, None, " (skipped)")
324 325
325 def show_appends_output(self, filenames, best_filename, name_suffix = ''): 326 def show_appends_output(self, filenames, best_filename, name_suffix = ''):
diff --git a/bitbake/lib/toaster/tests/builds/buildtest.py b/bitbake/lib/toaster/tests/builds/buildtest.py
index cacfccd4d3..e54d561334 100644
--- a/bitbake/lib/toaster/tests/builds/buildtest.py
+++ b/bitbake/lib/toaster/tests/builds/buildtest.py
@@ -128,7 +128,7 @@ class BuildTest(unittest.TestCase):
128 if os.environ.get("TOASTER_TEST_USE_SSTATE_MIRROR"): 128 if os.environ.get("TOASTER_TEST_USE_SSTATE_MIRROR"):
129 ProjectVariable.objects.get_or_create( 129 ProjectVariable.objects.get_or_create(
130 name="SSTATE_MIRRORS", 130 name="SSTATE_MIRRORS",
131 value="file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH", 131 value="file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH",
132 project=project) 132 project=project)
133 133
134 ProjectTarget.objects.create(project=project, 134 ProjectTarget.objects.create(project=project,
diff --git a/documentation/Makefile b/documentation/Makefile
index 189bd1dfac..65e29713d4 100644
--- a/documentation/Makefile
+++ b/documentation/Makefile
@@ -3,17 +3,18 @@
3 3
4# You can set these variables from the command line, and also 4# You can set these variables from the command line, and also
5# from the environment for the first two. 5# from the environment for the first two.
6SPHINXOPTS ?= -W --keep-going -j auto 6SPHINXOPTS ?= -W --keep-going -j auto
7SPHINXBUILD ?= sphinx-build 7SPHINXBUILD ?= sphinx-build
8# Release notes are excluded because they contain contributor names and commit messages which can't be modified 8# Release notes are excluded because they contain contributor names and commit messages which can't be modified
9VALEOPTS ?= --no-wrap --glob '!migration-guides/release-notes-*.rst' 9VALEOPTS ?= --no-wrap --glob '!migration-guides/release-notes-*.rst'
10VALEDOCS ?= . 10SOURCEDIR = .
11SOURCEDIR = . 11VALEDOCS ?= $(SOURCEDIR)
12IMAGEDIRS = */svg 12SPHINXLINTDOCS ?= $(SOURCEDIR)
13BUILDDIR = _build 13IMAGEDIRS = */svg
14DESTDIR = final 14BUILDDIR = _build
15SVG2PNG = inkscape 15DESTDIR = final
16SVG2PDF = inkscape 16SVG2PNG = rsvg-convert
17SVG2PDF = rsvg-convert
17 18
18ifeq ($(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi),0) 19ifeq ($(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi),0)
19$(error "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed") 20$(error "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed")
@@ -25,10 +26,12 @@ help:
25 26
26.PHONY: all help Makefile clean stylecheck publish epub latexpdf 27.PHONY: all help Makefile clean stylecheck publish epub latexpdf
27 28
28publish: Makefile html singlehtml 29publish: Makefile epub latexpdf html singlehtml
29 rm -rf $(BUILDDIR)/$(DESTDIR)/ 30 rm -rf $(BUILDDIR)/$(DESTDIR)/
30 mkdir -p $(BUILDDIR)/$(DESTDIR)/ 31 mkdir -p $(BUILDDIR)/$(DESTDIR)/
31 cp -r $(BUILDDIR)/html/* $(BUILDDIR)/$(DESTDIR)/ 32 cp -r $(BUILDDIR)/html/* $(BUILDDIR)/$(DESTDIR)/
33 mkdir -p $(BUILDDIR)/$(DESTDIR)/_static
34 cp $(BUILDDIR)/epub/TheYoctoProject.epub $(BUILDDIR)/latex/theyoctoproject.pdf $(BUILDDIR)/$(DESTDIR)/_static/
32 cp $(BUILDDIR)/singlehtml/index.html $(BUILDDIR)/$(DESTDIR)/singleindex.html 35 cp $(BUILDDIR)/singlehtml/index.html $(BUILDDIR)/$(DESTDIR)/singleindex.html
33 sed -i -e 's@index.html#@singleindex.html#@g' $(BUILDDIR)/$(DESTDIR)/singleindex.html 36 sed -i -e 's@index.html#@singleindex.html#@g' $(BUILDDIR)/$(DESTDIR)/singleindex.html
34 37
@@ -40,11 +43,11 @@ PNGs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.png,$(wildcard $(SOURCED
40 43
41# Pattern rule for converting SVG to PDF 44# Pattern rule for converting SVG to PDF
42%.pdf : %.svg 45%.pdf : %.svg
43 $(SVG2PDF) --export-filename=$@ $< 46 $(SVG2PDF) --format=Pdf --output=$@ $<
44 47
45# Pattern rule for converting SVG to PNG 48# Pattern rule for converting SVG to PNG
46%.png : %.svg 49%.png : %.svg
47 $(SVG2PNG) --export-filename=$@ $< 50 $(SVG2PNG) --format=Png --output=$@ $<
48 51
49clean: 52clean:
50 @rm -rf $(BUILDDIR) $(PNGs) $(PDFs) poky.yaml sphinx-static/switchers.js releases.rst 53 @rm -rf $(BUILDDIR) $(PNGs) $(PDFs) poky.yaml sphinx-static/switchers.js releases.rst
@@ -54,15 +57,18 @@ stylecheck:
54 vale $(VALEOPTS) $(VALEDOCS) 57 vale $(VALEOPTS) $(VALEDOCS)
55 58
56sphinx-lint: 59sphinx-lint:
57 sphinx-lint $(SOURCEDIR) 60 sphinx-lint $(SPHINXLINTDOCS)
58 61
59epub: $(PNGs) 62epub: $(PNGs)
60 $(SOURCEDIR)/set_versions.py 63 $(SOURCEDIR)/set_versions.py
61 @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 64 @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
62 65
66# Note: we need to pass buf_size here (which is also configurable from
67# texmf.cnf), to avoid following error:
68# Unable to read an entire line---bufsize=200000. Please increase buf_size in texmf.cnf.
63latexpdf: $(PDFs) 69latexpdf: $(PDFs)
64 $(SOURCEDIR)/set_versions.py 70 $(SOURCEDIR)/set_versions.py
65 @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 71 buf_size=10000000 $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
66 72
67all: html epub latexpdf 73all: html epub latexpdf
68 74
diff --git a/documentation/README b/documentation/README
index b60472fcbf..c394ab9288 100644
--- a/documentation/README
+++ b/documentation/README
@@ -165,7 +165,15 @@ To run Vale:
165 165
166 $ make stylecheck 166 $ make stylecheck
167 167
168Link checking the Yocto Project documentation 168Style checking the whole documentation might take some time and generate a
169lot of warnings/errors, thus one can run Vale on a subset of files or
170directories:
171
172 $ make stylecheck VALEDOCS=<file>
173 $ make stylecheck VALEDOCS="<file1> <file2>"
174 $ make stylecheck VALEDOCS=<dir>
175
176Lint checking the Yocto Project documentation
169============================================= 177=============================================
170 178
171To fix errors which are not reported by Sphinx itself, 179To fix errors which are not reported by Sphinx itself,
@@ -179,6 +187,14 @@ To run sphinx-lint:
179 187
180 $ make sphinx-lint 188 $ make sphinx-lint
181 189
190Lint checking the whole documentation might take some time and generate a
191lot of warnings/errors, thus one can run sphinx-lint on a subset of files
192or directories:
193
194 $ make sphinx-lint SPHINXLINTDOCS=<file>
195 $ make sphinx-lint SPHINXLINTDOCS="<file1> <file2>"
196 $ make sphinx-lint SPHINXLINTDOCS=<dir>
197
182Sphinx theme and CSS customization 198Sphinx theme and CSS customization
183================================== 199==================================
184 200
@@ -413,5 +429,22 @@ both the Yocto Project and BitBake manuals:
413Submitting documentation changes 429Submitting documentation changes
414================================ 430================================
415 431
416Please see the top level README file in this repository for details of where 432Please refer to our contributor guide here: https://docs.yoctoproject.org/contributor-guide/
417to send patches. 433for full details on how to submit changes.
434
435As a quick guide, patches should be sent to docs@lists.yoctoproject.org
436The git command to do that would be:
437
438 git send-email -M -1 --to docs@lists.yoctoproject.org
439
440The 'To' header can be set as default for this repository:
441
442 git config sendemail.to docs@lists.yoctoproject.org
443
444Now you can just do 'git send-email origin/master..' to send all local patches.
445
446Read the other sections in this document and documentation/standards.md for
447rules to follow when contributing to the documentation.
448
449Git repository: https://git.yoctoproject.org/yocto-docs
450Mailing list: docs@lists.yoctoproject.org
diff --git a/documentation/brief-yoctoprojectqs/index.rst b/documentation/brief-yoctoprojectqs/index.rst
index c5400e4ac8..b37142ef14 100644
--- a/documentation/brief-yoctoprojectqs/index.rst
+++ b/documentation/brief-yoctoprojectqs/index.rst
@@ -44,7 +44,7 @@ following requirements:
44 much more will help to run multiple builds and increase 44 much more will help to run multiple builds and increase
45 performance by reusing build artifacts. 45 performance by reusing build artifacts.
46 46
47- At least &MIN_RAM; Gbytes of RAM, though a modern modern build host with as 47- At least &MIN_RAM; Gbytes of RAM, though a modern build host with as
48 much RAM and as many CPU cores as possible is strongly recommended to 48 much RAM and as many CPU cores as possible is strongly recommended to
49 maximize build performance. 49 maximize build performance.
50 50
@@ -57,7 +57,7 @@ following requirements:
57 :ref:`dev-manual/start:preparing the build host` 57 :ref:`dev-manual/start:preparing the build host`
58 section in the Yocto Project Development Tasks Manual. 58 section in the Yocto Project Development Tasks Manual.
59 59
60- 60- Ensure that the following utilities have these minimum version numbers:
61 61
62 - Git &MIN_GIT_VERSION; or greater 62 - Git &MIN_GIT_VERSION; or greater
63 - tar &MIN_TAR_VERSION; or greater 63 - tar &MIN_TAR_VERSION; or greater
@@ -65,7 +65,7 @@ following requirements:
65 - gcc &MIN_GCC_VERSION; or greater. 65 - gcc &MIN_GCC_VERSION; or greater.
66 - GNU make &MIN_MAKE_VERSION; or greater 66 - GNU make &MIN_MAKE_VERSION; or greater
67 67
68If your build host does not meet any of these three listed version 68If your build host does not satisfy all of the above version
69requirements, you can take steps to prepare the system so that you 69requirements, you can take steps to prepare the system so that you
70can still use the Yocto Project. See the 70can still use the Yocto Project. See the
71:ref:`ref-manual/system-requirements:required git, tar, python, make and gcc versions` 71:ref:`ref-manual/system-requirements:required git, tar, python, make and gcc versions`
@@ -78,7 +78,7 @@ You must install essential host packages on your build host. The
78following command installs the host packages based on an Ubuntu 78following command installs the host packages based on an Ubuntu
79distribution:: 79distribution::
80 80
81 $ sudo apt install &UBUNTU_HOST_PACKAGES_ESSENTIAL; 81 $ sudo apt install &UBUNTU_DEBIAN_HOST_PACKAGES_ESSENTIAL;
82 82
83.. note:: 83.. note::
84 84
@@ -182,7 +182,7 @@ an entire Linux distribution, including the toolchain, from source.
182 page of the Yocto Project Wiki. 182 page of the Yocto Project Wiki.
183 183
184#. **Initialize the Build Environment:** From within the ``poky`` 184#. **Initialize the Build Environment:** From within the ``poky``
185 directory, run the :ref:`ref-manual/structure:\`\`oe-init-build-env\`\`` 185 directory, run the :ref:`ref-manual/structure:``oe-init-build-env```
186 environment 186 environment
187 setup script to define Yocto Project's build environment on your 187 setup script to define Yocto Project's build environment on your
188 build host. 188 build host.
@@ -252,7 +252,7 @@ an entire Linux distribution, including the toolchain, from source.
252 file in the :term:`Build Directory`:: 252 file in the :term:`Build Directory`::
253 253
254 BB_HASHSERVE_UPSTREAM = "wss://hashserv.yoctoproject.org/ws" 254 BB_HASHSERVE_UPSTREAM = "wss://hashserv.yoctoproject.org/ws"
255 SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 255 SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
256 BB_HASHSERVE = "auto" 256 BB_HASHSERVE = "auto"
257 BB_SIGNATURE_HANDLER = "OEEquivHash" 257 BB_SIGNATURE_HANDLER = "OEEquivHash"
258 258
diff --git a/documentation/bsp-guide/bsp.rst b/documentation/bsp-guide/bsp.rst
index 11ca5d8b76..73e31670d6 100644
--- a/documentation/bsp-guide/bsp.rst
+++ b/documentation/bsp-guide/bsp.rst
@@ -81,7 +81,7 @@ directory of that Layer. This directory is what you add to the
81``conf/bblayers.conf`` file found in your 81``conf/bblayers.conf`` file found in your
82:term:`Build Directory`, which is 82:term:`Build Directory`, which is
83established after you run the OpenEmbedded build environment setup 83established after you run the OpenEmbedded build environment setup
84script (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``). 84script (i.e. :ref:`ref-manual/structure:``oe-init-build-env```).
85Adding the root directory allows the :term:`OpenEmbedded Build System` 85Adding the root directory allows the :term:`OpenEmbedded Build System`
86to recognize the BSP 86to recognize the BSP
87layer and from it build an image. Here is an example:: 87layer and from it build an image. Here is an example::
@@ -166,7 +166,7 @@ section.
166 BSPs, which are maintained in their own layers or in layers designed 166 BSPs, which are maintained in their own layers or in layers designed
167 to contain several BSPs. To get an idea of machine support through 167 to contain several BSPs. To get an idea of machine support through
168 BSP layers, you can look at the 168 BSP layers, you can look at the
169 :yocto_dl:`index of machines </releases/yocto/yocto-&DISTRO;/machines>` 169 :yocto_dl:`index of machines </releases/yocto/&DISTRO_REL_LATEST_TAG;/machines>`
170 for the release. 170 for the release.
171 171
172#. *Optionally Clone the meta-intel BSP Layer:* If your hardware is 172#. *Optionally Clone the meta-intel BSP Layer:* If your hardware is
@@ -229,7 +229,7 @@ section.
229 229
230#. *Initialize the Build Environment:* While in the root directory of 230#. *Initialize the Build Environment:* While in the root directory of
231 the Source Directory (i.e. ``poky``), run the 231 the Source Directory (i.e. ``poky``), run the
232 :ref:`ref-manual/structure:\`\`oe-init-build-env\`\`` environment 232 :ref:`ref-manual/structure:``oe-init-build-env``` environment
233 setup script to define the OpenEmbedded build environment on your 233 setup script to define the OpenEmbedded build environment on your
234 build host. :: 234 build host. ::
235 235
@@ -674,21 +674,21 @@ to the kernel recipe by using a similarly named append file, which is
674located in the BSP Layer for your target device (e.g. the 674located in the BSP Layer for your target device (e.g. the
675``meta-bsp_root_name/recipes-kernel/linux`` directory). 675``meta-bsp_root_name/recipes-kernel/linux`` directory).
676 676
677Suppose you are using the ``linux-yocto_4.4.bb`` recipe to build the 677Suppose you are using the ``linux-yocto_6.12.bb`` recipe to build the
678kernel. In other words, you have selected the kernel in your 678kernel. In other words, you have selected the kernel in your
679``"bsp_root_name".conf`` file by adding 679``"bsp_root_name".conf`` file by adding
680:term:`PREFERRED_PROVIDER` and :term:`PREFERRED_VERSION` 680:term:`PREFERRED_PROVIDER` and :term:`PREFERRED_VERSION`
681statements as follows:: 681statements as follows::
682 682
683 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 683 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
684 PREFERRED_VERSION_linux-yocto ?= "4.4%" 684 PREFERRED_VERSION_linux-yocto ?= "6.12%"
685 685
686.. note:: 686.. note::
687 687
688 When the preferred provider is assumed by default, the :term:`PREFERRED_PROVIDER` 688 When the preferred provider is assumed by default, the :term:`PREFERRED_PROVIDER`
689 statement does not appear in the ``"bsp_root_name".conf`` file. 689 statement does not appear in the ``"bsp_root_name".conf`` file.
690 690
691You would use the ``linux-yocto_4.4.bbappend`` file to append specific 691You would use the ``linux-yocto_6.12.bbappend`` file to append specific
692BSP settings to the kernel, thus configuring the kernel for your 692BSP settings to the kernel, thus configuring the kernel for your
693particular BSP. 693particular BSP.
694 694
@@ -698,14 +698,19 @@ in the Yocto Project Linux Kernel Development Manual.
698 698
699An alternate scenario is when you create your own kernel recipe for the 699An alternate scenario is when you create your own kernel recipe for the
700BSP. A good example of this is the Raspberry Pi BSP. If you examine the 700BSP. A good example of this is the Raspberry Pi BSP. If you examine the
701``recipes-kernel/linux`` directory you see the following:: 701``recipes-kernel/linux`` directory in that layer you see the following
702Raspberry Pi-specific recipes and associated files::
702 703
704 files/
705 linux-raspberrypi_6.12.bb
706 linux-raspberrypi_6.1.bb
707 linux-raspberrypi_6.6.bb
703 linux-raspberrypi-dev.bb 708 linux-raspberrypi-dev.bb
704 linux-raspberrypi.inc 709 linux-raspberrypi.inc
705 linux-raspberrypi_4.14.bb 710 linux-raspberrypi-v7_6.12.bb
706 linux-raspberrypi_4.9.bb 711 linux-raspberrypi-v7_6.1.bb
707 712 linux-raspberrypi-v7_6.6.bb
708The directory contains three kernel recipes and a common include file. 713 linux-raspberrypi-v7.inc
709 714
710Developing a Board Support Package (BSP) 715Developing a Board Support Package (BSP)
711======================================== 716========================================
@@ -1177,7 +1182,7 @@ Use these steps to create a BSP layer:
1177 1182
1178- *Create a Kernel Recipe:* Create a kernel recipe in 1183- *Create a Kernel Recipe:* Create a kernel recipe in
1179 ``recipes-kernel/linux`` by either using a kernel append file or a 1184 ``recipes-kernel/linux`` by either using a kernel append file or a
1180 new custom kernel recipe file (e.g. ``linux-yocto_4.12.bb``). The BSP 1185 new custom kernel recipe file (e.g. ``linux-yocto_6.12.bb``). The BSP
1181 layers mentioned in the previous step also contain different kernel 1186 layers mentioned in the previous step also contain different kernel
1182 examples. See the ":ref:`kernel-dev/common:modifying an existing recipe`" 1187 examples. See the ":ref:`kernel-dev/common:modifying an existing recipe`"
1183 section in the Yocto Project Linux Kernel Development Manual for 1188 section in the Yocto Project Linux Kernel Development Manual for
@@ -1242,7 +1247,7 @@ located in :yocto_git:`poky/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
1242 1247
1243 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" 1248 PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
1244 1249
1245 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules kernel-devicetree" 1250 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
1246 1251
1247 EXTRA_IMAGEDEPENDS += "virtual/bootloader" 1252 EXTRA_IMAGEDEPENDS += "virtual/bootloader"
1248 1253
@@ -1258,23 +1263,21 @@ located in :yocto_git:`poky/meta-yocto-bsp/conf/machine/beaglebone-yocto.conf
1258 SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyO0 115200;ttyAMA0" 1263 SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyO0 115200;ttyAMA0"
1259 1264
1260 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" 1265 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
1261 PREFERRED_VERSION_linux-yocto ?= "6.1%" 1266 PREFERRED_VERSION_linux-yocto ?= "6.12%"
1262 1267
1263 KERNEL_IMAGETYPE = "zImage" 1268 KERNEL_IMAGETYPE = "zImage"
1264 KERNEL_DEVICETREE = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb" 1269 DTB_FILES = "am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb"
1265 KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}" 1270 KERNEL_DEVICETREE = '${@' '.join('ti/omap/%s' % d for d in '${DTB_FILES}'.split())}'
1266 1271
1267 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot" 1272 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
1268 1273
1269 SPL_BINARY = "MLO" 1274 SPL_BINARY = "MLO"
1270 UBOOT_SUFFIX = "img" 1275 UBOOT_SUFFIX = "img"
1271 UBOOT_MACHINE = "am335x_evm_defconfig" 1276 UBOOT_MACHINE = "am335x_evm_defconfig"
1272 UBOOT_ENTRYPOINT = "0x80008000"
1273 UBOOT_LOADADDRESS = "0x80008000"
1274 1277
1275 MACHINE_FEATURES = "usbgadget usbhost vfat alsa" 1278 MACHINE_FEATURES = "usbgadget usbhost vfat alsa"
1276 1279
1277 IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} ${SPL_BINARY} ${KERNEL_IMAGETYPE} ${KERNEL_DEVICETREE}" 1280 IMAGE_BOOT_FILES ?= "u-boot.${UBOOT_SUFFIX} ${SPL_BINARY} ${KERNEL_IMAGETYPE} ${DTB_FILES}"
1278 1281
1279 # support runqemu 1282 # support runqemu
1280 EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native" 1283 EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
@@ -1328,12 +1331,12 @@ Project Reference Manual.
1328 needed in the root filesystem. In this case, the U-Boot recipe must 1331 needed in the root filesystem. In this case, the U-Boot recipe must
1329 be built for the image. 1332 be built for the image.
1330 1333
1331 At the end of the file, we also use this setings to implement 1334 At the end of the file, we also use this setting to implement
1332 ``runqemu`` support on the host machine. 1335 ``runqemu`` support on the host machine.
1333 1336
1334- :term:`DEFAULTTUNE`: Machines 1337- :term:`DEFAULTTUNE`: Machines
1335 use tunings to optimize machine, CPU, and application performance. 1338 use tunings to optimize machine, CPU, and application performance.
1336 These features, which are collectively known as "tuning features", 1339 These features --- collectively known as "tuning features" ---
1337 are set in the :term:`OpenEmbedded-Core (OE-Core)` layer. In this 1340 are set in the :term:`OpenEmbedded-Core (OE-Core)` layer. In this
1338 example, the default tuning file is :oe_git:`tune-cortexa8 1341 example, the default tuning file is :oe_git:`tune-cortexa8
1339 </openembedded-core/tree/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc>`. 1342 </openembedded-core/tree/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc>`.
@@ -1363,8 +1366,7 @@ Project Reference Manual.
1363 to create the sysroot when building a Wic image. 1366 to create the sysroot when building a Wic image.
1364 1367
1365- :term:`SERIAL_CONSOLES`: 1368- :term:`SERIAL_CONSOLES`:
1366 Defines a serial console (TTY) to enable using getty. In this case, 1369 Defines one or more serial consoles (TTYs) to enable using getty.
1367 the baud rate is "115200" and the device name is "ttyO0".
1368 1370
1369- :term:`PREFERRED_PROVIDER_virtual/kernel <PREFERRED_PROVIDER>`: 1371- :term:`PREFERRED_PROVIDER_virtual/kernel <PREFERRED_PROVIDER>`:
1370 Specifies the recipe that provides "virtual/kernel" when more than 1372 Specifies the recipe that provides "virtual/kernel" when more than
@@ -1374,7 +1376,7 @@ Project Reference Manual.
1374 1376
1375- :term:`PREFERRED_VERSION_linux-yocto <PREFERRED_VERSION>`: 1377- :term:`PREFERRED_VERSION_linux-yocto <PREFERRED_VERSION>`:
1376 Defines the version of the recipe used to build the kernel, which is 1378 Defines the version of the recipe used to build the kernel, which is
1377 "6.1" in this case. 1379 "6.12" in this case.
1378 1380
1379- :term:`KERNEL_IMAGETYPE`: 1381- :term:`KERNEL_IMAGETYPE`:
1380 The type of kernel to build for the device. In this case, the 1382 The type of kernel to build for the device. In this case, the
@@ -1416,12 +1418,6 @@ Project Reference Manual.
1416 Specifies the value passed on the make command line when building 1418 Specifies the value passed on the make command line when building
1417 a U-Boot image. 1419 a U-Boot image.
1418 1420
1419 - :term:`UBOOT_ENTRYPOINT`:
1420 Specifies the entry point for the U-Boot image.
1421
1422 - :term:`UBOOT_LOADADDRESS`:
1423 Specifies the load address for the U-Boot image.
1424
1425- :term:`MACHINE_FEATURES`: 1421- :term:`MACHINE_FEATURES`:
1426 Specifies the list of hardware features the BeagleBone device is 1422 Specifies the list of hardware features the BeagleBone device is
1427 capable of supporting. In this case, the device supports "usbgadget 1423 capable of supporting. In this case, the device supports "usbgadget
diff --git a/documentation/conf.py b/documentation/conf.py
index 35c5c14535..1eca8756ab 100644
--- a/documentation/conf.py
+++ b/documentation/conf.py
@@ -13,6 +13,7 @@
13# documentation root, use os.path.abspath to make it absolute, like shown here. 13# documentation root, use os.path.abspath to make it absolute, like shown here.
14# 14#
15import os 15import os
16import re
16import sys 17import sys
17import datetime 18import datetime
18try: 19try:
@@ -90,8 +91,9 @@ rst_prolog = """
90 91
91# external links and substitutions 92# external links and substitutions
92extlinks = { 93extlinks = {
93 'cve': ('https://nvd.nist.gov/vuln/detail/CVE-%s', 'CVE-%s'), 94 'bitbake_git': ('https://git.openembedded.org/bitbake%s', None),
94 'cve_mitre': ('https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-%s', 'CVE-%s'), 95 'cve_mitre': ('https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-%s', 'CVE-%s'),
96 'cve_nist': ('https://nvd.nist.gov/vuln/detail/CVE-%s', 'CVE-%s'),
95 'yocto_home': ('https://www.yoctoproject.org%s', None), 97 'yocto_home': ('https://www.yoctoproject.org%s', None),
96 'yocto_wiki': ('https://wiki.yoctoproject.org/wiki%s', None), 98 'yocto_wiki': ('https://wiki.yoctoproject.org/wiki%s', None),
97 'yocto_dl': ('https://downloads.yoctoproject.org%s', None), 99 'yocto_dl': ('https://downloads.yoctoproject.org%s', None),
@@ -110,6 +112,9 @@ extlinks = {
110 'wikipedia': ('https://en.wikipedia.org/wiki/%s', None), 112 'wikipedia': ('https://en.wikipedia.org/wiki/%s', None),
111} 113}
112 114
115# To be able to use :manpage:`<something>` in the docs.
116manpages_url = 'https://manpages.debian.org/{path}'
117
113# Intersphinx config to use cross reference with BitBake user manual 118# Intersphinx config to use cross reference with BitBake user manual
114intersphinx_mapping = { 119intersphinx_mapping = {
115 'bitbake': ('https://docs.yoctoproject.org/bitbake/' + bitbake_version, None) 120 'bitbake': ('https://docs.yoctoproject.org/bitbake/' + bitbake_version, None)
@@ -135,6 +140,7 @@ except ImportError:
135 sys.exit(1) 140 sys.exit(1)
136 141
137html_logo = 'sphinx-static/YoctoProject_Logo_RGB.jpg' 142html_logo = 'sphinx-static/YoctoProject_Logo_RGB.jpg'
143html_favicon = 'sphinx-static/favicon.ico'
138 144
139# Add any paths that contain custom static files (such as style sheets) here, 145# Add any paths that contain custom static files (such as style sheets) here,
140# relative to this directory. They are copied after the builtin static files, 146# relative to this directory. They are copied after the builtin static files,
@@ -158,11 +164,34 @@ html_last_updated_fmt = '%b %d, %Y'
158# Remove the trailing 'dot' in section numbers 164# Remove the trailing 'dot' in section numbers
159html_secnumber_suffix = " " 165html_secnumber_suffix = " "
160 166
167# We need XeTeX to process special unicode character, sometimes the contributor
168# list from the release note contains those.
169# See https://docs.readthedocs.io/en/stable/guides/pdf-non-ascii-languages.html.
170latex_engine = 'xelatex'
171latex_use_xindy = False
161latex_elements = { 172latex_elements = {
162 'passoptionstopackages': '\\PassOptionsToPackage{bookmarksdepth=5}{hyperref}', 173 'passoptionstopackages': '\\PassOptionsToPackage{bookmarksdepth=5}{hyperref}',
163 'preamble': '\\setcounter{tocdepth}{2}', 174 'preamble': '\\usepackage[UTF8]{ctex}\n\\setcounter{tocdepth}{2}',
164} 175}
165 176
177
178from sphinx.search import SearchEnglish
179from sphinx.search import languages
180class DashFriendlySearchEnglish(SearchEnglish):
181
182 # Accept words that can include hyphens
183 _word_re = re.compile(r'[\w\-]+')
184
185 js_splitter_code = r"""
186function splitQuery(query) {
187 return query
188 .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}-]+/gu)
189 .filter(term => term.length > 0);
190}
191"""
192
193languages['en'] = DashFriendlySearchEnglish
194
166# Make the EPUB builder prefer PNG to SVG because of issues rendering Inkscape SVG 195# Make the EPUB builder prefer PNG to SVG because of issues rendering Inkscape SVG
167from sphinx.builders.epub3 import Epub3Builder 196from sphinx.builders.epub3 import Epub3Builder
168Epub3Builder.supported_image_types = ['image/png', 'image/gif', 'image/jpeg'] 197Epub3Builder.supported_image_types = ['image/png', 'image/gif', 'image/jpeg']
diff --git a/documentation/contributor-guide/recipe-style-guide.rst b/documentation/contributor-guide/recipe-style-guide.rst
index 08d8fb4259..617e202431 100644
--- a/documentation/contributor-guide/recipe-style-guide.rst
+++ b/documentation/contributor-guide/recipe-style-guide.rst
@@ -47,10 +47,10 @@ Debian policy closely.
47 47
48When a recipe references a git revision that does not correspond to a released 48When a recipe references a git revision that does not correspond to a released
49version of software (e.g. is not a tagged version), the :term:`PV` variable 49version of software (e.g. is not a tagged version), the :term:`PV` variable
50should include the Git revision using the following to make the 50should include the sign ``+``, so :term:`bitbake` automatically includes package
51version clear:: 51version information during the packaging phase::
52 52
53 PV = "<version>+git${SRCPV}" 53 PV = "<version>+git"
54 54
55In this case, ``<version>`` should be the most recently released version of the 55In this case, ``<version>`` should be the most recently released version of the
56software from the current source revision (``git describe`` can be useful for 56software from the current source revision (``git describe`` can be useful for
@@ -395,7 +395,7 @@ one CVE is fixed, separate them using spaces.
395CVE Examples 395CVE Examples
396------------ 396------------
397 397
398This should be the header of patch that fixes :cve:`2015-8370` in GRUB2:: 398This should be the header of patch that fixes :cve_nist:`2015-8370` in GRUB2::
399 399
400 grub2: Fix CVE-2015-8370 400 grub2: Fix CVE-2015-8370
401 401
diff --git a/documentation/contributor-guide/submit-changes.rst b/documentation/contributor-guide/submit-changes.rst
index 47a416b245..6d5d69d7cf 100644
--- a/documentation/contributor-guide/submit-changes.rst
+++ b/documentation/contributor-guide/submit-changes.rst
@@ -65,6 +65,13 @@ use to identify your commits::
65 git config --global user.name "Ada Lovelace" 65 git config --global user.name "Ada Lovelace"
66 git config --global user.email "ada.lovelace@gmail.com" 66 git config --global user.email "ada.lovelace@gmail.com"
67 67
68By default, Git adds a signature line at the end of patches containing the Git
69version. We suggest to remove it as it doesn't add useful information.
70
71Remove it with the following command::
72
73 git config --global format.signature ""
74
68Clone the Git repository for the component to modify 75Clone the Git repository for the component to modify
69---------------------------------------------------- 76----------------------------------------------------
70 77
@@ -483,7 +490,7 @@ typical usage of ``git send-email``::
483 git send-email --to <mailing-list-address> *.patch 490 git send-email --to <mailing-list-address> *.patch
484 491
485Then, review each subject line and list of recipients carefully, and then 492Then, review each subject line and list of recipients carefully, and then
486and then allow the command to send each message. 493allow the command to send each message.
487 494
488You will see that ``git send-email`` will automatically copy the people listed 495You will see that ``git send-email`` will automatically copy the people listed
489in any commit tags such as ``Signed-off-by`` or ``Reported-by``. 496in any commit tags such as ``Signed-off-by`` or ``Reported-by``.
@@ -769,6 +776,38 @@ argument to ``git format-patch`` with a version number::
769 776
770 git format-patch -v2 <ref-branch> 777 git format-patch -v2 <ref-branch>
771 778
779
780After generating updated patches (v2, v3, and so on) via ``git
781format-patch``, ideally developers will add a patch version changelog
782to each patch that describes what has changed between each revision of
783the patch. Add patch version changelogs after the ``---`` marker in the
784patch, indicating that this information is part of this patch, but is not
785suitable for inclusion in the commit message (i.e. the git history) itself.
786Providing a patch version changelog makes it easier for maintainers and
787reviewers to succinctly understand what changed in all versions of the
788patch, without having to consult alternate sources of information, such as
789searching through messages on a mailing list. For example::
790
791 <patch title>
792
793 <commit message>
794
795 <Signed-off-by/other trailers>
796 ---
797 changes in v4:
798 - provide a clearer commit message
799 - fix spelling mistakes
800
801 changes in v3:
802 - replace func() to use other_func() instead
803
804 changes in v2:
805 - this patch was added in v2
806 ---
807 <diffstat output>
808
809 <unified diff>
810
772Lastly please ensure that you also test your revised changes. In particular 811Lastly please ensure that you also test your revised changes. In particular
773please don't just edit the patch file written out by ``git format-patch`` and 812please don't just edit the patch file written out by ``git format-patch`` and
774resend it. 813resend it.
@@ -825,3 +864,52 @@ Other layers may have similar testing branches but there is no formal
825requirement or standard for these so please check the documentation for the 864requirement or standard for these so please check the documentation for the
826layers you are contributing to. 865layers you are contributing to.
827 866
867Acceptance of AI Generated Code
868===============================
869
870The Yocto Project and OpenEmbedded follow the guidance of the Linux Foundation
871in regards to the use of generative AI tools. See:
872https://www.linuxfoundation.org/legal/generative-ai.
873
874All of the existing guidelines in this document are expected to be followed,
875including in the :doc:`recipe-style-guide`, and contributing the changes with
876additional requirements to the items in section
877:ref:`contributor-guide/submit-changes:Implement and commit changes`.
878
879All AI Generated Code must be labeled as such in the commit message,
880prior to your ``Signed-off-by`` line. It is also strongly recommended,
881that any patches or code within the commit also have a comment or other
882indication that this code was AI generated.
883
884For example, here is a properly formatted commit message::
885
886 component: Add the ability to ...
887
888 AI-Generated: Uses GitHub Copilot
889
890 Signed-off-by: Your Name <your.name@domain>
891
892The ``Signed-off-by`` line must be written by you, and not the AI helper.
893As a reminder, when contributing a change, your ``Signed-off-by`` line is
894required and the stipulations in the `Developer's Statement of Origin
8951.1 <https://developercertificate.org/>`__ still apply.
896
897Additionally, you must stipulate AI contributions conform to the Linux
898Foundation policy, specifically:
899
900#. Contributors should ensure that the terms and conditions of the generative AI
901 tool do not place any contractual restrictions on how the tool's output can
902 be used that are inconsistent with the project's open source software
903 license, the project's intellectual property policies, or the Open Source
904 Definition.
905
906#. If any pre-existing copyrighted materials (including pre-existing open
907 source code) authored or owned by third parties are included in the AI tool's
908 output, prior to contributing such output to the project, the Contributor
909 should confirm that they have permission from the third party
910 owners -- such as the form of an open source license or public domain
911 declaration that complies with the project's licensing policies -- to use and
912 modify such pre-existing materials and contribute them to the project.
913 Additionally, the contributor should provide notice and attribution of such
914 third party rights, along with information about the applicable license
915 terms, with their contribution.
diff --git a/documentation/dev-manual/bblock.rst b/documentation/dev-manual/bblock.rst
new file mode 100644
index 0000000000..605bb75655
--- /dev/null
+++ b/documentation/dev-manual/bblock.rst
@@ -0,0 +1,129 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Locking and Unlocking Recipes Using ``bblock``
4**********************************************
5
6By design, the OpenEmbedded build system builds everything from scratch
7unless BitBake determines that specific tasks do not require rebuilding.
8At startup, it computes a signature for all tasks, based on the task's input.
9Then, it compares these signatures with the ones from the sstate cache (if they
10exist). Any changes cause the task to rerun.
11
12During development, changes might trigger BitBake to rebuild certain
13recipes, even when we know they do not require rebuilding at that stage.
14For example, modifying a recipe can lead to rebuilding its native
15counterpart, which might prove unnecessary. Editing the ``python3`` recipe,
16for instance, can prompt BitBake to rebuild ``python3-native`` along with any
17recipes that depend on it.
18
19To prevent this, use ``bblock`` to lock specific tasks or recipes to
20specific signatures, forcing BitBake to use the sstate cache for them.
21
22.. warning::
23
24 Use ``bblock`` only during the development phase.
25
26 Forcing BitBake to use the sstate cache, regardless of input changes, means
27 the recipe metadata no longer directly reflect the output. Use this feature
28 with caution. If you do not understand why signatures change, see the section
29 on :yocto_wiki:`understanding what changed </TipsAndTricks/Understanding_what_changed_(diffsigs_etc)>`.
30
31
32Locking tasks and recipes
33-------------------------
34
35To lock a recipe, use::
36
37 $ bblock recipe
38
39You can also use a space-separated list of recipes to lock multiple recipes::
40
41 $ bblock recipe1 recipe2
42
43Locking a recipe means locking all tasks of the recipe. If you need to
44lock only particular tasks, use the `-t` option with a comma-separated
45list of tasks::
46
47 $ bblock -t task1,task2 recipe
48
49
50Unlocking tasks and recipes
51---------------------------
52
53To unlock a recipe, use the ``-r`` option::
54
55 $ bblock -r recipe
56
57You can also use a space-separated list of recipes to unlock multiple recipes::
58
59 $ bblock -r recipe1 recipe2
60
61Unlocking a recipe means unlocking all tasks of the recipe. If you need to
62unlock only particular tasks use the ``-t`` option with a comma-separated
63list of tasks::
64
65 $ bblock -r -t task1,task2 recipe
66
67To unlock all recipes, do not specify any recipe::
68
69 $ bblock -r
70
71
72Configuration file
73------------------
74
75``bblock`` will dump the signatures in the ``build/conf/bblock.conf`` file,
76included by default in :oe_git:`meta/conf/bitbake.conf </openembedded-core/tree/meta/conf/bitbake.conf>`.
77
78To dump the file, use the ``-d`` option::
79
80 $ bblock -d
81
82
83Locking mechanism
84-----------------
85
86``bblock`` computes the signature(s) of the task(s) and sets the 3 following
87variables: :term:`SIGGEN_LOCKEDSIGS`, :term:`SIGGEN_LOCKEDSIGS_TYPES`
88and :term:`SIGGEN_LOCKEDSIGS_TASKSIG_CHECK`.
89
90In particular, ``bblock`` sets::
91
92 SIGGEN_LOCKEDSIGS_TASKSIG_CHECK = "info"
93 SIGGEN_LOCKEDSIGS_TYPES += "${PACKAGE_ARCHS}"
94
95 SIGGEN_LOCKEDSIGS_<package_arch> += "<recipe>:<task>:<signature>"
96
97This produces architecture specific locks and reminds user that some tasks
98have locked signatures.
99
100Example
101-------
102
103When working on the ``python3`` recipe, we can lock ``python3-native`` with
104the following::
105
106 $ bblock python3-native
107 $ bblock -d
108 # Generated by bblock
109 SIGGEN_LOCKEDSIGS_TASKSIG_CHECK = "info"
110 SIGGEN_LOCKEDSIGS_TYPES += "${PACKAGE_ARCHS}"
111
112 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_patch:865859c27e603ba42025b7bb766c3cd4c0f477e4962cfd39128c0619d695fce7"
113 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_populate_sysroot:f8fa5d3194cef638416000252b959e86d0a19f6b7898e1f56b643c588cdd8605"
114 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_prepare_recipe_sysroot:fe295ac505d9d1143313424b201c6f3f2a0a90da40a13a905b86b874705f226a"
115 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_fetch:1b6e4728fee631bc7a8a7006855c5b8182a8224579e32e3d0a2db77c26459f25"
116 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_unpack:2ad74d6f865ef75c35c0e6bbe3f9a90923a6b2c62c18a3ddef514ea31fbc588f"
117 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_deploy_source_date_epoch:15f89b8483c1ad7507480f337619bb98c26e231227785eb3543db163593e7b42"
118 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_configure:7960c13d23270fdb12b3a7c426ce1da0d2f5c7cf5e5d3f5bdce5fa330eb7d482"
119 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_compile:012e1d4a63f1a78fc2143bd90d704dbcf5865c5257d6272aa7540ec1cd3063d9"
120 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_install:d3401cc2afa4c996beb154beaad3e45fa0272b9c56fb86e9db14ec3544c68f9d"
121 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_build:fa88bb7afb9046c0417c24a3fa98a058653805a8b00eda2c2d7fea68fc42f882"
122 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_collect_spdx_deps:cc9c53ba7c495567e9a38ec4801830c425c0d1f895aa2fc66930a2edd510d9b4"
123 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_create_spdx:766a1d09368438b7b5a1a8e2a8f823b2b731db44b57e67d8b3196de91966f9c5"
124 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_create_package_spdx:46f80faeab25575e9977ba3bf14c819489c3d489432ae5145255635108c21020"
125 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_recipe_qa:cb960cdb074e7944e894958db58f3dc2a0436ecf87c247feb3e095e214fec0e4"
126 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_populate_lic:15657441621ee83f15c2e650e7edbb036870b56f55e72e046c6142da3c5783fd"
127 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_create_manifest:24f0abbec221d27bbb2909b6e846288b12cab419f1faf9f5006ed80423d37e28"
128 SIGGEN_LOCKEDSIGS_x86_64 += "python3-native:do_addto_recipe_sysroot:bcb6a1905f113128de3f88d702b706befd6a786267c045ee82532759a7c214d7"
129
diff --git a/documentation/dev-manual/bmaptool.rst b/documentation/dev-manual/bmaptool.rst
index f6f0e6afaf..87162a49c9 100644
--- a/documentation/dev-manual/bmaptool.rst
+++ b/documentation/dev-manual/bmaptool.rst
@@ -1,13 +1,13 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK 1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2 2
3Flashing Images Using ``bmaptool`` 3Flashing Images Using `bmaptool`
4********************************** 4********************************
5 5
6A fast and easy way to flash an image to a bootable device is to use 6A fast and easy way to flash an image to a bootable device is to use
7bmaptool, which is integrated into the OpenEmbedded build system. 7`bmaptool`, which is integrated into the OpenEmbedded build system.
8bmaptool is a generic tool that creates a file's block map (bmap) and 8`bmaptool` is a generic tool that creates a file's block map (bmap) and
9then uses that map to copy the file. As compared to traditional tools 9then uses that map to copy the file. As compared to traditional tools
10such as dd or cp, bmaptool can copy (or flash) large files like raw 10such as `dd` or `cp`, `bmaptool` can copy (or flash) large files like raw
11system image files much faster. 11system image files much faster.
12 12
13.. note:: 13.. note::
@@ -20,13 +20,13 @@ system image files much faster.
20 $ sudo apt install bmap-tools 20 $ sudo apt install bmap-tools
21 21
22 - If you are unable to install the ``bmap-tools`` package, you will 22 - If you are unable to install the ``bmap-tools`` package, you will
23 need to build bmaptool before using it. Use the following command:: 23 need to build `bmaptool` before using it. Use the following command::
24 24
25 $ bitbake bmaptool-native 25 $ bitbake bmaptool-native -caddto_recipe_sysroot
26 26
27Following, is an example that shows how to flash a Wic image. Realize 27Following, is an example that shows how to flash a Wic image. Realize
28that while this example uses a Wic image, you can use bmaptool to flash 28that while this example uses a Wic image, you can use `bmaptool` to flash
29any type of image. Use these steps to flash an image using bmaptool: 29any type of image. Use these steps to flash an image using `bmaptool`:
30 30
31#. *Update your local.conf File:* You need to have the following set 31#. *Update your local.conf File:* You need to have the following set
32 in your ``local.conf`` file before building your image:: 32 in your ``local.conf`` file before building your image::
@@ -39,18 +39,17 @@ any type of image. Use these steps to flash an image using bmaptool:
39 39
40 $ bitbake image 40 $ bitbake image
41 41
42#. *Flash the Device:* Flash the device with the image by using bmaptool 42#. *Flash the Device:* Flash the device with the image by using `bmaptool`
43 depending on your particular setup. The following commands assume the 43 depending on your particular setup. The following commands assume the
44 image resides in the :term:`Build Directory`'s ``deploy/images/`` area: 44 image resides in the :term:`Build Directory`'s ``deploy/images/`` area:
45 45
46 - If you have write access to the media, use this command form:: 46 - If you installed the package for `bmaptool`, you can directly run::
47 47
48 $ oe-run-native bmaptool-native bmaptool copy build-directory/tmp/deploy/images/machine/image.wic /dev/sdX 48 $ sudo bmaptool copy build-directory/tmp/deploy/images/machine/image.wic /dev/sdX
49 49
50 - If you do not have write access to the media, set your permissions 50 - Otherwise, if you built `bmaptool` with BitBake, run::
51 first and then use the same command form::
52 51
53 $ sudo chmod 666 /dev/sdX 52 $ sudo chmod a+w /dev/sdX # get write access to the media, needed only once after booting
54 $ oe-run-native bmaptool-native bmaptool copy build-directory/tmp/deploy/images/machine/image.wic /dev/sdX 53 $ oe-run-native bmaptool-native bmaptool copy build-directory/tmp/deploy/images/machine/image.wic /dev/sdX
55 54
56For help on the ``bmaptool`` command, use the following command:: 55For help on the ``bmaptool`` command, use the following command::
diff --git a/documentation/dev-manual/building.rst b/documentation/dev-manual/building.rst
index fe502690dd..4770a5a184 100644
--- a/documentation/dev-manual/building.rst
+++ b/documentation/dev-manual/building.rst
@@ -280,7 +280,9 @@ Follow these steps to create an :term:`Initramfs` image:
280#. *Create the Initramfs Image Recipe:* You can reference the 280#. *Create the Initramfs Image Recipe:* You can reference the
281 ``core-image-minimal-initramfs.bb`` recipe found in the 281 ``core-image-minimal-initramfs.bb`` recipe found in the
282 ``meta/recipes-core`` directory of the :term:`Source Directory` 282 ``meta/recipes-core`` directory of the :term:`Source Directory`
283 as an example from which to work. 283 as an example from which to work. The ``core-image-minimal-initramfs`` recipe
284 is based on the :ref:`initramfs-framework <dev-manual/building:Customizing an
285 Initramfs using \`\`initramfs-framework\`\`>` recipe described below.
284 286
285#. *Decide if You Need to Bundle the Initramfs Image Into the Kernel 287#. *Decide if You Need to Bundle the Initramfs Image Into the Kernel
286 Image:* If you want the :term:`Initramfs` image that is built to be bundled 288 Image:* If you want the :term:`Initramfs` image that is built to be bundled
@@ -308,6 +310,86 @@ Follow these steps to create an :term:`Initramfs` image:
308 and bundled with the kernel image if you used the 310 and bundled with the kernel image if you used the
309 :term:`INITRAMFS_IMAGE_BUNDLE` variable described earlier. 311 :term:`INITRAMFS_IMAGE_BUNDLE` variable described earlier.
310 312
313Customizing an Initramfs using ``initramfs-framework``
314------------------------------------------------------
315
316The ``core-image-minimal-initramfs.bb`` recipe found in
317:oe_git:`meta/recipes-core/images
318</openembedded-core/tree/meta/recipes-core/images>` uses the
319:oe_git:`initramfs-framework_1.0.bb
320</openembedded-core/tree/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb>`
321recipe as its base component. The goal of the ``initramfs-framework`` recipe is
322to provide the building blocks to build a customized :term:`Initramfs`.
323
324The ``initramfs-framework`` recipe relies on shell initialization scripts
325defined in :oe_git:`meta/recipes-core/initrdscripts/initramfs-framework
326</openembedded-core/tree/meta/recipes-core/initrdscripts/initramfs-framework>`. Since some of
327these scripts do not apply for all use cases, the ``initramfs-framework`` recipe
328defines different packages:
329
330- ``initramfs-framework-base``: this package installs the basic components of
331 an :term:`Initramfs`, such as the ``init`` script or the ``/dev/console``
332 character special file. As this package is a runtime dependency of all
333 modules listed below, it is automatically pulled in when one of the modules
334 is installed in the image.
335- ``initramfs-module-exec``: support for execution of applications.
336- ``initramfs-module-mdev``: support for `mdev
337 <https://wiki.gentoo.org/wiki/Mdev>`__.
338- ``initramfs-module-udev``: support for :wikipedia:`Udev <Udev>`.
339- ``initramfs-module-e2fs``: support for :wikipedia:`ext4/ext3/ext2
340 <Extended_file_system>` filesystems.
341- ``initramfs-module-nfsrootfs``: support for locating and mounting the root
342 partition via :wikipedia:`NFS <Network_File_System>`.
343- ``initramfs-module-rootfs``: support for locating and mounting the root
344 partition.
345- ``initramfs-module-debug``: dynamic debug support.
346- ``initramfs-module-lvm``: :wikipedia:`LVM <Logical_volume_management>` rootfs support.
347- ``initramfs-module-overlayroot``: support for mounting a read-write overlay
348 on top of a read-only root filesystem.
349
350In addition to the packages defined by the ``initramfs-framework`` recipe
351itself, the following packages are defined by the recipes present in
352:oe_git:`meta/recipes-core/initrdscripts </openembedded-core/tree/meta/recipes-core/initrdscripts>`:
353
354- ``initramfs-module-install``: module to create and install a partition layout
355 on a selected block device.
356- ``initramfs-module-install-efi``: module to create and install an EFI
357 partition layout on a selected block device.
358- ``initramfs-module-setup-live``: module to start a shell in the
359 :term:`Initramfs` if ``root=/dev/ram0`` in passed in the `Kernel command-line
360 <https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html>`__
361 or the ``root=`` parameter was not passed.
362
363To customize the :term:`Initramfs`, you can add or remove packages listed
364earlier from the :term:`PACKAGE_INSTALL` variable with a :ref:`bbappend
365<dev-manual/layers:Appending Other Layers Metadata With Your Layer>` on the
366``core-image-minimal-initramfs`` recipe, or create a custom recipe for the
367:term:`Initramfs` taking ``core-image-minimal-initramfs`` as example.
368
369Custom scripts can be added to the :term:`Initramfs` by writing your own
370recipes. The recipes are conventionally named ``initramfs-module-<module name>``
371where ``<module name>`` is the name of the module. The recipe should set its
372:term:`RDEPENDS` package-specific variables to include
373``initramfs-framework-base`` and the other packages on which the module depends
374at runtime.
375
376The recipe must install shell initialization scripts in :term:`${D} <D>`\
377``/init.d`` and must follow the ``<number>-<script name>`` naming scheme where:
378
379- ``<number>`` is a *two-digit* number that affects the execution order of the
380 script compared to others. For example, the script ``80-setup-live`` would be
381 executed after ``01-udev`` because 80 is greater than 01.
382
383 This number being two-digits is important here as the scripts are executed
384 alphabetically. For example, the script ``10-script`` would be executed
385 before the script ``8-script``, because ``1`` is inferior to ``8``.
386 Therefore, the script should be named ``08-script``.
387
388- ``<script name>`` is the script name which you can choose freely.
389
390 If two script use the same ``<number>``, they are sorted alphabetically based
391 on ``<script name>``.
392
311Bundling an Initramfs Image From a Separate Multiconfig 393Bundling an Initramfs Image From a Separate Multiconfig
312------------------------------------------------------- 394-------------------------------------------------------
313 395
diff --git a/documentation/dev-manual/customizing-images.rst b/documentation/dev-manual/customizing-images.rst
index 5b18958ade..53cad9c79c 100644
--- a/documentation/dev-manual/customizing-images.rst
+++ b/documentation/dev-manual/customizing-images.rst
@@ -80,15 +80,14 @@ recipe that are enabled with :term:`IMAGE_FEATURES`. The value of
80:term:`EXTRA_IMAGE_FEATURES` is added to :term:`IMAGE_FEATURES` within 80:term:`EXTRA_IMAGE_FEATURES` is added to :term:`IMAGE_FEATURES` within
81``meta/conf/bitbake.conf``. 81``meta/conf/bitbake.conf``.
82 82
83To illustrate how you can use these variables to modify your image, 83To illustrate how you can use these variables to modify your image, consider an
84consider an example that selects the SSH server. The Yocto Project ships 84example that selects the SSH server. The Yocto Project ships with two SSH
85with two SSH servers you can use with your images: Dropbear and OpenSSH. 85servers you can use with your images: Dropbear and OpenSSH. Dropbear is a
86Dropbear is a minimal SSH server appropriate for resource-constrained 86minimal SSH server appropriate for resource-constrained environments, while
87environments, while OpenSSH is a well-known standard SSH server 87OpenSSH is a well-known standard SSH server implementation. By default, the
88implementation. By default, the ``core-image-sato`` image is configured 88``core-image-sato`` image is configured to use Dropbear. The
89to use Dropbear. The ``core-image-full-cmdline`` and ``core-image-lsb`` 89``core-image-full-cmdline`` image includes OpenSSH. The ``core-image-minimal``
90images both include OpenSSH. The ``core-image-minimal`` image does not 90image does not contain an SSH server.
91contain an SSH server.
92 91
93You can customize your image and change these defaults. Edit the 92You can customize your image and change these defaults. Edit the
94:term:`IMAGE_FEATURES` variable in your recipe or use the 93:term:`IMAGE_FEATURES` variable in your recipe or use the
diff --git a/documentation/dev-manual/debugging.rst b/documentation/dev-manual/debugging.rst
index 92458a0c37..8552b26aea 100644
--- a/documentation/dev-manual/debugging.rst
+++ b/documentation/dev-manual/debugging.rst
@@ -36,7 +36,7 @@ section:
36 use the BitBake ``-e`` option to examine variable values after a 36 use the BitBake ``-e`` option to examine variable values after a
37 recipe has been parsed. 37 recipe has been parsed.
38 38
39- ":ref:`dev-manual/debugging:viewing package information with \`\`oe-pkgdata-util\`\``" 39- ":ref:`dev-manual/debugging:viewing package information with ``oe-pkgdata-util```"
40 describes how to use the ``oe-pkgdata-util`` utility to query 40 describes how to use the ``oe-pkgdata-util`` utility to query
41 :term:`PKGDATA_DIR` and 41 :term:`PKGDATA_DIR` and
42 display package-related information for built packages. 42 display package-related information for built packages.
diff --git a/documentation/dev-manual/external-scm.rst b/documentation/dev-manual/external-scm.rst
index 97a7e63e36..896b1b5ac7 100644
--- a/documentation/dev-manual/external-scm.rst
+++ b/documentation/dev-manual/external-scm.rst
@@ -12,10 +12,13 @@ revision number for changes. Currently, you can do this with Apache
12Subversion (SVN), Git, and Bazaar (BZR) repositories. 12Subversion (SVN), Git, and Bazaar (BZR) repositories.
13 13
14To enable this behavior, the :term:`PV` of 14To enable this behavior, the :term:`PV` of
15the recipe needs to reference 15the recipe needs to include a ``+`` sign in its assignment.
16:term:`SRCPV`. Here is an example:: 16Here is an example::
17 17
18 PV = "1.2.3+git${SRCPV}" 18 PV = "1.2.3+git"
19
20:term:`Bitbake` later includes the source control information in :term:`PKGV`
21during the packaging phase.
19 22
20Then, you can add the following to your 23Then, you can add the following to your
21``local.conf``:: 24``local.conf``::
diff --git a/documentation/dev-manual/index.rst b/documentation/dev-manual/index.rst
index 9ccf60f701..8243c0f4cb 100644
--- a/documentation/dev-manual/index.rst
+++ b/documentation/dev-manual/index.rst
@@ -39,7 +39,6 @@ Yocto Project Development Tasks Manual
39 external-scm 39 external-scm
40 read-only-rootfs 40 read-only-rootfs
41 build-quality 41 build-quality
42 runtime-testing
43 debugging 42 debugging
44 licenses 43 licenses
45 security-subjects 44 security-subjects
@@ -48,5 +47,6 @@ Yocto Project Development Tasks Manual
48 error-reporting-tool 47 error-reporting-tool
49 wayland 48 wayland
50 qemu 49 qemu
50 bblock
51 51
52.. include:: /boilerplate.rst 52.. include:: /boilerplate.rst
diff --git a/documentation/dev-manual/layers.rst b/documentation/dev-manual/layers.rst
index 91889bd0ae..89c8466933 100644
--- a/documentation/dev-manual/layers.rst
+++ b/documentation/dev-manual/layers.rst
@@ -644,6 +644,96 @@ variable and append the layer's root name::
644 order of ``.conf`` or ``.bbclass`` files. Future versions of BitBake 644 order of ``.conf`` or ``.bbclass`` files. Future versions of BitBake
645 might address this. 645 might address this.
646 646
647Providing Global-level Configurations With Your Layer
648-----------------------------------------------------
649
650When creating a layer, you may need to define configurations that should take
651effect globally in your build environment when the layer is part of the build.
652The ``layer.conf`` file is a :term:`configuration file` that affects the build
653system globally, so it is a candidate for this use-case.
654
655.. warning::
656
657 Providing unconditional global level configuration from the ``layer.conf``
658 file is *not* a good practice, and should be avoided. For this reason, the
659 section :ref:`ref-conditional-layer-confs` below shows how the ``layer.conf``
660 file can be used to provide configurations only if a certain condition is
661 met.
662
663For example, if your layer provides a Linux kernel recipe named
664``linux-custom``, you may want to make :term:`PREFERRED_PROVIDER_virtual/kernel
665<PREFERRED_PROVIDER>` point to ``linux-custom``::
666
667 PREFERRED_PROVIDER_virtual/kernel = "linux-custom"
668
669This can be defined in the ``layer.conf`` file. If your layer is at the last
670position in the :term:`BBLAYERS` list, it will take precedence over previous
671``PREFERRED_PROVIDER_virtual/kernel`` assignments (unless one is set from a
672:term:`configuration file` that is parsed later, such as machine or distro
673configuration files).
674
675.. _ref-conditional-layer-confs:
676
677Conditionally Provide Global-level Configurations With Your Layer
678^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
679
680In some cases, your layer may provide global configurations only if some
681features it provides are enabled. Since the ``layer.conf`` file is parsed at an
682earlier stage in the parsing process, the :term:`DISTRO_FEATURES` and
683:term:`MACHINE_FEATURES` variables are not yet available to ``layer.conf``, and
684declaring conditional assignments based on these variables is not possible. The
685following technique shows a way to bypass this limitation by using the
686:term:`USER_CLASSES` variable and a conditional ``require`` command.
687
688In the following steps, let's assume our layer is named ``meta-mylayer`` and
689that this layer defines a custom :ref:`distro feature <ref-features-distro>`
690named ``mylayer-kernel``. We will set the :term:`PREFERRED_PROVIDER` variable
691for the kernel only if our feature ``mylayer-kernel`` is part of the
692:term:`DISTRO_FEATURES`:
693
694#. Create an include file in the directory
695 ``meta-mylayer/conf/distro/include/``, for example a file named
696 ``mylayer-kernel-provider.inc`` that sets the kernel provider to
697 ``linux-custom``::
698
699 PREFERRED_PROVIDER_virtual/kernel = "linux-custom"
700
701#. Provide a path to this include file in your ``layer.conf``::
702
703 META_MYLAYER_KERNEL_PROVIDER_PATH = "${LAYERDIR}/conf/distro/include/mylayer-kernel-provider.inc"
704
705#. Create a new class in ``meta-mylayer/classes-global/``, for example a class
706 ``meta-mylayer-cfg.bbclass``. Make it conditionally require the file
707 ``mylayer-kernel-provider.inc`` defined above, using the variable
708 ``META_MYLAYER_KERNEL_PROVIDER_PATH`` defined in ``layer.conf``::
709
710 require ${@bb.utils.contains('DISTRO_FEATURES', 'mylayer-kernel', '${META_MYLAYER_KERNEL_PROVIDER_PATH}', '', d)}
711
712 For details on the ``bb.utils.contains`` function, see its definition in
713 :bitbake_git:`lib/bb/utils.py </tree/lib/bb/utils.py>`.
714
715 .. note::
716
717 The ``require`` command is designed to not fail if the function
718 ``bb.utils.contains`` returns an empty string.
719
720#. Back to your ``layer.conf`` file, add the class ``meta-mylayer-cfg`` class to
721 the :term:`USER_CLASSES` variable::
722
723 USER_CLASSES:append = " meta-mylayer-cfg"
724
725 This will add the class ``meta-mylayer-cfg`` to the list of classes to
726 globally inherit. Since the ``require`` command is conditional in
727 ``meta-mylayer-cfg.bbclass``, even though inherited the class will have no
728 effect unless the feature ``mylayer-kernel`` is enabled through
729 :term:`DISTRO_FEATURES`.
730
731This technique can also be used for :ref:`Machine features
732<ref-features-machine>` by following the same steps. Though not mandatory, it is
733recommended to put include files for :term:`DISTRO_FEATURES` in your layer's
734``conf/distro/include`` and the ones for :term:`MACHINE_FEATURES` in your
735layer's ``conf/machine/include``.
736
647Managing Layers 737Managing Layers
648=============== 738===============
649 739
diff --git a/documentation/dev-manual/new-recipe.rst b/documentation/dev-manual/new-recipe.rst
index 61fc2eb122..af88db937b 100644
--- a/documentation/dev-manual/new-recipe.rst
+++ b/documentation/dev-manual/new-recipe.rst
@@ -56,7 +56,7 @@ necessary when adding a recipe to build a new piece of software to be
56included in a build. 56included in a build.
57 57
58You can find a complete description of the ``devtool add`` command in 58You can find a complete description of the ``devtool add`` command in
59the ":ref:`sdk-manual/extensible:a closer look at \`\`devtool add\`\``" section 59the ":ref:`sdk-manual/extensible:a closer look at ``devtool add```" section
60in the Yocto Project Application Development and the Extensible Software 60in the Yocto Project Application Development and the Extensible Software
61Development Kit (eSDK) manual. 61Development Kit (eSDK) manual.
62 62
@@ -291,13 +291,13 @@ another example that specifies these types of files, see the
291 291
292Another way of specifying source is from an SCM. For Git repositories, 292Another way of specifying source is from an SCM. For Git repositories,
293you must specify :term:`SRCREV` and you should specify :term:`PV` to include 293you must specify :term:`SRCREV` and you should specify :term:`PV` to include
294the revision with :term:`SRCPV`. Here is an example from the recipe 294a ``+`` sign in its definition. Here is an example from the recipe
295``meta/recipes-core/musl/gcompat_git.bb``:: 295:oe_git:`meta/recipes-sato/l3afpad/l3afpad_git.bb </openembedded-core/tree/meta/recipes-sato/l3afpad/l3afpad_git.bb>`::
296 296
297 SRC_URI = "git://git.adelielinux.org/adelie/gcompat.git;protocol=https;branch=current" 297 SRC_URI = "git://github.com/stevenhoneyman/l3afpad.git;branch=master;protocol=https"
298 298
299 PV = "1.0.0+1.1+git${SRCPV}" 299 PV = "0.8.18.1.11+git"
300 SRCREV = "af5a49e489fdc04b9cf02547650d7aeaccd43793" 300 SRCREV ="3cdccdc9505643e50f8208171d9eee5de11a42ff"
301 301
302If your :term:`SRC_URI` statement includes URLs pointing to individual files 302If your :term:`SRC_URI` statement includes URLs pointing to individual files
303fetched from a remote server other than a version control system, 303fetched from a remote server other than a version control system,
diff --git a/documentation/dev-manual/packages.rst b/documentation/dev-manual/packages.rst
index e5028fffdc..4ba2dcae3a 100644
--- a/documentation/dev-manual/packages.rst
+++ b/documentation/dev-manual/packages.rst
@@ -16,7 +16,7 @@ This section describes a few tasks that involve packages:
16- :ref:`dev-manual/packages:generating and using signed packages` 16- :ref:`dev-manual/packages:generating and using signed packages`
17 17
18- :ref:`Setting up and running package test 18- :ref:`Setting up and running package test
19 (ptest) <dev-manual/packages:testing packages with ptest>` 19 (ptest) <test-manual/ptest:testing packages with ptest>`
20 20
21- :ref:`dev-manual/packages:creating node package manager (npm) packages` 21- :ref:`dev-manual/packages:creating node package manager (npm) packages`
22 22
@@ -84,10 +84,6 @@ the following:
84 84
85- :term:`PR`: The recipe revision. 85- :term:`PR`: The recipe revision.
86 86
87- :term:`SRCPV`: The OpenEmbedded
88 build system uses this string to help define the value of :term:`PV` when
89 the source code revision needs to be included in it.
90
91- :yocto_wiki:`PR Service </PR_Service>`: A 87- :yocto_wiki:`PR Service </PR_Service>`: A
92 network-based service that helps automate keeping package feeds 88 network-based service that helps automate keeping package feeds
93 compatible with existing package manager applications such as RPM, 89 compatible with existing package manager applications such as RPM,
@@ -256,15 +252,14 @@ the software::
256 252
257 SRCREV = "${AUTOREV}" 253 SRCREV = "${AUTOREV}"
258 254
259Furthermore, you need to reference :term:`SRCPV` in :term:`PV` in order to 255Furthermore, you need to include a ``+`` sign in :term:`PV` in order to
260automatically update the version whenever the revision of the source 256automatically update the version whenever the revision of the source
261code changes. Here is an example:: 257code changes. Here is an example::
262 258
263 PV = "1.0+git${SRCPV}" 259 PV = "1.0+git"
264
265The OpenEmbedded build system substitutes :term:`SRCPV` with the following:
266 260
267.. code-block:: none 261The OpenEmbedded build system will automatically add the source control
262information to the end of the variable :term:`PKGV`, in this format::
268 263
269 AUTOINC+source_code_revision 264 AUTOINC+source_code_revision
270 265
@@ -887,114 +882,8 @@ related to signed package feeds are available:
887Testing Packages With ptest 882Testing Packages With ptest
888=========================== 883===========================
889 884
890A Package Test (ptest) runs tests against packages built by the 885See the :ref:`test-manual/ptest:Testing Packages With ptest` section of the
891OpenEmbedded build system on the target machine. A ptest contains at 886Yocto Project Test Environment Manual.
892least two items: the actual test, and a shell script (``run-ptest``)
893that starts the test. The shell script that starts the test must not
894contain the actual test --- the script only starts the test. On the other
895hand, the test can be anything from a simple shell script that runs a
896binary and checks the output to an elaborate system of test binaries and
897data files.
898
899The test generates output in the format used by Automake::
900
901 result: testname
902
903where the result can be ``PASS``, ``FAIL``, or ``SKIP``, and
904the testname can be any identifying string.
905
906For a list of Yocto Project recipes that are already enabled with ptest,
907see the :yocto_wiki:`Ptest </Ptest>` wiki page.
908
909.. note::
910
911 A recipe is "ptest-enabled" if it inherits the :ref:`ref-classes-ptest`
912 class.
913
914Adding ptest to Your Build
915--------------------------
916
917To add package testing to your build, add the :term:`DISTRO_FEATURES` and
918:term:`EXTRA_IMAGE_FEATURES` variables to your ``local.conf`` file, which
919is found in the :term:`Build Directory`::
920
921 DISTRO_FEATURES:append = " ptest"
922 EXTRA_IMAGE_FEATURES += "ptest-pkgs"
923
924Once your build is complete, the ptest files are installed into the
925``/usr/lib/package/ptest`` directory within the image, where ``package``
926is the name of the package.
927
928Running ptest
929-------------
930
931The ``ptest-runner`` package installs a shell script that loops through
932all installed ptest test suites and runs them in sequence. Consequently,
933you might want to add this package to your image.
934
935Getting Your Package Ready
936--------------------------
937
938In order to enable a recipe to run installed ptests on target hardware,
939you need to prepare the recipes that build the packages you want to
940test. Here is what you have to do for each recipe:
941
942- *Be sure the recipe inherits the* :ref:`ref-classes-ptest` *class:*
943 Include the following line in each recipe::
944
945 inherit ptest
946
947- *Create run-ptest:* This script starts your test. Locate the
948 script where you will refer to it using
949 :term:`SRC_URI`. Here is an
950 example that starts a test for ``dbus``::
951
952 #!/bin/sh
953 cd test
954 make -k runtest-TESTS
955
956- *Ensure dependencies are met:* If the test adds build or runtime
957 dependencies that normally do not exist for the package (such as
958 requiring "make" to run the test suite), use the
959 :term:`DEPENDS` and
960 :term:`RDEPENDS` variables in
961 your recipe in order for the package to meet the dependencies. Here
962 is an example where the package has a runtime dependency on "make"::
963
964 RDEPENDS:${PN}-ptest += "make"
965
966- *Add a function to build the test suite:* Not many packages support
967 cross-compilation of their test suites. Consequently, you usually
968 need to add a cross-compilation function to the package.
969
970 Many packages based on Automake compile and run the test suite by
971 using a single command such as ``make check``. However, the host
972 ``make check`` builds and runs on the same computer, while
973 cross-compiling requires that the package is built on the host but
974 executed for the target architecture (though often, as in the case
975 for ptest, the execution occurs on the host). The built version of
976 Automake that ships with the Yocto Project includes a patch that
977 separates building and execution. Consequently, packages that use the
978 unaltered, patched version of ``make check`` automatically
979 cross-compiles.
980
981 Regardless, you still must add a ``do_compile_ptest`` function to
982 build the test suite. Add a function similar to the following to your
983 recipe::
984
985 do_compile_ptest() {
986 oe_runmake buildtest-TESTS
987 }
988
989- *Ensure special configurations are set:* If the package requires
990 special configurations prior to compiling the test code, you must
991 insert a ``do_configure_ptest`` function into the recipe.
992
993- *Install the test suite:* The :ref:`ref-classes-ptest` class
994 automatically copies the file ``run-ptest`` to the target and then runs make
995 ``install-ptest`` to run the tests. If this is not enough, you need
996 to create a ``do_install_ptest`` function and make sure it gets
997 called after the "make install-ptest" completes.
998 887
999Creating Node Package Manager (NPM) Packages 888Creating Node Package Manager (NPM) Packages
1000============================================ 889============================================
diff --git a/documentation/dev-manual/qemu.rst b/documentation/dev-manual/qemu.rst
index 19f3e40d63..253aff9977 100644
--- a/documentation/dev-manual/qemu.rst
+++ b/documentation/dev-manual/qemu.rst
@@ -75,7 +75,7 @@ available. Follow these general steps to run QEMU:
75 your :term:`Build Directory`. 75 your :term:`Build Directory`.
76 76
77 - If you have not built an image, you can go to the 77 - If you have not built an image, you can go to the
78 :yocto_dl:`machines/qemu </releases/yocto/yocto-&DISTRO;/machines/qemu/>` area and download a 78 :yocto_dl:`machines/qemu </releases/yocto/&DISTRO_REL_LATEST_TAG;/machines/qemu/>` area and download a
79 pre-built image that matches your architecture and can be run on 79 pre-built image that matches your architecture and can be run on
80 QEMU. 80 QEMU.
81 81
@@ -280,12 +280,11 @@ present, the toolchain is also automatically used.
280 networking. 280 networking.
281 281
282 - SSH servers are available in some QEMU images. The ``core-image-sato`` 282 - SSH servers are available in some QEMU images. The ``core-image-sato``
283 QEMU image has a Dropbear secure shell (SSH) server that runs with 283 QEMU image has a Dropbear secure shell (SSH) server that runs with the
284 the root password disabled. The ``core-image-full-cmdline`` and 284 root password disabled. The ``core-image-full-cmdline`` QEMU image has
285 ``core-image-lsb`` QEMU images have OpenSSH instead of Dropbear. 285 OpenSSH instead of Dropbear. Including these SSH servers allow you to use
286 Including these SSH servers allow you to use standard ``ssh`` and 286 standard ``ssh`` and ``scp`` commands. The ``core-image-minimal`` QEMU
287 ``scp`` commands. The ``core-image-minimal`` QEMU image, however, 287 image, however, contains no SSH server.
288 contains no SSH server.
289 288
290 - You can use a provided, user-space NFS server to boot the QEMU 289 - You can use a provided, user-space NFS server to boot the QEMU
291 session using a local copy of the root filesystem on the host. In 290 session using a local copy of the root filesystem on the host. In
diff --git a/documentation/dev-manual/sbom.rst b/documentation/dev-manual/sbom.rst
index b72bad1554..7c4b5804fb 100644
--- a/documentation/dev-manual/sbom.rst
+++ b/documentation/dev-manual/sbom.rst
@@ -30,16 +30,9 @@ To make this happen, you must inherit the
30 30
31 INHERIT += "create-spdx" 31 INHERIT += "create-spdx"
32 32
33Upon building an image, you will then get: 33Upon building an image, you will then get the compressed archive
34 34``IMAGE-MACHINE.spdx.tar.zst`` contains the index and the files for the single
35- :term:`SPDX` output in JSON format as an ``IMAGE-MACHINE.spdx.json`` file in 35recipes.
36 ``tmp/deploy/images/MACHINE/`` inside the :term:`Build Directory`.
37
38- This toplevel file is accompanied by an ``IMAGE-MACHINE.spdx.index.json``
39 containing an index of JSON :term:`SPDX` files for individual recipes.
40
41- The compressed archive ``IMAGE-MACHINE.spdx.tar.zst`` contains the index
42 and the files for the single recipes.
43 36
44The :ref:`ref-classes-create-spdx` class offers options to include 37The :ref:`ref-classes-create-spdx` class offers options to include
45more information in the output :term:`SPDX` data: 38more information in the output :term:`SPDX` data:
@@ -56,7 +49,7 @@ more information in the output :term:`SPDX` data:
56 49
57Though the toplevel :term:`SPDX` output is available in 50Though the toplevel :term:`SPDX` output is available in
58``tmp/deploy/images/MACHINE/`` inside the :term:`Build Directory`, ancillary 51``tmp/deploy/images/MACHINE/`` inside the :term:`Build Directory`, ancillary
59generated files are available in ``tmp/deploy/spdx/MACHINE`` too, such as: 52generated files are available in ``tmp/deploy/spdx`` too, such as:
60 53
61- The individual :term:`SPDX` JSON files in the ``IMAGE-MACHINE.spdx.tar.zst`` 54- The individual :term:`SPDX` JSON files in the ``IMAGE-MACHINE.spdx.tar.zst``
62 archive. 55 archive.
diff --git a/documentation/dev-manual/start.rst b/documentation/dev-manual/start.rst
index 386e5f5d29..f4da61b53f 100644
--- a/documentation/dev-manual/start.rst
+++ b/documentation/dev-manual/start.rst
@@ -615,7 +615,7 @@ Accessing Source Archives
615The Yocto Project also provides source archives of its releases, which 615The Yocto Project also provides source archives of its releases, which
616are available on :yocto_dl:`/releases/yocto/`. Then, choose the subdirectory 616are available on :yocto_dl:`/releases/yocto/`. Then, choose the subdirectory
617containing the release you wish to use, for example 617containing the release you wish to use, for example
618:yocto_dl:`yocto-&DISTRO; </releases/yocto/yocto-&DISTRO;/>`. 618:yocto_dl:`&DISTRO_REL_LATEST_TAG; </releases/yocto/&DISTRO_REL_LATEST_TAG;/>`.
619 619
620You will find there source archives of individual components (if you wish 620You will find there source archives of individual components (if you wish
621to use them individually), and of the corresponding Poky release bundling 621to use them individually), and of the corresponding Poky release bundling
diff --git a/documentation/dev-manual/upgrading-recipes.rst b/documentation/dev-manual/upgrading-recipes.rst
index 4fac78bdfb..a38fd7837c 100644
--- a/documentation/dev-manual/upgrading-recipes.rst
+++ b/documentation/dev-manual/upgrading-recipes.rst
@@ -333,7 +333,7 @@ Manually Upgrading a Recipe
333 333
334If for some reason you choose not to upgrade recipes using 334If for some reason you choose not to upgrade recipes using
335:ref:`dev-manual/upgrading-recipes:Using the Auto Upgrade Helper (AUH)` or 335:ref:`dev-manual/upgrading-recipes:Using the Auto Upgrade Helper (AUH)` or
336by :ref:`dev-manual/upgrading-recipes:Using \`\`devtool upgrade\`\``, 336by :ref:`dev-manual/upgrading-recipes:Using ``devtool upgrade```,
337you can manually edit the recipe files to upgrade the versions. 337you can manually edit the recipe files to upgrade the versions.
338 338
339.. note:: 339.. note::
diff --git a/documentation/dev-manual/vulnerabilities.rst b/documentation/dev-manual/vulnerabilities.rst
index 1bc2a85929..f5f9fe3a0c 100644
--- a/documentation/dev-manual/vulnerabilities.rst
+++ b/documentation/dev-manual/vulnerabilities.rst
@@ -62,37 +62,77 @@ found in ``build/tmp/deploy/cve``.
62 62
63For example the CVE check report for the ``flex-native`` recipe looks like:: 63For example the CVE check report for the ``flex-native`` recipe looks like::
64 64
65 $ cat poky/build/tmp/deploy/cve/flex-native 65 $ cat ./tmp/deploy/cve/flex-native_cve.json
66 LAYER: meta 66 {
67 PACKAGE NAME: flex-native 67 "version": "1",
68 PACKAGE VERSION: 2.6.4 68 "package": [
69 CVE: CVE-2016-6354 69 {
70 CVE STATUS: Patched 70 "name": "flex-native",
71 CVE SUMMARY: Heap-based buffer overflow in the yy_get_next_buffer function in Flex before 2.6.1 might allow context-dependent attackers to cause a denial of service or possibly execute arbitrary code via vectors involving num_to_read. 71 "layer": "meta",
72 CVSS v2 BASE SCORE: 7.5 72 "version": "2.6.4",
73 CVSS v3 BASE SCORE: 9.8 73 "products": [
74 VECTOR: NETWORK 74 {
75 MORE INFORMATION: https://nvd.nist.gov/vuln/detail/CVE-2016-6354 75 "product": "flex",
76 76 "cvesInRecord": "No"
77 LAYER: meta 77 },
78 PACKAGE NAME: flex-native 78 {
79 PACKAGE VERSION: 2.6.4 79 "product": "flex",
80 CVE: CVE-2019-6293 80 "cvesInRecord": "Yes"
81 CVE STATUS: Ignored 81 }
82 CVE SUMMARY: An issue was discovered in the function mark_beginning_as_normal in nfa.c in flex 2.6.4. There is a stack exhaustion problem caused by the mark_beginning_as_normal function making recursive calls to itself in certain scenarios involving lots of '*' characters. Remote attackers could leverage this vulnerability to cause a denial-of-service. 82 ],
83 CVSS v2 BASE SCORE: 4.3 83 "issue": [
84 CVSS v3 BASE SCORE: 5.5 84 {
85 VECTOR: NETWORK 85 "id": "CVE-2006-0459",
86 MORE INFORMATION: https://nvd.nist.gov/vuln/detail/CVE-2019-6293 86 "status": "Patched",
87 "link": "https://nvd.nist.gov/vuln/detail/CVE-2006-0459",
88 "summary": "flex.skl in Will Estes and John Millaway Fast Lexical Analyzer Generator (flex) before 2.5.33 does not allocate enough memory for grammars containing (1) REJECT statements or (2) trailing context rules, which causes flex to generate code that contains a buffer overflow that might allow context-dependent attackers to execute arbitrary code.",
89 "scorev2": "7.5",
90 "scorev3": "0.0",
91 "scorev4": "0.0",
92 "modified": "2024-11-21T00:06Z",
93 "vector": "NETWORK",
94 "vectorString": "AV:N/AC:L/Au:N/C:P/I:P/A:P",
95 "detail": "version-not-in-range"
96 },
97 {
98 "id": "CVE-2016-6354",
99 "status": "Patched",
100 "link": "https://nvd.nist.gov/vuln/detail/CVE-2016-6354",
101 "summary": "Heap-based buffer overflow in the yy_get_next_buffer function in Flex before 2.6.1 might allow context-dependent attackers to cause a denial of service or possibly execute arbitrary code via vectors involving num_to_read.",
102 "scorev2": "7.5",
103 "scorev3": "9.8",
104 "scorev4": "0.0",
105 "modified": "2024-11-21T02:55Z",
106 "vector": "NETWORK",
107 "vectorString": "AV:N/AC:L/Au:N/C:P/I:P/A:P",
108 "detail": "version-not-in-range"
109 },
110 {
111 "id": "CVE-2019-6293",
112 "status": "Ignored",
113 "link": "https://nvd.nist.gov/vuln/detail/CVE-2019-6293",
114 "summary": "An issue was discovered in the function mark_beginning_as_normal in nfa.c in flex 2.6.4. There is a stack exhaustion problem caused by the mark_beginning_as_normal function making recursive calls to itself in certain scenarios involving lots of '*' characters. Remote attackers could leverage this vulnerability to cause a denial-of-service.",
115 "scorev2": "4.3",
116 "scorev3": "5.5",
117 "scorev4": "0.0",
118 "modified": "2024-11-21T04:46Z",
119 "vector": "NETWORK",
120 "vectorString": "AV:N/AC:M/Au:N/C:N/I:N/A:P",
121 "detail": "upstream-wontfix",
122 "description": "there is stack exhaustion but no bug and it is building the parser, not running it, effectively similar to a compiler ICE. Upstream no plans to address this."
123 }
124 ]
125 }
126 ]
127 }
87 128
88For images, a summary of all recipes included in the image and their CVEs is also 129For images, a summary of all recipes included in the image and their CVEs is also
89generated in textual and JSON formats. These ``.cve`` and ``.json`` reports can be found 130generated in the JSON format. These ``.json`` reports can be found
90in the ``tmp/deploy/images`` directory for each compiled image. 131in the ``tmp/deploy/images`` directory for each compiled image.
91 132
92At build time CVE check will also throw warnings about ``Unpatched`` CVEs:: 133At build time CVE check will also throw warnings about ``Unpatched`` CVEs::
93 134
94 WARNING: flex-2.6.4-r0 do_cve_check: Found unpatched CVE (CVE-2019-6293), for more information check /poky/build/tmp/work/core2-64-poky-linux/flex/2.6.4-r0/temp/cve.log 135 WARNING: qemu-native-9.2.0-r0 do_cve_check: Found unpatched CVE (CVE-2023-1386)
95 WARNING: libarchive-3.5.1-r0 do_cve_check: Found unpatched CVE (CVE-2021-36976), for more information check /poky/build/tmp/work/core2-64-poky-linux/libarchive/3.5.1-r0/temp/cve.log
96 136
97It is also possible to check the CVE status of individual packages as follows:: 137It is also possible to check the CVE status of individual packages as follows::
98 138
@@ -111,10 +151,10 @@ upstream `NIST CVE database <https://nvd.nist.gov/>`__.
111 151
112The variable supports using vendor and product names like this:: 152The variable supports using vendor and product names like this::
113 153
114 CVE_PRODUCT = "flex_project:flex" 154 CVE_PRODUCT = "flex_project:flex westes:flex"
115 155
116In this example the vendor name used in the CVE database is ``flex_project`` and the 156In this example we have two possible vendors names, ``flex_project`` and ``westes``,
117product is ``flex``. With this setting the ``flex`` recipe only maps to this specific 157with the product name ``flex``. With this setting the ``flex`` recipe only maps to this specific
118product and not products from other vendors with same name ``flex``. 158product and not products from other vendors with same name ``flex``.
119 159
120Similarly, when the recipe version :term:`PV` is not compatible with software versions used by 160Similarly, when the recipe version :term:`PV` is not compatible with software versions used by
diff --git a/documentation/dev-manual/wic.rst b/documentation/dev-manual/wic.rst
index a3880f3a1c..fced0e170c 100644
--- a/documentation/dev-manual/wic.rst
+++ b/documentation/dev-manual/wic.rst
@@ -513,7 +513,7 @@ or ::
513 513
514 For more information on how to use the ``bmaptool`` 514 For more information on how to use the ``bmaptool``
515 to flash a device with an image, see the 515 to flash a device with an image, see the
516 ":ref:`dev-manual/bmaptool:flashing images using \`\`bmaptool\`\``" 516 ":ref:`dev-manual/bmaptool:flashing images using \`bmaptool\``"
517 section. 517 section.
518 518
519Using a Modified Kickstart File 519Using a Modified Kickstart File
@@ -721,7 +721,7 @@ the existing kernel, and then inserts a new kernel:
721 721
722 Once the new kernel is added back into the image, you can use the 722 Once the new kernel is added back into the image, you can use the
723 ``dd`` command or :ref:`bmaptool 723 ``dd`` command or :ref:`bmaptool
724 <dev-manual/bmaptool:flashing images using \`\`bmaptool\`\`>` 724 <dev-manual/bmaptool:flashing images using \`bmaptool\`>` commands
725 to flash your wic image onto an SD card or USB stick and test your 725 to flash your wic image onto an SD card or USB stick and test your
726 target. 726 target.
727 727
diff --git a/documentation/downloads.rst b/documentation/downloads.rst
new file mode 100644
index 0000000000..7ec978ef2d
--- /dev/null
+++ b/documentation/downloads.rst
@@ -0,0 +1,11 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3=======================
4Documentation Downloads
5=======================
6
7The documentation can be downloaded in file formats to be read offline or on
8another device. The currently supported formats are linked below:
9
10- `EPub <_static/TheYoctoProject.epub>`_
11- `PDF <_static/theyoctoproject.pdf>`_
diff --git a/documentation/index.rst b/documentation/index.rst
index 3fef1704a4..6c6be38a7e 100644
--- a/documentation/index.rst
+++ b/documentation/index.rst
@@ -51,3 +51,10 @@ Welcome to the Yocto Project Documentation
51 :hidden: 51 :hidden:
52 52
53 genindex 53 genindex
54
55.. toctree::
56 :maxdepth: 1
57 :caption: Documentation Downloads
58 :hidden:
59
60 downloads
diff --git a/documentation/kernel-dev/common.rst b/documentation/kernel-dev/common.rst
index fda41694dc..654c4e0a01 100644
--- a/documentation/kernel-dev/common.rst
+++ b/documentation/kernel-dev/common.rst
@@ -672,7 +672,7 @@ The steps in this procedure show you how you can patch the kernel using
672 672
673 Before attempting this procedure, be sure you have performed the 673 Before attempting this procedure, be sure you have performed the
674 steps to get ready for updating the kernel as described in the 674 steps to get ready for updating the kernel as described in the
675 ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" 675 ":ref:`kernel-dev/common:getting ready to develop using ``devtool```"
676 section. 676 section.
677 677
678Patching the kernel involves changing or adding configurations to an 678Patching the kernel involves changing or adding configurations to an
@@ -685,7 +685,7 @@ output at boot time through ``printk`` statements in the kernel's
685``calibrate.c`` source code file. Applying the patch and booting the 685``calibrate.c`` source code file. Applying the patch and booting the
686modified image causes the added messages to appear on the emulator's 686modified image causes the added messages to appear on the emulator's
687console. The example is a continuation of the setup procedure found in 687console. The example is a continuation of the setup procedure found in
688the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Section. 688the ":ref:`kernel-dev/common:getting ready to develop using ``devtool```" Section.
689 689
690#. *Check Out the Kernel Source Files:* First you must use ``devtool`` 690#. *Check Out the Kernel Source Files:* First you must use ``devtool``
691 to checkout the kernel source code in its workspace. 691 to checkout the kernel source code in its workspace.
@@ -693,7 +693,7 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se
693 .. note:: 693 .. note::
694 694
695 See this step in the 695 See this step in the
696 ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" 696 ":ref:`kernel-dev/common:getting ready to develop using ``devtool```"
697 section for more information. 697 section for more information.
698 698
699 Use the following ``devtool`` command to check out the code:: 699 Use the following ``devtool`` command to check out the code::
@@ -804,7 +804,7 @@ the ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" Se
804 .. note:: 804 .. note::
805 805
806 See Step 3 of the 806 See Step 3 of the
807 ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" 807 ":ref:`kernel-dev/common:getting ready to develop using ``devtool```"
808 section for information on setting up this layer. 808 section for information on setting up this layer.
809 809
810 Once the command 810 Once the command
@@ -1190,7 +1190,7 @@ appear in the ``.config`` file, which is in the :term:`Build Directory`.
1190 1190
1191 For more information about where the ``.config`` file is located, see the 1191 For more information about where the ``.config`` file is located, see the
1192 example in the 1192 example in the
1193 ":ref:`kernel-dev/common:using \`\`menuconfig\`\``" 1193 ":ref:`kernel-dev/common:using ``menuconfig```"
1194 section. 1194 section.
1195 1195
1196It is simple to create a configuration fragment. One method is to use 1196It is simple to create a configuration fragment. One method is to use
@@ -1286,7 +1286,7 @@ when you override a policy configuration in a hardware configuration
1286fragment. 1286fragment.
1287 1287
1288In order to run this task, you must have an existing ``.config`` file. 1288In order to run this task, you must have an existing ``.config`` file.
1289See the ":ref:`kernel-dev/common:using \`\`menuconfig\`\``" section for 1289See the ":ref:`kernel-dev/common:using ``menuconfig```" section for
1290information on how to create a configuration file. 1290information on how to create a configuration file.
1291 1291
1292Here is sample output from the :ref:`ref-tasks-kernel_configcheck` task: 1292Here is sample output from the :ref:`ref-tasks-kernel_configcheck` task:
@@ -1359,7 +1359,7 @@ and
1359tasks until they produce no warnings. 1359tasks until they produce no warnings.
1360 1360
1361For more information on how to use the ``menuconfig`` tool, see the 1361For more information on how to use the ``menuconfig`` tool, see the
1362:ref:`kernel-dev/common:using \`\`menuconfig\`\`` section. 1362:ref:`kernel-dev/common:using ``menuconfig``` section.
1363 1363
1364Fine-Tuning the Kernel Configuration File 1364Fine-Tuning the Kernel Configuration File
1365----------------------------------------- 1365-----------------------------------------
@@ -1562,16 +1562,9 @@ Here are some basic steps you can use to work with your own sources:
1562 changed. 1562 changed.
1563 1563
1564 - :term:`PV`: The default :term:`PV` 1564 - :term:`PV`: The default :term:`PV`
1565 assignment is typically adequate. It combines the 1565 assignment is typically adequate. It combines the value of
1566 :term:`LINUX_VERSION` with the Source Control Manager (SCM) revision 1566 :term:`LINUX_VERSION` and the value ``+git`` which adds source control
1567 as derived from the :term:`SRCPV` 1567 information to :term:`PKGV` later during the packaging phase.
1568 variable. The combined results are a string with the following
1569 form::
1570
1571 3.19.11+git1+68a635bf8dfb64b02263c1ac80c948647cc76d5f_1+218bd8d2022b9852c60d32f0d770931e3cf343e2
1572
1573 While lengthy, the extra verbosity in :term:`PV` helps ensure you are
1574 using the exact sources from which you intend to build.
1575 1568
1576 - :term:`COMPATIBLE_MACHINE`: 1569 - :term:`COMPATIBLE_MACHINE`:
1577 A list of the machines supported by your new recipe. This variable 1570 A list of the machines supported by your new recipe. This variable
diff --git a/documentation/kernel-dev/intro.rst b/documentation/kernel-dev/intro.rst
index a663733a1d..7df342f8d5 100644
--- a/documentation/kernel-dev/intro.rst
+++ b/documentation/kernel-dev/intro.rst
@@ -122,7 +122,7 @@ general information and references for further information.
122 Using ``devtool`` requires that you have a clean build 122 Using ``devtool`` requires that you have a clean build
123 of the image. For 123 of the image. For
124 more information, see the 124 more information, see the
125 ":ref:`kernel-dev/common:getting ready to develop using \`\`devtool\`\``" 125 ":ref:`kernel-dev/common:getting ready to develop using ``devtool```"
126 section. 126 section.
127 127
128 Using traditional kernel development requires that you have the 128 Using traditional kernel development requires that you have the
diff --git a/documentation/migration-guides/migration-1.5.rst b/documentation/migration-guides/migration-1.5.rst
index c8f3cbc165..da26cca63d 100644
--- a/documentation/migration-guides/migration-1.5.rst
+++ b/documentation/migration-guides/migration-1.5.rst
@@ -248,8 +248,8 @@ A new automated image testing framework has been added through the
248framework replaces the older ``imagetest-qemu`` framework. 248framework replaces the older ``imagetest-qemu`` framework.
249 249
250You can learn more about performing automated image tests in the 250You can learn more about performing automated image tests in the
251":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 251":ref:`test-manual/runtime-testing:performing automated runtime testing`"
252section in the Yocto Project Development Tasks Manual. 252section in the Yocto Project Test Environment Manual.
253 253
254.. _migration-1.5-build-history: 254.. _migration-1.5-build-history:
255 255
diff --git a/documentation/migration-guides/migration-1.6.rst b/documentation/migration-guides/migration-1.6.rst
index 916169e836..b052a43a31 100644
--- a/documentation/migration-guides/migration-1.6.rst
+++ b/documentation/migration-guides/migration-1.6.rst
@@ -221,7 +221,7 @@ Package Test (ptest)
221 221
222Package Tests (ptest) are built but not installed by default. For 222Package Tests (ptest) are built but not installed by default. For
223information on using Package Tests, see the 223information on using Package Tests, see the
224":ref:`dev-manual/packages:testing packages with ptest`" section in the 224":ref:`test-manual/ptest:testing packages with ptest`" section in the
225Yocto Project Development Tasks Manual. See also the ":ref:`ref-classes-ptest`" 225Yocto Project Development Tasks Manual. See also the ":ref:`ref-classes-ptest`"
226section. 226section.
227 227
diff --git a/documentation/migration-guides/release-4.0.rst b/documentation/migration-guides/release-4.0.rst
index 4954ea678b..1053ec4c0b 100644
--- a/documentation/migration-guides/release-4.0.rst
+++ b/documentation/migration-guides/release-4.0.rst
@@ -27,4 +27,10 @@ Release 4.0 (kirkstone)
27 release-notes-4.0.18 27 release-notes-4.0.18
28 release-notes-4.0.19 28 release-notes-4.0.19
29 release-notes-4.0.20 29 release-notes-4.0.20
30 30 release-notes-4.0.21
31 release-notes-4.0.22
32 release-notes-4.0.23
33 release-notes-4.0.24
34 release-notes-4.0.25
35 release-notes-4.0.26
36 release-notes-4.0.27
diff --git a/documentation/migration-guides/release-5.0.rst b/documentation/migration-guides/release-5.0.rst
index 1d6ba7692e..b3e7a67912 100644
--- a/documentation/migration-guides/release-5.0.rst
+++ b/documentation/migration-guides/release-5.0.rst
@@ -10,3 +10,10 @@ Release 5.0 (scarthgap)
10 release-notes-5.0.1 10 release-notes-5.0.1
11 release-notes-5.0.2 11 release-notes-5.0.2
12 release-notes-5.0.3 12 release-notes-5.0.3
13 release-notes-5.0.4
14 release-notes-5.0.5
15 release-notes-5.0.6
16 release-notes-5.0.7
17 release-notes-5.0.8
18 release-notes-5.0.9
19 release-notes-5.0.10
diff --git a/documentation/migration-guides/release-notes-3.4.1.rst b/documentation/migration-guides/release-notes-3.4.1.rst
index 097c249a90..c4b99a269b 100644
--- a/documentation/migration-guides/release-notes-3.4.1.rst
+++ b/documentation/migration-guides/release-notes-3.4.1.rst
@@ -11,14 +11,14 @@ Known Issues in 3.4.1
11Security Fixes in 3.4.1 11Security Fixes in 3.4.1
12~~~~~~~~~~~~~~~~~~~~~~~ 12~~~~~~~~~~~~~~~~~~~~~~~
13 13
14- glibc: Backport fix for :cve:`2021-43396` 14- glibc: Backport fix for :cve_nist:`2021-43396`
15- vim: add patch number to :cve:`2021-3778` patch 15- vim: add patch number to :cve_nist:`2021-3778` patch
16- vim: fix :cve:`2021-3796`, :cve:`2021-3872`, and :cve:`2021-3875` 16- vim: fix :cve_nist:`2021-3796`, :cve_nist:`2021-3872`, and :cve_nist:`2021-3875`
17- squashfs-tools: follow-up fix for :cve:`2021-41072` 17- squashfs-tools: follow-up fix for :cve_nist:`2021-41072`
18- avahi: update CVE id fixed by local-ping.patch 18- avahi: update CVE id fixed by local-ping.patch
19- squashfs-tools: fix :cve:`2021-41072` 19- squashfs-tools: fix :cve_nist:`2021-41072`
20- ffmpeg: fix :cve:`2021-38114` 20- ffmpeg: fix :cve_nist:`2021-38114`
21- curl: fix :cve:`2021-22945`, :cve:`2021-22946` and :cve:`2021-22947` 21- curl: fix :cve_nist:`2021-22945`, :cve_nist:`2021-22946` and :cve_nist:`2021-22947`
22 22
23Fixes in 3.4.1 23Fixes in 3.4.1
24~~~~~~~~~~~~~~ 24~~~~~~~~~~~~~~
diff --git a/documentation/migration-guides/release-notes-3.4.2.rst b/documentation/migration-guides/release-notes-3.4.2.rst
index 5ff42d3900..94dffcb79e 100644
--- a/documentation/migration-guides/release-notes-3.4.2.rst
+++ b/documentation/migration-guides/release-notes-3.4.2.rst
@@ -6,29 +6,29 @@ Release notes for 3.4.2 (honister)
6Security Fixes in 3.4.2 6Security Fixes in 3.4.2
7~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- tiff: backport fix for :cve:`2022-22844` 9- tiff: backport fix for :cve_nist:`2022-22844`
10- glibc : Fix :cve:`2021-3999` 10- glibc : Fix :cve_nist:`2021-3999`
11- glibc : Fix :cve:`2021-3998` 11- glibc : Fix :cve_nist:`2021-3998`
12- glibc : Fix :cve:`2022-23219` 12- glibc : Fix :cve_nist:`2022-23219`
13- glibc : Fix :cve:`2022-23218` 13- glibc : Fix :cve_nist:`2022-23218`
14- lighttpd: backport a fix for :cve:`2022-22707` 14- lighttpd: backport a fix for :cve_nist:`2022-22707`
15- speex: fix :cve:`2020-23903` 15- speex: fix :cve_nist:`2020-23903`
16- linux-yocto/5.10: amdgpu: updates for :cve:`2021-42327` 16- linux-yocto/5.10: amdgpu: updates for :cve_nist:`2021-42327`
17- libsndfile1: fix :cve:`2021-4156` 17- libsndfile1: fix :cve_nist:`2021-4156`
18- xserver-xorg: whitelist two CVEs 18- xserver-xorg: whitelist two CVEs
19- grub2: fix :cve:`2021-3981` 19- grub2: fix :cve_nist:`2021-3981`
20- xserver-xorg: update :term:`CVE_PRODUCT` 20- xserver-xorg: update :term:`CVE_PRODUCT`
21- binutils: :cve:`2021-42574` 21- binutils: :cve_nist:`2021-42574`
22- gcc: Fix :cve:`2021-42574` 22- gcc: Fix :cve_nist:`2021-42574`
23- gcc: Fix :cve:`2021-35465` 23- gcc: Fix :cve_nist:`2021-35465`
24- cve-extra-exclusions: add db CVEs to exclusion list 24- cve-extra-exclusions: add db CVEs to exclusion list
25- gcc: Add :cve:`2021-37322` to the list of CVEs to ignore 25- gcc: Add :cve_nist:`2021-37322` to the list of CVEs to ignore
26- bind: fix :cve:`2021-25219` 26- bind: fix :cve_nist:`2021-25219`
27- openssh: fix :cve:`2021-41617` 27- openssh: fix :cve_nist:`2021-41617`
28- ncurses: fix :cve:`2021-39537` 28- ncurses: fix :cve_nist:`2021-39537`
29- vim: fix :cve:`2021-3968` and :cve:`2021-3973` 29- vim: fix :cve_nist:`2021-3968` and :cve_nist:`2021-3973`
30- vim: fix :cve:`2021-3927` and :cve:`2021-3928` 30- vim: fix :cve_nist:`2021-3927` and :cve_nist:`2021-3928`
31- gmp: fix :cve:`2021-43618` 31- gmp: fix :cve_nist:`2021-43618`
32 32
33Fixes in 3.4.2 33Fixes in 3.4.2
34~~~~~~~~~~~~~~ 34~~~~~~~~~~~~~~
diff --git a/documentation/migration-guides/release-notes-3.4.3.rst b/documentation/migration-guides/release-notes-3.4.3.rst
index 2af802307d..cd9698d0e8 100644
--- a/documentation/migration-guides/release-notes-3.4.3.rst
+++ b/documentation/migration-guides/release-notes-3.4.3.rst
@@ -6,12 +6,12 @@ Release notes for 3.4.3 (honister)
6Security Fixes in 3.4.3 6Security Fixes in 3.4.3
7~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- ghostscript: fix :cve:`2021-3781` 9- ghostscript: fix :cve_nist:`2021-3781`
10- ghostscript: fix :cve:`2021-45949` 10- ghostscript: fix :cve_nist:`2021-45949`
11- tiff: Add backports for two CVEs from upstream (:cve:`2022-0561` & :cve:`2022-0562`) 11- tiff: Add backports for two CVEs from upstream (:cve_nist:`2022-0561` & :cve_nist:`2022-0562`)
12- gcc : Fix :cve:`2021-46195` 12- gcc : Fix :cve_nist:`2021-46195`
13- virglrenderer: fix `CVE-2022-0135 <https://security-tracker.debian.org/tracker/CVE-2022-0135>`__ and `CVE-2022-0175 <https://security-tracker.debian.org/tracker/CVE-2022-0175>`__ 13- virglrenderer: fix `CVE-2022-0135 <https://security-tracker.debian.org/tracker/CVE-2022-0135>`__ and `CVE-2022-0175 <https://security-tracker.debian.org/tracker/CVE-2022-0175>`__
14- binutils: Add fix for :cve:`2021-45078` 14- binutils: Add fix for :cve_nist:`2021-45078`
15 15
16 16
17Fixes in 3.4.3 17Fixes in 3.4.3
diff --git a/documentation/migration-guides/release-notes-3.4.4.rst b/documentation/migration-guides/release-notes-3.4.4.rst
index 0bf9a16209..3ab858b0b9 100644
--- a/documentation/migration-guides/release-notes-3.4.4.rst
+++ b/documentation/migration-guides/release-notes-3.4.4.rst
@@ -6,11 +6,11 @@ Release notes for 3.4.4 (honister)
6Security Fixes in 3.4.4 6Security Fixes in 3.4.4
7~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- tiff: fix :cve:`2022-0865`, :cve:`2022-0891`, :cve:`2022-0907`, :cve:`2022-0908`, :cve:`2022-0909` and :cve:`2022-0924` 9- tiff: fix :cve_nist:`2022-0865`, :cve_nist:`2022-0891`, :cve_nist:`2022-0907`, :cve_nist:`2022-0908`, :cve_nist:`2022-0909` and :cve_nist:`2022-0924`
10- xz: fix `CVE-2022-1271 <https://security-tracker.debian.org/tracker/CVE-2022-1271>`__ 10- xz: fix `CVE-2022-1271 <https://security-tracker.debian.org/tracker/CVE-2022-1271>`__
11- unzip: fix `CVE-2021-4217 <https://security-tracker.debian.org/tracker/CVE-2021-4217>`__ 11- unzip: fix `CVE-2021-4217 <https://security-tracker.debian.org/tracker/CVE-2021-4217>`__
12- zlib: fix :cve:`2018-25032` 12- zlib: fix :cve_nist:`2018-25032`
13- grub: ignore :cve:`2021-46705` 13- grub: ignore :cve_nist:`2021-46705`
14 14
15Fixes in 3.4.4 15Fixes in 3.4.4
16~~~~~~~~~~~~~~ 16~~~~~~~~~~~~~~
diff --git a/documentation/migration-guides/release-notes-3.4.rst b/documentation/migration-guides/release-notes-3.4.rst
index d76bb004b1..6eca9956be 100644
--- a/documentation/migration-guides/release-notes-3.4.rst
+++ b/documentation/migration-guides/release-notes-3.4.rst
@@ -220,34 +220,34 @@ Other license-related notes:
220Security Fixes in 3.4 220Security Fixes in 3.4
221~~~~~~~~~~~~~~~~~~~~~ 221~~~~~~~~~~~~~~~~~~~~~
222 222
223- apr: :cve:`2021-35940` 223- apr: :cve_nist:`2021-35940`
224- aspell: :cve:`2019-25051` 224- aspell: :cve_nist:`2019-25051`
225- avahi: :cve:`2021-3468`, :cve:`2021-36217` 225- avahi: :cve_nist:`2021-3468`, :cve_nist:`2021-36217`
226- binutils: :cve:`2021-20197` 226- binutils: :cve_nist:`2021-20197`
227- bluez: :cve:`2021-3658` 227- bluez: :cve_nist:`2021-3658`
228- busybox: :cve:`2021-28831` 228- busybox: :cve_nist:`2021-28831`
229- cairo: :cve:`2020-35492` 229- cairo: :cve_nist:`2020-35492`
230- cpio: :cve:`2021-38185` 230- cpio: :cve_nist:`2021-38185`
231- expat: :cve:`2013-0340` 231- expat: :cve_nist:`2013-0340`
232- ffmpeg: :cve:`2020-20446`, :cve:`2020-22015`, :cve:`2020-22021`, :cve:`2020-22033`, :cve:`2020-22019`, :cve:`2021-33815`, :cve:`2021-38171`, :cve:`2020-20453` 232- ffmpeg: :cve_nist:`2020-20446`, :cve_nist:`2020-22015`, :cve_nist:`2020-22021`, :cve_nist:`2020-22033`, :cve_nist:`2020-22019`, :cve_nist:`2021-33815`, :cve_nist:`2021-38171`, :cve_nist:`2020-20453`
233- glibc: :cve:`2021-33574`, :cve:`2021-38604` 233- glibc: :cve_nist:`2021-33574`, :cve_nist:`2021-38604`
234- inetutils: :cve:`2021-40491` 234- inetutils: :cve_nist:`2021-40491`
235- libgcrypt: :cve:`2021-40528` 235- libgcrypt: :cve_nist:`2021-40528`
236- linux-yocto/5.10, 5.14: :cve:`2021-3653`, :cve:`2021-3656` 236- linux-yocto/5.10, 5.14: :cve_nist:`2021-3653`, :cve_nist:`2021-3656`
237- lz4: :cve:`2021-3520` 237- lz4: :cve_nist:`2021-3520`
238- nettle: :cve:`2021-20305` 238- nettle: :cve_nist:`2021-20305`
239- openssl: :cve:`2021-3711`, :cve:`2021-3712` 239- openssl: :cve_nist:`2021-3711`, :cve_nist:`2021-3712`
240- perl: :cve:`2021-36770` 240- perl: :cve_nist:`2021-36770`
241- python3: :cve:`2021-29921` 241- python3: :cve_nist:`2021-29921`
242- python3-pip: :cve:`2021-3572` 242- python3-pip: :cve_nist:`2021-3572`
243- qemu: :cve:`2020-27821`, :cve:`2020-29443`, :cve:`2020-35517`, :cve:`2021-3392`, :cve:`2021-3409`, :cve:`2021-3416`, :cve:`2021-3527`, :cve:`2021-3544`, :cve:`2021-3545`, :cve:`2021-3546`, :cve:`2021-3682`, :cve:`2021-20181`, :cve:`2021-20221`, :cve:`2021-20257`, :cve:`2021-20263` 243- qemu: :cve_nist:`2020-27821`, :cve_nist:`2020-29443`, :cve_nist:`2020-35517`, :cve_nist:`2021-3392`, :cve_nist:`2021-3409`, :cve_nist:`2021-3416`, :cve_nist:`2021-3527`, :cve_nist:`2021-3544`, :cve_nist:`2021-3545`, :cve_nist:`2021-3546`, :cve_nist:`2021-3682`, :cve_nist:`2021-20181`, :cve_nist:`2021-20221`, :cve_nist:`2021-20257`, :cve_nist:`2021-20263`
244- rpm: :cve:`2021-3421`, :cve:`2021-20271` 244- rpm: :cve_nist:`2021-3421`, :cve_nist:`2021-20271`
245- rsync: :cve:`2020-14387` 245- rsync: :cve_nist:`2020-14387`
246- util-linux: :cve:`2021-37600` 246- util-linux: :cve_nist:`2021-37600`
247- vim: :cve:`2021-3770`, :cve:`2021-3778` 247- vim: :cve_nist:`2021-3770`, :cve_nist:`2021-3778`
248- wpa-supplicant: :cve:`2021-30004` 248- wpa-supplicant: :cve_nist:`2021-30004`
249- xdg-utils: :cve:`2020-27748` 249- xdg-utils: :cve_nist:`2020-27748`
250- xserver-xorg: :cve:`2021-3472` 250- xserver-xorg: :cve_nist:`2021-3472`
251 251
252Recipe Upgrades in 3.4 252Recipe Upgrades in 3.4
253~~~~~~~~~~~~~~~~~~~~~~ 253~~~~~~~~~~~~~~~~~~~~~~
diff --git a/documentation/migration-guides/release-notes-4.0.1.rst b/documentation/migration-guides/release-notes-4.0.1.rst
index 5529f71c6f..5b972f899e 100644
--- a/documentation/migration-guides/release-notes-4.0.1.rst
+++ b/documentation/migration-guides/release-notes-4.0.1.rst
@@ -6,11 +6,11 @@ Release notes for 4.0.1 (kirkstone)
6Security Fixes in 4.0.1 6Security Fixes in 4.0.1
7~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- linux-yocto/5.15: fix :cve:`2022-28796` 9- linux-yocto/5.15: fix :cve_nist:`2022-28796`
10- python3: ignore :cve:`2015-20107` 10- python3: ignore :cve_nist:`2015-20107`
11- e2fsprogs: fix :cve:`2022-1304` 11- e2fsprogs: fix :cve_nist:`2022-1304`
12- lua: fix :cve:`2022-28805` 12- lua: fix :cve_nist:`2022-28805`
13- busybox: fix :cve:`2022-28391` 13- busybox: fix :cve_nist:`2022-28391`
14 14
15Fixes in 4.0.1 15Fixes in 4.0.1
16~~~~~~~~~~~~~~ 16~~~~~~~~~~~~~~
diff --git a/documentation/migration-guides/release-notes-4.0.10.rst b/documentation/migration-guides/release-notes-4.0.10.rst
index f37c3471ea..4e88bafe8a 100644
--- a/documentation/migration-guides/release-notes-4.0.10.rst
+++ b/documentation/migration-guides/release-notes-4.0.10.rst
@@ -6,28 +6,28 @@ Release notes for Yocto-4.0.10 (Kirkstone)
6Security Fixes in Yocto-4.0.10 6Security Fixes in Yocto-4.0.10
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- binutils: Fix :cve:`2023-1579`, :cve:`2023-1972`, :cve_mitre:`2023-25584`, :cve_mitre:`2023-25585` and :cve_mitre:`2023-25588` 9- binutils: Fix :cve_nist:`2023-1579`, :cve_nist:`2023-1972`, :cve_mitre:`2023-25584`, :cve_mitre:`2023-25585` and :cve_mitre:`2023-25588`
10- cargo : Ignore :cve:`2022-46176` 10- cargo : Ignore :cve_nist:`2022-46176`
11- connman: Fix :cve:`2023-28488` 11- connman: Fix :cve_nist:`2023-28488`
12- curl: Fix :cve:`2023-27533`, :cve:`2023-27534`, :cve:`2023-27535`, :cve:`2023-27536` and :cve:`2023-27538` 12- curl: Fix :cve_nist:`2023-27533`, :cve_nist:`2023-27534`, :cve_nist:`2023-27535`, :cve_nist:`2023-27536` and :cve_nist:`2023-27538`
13- ffmpeg: Fix :cve:`2022-48434` 13- ffmpeg: Fix :cve_nist:`2022-48434`
14- freetype: Fix :cve:`2023-2004` 14- freetype: Fix :cve_nist:`2023-2004`
15- ghostscript: Fix :cve_mitre:`2023-29979` 15- ghostscript: Fix :cve_mitre:`2023-29979`
16- git: Fix :cve:`2023-25652` and :cve:`2023-29007` 16- git: Fix :cve_nist:`2023-25652` and :cve_nist:`2023-29007`
17- go: Fix :cve:`2022-41722`, :cve:`2022-41724`, :cve:`2022-41725`, :cve:`2023-24534`, :cve:`2023-24537` and :cve:`2023-24538` 17- go: Fix :cve_nist:`2022-41722`, :cve_nist:`2022-41724`, :cve_nist:`2022-41725`, :cve_nist:`2023-24534`, :cve_nist:`2023-24537` and :cve_nist:`2023-24538`
18- go: Ignore :cve:`2022-41716` 18- go: Ignore :cve_nist:`2022-41716`
19- libxml2: Fix :cve:`2023-28484` and :cve:`2023-29469` 19- libxml2: Fix :cve_nist:`2023-28484` and :cve_nist:`2023-29469`
20- libxpm: Fix :cve:`2022-44617`, :cve:`2022-46285` and :cve:`2022-4883` 20- libxpm: Fix :cve_nist:`2022-44617`, :cve_nist:`2022-46285` and :cve_nist:`2022-4883`
21- linux-yocto: Ignore :cve:`2021-3759`, :cve:`2021-4135`, :cve:`2021-4155`, :cve:`2022-0168`, :cve:`2022-0171`, :cve:`2022-1016`, :cve:`2022-1184`, :cve:`2022-1198`, :cve:`2022-1199`, :cve:`2022-1462`, :cve:`2022-1734`, :cve:`2022-1852`, :cve:`2022-1882`, :cve:`2022-1998`, :cve:`2022-2078`, :cve:`2022-2196`, :cve:`2022-2318`, :cve:`2022-2380`, :cve:`2022-2503`, :cve:`2022-26365`, :cve:`2022-2663`, :cve:`2022-2873`, :cve:`2022-2905`, :cve:`2022-2959`, :cve:`2022-3028`, :cve:`2022-3078`, :cve:`2022-3104`, :cve:`2022-3105`, :cve:`2022-3106`, :cve:`2022-3107`, :cve:`2022-3111`, :cve:`2022-3112`, :cve:`2022-3113`, :cve:`2022-3115`, :cve:`2022-3202`, :cve:`2022-32250`, :cve:`2022-32296`, :cve:`2022-32981`, :cve:`2022-3303`, :cve:`2022-33740`, :cve:`2022-33741`, :cve:`2022-33742`, :cve:`2022-33743`, :cve:`2022-33744`, :cve:`2022-33981`, :cve:`2022-3424`, :cve:`2022-3435`, :cve:`2022-34918`, :cve:`2022-3521`, :cve:`2022-3545`, :cve:`2022-3564`, :cve:`2022-3586`, :cve:`2022-3594`, :cve:`2022-36123`, :cve:`2022-3621`, :cve:`2022-3623`, :cve:`2022-3629`, :cve:`2022-3633`, :cve:`2022-3635`, :cve:`2022-3646`, :cve:`2022-3649`, :cve:`2022-36879`, :cve:`2022-36946`, :cve:`2022-3707`, :cve:`2022-39188`, :cve:`2022-39190`, :cve:`2022-39842`, :cve:`2022-40307`, :cve:`2022-40768`, :cve:`2022-4095`, :cve:`2022-41218`, :cve:`2022-4139`, :cve:`2022-41849`, :cve:`2022-41850`, :cve:`2022-41858`, :cve:`2022-42328`, :cve:`2022-42329`, :cve:`2022-42703`, :cve:`2022-42721`, :cve:`2022-42722`, :cve:`2022-42895`, :cve:`2022-4382`, :cve:`2022-4662`, :cve:`2022-47518`, :cve:`2022-47519`, :cve:`2022-47520`, :cve:`2022-47929`, :cve:`2023-0179`, :cve:`2023-0394`, :cve:`2023-0461`, :cve:`2023-0590`, :cve:`2023-1073`, :cve:`2023-1074`, :cve:`2023-1077`, :cve:`2023-1078`, :cve:`2023-1079`, :cve:`2023-1095`, :cve:`2023-1118`, :cve:`2023-1249`, :cve:`2023-1252`, :cve:`2023-1281`, :cve:`2023-1382`, :cve:`2023-1513`, :cve:`2023-1829`, :cve:`2023-1838`, :cve:`2023-1998`, :cve:`2023-2006`, :cve:`2023-2008`, :cve:`2023-2162`, :cve:`2023-2166`, :cve:`2023-2177`, :cve:`2023-22999`, :cve:`2023-23002`, :cve:`2023-23004`, :cve:`2023-23454`, :cve:`2023-23455`, :cve:`2023-23559`, :cve:`2023-25012`, :cve:`2023-26545`, :cve:`2023-28327` and :cve:`2023-28328` 21- linux-yocto: Ignore :cve_nist:`2021-3759`, :cve_nist:`2021-4135`, :cve_nist:`2021-4155`, :cve_nist:`2022-0168`, :cve_nist:`2022-0171`, :cve_nist:`2022-1016`, :cve_nist:`2022-1184`, :cve_nist:`2022-1198`, :cve_nist:`2022-1199`, :cve_nist:`2022-1462`, :cve_nist:`2022-1734`, :cve_nist:`2022-1852`, :cve_nist:`2022-1882`, :cve_nist:`2022-1998`, :cve_nist:`2022-2078`, :cve_nist:`2022-2196`, :cve_nist:`2022-2318`, :cve_nist:`2022-2380`, :cve_nist:`2022-2503`, :cve_nist:`2022-26365`, :cve_nist:`2022-2663`, :cve_nist:`2022-2873`, :cve_nist:`2022-2905`, :cve_nist:`2022-2959`, :cve_nist:`2022-3028`, :cve_nist:`2022-3078`, :cve_nist:`2022-3104`, :cve_nist:`2022-3105`, :cve_nist:`2022-3106`, :cve_nist:`2022-3107`, :cve_nist:`2022-3111`, :cve_nist:`2022-3112`, :cve_nist:`2022-3113`, :cve_nist:`2022-3115`, :cve_nist:`2022-3202`, :cve_nist:`2022-32250`, :cve_nist:`2022-32296`, :cve_nist:`2022-32981`, :cve_nist:`2022-3303`, :cve_nist:`2022-33740`, :cve_nist:`2022-33741`, :cve_nist:`2022-33742`, :cve_nist:`2022-33743`, :cve_nist:`2022-33744`, :cve_nist:`2022-33981`, :cve_nist:`2022-3424`, :cve_nist:`2022-3435`, :cve_nist:`2022-34918`, :cve_nist:`2022-3521`, :cve_nist:`2022-3545`, :cve_nist:`2022-3564`, :cve_nist:`2022-3586`, :cve_nist:`2022-3594`, :cve_nist:`2022-36123`, :cve_nist:`2022-3621`, :cve_nist:`2022-3623`, :cve_nist:`2022-3629`, :cve_nist:`2022-3633`, :cve_nist:`2022-3635`, :cve_nist:`2022-3646`, :cve_nist:`2022-3649`, :cve_nist:`2022-36879`, :cve_nist:`2022-36946`, :cve_nist:`2022-3707`, :cve_nist:`2022-39188`, :cve_nist:`2022-39190`, :cve_nist:`2022-39842`, :cve_nist:`2022-40307`, :cve_nist:`2022-40768`, :cve_nist:`2022-4095`, :cve_nist:`2022-41218`, :cve_nist:`2022-4139`, :cve_nist:`2022-41849`, :cve_nist:`2022-41850`, :cve_nist:`2022-41858`, :cve_nist:`2022-42328`, :cve_nist:`2022-42329`, :cve_nist:`2022-42703`, :cve_nist:`2022-42721`, :cve_nist:`2022-42722`, :cve_nist:`2022-42895`, :cve_nist:`2022-4382`, :cve_nist:`2022-4662`, :cve_nist:`2022-47518`, :cve_nist:`2022-47519`, :cve_nist:`2022-47520`, :cve_nist:`2022-47929`, :cve_nist:`2023-0179`, :cve_nist:`2023-0394`, :cve_nist:`2023-0461`, :cve_nist:`2023-0590`, :cve_nist:`2023-1073`, :cve_nist:`2023-1074`, :cve_nist:`2023-1077`, :cve_nist:`2023-1078`, :cve_nist:`2023-1079`, :cve_nist:`2023-1095`, :cve_nist:`2023-1118`, :cve_nist:`2023-1249`, :cve_nist:`2023-1252`, :cve_nist:`2023-1281`, :cve_nist:`2023-1382`, :cve_nist:`2023-1513`, :cve_nist:`2023-1829`, :cve_nist:`2023-1838`, :cve_nist:`2023-1998`, :cve_nist:`2023-2006`, :cve_nist:`2023-2008`, :cve_nist:`2023-2162`, :cve_nist:`2023-2166`, :cve_nist:`2023-2177`, :cve_nist:`2023-22999`, :cve_nist:`2023-23002`, :cve_nist:`2023-23004`, :cve_nist:`2023-23454`, :cve_nist:`2023-23455`, :cve_nist:`2023-23559`, :cve_nist:`2023-25012`, :cve_nist:`2023-26545`, :cve_nist:`2023-28327` and :cve_nist:`2023-28328`
22- nasm: Fix :cve:`2022-44370` 22- nasm: Fix :cve_nist:`2022-44370`
23- python3-cryptography: Fix :cve:`2023-23931` 23- python3-cryptography: Fix :cve_nist:`2023-23931`
24- qemu: Ignore :cve:`2023-0664` 24- qemu: Ignore :cve_nist:`2023-0664`
25- ruby: Fix :cve:`2023-28755` and :cve:`2023-28756` 25- ruby: Fix :cve_nist:`2023-28755` and :cve_nist:`2023-28756`
26- screen: Fix :cve:`2023-24626` 26- screen: Fix :cve_nist:`2023-24626`
27- shadow: Fix :cve:`2023-29383` 27- shadow: Fix :cve_nist:`2023-29383`
28- tiff: Fix :cve:`2022-4645` 28- tiff: Fix :cve_nist:`2022-4645`
29- webkitgtk: Fix :cve:`2022-32888` and :cve:`2022-32923` 29- webkitgtk: Fix :cve_nist:`2022-32888` and :cve_nist:`2022-32923`
30- xserver-xorg: Fix :cve:`2023-1393` 30- xserver-xorg: Fix :cve_nist:`2023-1393`
31 31
32 32
33Fixes in Yocto-4.0.10 33Fixes in Yocto-4.0.10
diff --git a/documentation/migration-guides/release-notes-4.0.11.rst b/documentation/migration-guides/release-notes-4.0.11.rst
index 8a15884908..baef380586 100644
--- a/documentation/migration-guides/release-notes-4.0.11.rst
+++ b/documentation/migration-guides/release-notes-4.0.11.rst
@@ -6,18 +6,18 @@ Release notes for Yocto-4.0.11 (Kirkstone)
6Security Fixes in Yocto-4.0.11 6Security Fixes in Yocto-4.0.11
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- cups: Fix :cve:`2023-32324` 9- cups: Fix :cve_nist:`2023-32324`
10- curl: Fix :cve:`2023-28319`, :cve:`2023-28320`, :cve:`2023-28321` and :cve:`2023-28322` 10- curl: Fix :cve_nist:`2023-28319`, :cve_nist:`2023-28320`, :cve_nist:`2023-28321` and :cve_nist:`2023-28322`
11- git: Ignore :cve:`2023-25815` 11- git: Ignore :cve_nist:`2023-25815`
12- go: Fix :cve:`2023-24539` and :cve:`2023-24540` 12- go: Fix :cve_nist:`2023-24539` and :cve_nist:`2023-24540`
13- nasm: Fix :cve:`2022-46457` 13- nasm: Fix :cve_nist:`2022-46457`
14- openssh: Fix :cve:`2023-28531` 14- openssh: Fix :cve_nist:`2023-28531`
15- openssl: Fix :cve:`2023-1255` and :cve:`2023-2650` 15- openssl: Fix :cve_nist:`2023-1255` and :cve_nist:`2023-2650`
16- perl: Fix :cve:`2023-31484` 16- perl: Fix :cve_nist:`2023-31484`
17- python3-requests: Fix for :cve:`2023-32681` 17- python3-requests: Fix for :cve_nist:`2023-32681`
18- sysstat: Fix :cve:`2023-33204` 18- sysstat: Fix :cve_nist:`2023-33204`
19- vim: Fix :cve:`2023-2426` 19- vim: Fix :cve_nist:`2023-2426`
20- webkitgtk: fix :cve:`2022-42867`, :cve:`2022-46691`, :cve:`2022-46699` and :cve:`2022-46700` 20- webkitgtk: fix :cve_nist:`2022-42867`, :cve_nist:`2022-46691`, :cve_nist:`2022-46699` and :cve_nist:`2022-46700`
21 21
22 22
23Fixes in Yocto-4.0.11 23Fixes in Yocto-4.0.11
diff --git a/documentation/migration-guides/release-notes-4.0.12.rst b/documentation/migration-guides/release-notes-4.0.12.rst
index 0ea92a453d..ead33e1854 100644
--- a/documentation/migration-guides/release-notes-4.0.12.rst
+++ b/documentation/migration-guides/release-notes-4.0.12.rst
@@ -6,30 +6,30 @@ Release notes for Yocto-4.0.12 (Kirkstone)
6Security Fixes in Yocto-4.0.12 6Security Fixes in Yocto-4.0.12
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bind: Fix :cve:`2023-2828` and :cve:`2023-2911` 9- bind: Fix :cve_nist:`2023-2828` and :cve_nist:`2023-2911`
10- cups: Fix :cve:`2023-34241` 10- cups: Fix :cve_nist:`2023-34241`
11- curl: Added :cve:`2023-28320` Follow-up patch 11- curl: Added :cve_nist:`2023-28320` Follow-up patch
12- dbus: Fix :cve:`2023-34969` 12- dbus: Fix :cve_nist:`2023-34969`
13- dmidecode: fix :cve:`2023-30630` 13- dmidecode: fix :cve_nist:`2023-30630`
14- ghostscript: fix :cve:`2023-36664` 14- ghostscript: fix :cve_nist:`2023-36664`
15- go: fix :cve_mitre:`2023-24531`, :cve:`2023-24536`, :cve:`2023-29400`, :cve:`2023-29402`, :cve:`2023-29404`, :cve:`2023-29405` and :cve:`2023-29406` 15- go: fix :cve_mitre:`2023-24531`, :cve_nist:`2023-24536`, :cve_nist:`2023-29400`, :cve_nist:`2023-29402`, :cve_nist:`2023-29404`, :cve_nist:`2023-29405` and :cve_nist:`2023-29406`
16- libarchive: Ignore :cve:`2023-30571` 16- libarchive: Ignore :cve_nist:`2023-30571`
17- libcap: Fix :cve:`2023-2602` and :cve:`2023-2603` 17- libcap: Fix :cve_nist:`2023-2602` and :cve_nist:`2023-2603`
18- libjpeg-turbo: Fix :cve:`2023-2804` 18- libjpeg-turbo: Fix :cve_nist:`2023-2804`
19- libpcre2: Fix :cve:`2022-41409` 19- libpcre2: Fix :cve_nist:`2022-41409`
20- libtiff: fix :cve:`2023-26965` 20- libtiff: fix :cve_nist:`2023-26965`
21- libwebp: Fix :cve:`2023-1999` 21- libwebp: Fix :cve_nist:`2023-1999`
22- libx11: Fix :cve:`2023-3138` 22- libx11: Fix :cve_nist:`2023-3138`
23- libxpm: Fix :cve:`2022-44617` 23- libxpm: Fix :cve_nist:`2022-44617`
24- ninja: Ignore :cve:`2021-4336` 24- ninja: Ignore :cve_nist:`2021-4336`
25- openssh: Fix :cve:`2023-38408` 25- openssh: Fix :cve_nist:`2023-38408`
26- openssl: Fix :cve:`2023-2975`, :cve:`2023-3446` and :cve:`2023-3817` 26- openssl: Fix :cve_nist:`2023-2975`, :cve_nist:`2023-3446` and :cve_nist:`2023-3817`
27- perl: Fix :cve:`2023-31486` 27- perl: Fix :cve_nist:`2023-31486`
28- python3: Ignore :cve:`2023-36632` 28- python3: Ignore :cve_nist:`2023-36632`
29- qemu: Fix :cve:`2023-0330`, :cve_mitre:`2023-2861`, :cve_mitre:`2023-3255` and :cve_mitre:`2023-3301` 29- qemu: Fix :cve_nist:`2023-0330`, :cve_mitre:`2023-2861`, :cve_mitre:`2023-3255` and :cve_mitre:`2023-3301`
30- sqlite3: Fix :cve:`2023-36191` 30- sqlite3: Fix :cve_nist:`2023-36191`
31- tiff: Fix :cve:`2023-0795`, :cve:`2023-0796`, :cve:`2023-0797`, :cve:`2023-0798`, :cve:`2023-0799`, :cve:`2023-25433`, :cve:`2023-25434` and :cve:`2023-25435` 31- tiff: Fix :cve_nist:`2023-0795`, :cve_nist:`2023-0796`, :cve_nist:`2023-0797`, :cve_nist:`2023-0798`, :cve_nist:`2023-0799`, :cve_nist:`2023-25433`, :cve_nist:`2023-25434` and :cve_nist:`2023-25435`
32- vim: :cve:`2023-2609` and :cve:`2023-2610` 32- vim: :cve_nist:`2023-2609` and :cve_nist:`2023-2610`
33 33
34 34
35Fixes in Yocto-4.0.12 35Fixes in Yocto-4.0.12
diff --git a/documentation/migration-guides/release-notes-4.0.13.rst b/documentation/migration-guides/release-notes-4.0.13.rst
index 3c096c356f..641c9d1f05 100644
--- a/documentation/migration-guides/release-notes-4.0.13.rst
+++ b/documentation/migration-guides/release-notes-4.0.13.rst
@@ -6,43 +6,43 @@ Release notes for Yocto-4.0.13 (Kirkstone)
6Security Fixes in Yocto-4.0.13 6Security Fixes in Yocto-4.0.13
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bind: Fix :cve:`2023-2829` 9- bind: Fix :cve_nist:`2023-2829`
10- binutils: Fix :cve:`2022-48065` 10- binutils: Fix :cve_nist:`2022-48065`
11- busybox: Fix :cve:`2022-48174` 11- busybox: Fix :cve_nist:`2022-48174`
12- cups: Fix :cve:`2023-32360` 12- cups: Fix :cve_nist:`2023-32360`
13- curl: Fix :cve:`2023-32001` 13- curl: Fix :cve_nist:`2023-32001`
14- dmidecode: Fix :cve:`2023-30630` 14- dmidecode: Fix :cve_nist:`2023-30630`
15- dropbear: Fix :cve:`2023-36328` 15- dropbear: Fix :cve_nist:`2023-36328`
16- ffmpeg: Ignored :cve:`2023-39018` 16- ffmpeg: Ignored :cve_nist:`2023-39018`
17- file: Fix :cve:`2022-48554` 17- file: Fix :cve_nist:`2022-48554`
18- flac: Fix :cve:`2020-22219` 18- flac: Fix :cve_nist:`2020-22219`
19- gcc: Fix :cve:`2023-4039` 19- gcc: Fix :cve_nist:`2023-4039`
20- gdb: Fix :cve:`2023-39128` 20- gdb: Fix :cve_nist:`2023-39128`
21- ghostscript: Fix :cve:`2023-38559` 21- ghostscript: Fix :cve_nist:`2023-38559`
22- glib-2.0: Fix :cve:`2023-29499`, :cve:`2023-32611`, :cve:`2023-32636`, :cve:`2023-32643` and :cve:`2023-32665` 22- glib-2.0: Fix :cve_nist:`2023-29499`, :cve_nist:`2023-32611`, :cve_nist:`2023-32636`, :cve_nist:`2023-32643` and :cve_nist:`2023-32665`
23- go: Fix :cve:`2023-29409` and :cve:`2023-39319` 23- go: Fix :cve_nist:`2023-29409` and :cve_nist:`2023-39319`
24- gstreamer1.0-plugins-bad: Fix :cve_mitre:`2023-37329` 24- gstreamer1.0-plugins-bad: Fix :cve_mitre:`2023-37329`
25- gstreamer1.0-plugins-base: Fix :cve_mitre:`2023-37328` 25- gstreamer1.0-plugins-base: Fix :cve_mitre:`2023-37328`
26- gstreamer1.0-plugins-good: Fix :cve_mitre:`2023-37327` 26- gstreamer1.0-plugins-good: Fix :cve_mitre:`2023-37327`
27- inetutils: Fix :cve:`2023-40303` 27- inetutils: Fix :cve_nist:`2023-40303`
28- json-c: Fix :cve:`2021-32292` 28- json-c: Fix :cve_nist:`2021-32292`
29- librsvg: Fix :cve:`2023-38633` 29- librsvg: Fix :cve_nist:`2023-38633`
30- libssh2: Fix :cve:`2020-22218` 30- libssh2: Fix :cve_nist:`2020-22218`
31- libtiff: Fix :cve:`2023-26966` 31- libtiff: Fix :cve_nist:`2023-26966`
32- libxml2: Fix :cve:`2023-39615` 32- libxml2: Fix :cve_nist:`2023-39615`
33- linux-yocto/5.15: Ignore :cve:`2003-1604`, :cve:`2004-0230`, :cve:`2006-3635`, :cve:`2006-5331`, :cve:`2006-6128`, :cve:`2007-4774`, :cve:`2007-6761`, :cve:`2007-6762`, :cve:`2008-7316`, :cve:`2009-2692`, :cve:`2010-0008`, :cve:`2010-3432`, :cve:`2010-4648`, :cve:`2010-5313`, :cve:`2010-5328`, :cve:`2010-5329`, :cve:`2010-5331`, :cve:`2010-5332`, :cve:`2011-4098`, :cve:`2011-4131`, :cve:`2011-4915`, :cve:`2011-5321`, :cve:`2011-5327`, :cve:`2012-0957`, :cve:`2012-2119`, :cve:`2012-2136`, :cve:`2012-2137`, :cve:`2012-2313`, :cve:`2012-2319`, :cve:`2012-2372`, :cve:`2012-2375`, :cve:`2012-2390`, :cve:`2012-2669`, :cve:`2012-2744`, :cve:`2012-2745`, :cve:`2012-3364`, :cve:`2012-3375`, :cve:`2012-3400`, :cve:`2012-3412`, :cve:`2012-3430`, :cve:`2012-3510`, :cve:`2012-3511`, :cve:`2012-3520`, :cve:`2012-3552`, :cve:`2012-4398`, :cve:`2012-4444`, :cve:`2012-4461`, :cve:`2012-4467`, :cve:`2012-4508`, :cve:`2012-4530`, :cve:`2012-4565`, :cve:`2012-5374`, :cve:`2012-5375`, :cve:`2012-5517`, :cve:`2012-6536`, :cve:`2012-6537`, :cve:`2012-6538`, :cve:`2012-6539`, :cve:`2012-6540`, :cve:`2012-6541`, :cve:`2012-6542`, :cve:`2012-6543`, :cve:`2012-6544`, :cve:`2012-6545`, :cve:`2012-6546`, :cve:`2012-6547`, :cve:`2012-6548`, :cve:`2012-6549`, :cve:`2012-6638`, :cve:`2012-6647`, :cve:`2012-6657`, :cve:`2012-6689`, :cve:`2012-6701`, :cve:`2012-6703`, :cve:`2012-6704`, :cve:`2012-6712`, :cve:`2013-0160`, :cve:`2013-0190`, :cve:`2013-0216`, :cve:`2013-0217`, :cve:`2013-0228`, :cve:`2013-0231`, :cve:`2013-0268`, :cve:`2013-0290`, :cve:`2013-0309`, :cve:`2013-0310`, :cve:`2013-0311`, :cve:`2013-0313`, :cve:`2013-0343`, :cve:`2013-0349`, :cve:`2013-0871`, :cve:`2013-0913`, :cve:`2013-0914`, :cve:`2013-1059`, :cve:`2013-1763`, :cve:`2013-1767`, :cve:`2013-1772`, :cve:`2013-1773`, :cve:`2013-1774`, :cve:`2013-1792`, :cve:`2013-1796`, :cve:`2013-1797`, :cve:`2013-1798`, :cve:`2013-1819`, :cve:`2013-1826`, :cve:`2013-1827`, :cve:`2013-1828`, :cve:`2013-1848`, :cve:`2013-1858`, :cve:`2013-1860`, :cve:`2013-1928`, :cve:`2013-1929`, :cve:`2013-1943`, :cve:`2013-1956`, :cve:`2013-1957`, :cve:`2013-1958`, :cve:`2013-1959`, :cve:`2013-1979`, :cve:`2013-2015`, :cve:`2013-2017`, :cve:`2013-2058`, :cve:`2013-2094`, :cve:`2013-2128`, :cve:`2013-2140`, :cve:`2013-2141`, :cve:`2013-2146`, :cve:`2013-2147`, :cve:`2013-2148`, :cve:`2013-2164`, :cve:`2013-2206`, :cve:`2013-2232`, :cve:`2013-2234`, :cve:`2013-2237`, :cve:`2013-2546`, :cve:`2013-2547`, :cve:`2013-2548`, :cve:`2013-2596`, :cve:`2013-2634`, :cve:`2013-2635`, :cve:`2013-2636`, :cve:`2013-2850`, :cve:`2013-2851`, :cve:`2013-2852`, :cve:`2013-2888`, :cve:`2013-2889`, :cve:`2013-2890`, :cve:`2013-2891`, :cve:`2013-2892`, :cve:`2013-2893`, :cve:`2013-2894`, :cve:`2013-2895`, :cve:`2013-2896`, :cve:`2013-2897`, :cve:`2013-2898`, :cve:`2013-2899`, :cve:`2013-2929`, :cve:`2013-2930`, :cve:`2013-3076`, :cve:`2013-3222`, :cve:`2013-3223`, :cve:`2013-3224`, :cve:`2013-3225`, :cve:`2013-3226`, :cve:`2013-3227`, :cve:`2013-3228`, :cve:`2013-3229`, :cve:`2013-3230`, :cve:`2013-3231`, :cve:`2013-3232`, :cve:`2013-3233`, :cve:`2013-3234`, :cve:`2013-3235`, :cve:`2013-3236`, :cve:`2013-3237`, :cve:`2013-3301`, :cve:`2013-3302`, :cve:`2013-4125`, :cve:`2013-4127`, :cve:`2013-4129`, :cve:`2013-4162`, :cve:`2013-4163`, :cve:`2013-4205`, :cve:`2013-4220`, :cve:`2013-4247`, :cve:`2013-4254`, :cve:`2013-4270`, :cve:`2013-4299`, :cve:`2013-4300`, :cve:`2013-4312`, :cve:`2013-4343`, :cve:`2013-4345`, :cve:`2013-4348`, :cve:`2013-4350`, :cve:`2013-4387`, :cve:`2013-4470`, :cve:`2013-4483`, :cve:`2013-4511`, :cve:`2013-4512`, :cve:`2013-4513`, :cve:`2013-4514`, :cve:`2013-4515`, :cve:`2013-4516`, :cve:`2013-4563`, :cve:`2013-4579`, :cve:`2013-4587`, :cve:`2013-4588`, :cve:`2013-4591`, :cve:`2013-4592`, :cve:`2013-5634`, :cve:`2013-6282`, :cve:`2013-6367`, :cve:`2013-6368`, :cve:`2013-6376`, :cve:`2013-6378`, :cve:`2013-6380`, :cve:`2013-6381`, :cve:`2013-6382`, :cve:`2013-6383`, :cve:`2013-6431`, :cve:`2013-6432`, :cve:`2013-6885`, :cve:`2013-7026`, :cve:`2013-7027`, :cve:`2013-7263`, :cve:`2013-7264`, :cve:`2013-7265`, :cve:`2013-7266`, :cve:`2013-7267`, :cve:`2013-7268`, :cve:`2013-7269`, :cve:`2013-7270`, :cve:`2013-7271`, :cve:`2013-7281`, :cve:`2013-7339`, :cve:`2013-7348`, :cve:`2013-7421`, :cve:`2013-7446`, :cve:`2013-7470`, :cve:`2014-0038`, :cve:`2014-0049`, :cve:`2014-0055`, :cve:`2014-0069`, :cve:`2014-0077`, :cve:`2014-0100`, :cve:`2014-0101`, :cve:`2014-0102`, :cve:`2014-0131`, :cve:`2014-0155`, :cve:`2014-0181`, :cve:`2014-0196`, :cve:`2014-0203`, :cve:`2014-0205`, :cve:`2014-0206`, :cve:`2014-1438`, :cve:`2014-1444`, :cve:`2014-1445`, :cve:`2014-1446`, :cve:`2014-1690`, :cve:`2014-1737`, :cve:`2014-1738`, :cve:`2014-1739`, :cve:`2014-1874`, :cve:`2014-2038`, :cve:`2014-2039`, :cve:`2014-2309`, :cve:`2014-2523`, :cve:`2014-2568`, :cve:`2014-2580`, :cve:`2014-2672`, :cve:`2014-2673`, :cve:`2014-2678`, :cve:`2014-2706`, :cve:`2014-2739`, :cve:`2014-2851`, :cve:`2014-2889`, :cve:`2014-3122`, :cve:`2014-3144`, :cve:`2014-3145`, :cve:`2014-3153`, :cve:`2014-3180`, :cve:`2014-3181`, :cve:`2014-3182`, :cve:`2014-3183`, :cve:`2014-3184`, :cve:`2014-3185`, :cve:`2014-3186`, :cve:`2014-3534`, :cve:`2014-3535`, :cve:`2014-3601`, :cve:`2014-3610`, :cve:`2014-3611`, :cve:`2014-3631`, :cve:`2014-3645`, :cve:`2014-3646`, :cve:`2014-3647`, :cve:`2014-3673`, :cve:`2014-3687`, :cve:`2014-3688`, :cve:`2014-3690`, :cve:`2014-3917`, :cve:`2014-3940`, :cve:`2014-4014`, :cve:`2014-4027`, :cve:`2014-4157`, :cve:`2014-4171`, :cve:`2014-4508`, :cve:`2014-4608`, :cve:`2014-4611`, :cve:`2014-4652`, :cve:`2014-4653`, :cve:`2014-4654`, :cve:`2014-4655`, :cve:`2014-4656`, :cve:`2014-4667`, :cve:`2014-4699`, :cve:`2014-4943`, :cve:`2014-5045`, :cve:`2014-5077`, :cve:`2014-5206`, :cve:`2014-5207`, :cve:`2014-5471`, :cve:`2014-5472`, :cve:`2014-6410`, :cve:`2014-6416`, :cve:`2014-6417`, :cve:`2014-6418`, :cve:`2014-7145`, :cve:`2014-7283`, :cve:`2014-7284`, :cve:`2014-7822`, :cve:`2014-7825`, :cve:`2014-7826`, :cve:`2014-7841`, :cve:`2014-7842`, :cve:`2014-7843`, :cve:`2014-7970`, :cve:`2014-7975`, :cve:`2014-8086`, :cve:`2014-8133`, :cve:`2014-8134`, :cve:`2014-8159`, :cve:`2014-8160`, :cve:`2014-8171`, :cve:`2014-8172`, :cve:`2014-8173`, :cve:`2014-8369`, :cve:`2014-8480`, :cve:`2014-8481`, :cve:`2014-8559`, :cve:`2014-8709`, :cve:`2014-8884`, :cve:`2014-8989`, :cve:`2014-9090`, :cve:`2014-9322`, :cve:`2014-9419`, :cve:`2014-9420`, :cve:`2014-9428`, :cve:`2014-9529`, :cve:`2014-9584`, :cve:`2014-9585`, :cve:`2014-9644`, :cve:`2014-9683`, :cve:`2014-9710`, :cve:`2014-9715`, :cve:`2014-9717`, :cve:`2014-9728`, :cve:`2014-9729`, :cve:`2014-9730`, :cve:`2014-9731`, :cve:`2014-9803`, :cve:`2014-9870`, :cve:`2014-9888`, :cve:`2014-9895`, :cve:`2014-9903`, :cve:`2014-9904`, :cve:`2014-9914`, :cve:`2014-9922`, :cve:`2014-9940`, :cve:`2015-0239`, :cve:`2015-0274`, :cve:`2015-0275`, :cve:`2015-1333`, :cve:`2015-1339`, :cve:`2015-1350`, :cve:`2015-1420`, :cve:`2015-1421`, :cve:`2015-1465`, :cve:`2015-1573`, :cve:`2015-1593`, :cve:`2015-1805`, :cve:`2015-2041`, :cve:`2015-2042`, :cve:`2015-2150`, :cve:`2015-2666`, :cve:`2015-2672`, :cve:`2015-2686`, :cve:`2015-2830`, :cve:`2015-2922`, :cve:`2015-2925`, :cve:`2015-3212`, :cve:`2015-3214`, :cve:`2015-3288`, :cve:`2015-3290`, :cve:`2015-3291`, :cve:`2015-3331`, :cve:`2015-3339`, :cve:`2015-3636`, :cve:`2015-4001`, :cve:`2015-4002`, :cve:`2015-4003`, :cve:`2015-4004`, :cve:`2015-4036`, :cve:`2015-4167`, :cve:`2015-4170`, :cve:`2015-4176`, :cve:`2015-4177`, :cve:`2015-4178`, :cve:`2015-4692`, :cve:`2015-4700`, :cve:`2015-5156`, :cve:`2015-5157`, :cve:`2015-5257`, :cve:`2015-5283`, :cve:`2015-5307`, :cve:`2015-5327`, :cve:`2015-5364`, :cve:`2015-5366`, :cve:`2015-5697`, :cve:`2015-5706`, :cve:`2015-5707`, :cve:`2015-6252`, :cve:`2015-6526`, :cve:`2015-6937`, :cve:`2015-7509`, :cve:`2015-7513`, :cve:`2015-7515`, :cve:`2015-7550`, :cve:`2015-7566`, :cve:`2015-7613`, :cve:`2015-7799`, :cve:`2015-7833`, :cve:`2015-7872`, :cve:`2015-7884`, :cve:`2015-7885`, :cve:`2015-7990`, :cve:`2015-8104`, :cve:`2015-8215`, :cve:`2015-8324`, :cve:`2015-8374`, :cve:`2015-8539`, :cve:`2015-8543`, :cve:`2015-8550`, :cve:`2015-8551`, :cve:`2015-8552`, :cve:`2015-8553`, :cve:`2015-8569`, :cve:`2015-8575`, :cve:`2015-8660`, :cve:`2015-8709`, :cve:`2015-8746`, :cve:`2015-8767`, :cve:`2015-8785`, :cve:`2015-8787`, :cve:`2015-8812`, :cve:`2015-8816`, :cve:`2015-8830`, :cve:`2015-8839`, :cve:`2015-8844`, :cve:`2015-8845`, :cve:`2015-8950`, :cve:`2015-8952`, :cve:`2015-8953`, :cve:`2015-8955`, :cve:`2015-8956`, :cve:`2015-8961`, :cve:`2015-8962`, :cve:`2015-8963`, :cve:`2015-8964`, :cve:`2015-8966`, :cve:`2015-8967`, :cve:`2015-8970`, :cve:`2015-9004`, :cve:`2015-9016`, :cve:`2015-9289`, :cve:`2016-0617`, :cve:`2016-0723`, :cve:`2016-0728`, :cve:`2016-0758`, :cve:`2016-0821`, :cve:`2016-0823`, :cve:`2016-10044`, :cve:`2016-10088`, :cve:`2016-10147`, :cve:`2016-10150`, :cve:`2016-10153`, :cve:`2016-10154`, :cve:`2016-10200`, :cve:`2016-10208`, :cve:`2016-10229`, :cve:`2016-10318`, :cve:`2016-10723`, :cve:`2016-10741`, :cve:`2016-10764`, :cve:`2016-10905`, :cve:`2016-10906`, :cve:`2016-10907`, :cve:`2016-1237`, :cve:`2016-1575`, :cve:`2016-1576`, :cve:`2016-1583`, :cve:`2016-2053`, :cve:`2016-2069`, :cve:`2016-2070`, :cve:`2016-2085`, :cve:`2016-2117`, :cve:`2016-2143`, :cve:`2016-2184`, :cve:`2016-2185`, :cve:`2016-2186`, :cve:`2016-2187`, :cve:`2016-2188`, :cve:`2016-2383`, :cve:`2016-2384`, :cve:`2016-2543`, :cve:`2016-2544`, :cve:`2016-2545`, :cve:`2016-2546`, :cve:`2016-2547`, :cve:`2016-2548`, :cve:`2016-2549`, :cve:`2016-2550`, :cve:`2016-2782`, :cve:`2016-2847`, :cve:`2016-3044`, :cve:`2016-3070`, :cve:`2016-3134`, :cve:`2016-3135`, :cve:`2016-3136`, :cve:`2016-3137`, :cve:`2016-3138`, :cve:`2016-3139`, :cve:`2016-3140`, :cve:`2016-3156`, :cve:`2016-3157`, :cve:`2016-3672`, :cve:`2016-3689`, :cve:`2016-3713`, :cve:`2016-3841`, :cve:`2016-3857`, :cve:`2016-3951`, :cve:`2016-3955`, :cve:`2016-3961`, :cve:`2016-4440`, :cve:`2016-4470`, :cve:`2016-4482`, :cve:`2016-4485`, :cve:`2016-4486`, :cve:`2016-4557`, :cve:`2016-4558`, :cve:`2016-4565`, :cve:`2016-4568`, :cve:`2016-4569`, :cve:`2016-4578`, :cve:`2016-4580`, :cve:`2016-4581`, :cve:`2016-4794`, :cve:`2016-4805`, :cve:`2016-4913`, :cve:`2016-4951`, :cve:`2016-4997`, :cve:`2016-4998`, :cve:`2016-5195`, :cve:`2016-5243`, :cve:`2016-5244`, :cve:`2016-5400`, :cve:`2016-5412`, :cve:`2016-5696`, :cve:`2016-5728`, :cve:`2016-5828`, :cve:`2016-5829`, :cve:`2016-6130`, :cve:`2016-6136`, :cve:`2016-6156`, :cve:`2016-6162`, :cve:`2016-6187`, :cve:`2016-6197`, :cve:`2016-6198`, :cve:`2016-6213`, :cve:`2016-6327`, :cve:`2016-6480`, :cve:`2016-6516`, :cve:`2016-6786`, :cve:`2016-6787`, :cve:`2016-6828`, :cve:`2016-7039`, :cve:`2016-7042`, :cve:`2016-7097`, :cve:`2016-7117`, :cve:`2016-7425`, :cve:`2016-7910`, :cve:`2016-7911`, :cve:`2016-7912`, :cve:`2016-7913`, :cve:`2016-7914`, :cve:`2016-7915`, :cve:`2016-7916`, :cve:`2016-7917`, :cve:`2016-8399`, :cve:`2016-8405`, :cve:`2016-8630`, :cve:`2016-8632`, :cve:`2016-8633`, :cve:`2016-8636`, :cve:`2016-8645`, :cve:`2016-8646`, :cve:`2016-8650`, :cve:`2016-8655`, :cve:`2016-8658`, :cve:`2016-8666`, :cve:`2016-9083`, :cve:`2016-9084`, :cve:`2016-9120`, :cve:`2016-9178`, :cve:`2016-9191`, :cve:`2016-9313`, :cve:`2016-9555`, :cve:`2016-9576`, :cve:`2016-9588`, :cve:`2016-9604`, :cve:`2016-9685`, :cve:`2016-9754`, :cve:`2016-9755`, :cve:`2016-9756`, :cve:`2016-9777`, :cve:`2016-9793`, :cve:`2016-9794`, :cve:`2016-9806`, :cve:`2016-9919`, :cve:`2017-0605`, :cve:`2017-0627`, :cve:`2017-0750`, :cve:`2017-0786`, :cve:`2017-0861`, :cve:`2017-1000`, :cve:`2017-1000111`, :cve:`2017-1000112`, :cve:`2017-1000251`, :cve:`2017-1000252`, :cve:`2017-1000253`, :cve:`2017-1000255`, :cve:`2017-1000363`, :cve:`2017-1000364`, :cve:`2017-1000365`, :cve:`2017-1000370`, :cve:`2017-1000371`, :cve:`2017-1000379`, :cve:`2017-1000380`, :cve:`2017-1000405`, :cve:`2017-1000407`, :cve:`2017-1000410`, :cve:`2017-10661`, :cve:`2017-10662`, :cve:`2017-10663`, :cve:`2017-10810`, :cve:`2017-10911`, :cve:`2017-11089`, :cve:`2017-11176`, :cve:`2017-11472`, :cve:`2017-11473`, :cve:`2017-11600`, :cve:`2017-12134`, :cve:`2017-12146`, :cve:`2017-12153`, :cve:`2017-12154`, :cve:`2017-12168`, :cve:`2017-12188`, :cve:`2017-12190`, :cve:`2017-12192`, :cve:`2017-12193`, :cve:`2017-12762`, :cve:`2017-13080`, :cve:`2017-13166`, :cve:`2017-13167`, :cve:`2017-13168`, :cve:`2017-13215`, :cve:`2017-13216`, :cve:`2017-13220`, :cve:`2017-13305`, :cve:`2017-13686`, :cve:`2017-13695`, :cve:`2017-13715`, :cve:`2017-14051`, :cve:`2017-14106`, :cve:`2017-14140`, :cve:`2017-14156`, :cve:`2017-14340`, :cve:`2017-14489`, :cve:`2017-14497`, :cve:`2017-14954`, :cve:`2017-14991`, :cve:`2017-15102`, :cve:`2017-15115`, :cve:`2017-15116`, :cve:`2017-15121`, :cve:`2017-15126`, :cve:`2017-15127`, :cve:`2017-15128`, :cve:`2017-15129`, :cve:`2017-15265`, :cve:`2017-15274`, :cve:`2017-15299`, :cve:`2017-15306`, :cve:`2017-15537`, :cve:`2017-15649`, :cve:`2017-15868`, :cve:`2017-15951`, :cve:`2017-16525`, :cve:`2017-16526`, :cve:`2017-16527`, :cve:`2017-16528`, :cve:`2017-16529`, :cve:`2017-16530`, :cve:`2017-16531`, :cve:`2017-16532`, :cve:`2017-16533`, :cve:`2017-16534`, :cve:`2017-16535`, :cve:`2017-16536`, :cve:`2017-16537`, :cve:`2017-16538`, :cve:`2017-16643`, :cve:`2017-16644`, :cve:`2017-16645`, :cve:`2017-16646`, :cve:`2017-16647`, :cve:`2017-16648`, :cve:`2017-16649`, :cve:`2017-16650`, :cve:`2017-16911`, :cve:`2017-16912`, :cve:`2017-16913`, :cve:`2017-16914`, :cve:`2017-16939`, :cve:`2017-16994`, :cve:`2017-16995`, :cve:`2017-16996`, :cve:`2017-17052`, :cve:`2017-17053`, :cve:`2017-17448`, :cve:`2017-17449`, :cve:`2017-17450`, :cve:`2017-17558`, :cve:`2017-17712`, :cve:`2017-17741`, :cve:`2017-17805`, :cve:`2017-17806`, :cve:`2017-17807`, :cve:`2017-17852`, :cve:`2017-17853`, :cve:`2017-17854`, :cve:`2017-17855`, :cve:`2017-17856`, :cve:`2017-17857`, :cve:`2017-17862`, :cve:`2017-17863`, :cve:`2017-17864`, :cve:`2017-17975`, :cve:`2017-18017`, :cve:`2017-18075`, :cve:`2017-18079`, :cve:`2017-18174`, :cve:`2017-18193`, :cve:`2017-18200`, :cve:`2017-18202`, :cve:`2017-18203`, :cve:`2017-18204`, :cve:`2017-18208`, :cve:`2017-18216`, :cve:`2017-18218`, :cve:`2017-18221`, :cve:`2017-18222`, :cve:`2017-18224`, :cve:`2017-18232`, :cve:`2017-18241`, :cve:`2017-18249`, :cve:`2017-18255`, :cve:`2017-18257`, :cve:`2017-18261`, :cve:`2017-18270`, :cve:`2017-18344`, :cve:`2017-18360`, :cve:`2017-18379`, :cve:`2017-18509`, :cve:`2017-18549`, :cve:`2017-18550`, :cve:`2017-18551`, :cve:`2017-18552`, :cve:`2017-18595`, :cve:`2017-2583`, :cve:`2017-2584`, :cve:`2017-2596`, :cve:`2017-2618`, :cve:`2017-2634`, :cve:`2017-2636`, :cve:`2017-2647`, :cve:`2017-2671`, :cve:`2017-5123`, :cve:`2017-5546`, :cve:`2017-5547`, :cve:`2017-5548`, :cve:`2017-5549`, :cve:`2017-5550`, :cve:`2017-5551`, :cve:`2017-5576`, :cve:`2017-5577`, :cve:`2017-5669`, :cve:`2017-5715`, :cve:`2017-5753`, :cve:`2017-5754`, :cve:`2017-5897`, :cve:`2017-5967`, :cve:`2017-5970`, :cve:`2017-5972`, :cve:`2017-5986`, :cve:`2017-6001`, :cve:`2017-6074`, :cve:`2017-6214`, :cve:`2017-6345`, :cve:`2017-6346`, :cve:`2017-6347`, :cve:`2017-6348`, :cve:`2017-6353`, :cve:`2017-6874`, :cve:`2017-6951`, :cve:`2017-7184`, :cve:`2017-7187`, :cve:`2017-7261`, :cve:`2017-7273`, :cve:`2017-7277`, :cve:`2017-7294`, :cve:`2017-7308`, :cve:`2017-7346`, :cve:`2017-7374`, :cve:`2017-7472`, :cve:`2017-7477`, :cve:`2017-7482`, :cve:`2017-7487`, :cve:`2017-7495`, :cve:`2017-7518`, :cve:`2017-7533`, :cve:`2017-7541`, :cve:`2017-7542`, :cve:`2017-7558`, :cve:`2017-7616`, :cve:`2017-7618`, :cve:`2017-7645`, :cve:`2017-7889`, :cve:`2017-7895`, :cve:`2017-7979`, :cve:`2017-8061`, :cve:`2017-8062`, :cve:`2017-8063`, :cve:`2017-8064`, :cve:`2017-8065`, :cve:`2017-8066`, :cve:`2017-8067`, :cve:`2017-8068`, :cve:`2017-8069`, :cve:`2017-8070`, :cve:`2017-8071`, :cve:`2017-8072`, :cve:`2017-8106`, :cve:`2017-8240`, :cve:`2017-8797`, :cve:`2017-8824`, :cve:`2017-8831`, :cve:`2017-8890`, :cve:`2017-8924`, :cve:`2017-8925`, :cve:`2017-9059`, :cve:`2017-9074`, :cve:`2017-9075`, :cve:`2017-9076`, :cve:`2017-9077`, :cve:`2017-9150`, :cve:`2017-9211`, :cve:`2017-9242`, :cve:`2017-9605`, :cve:`2017-9725`, :cve:`2017-9984`, :cve:`2017-9985`, :cve:`2017-9986`, :cve:`2018-1000004`, :cve:`2018-1000026`, :cve:`2018-1000028`, :cve:`2018-1000199`, :cve:`2018-1000200`, :cve:`2018-1000204`, :cve:`2018-10021`, :cve:`2018-10074`, :cve:`2018-10087`, :cve:`2018-10124`, :cve:`2018-10322`, :cve:`2018-10323`, :cve:`2018-1065`, :cve:`2018-1066`, :cve:`2018-10675`, :cve:`2018-1068`, :cve:`2018-10840`, :cve:`2018-10853`, :cve:`2018-1087`, :cve:`2018-10876`, :cve:`2018-10877`, :cve:`2018-10878`, :cve:`2018-10879`, :cve:`2018-10880`, :cve:`2018-10881`, :cve:`2018-10882`, :cve:`2018-10883`, :cve:`2018-10901`, :cve:`2018-10902`, :cve:`2018-1091`, :cve:`2018-1092`, :cve:`2018-1093`, :cve:`2018-10938`, :cve:`2018-1094`, :cve:`2018-10940`, :cve:`2018-1095`, :cve:`2018-1108`, :cve:`2018-1118`, :cve:`2018-1120`, :cve:`2018-11232`, :cve:`2018-1128`, :cve:`2018-1129`, :cve:`2018-1130`, :cve:`2018-11412`, :cve:`2018-11506`, :cve:`2018-11508`, :cve:`2018-12126`, :cve:`2018-12127`, :cve:`2018-12130`, :cve:`2018-12207`, :cve:`2018-12232`, :cve:`2018-12233`, :cve:`2018-12633`, :cve:`2018-12714`, :cve:`2018-12896`, :cve:`2018-12904`, :cve:`2018-13053`, :cve:`2018-13093`, :cve:`2018-13094`, :cve:`2018-13095`, :cve:`2018-13096`, :cve:`2018-13097`, :cve:`2018-13098`, :cve:`2018-13099`, :cve:`2018-13100`, :cve:`2018-13405`, :cve:`2018-13406`, :cve:`2018-14609`, :cve:`2018-14610`, :cve:`2018-14611`, :cve:`2018-14612`, :cve:`2018-14613`, :cve:`2018-14614`, :cve:`2018-14615`, :cve:`2018-14616`, :cve:`2018-14617`, :cve:`2018-14619`, :cve:`2018-14625`, :cve:`2018-14633`, :cve:`2018-14634`, :cve:`2018-14641`, :cve:`2018-14646`, :cve:`2018-14656`, :cve:`2018-14678`, :cve:`2018-14734`, :cve:`2018-15471`, :cve:`2018-15572`, :cve:`2018-15594`, :cve:`2018-16276`, :cve:`2018-16597`, :cve:`2018-16658`, :cve:`2018-16862`, :cve:`2018-16871`, :cve:`2018-16880`, :cve:`2018-16882`, :cve:`2018-16884`, :cve:`2018-17182`, :cve:`2018-17972`, :cve:`2018-18021`, :cve:`2018-18281`, :cve:`2018-18386`, :cve:`2018-18397`, :cve:`2018-18445`, :cve:`2018-18559`, :cve:`2018-18690`, :cve:`2018-18710`, :cve:`2018-18955`, :cve:`2018-19406`, :cve:`2018-19407`, :cve:`2018-19824`, :cve:`2018-19854`, :cve:`2018-19985`, :cve:`2018-20169`, :cve:`2018-20449`, :cve:`2018-20509`, :cve:`2018-20510`, :cve:`2018-20511`, :cve:`2018-20669`, :cve:`2018-20784`, :cve:`2018-20836`, :cve:`2018-20854`, :cve:`2018-20855`, :cve:`2018-20856`, :cve:`2018-20961`, :cve:`2018-20976`, :cve:`2018-21008`, :cve:`2018-25015`, :cve:`2018-25020`, :cve:`2018-3620`, :cve:`2018-3639`, :cve:`2018-3646`, :cve:`2018-3665`, :cve:`2018-3693`, :cve:`2018-5332`, :cve:`2018-5333`, :cve:`2018-5344`, :cve:`2018-5390`, :cve:`2018-5391`, :cve:`2018-5703`, :cve:`2018-5750`, :cve:`2018-5803`, :cve:`2018-5814`, :cve:`2018-5848`, :cve:`2018-5873`, :cve:`2018-5953`, :cve:`2018-5995`, :cve:`2018-6412`, :cve:`2018-6554`, :cve:`2018-6555`, :cve:`2018-6927`, :cve:`2018-7191`, :cve:`2018-7273`, :cve:`2018-7480`, :cve:`2018-7492`, :cve:`2018-7566`, :cve:`2018-7740`, :cve:`2018-7754`, :cve:`2018-7755`, :cve:`2018-7757`, :cve:`2018-7995`, :cve:`2018-8043`, :cve:`2018-8087`, :cve:`2018-8781`, :cve:`2018-8822`, :cve:`2018-8897`, :cve:`2018-9363`, :cve:`2018-9385`, :cve:`2018-9415`, :cve:`2018-9422`, :cve:`2018-9465`, :cve:`2018-9516`, :cve:`2018-9517`, :cve:`2018-9518`, :cve:`2018-9568`, :cve:`2019-0136`, :cve:`2019-0145`, :cve:`2019-0146`, :cve:`2019-0147`, :cve:`2019-0148`, :cve:`2019-0149`, :cve:`2019-0154`, :cve:`2019-0155`, :cve:`2019-10124`, :cve:`2019-10125`, :cve:`2019-10126`, :cve:`2019-10142`, :cve:`2019-10207`, :cve:`2019-10220`, :cve:`2019-10638`, :cve:`2019-10639`, :cve:`2019-11085`, :cve:`2019-11091`, :cve:`2019-11135`, :cve:`2019-11190`, :cve:`2019-11191`, :cve:`2019-1125`, :cve:`2019-11477`, :cve:`2019-11478`, :cve:`2019-11479`, :cve:`2019-11486`, :cve:`2019-11487`, :cve:`2019-11599`, :cve:`2019-11683`, :cve:`2019-11810`, :cve:`2019-11811`, :cve:`2019-11815`, :cve:`2019-11833`, :cve:`2019-11884`, :cve:`2019-12378`, :cve:`2019-12379`, :cve:`2019-12380`, :cve:`2019-12381`, :cve:`2019-12382`, :cve:`2019-12454`, :cve:`2019-12455`, :cve:`2019-12614`, :cve:`2019-12615`, :cve:`2019-12817`, :cve:`2019-12818`, :cve:`2019-12819`, :cve:`2019-12881`, :cve:`2019-12984`, :cve:`2019-13233`, :cve:`2019-13272`, :cve:`2019-13631`, :cve:`2019-13648`, :cve:`2019-14283`, :cve:`2019-14284`, :cve:`2019-14615`, :cve:`2019-14763`, :cve:`2019-14814`, :cve:`2019-14815`, :cve:`2019-14816`, :cve:`2019-14821`, :cve:`2019-14835`, :cve:`2019-14895`, :cve:`2019-14896`, :cve:`2019-14897`, :cve:`2019-14901`, :cve:`2019-15030`, :cve:`2019-15031`, :cve:`2019-15090`, :cve:`2019-15098`, :cve:`2019-15099`, :cve:`2019-15117`, :cve:`2019-15118`, :cve:`2019-15211`, :cve:`2019-15212`, :cve:`2019-15213`, :cve:`2019-15214`, :cve:`2019-15215`, :cve:`2019-15216`, :cve:`2019-15217`, :cve:`2019-15218`, :cve:`2019-15219`, :cve:`2019-15220`, :cve:`2019-15221`, :cve:`2019-15222`, :cve:`2019-15223`, :cve:`2019-15291`, :cve:`2019-15292`, :cve:`2019-15504`, :cve:`2019-15505`, :cve:`2019-15538`, :cve:`2019-15666`, :cve:`2019-15794`, :cve:`2019-15807`, :cve:`2019-15916`, :cve:`2019-15917`, :cve:`2019-15918`, :cve:`2019-15919`, :cve:`2019-15920`, :cve:`2019-15921`, :cve:`2019-15922`, :cve:`2019-15923`, :cve:`2019-15924`, :cve:`2019-15925`, :cve:`2019-15926`, :cve:`2019-15927`, :cve:`2019-16229`, :cve:`2019-16230`, :cve:`2019-16231`, :cve:`2019-16232`, :cve:`2019-16233`, :cve:`2019-16234`, :cve:`2019-16413`, :cve:`2019-16714`, :cve:`2019-16746`, :cve:`2019-16921`, :cve:`2019-16994`, :cve:`2019-16995`, :cve:`2019-17052`, :cve:`2019-17053`, :cve:`2019-17054`, :cve:`2019-17055`, :cve:`2019-17056`, :cve:`2019-17075`, :cve:`2019-17133`, :cve:`2019-17351`, :cve:`2019-17666`, :cve:`2019-18198`, :cve:`2019-18282`, :cve:`2019-18660`, :cve:`2019-18675`, :cve:`2019-18683`, :cve:`2019-18786`, :cve:`2019-18805`, :cve:`2019-18806`, :cve:`2019-18807`, :cve:`2019-18808`, :cve:`2019-18809`, :cve:`2019-18810`, :cve:`2019-18811`, :cve:`2019-18812`, :cve:`2019-18813`, :cve:`2019-18814`, :cve:`2019-18885`, :cve:`2019-19036`, :cve:`2019-19037`, :cve:`2019-19039`, :cve:`2019-19043`, :cve:`2019-19044`, :cve:`2019-19045`, :cve:`2019-19046`, :cve:`2019-19047`, :cve:`2019-19048`, :cve:`2019-19049`, :cve:`2019-19050`, :cve:`2019-19051`, :cve:`2019-19052`, :cve:`2019-19053`, :cve:`2019-19054`, :cve:`2019-19055`, :cve:`2019-19056`, :cve:`2019-19057`, :cve:`2019-19058`, :cve:`2019-19059`, :cve:`2019-19060`, :cve:`2019-19061`, :cve:`2019-19062`, :cve:`2019-19063`, :cve:`2019-19064`, :cve:`2019-19065`, :cve:`2019-19066`, :cve:`2019-19067`, :cve:`2019-19068`, :cve:`2019-19069`, :cve:`2019-19070`, :cve:`2019-19071`, :cve:`2019-19072`, :cve:`2019-19073`, :cve:`2019-19074`, :cve:`2019-19075`, :cve:`2019-19076`, :cve:`2019-19077`, :cve:`2019-19078`, :cve:`2019-19079`, :cve:`2019-19080`, :cve:`2019-19081`, :cve:`2019-19082`, :cve:`2019-19083`, :cve:`2019-19227`, :cve:`2019-19241`, :cve:`2019-19252`, :cve:`2019-19318`, :cve:`2019-19319`, :cve:`2019-19332`, :cve:`2019-19338`, :cve:`2019-19377`, :cve:`2019-19447`, :cve:`2019-19448`, :cve:`2019-19449`, :cve:`2019-19462`, :cve:`2019-19523`, :cve:`2019-19524`, :cve:`2019-19525`, :cve:`2019-19526`, :cve:`2019-19527`, :cve:`2019-19528`, :cve:`2019-19529`, :cve:`2019-19530`, :cve:`2019-19531`, :cve:`2019-19532`, :cve:`2019-19533`, :cve:`2019-19534`, :cve:`2019-19535`, :cve:`2019-19536`, :cve:`2019-19537`, :cve:`2019-19543`, :cve:`2019-19602`, :cve:`2019-19767`, :cve:`2019-19768`, :cve:`2019-19769`, :cve:`2019-19770`, :cve:`2019-19807`, :cve:`2019-19813`, :cve:`2019-19815`, :cve:`2019-19816`, :cve:`2019-19922`, :cve:`2019-19927`, :cve:`2019-19947`, :cve:`2019-19965` and :cve:`2019-1999` 33- linux-yocto/5.15: Ignore :cve_nist:`2003-1604`, :cve_nist:`2004-0230`, :cve_nist:`2006-3635`, :cve_nist:`2006-5331`, :cve_nist:`2006-6128`, :cve_nist:`2007-4774`, :cve_nist:`2007-6761`, :cve_nist:`2007-6762`, :cve_nist:`2008-7316`, :cve_nist:`2009-2692`, :cve_nist:`2010-0008`, :cve_nist:`2010-3432`, :cve_nist:`2010-4648`, :cve_nist:`2010-5313`, :cve_nist:`2010-5328`, :cve_nist:`2010-5329`, :cve_nist:`2010-5331`, :cve_nist:`2010-5332`, :cve_nist:`2011-4098`, :cve_nist:`2011-4131`, :cve_nist:`2011-4915`, :cve_nist:`2011-5321`, :cve_nist:`2011-5327`, :cve_nist:`2012-0957`, :cve_nist:`2012-2119`, :cve_nist:`2012-2136`, :cve_nist:`2012-2137`, :cve_nist:`2012-2313`, :cve_nist:`2012-2319`, :cve_nist:`2012-2372`, :cve_nist:`2012-2375`, :cve_nist:`2012-2390`, :cve_nist:`2012-2669`, :cve_nist:`2012-2744`, :cve_nist:`2012-2745`, :cve_nist:`2012-3364`, :cve_nist:`2012-3375`, :cve_nist:`2012-3400`, :cve_nist:`2012-3412`, :cve_nist:`2012-3430`, :cve_nist:`2012-3510`, :cve_nist:`2012-3511`, :cve_nist:`2012-3520`, :cve_nist:`2012-3552`, :cve_nist:`2012-4398`, :cve_nist:`2012-4444`, :cve_nist:`2012-4461`, :cve_nist:`2012-4467`, :cve_nist:`2012-4508`, :cve_nist:`2012-4530`, :cve_nist:`2012-4565`, :cve_nist:`2012-5374`, :cve_nist:`2012-5375`, :cve_nist:`2012-5517`, :cve_nist:`2012-6536`, :cve_nist:`2012-6537`, :cve_nist:`2012-6538`, :cve_nist:`2012-6539`, :cve_nist:`2012-6540`, :cve_nist:`2012-6541`, :cve_nist:`2012-6542`, :cve_nist:`2012-6543`, :cve_nist:`2012-6544`, :cve_nist:`2012-6545`, :cve_nist:`2012-6546`, :cve_nist:`2012-6547`, :cve_nist:`2012-6548`, :cve_nist:`2012-6549`, :cve_nist:`2012-6638`, :cve_nist:`2012-6647`, :cve_nist:`2012-6657`, :cve_nist:`2012-6689`, :cve_nist:`2012-6701`, :cve_nist:`2012-6703`, :cve_nist:`2012-6704`, :cve_nist:`2012-6712`, :cve_nist:`2013-0160`, :cve_nist:`2013-0190`, :cve_nist:`2013-0216`, :cve_nist:`2013-0217`, :cve_nist:`2013-0228`, :cve_nist:`2013-0231`, :cve_nist:`2013-0268`, :cve_nist:`2013-0290`, :cve_nist:`2013-0309`, :cve_nist:`2013-0310`, :cve_nist:`2013-0311`, :cve_nist:`2013-0313`, :cve_nist:`2013-0343`, :cve_nist:`2013-0349`, :cve_nist:`2013-0871`, :cve_nist:`2013-0913`, :cve_nist:`2013-0914`, :cve_nist:`2013-1059`, :cve_nist:`2013-1763`, :cve_nist:`2013-1767`, :cve_nist:`2013-1772`, :cve_nist:`2013-1773`, :cve_nist:`2013-1774`, :cve_nist:`2013-1792`, :cve_nist:`2013-1796`, :cve_nist:`2013-1797`, :cve_nist:`2013-1798`, :cve_nist:`2013-1819`, :cve_nist:`2013-1826`, :cve_nist:`2013-1827`, :cve_nist:`2013-1828`, :cve_nist:`2013-1848`, :cve_nist:`2013-1858`, :cve_nist:`2013-1860`, :cve_nist:`2013-1928`, :cve_nist:`2013-1929`, :cve_nist:`2013-1943`, :cve_nist:`2013-1956`, :cve_nist:`2013-1957`, :cve_nist:`2013-1958`, :cve_nist:`2013-1959`, :cve_nist:`2013-1979`, :cve_nist:`2013-2015`, :cve_nist:`2013-2017`, :cve_nist:`2013-2058`, :cve_nist:`2013-2094`, :cve_nist:`2013-2128`, :cve_nist:`2013-2140`, :cve_nist:`2013-2141`, :cve_nist:`2013-2146`, :cve_nist:`2013-2147`, :cve_nist:`2013-2148`, :cve_nist:`2013-2164`, :cve_nist:`2013-2206`, :cve_nist:`2013-2232`, :cve_nist:`2013-2234`, :cve_nist:`2013-2237`, :cve_nist:`2013-2546`, :cve_nist:`2013-2547`, :cve_nist:`2013-2548`, :cve_nist:`2013-2596`, :cve_nist:`2013-2634`, :cve_nist:`2013-2635`, :cve_nist:`2013-2636`, :cve_nist:`2013-2850`, :cve_nist:`2013-2851`, :cve_nist:`2013-2852`, :cve_nist:`2013-2888`, :cve_nist:`2013-2889`, :cve_nist:`2013-2890`, :cve_nist:`2013-2891`, :cve_nist:`2013-2892`, :cve_nist:`2013-2893`, :cve_nist:`2013-2894`, :cve_nist:`2013-2895`, :cve_nist:`2013-2896`, :cve_nist:`2013-2897`, :cve_nist:`2013-2898`, :cve_nist:`2013-2899`, :cve_nist:`2013-2929`, :cve_nist:`2013-2930`, :cve_nist:`2013-3076`, :cve_nist:`2013-3222`, :cve_nist:`2013-3223`, :cve_nist:`2013-3224`, :cve_nist:`2013-3225`, :cve_nist:`2013-3226`, :cve_nist:`2013-3227`, :cve_nist:`2013-3228`, :cve_nist:`2013-3229`, :cve_nist:`2013-3230`, :cve_nist:`2013-3231`, :cve_nist:`2013-3232`, :cve_nist:`2013-3233`, :cve_nist:`2013-3234`, :cve_nist:`2013-3235`, :cve_nist:`2013-3236`, :cve_nist:`2013-3237`, :cve_nist:`2013-3301`, :cve_nist:`2013-3302`, :cve_nist:`2013-4125`, :cve_nist:`2013-4127`, :cve_nist:`2013-4129`, :cve_nist:`2013-4162`, :cve_nist:`2013-4163`, :cve_nist:`2013-4205`, :cve_nist:`2013-4220`, :cve_nist:`2013-4247`, :cve_nist:`2013-4254`, :cve_nist:`2013-4270`, :cve_nist:`2013-4299`, :cve_nist:`2013-4300`, :cve_nist:`2013-4312`, :cve_nist:`2013-4343`, :cve_nist:`2013-4345`, :cve_nist:`2013-4348`, :cve_nist:`2013-4350`, :cve_nist:`2013-4387`, :cve_nist:`2013-4470`, :cve_nist:`2013-4483`, :cve_nist:`2013-4511`, :cve_nist:`2013-4512`, :cve_nist:`2013-4513`, :cve_nist:`2013-4514`, :cve_nist:`2013-4515`, :cve_nist:`2013-4516`, :cve_nist:`2013-4563`, :cve_nist:`2013-4579`, :cve_nist:`2013-4587`, :cve_nist:`2013-4588`, :cve_nist:`2013-4591`, :cve_nist:`2013-4592`, :cve_nist:`2013-5634`, :cve_nist:`2013-6282`, :cve_nist:`2013-6367`, :cve_nist:`2013-6368`, :cve_nist:`2013-6376`, :cve_nist:`2013-6378`, :cve_nist:`2013-6380`, :cve_nist:`2013-6381`, :cve_nist:`2013-6382`, :cve_nist:`2013-6383`, :cve_nist:`2013-6431`, :cve_nist:`2013-6432`, :cve_nist:`2013-6885`, :cve_nist:`2013-7026`, :cve_nist:`2013-7027`, :cve_nist:`2013-7263`, :cve_nist:`2013-7264`, :cve_nist:`2013-7265`, :cve_nist:`2013-7266`, :cve_nist:`2013-7267`, :cve_nist:`2013-7268`, :cve_nist:`2013-7269`, :cve_nist:`2013-7270`, :cve_nist:`2013-7271`, :cve_nist:`2013-7281`, :cve_nist:`2013-7339`, :cve_nist:`2013-7348`, :cve_nist:`2013-7421`, :cve_nist:`2013-7446`, :cve_nist:`2013-7470`, :cve_nist:`2014-0038`, :cve_nist:`2014-0049`, :cve_nist:`2014-0055`, :cve_nist:`2014-0069`, :cve_nist:`2014-0077`, :cve_nist:`2014-0100`, :cve_nist:`2014-0101`, :cve_nist:`2014-0102`, :cve_nist:`2014-0131`, :cve_nist:`2014-0155`, :cve_nist:`2014-0181`, :cve_nist:`2014-0196`, :cve_nist:`2014-0203`, :cve_nist:`2014-0205`, :cve_nist:`2014-0206`, :cve_nist:`2014-1438`, :cve_nist:`2014-1444`, :cve_nist:`2014-1445`, :cve_nist:`2014-1446`, :cve_nist:`2014-1690`, :cve_nist:`2014-1737`, :cve_nist:`2014-1738`, :cve_nist:`2014-1739`, :cve_nist:`2014-1874`, :cve_nist:`2014-2038`, :cve_nist:`2014-2039`, :cve_nist:`2014-2309`, :cve_nist:`2014-2523`, :cve_nist:`2014-2568`, :cve_nist:`2014-2580`, :cve_nist:`2014-2672`, :cve_nist:`2014-2673`, :cve_nist:`2014-2678`, :cve_nist:`2014-2706`, :cve_nist:`2014-2739`, :cve_nist:`2014-2851`, :cve_nist:`2014-2889`, :cve_nist:`2014-3122`, :cve_nist:`2014-3144`, :cve_nist:`2014-3145`, :cve_nist:`2014-3153`, :cve_nist:`2014-3180`, :cve_nist:`2014-3181`, :cve_nist:`2014-3182`, :cve_nist:`2014-3183`, :cve_nist:`2014-3184`, :cve_nist:`2014-3185`, :cve_nist:`2014-3186`, :cve_nist:`2014-3534`, :cve_nist:`2014-3535`, :cve_nist:`2014-3601`, :cve_nist:`2014-3610`, :cve_nist:`2014-3611`, :cve_nist:`2014-3631`, :cve_nist:`2014-3645`, :cve_nist:`2014-3646`, :cve_nist:`2014-3647`, :cve_nist:`2014-3673`, :cve_nist:`2014-3687`, :cve_nist:`2014-3688`, :cve_nist:`2014-3690`, :cve_nist:`2014-3917`, :cve_nist:`2014-3940`, :cve_nist:`2014-4014`, :cve_nist:`2014-4027`, :cve_nist:`2014-4157`, :cve_nist:`2014-4171`, :cve_nist:`2014-4508`, :cve_nist:`2014-4608`, :cve_nist:`2014-4611`, :cve_nist:`2014-4652`, :cve_nist:`2014-4653`, :cve_nist:`2014-4654`, :cve_nist:`2014-4655`, :cve_nist:`2014-4656`, :cve_nist:`2014-4667`, :cve_nist:`2014-4699`, :cve_nist:`2014-4943`, :cve_nist:`2014-5045`, :cve_nist:`2014-5077`, :cve_nist:`2014-5206`, :cve_nist:`2014-5207`, :cve_nist:`2014-5471`, :cve_nist:`2014-5472`, :cve_nist:`2014-6410`, :cve_nist:`2014-6416`, :cve_nist:`2014-6417`, :cve_nist:`2014-6418`, :cve_nist:`2014-7145`, :cve_nist:`2014-7283`, :cve_nist:`2014-7284`, :cve_nist:`2014-7822`, :cve_nist:`2014-7825`, :cve_nist:`2014-7826`, :cve_nist:`2014-7841`, :cve_nist:`2014-7842`, :cve_nist:`2014-7843`, :cve_nist:`2014-7970`, :cve_nist:`2014-7975`, :cve_nist:`2014-8086`, :cve_nist:`2014-8133`, :cve_nist:`2014-8134`, :cve_nist:`2014-8159`, :cve_nist:`2014-8160`, :cve_nist:`2014-8171`, :cve_nist:`2014-8172`, :cve_nist:`2014-8173`, :cve_nist:`2014-8369`, :cve_nist:`2014-8480`, :cve_nist:`2014-8481`, :cve_nist:`2014-8559`, :cve_nist:`2014-8709`, :cve_nist:`2014-8884`, :cve_nist:`2014-8989`, :cve_nist:`2014-9090`, :cve_nist:`2014-9322`, :cve_nist:`2014-9419`, :cve_nist:`2014-9420`, :cve_nist:`2014-9428`, :cve_nist:`2014-9529`, :cve_nist:`2014-9584`, :cve_nist:`2014-9585`, :cve_nist:`2014-9644`, :cve_nist:`2014-9683`, :cve_nist:`2014-9710`, :cve_nist:`2014-9715`, :cve_nist:`2014-9717`, :cve_nist:`2014-9728`, :cve_nist:`2014-9729`, :cve_nist:`2014-9730`, :cve_nist:`2014-9731`, :cve_nist:`2014-9803`, :cve_nist:`2014-9870`, :cve_nist:`2014-9888`, :cve_nist:`2014-9895`, :cve_nist:`2014-9903`, :cve_nist:`2014-9904`, :cve_nist:`2014-9914`, :cve_nist:`2014-9922`, :cve_nist:`2014-9940`, :cve_nist:`2015-0239`, :cve_nist:`2015-0274`, :cve_nist:`2015-0275`, :cve_nist:`2015-1333`, :cve_nist:`2015-1339`, :cve_nist:`2015-1350`, :cve_nist:`2015-1420`, :cve_nist:`2015-1421`, :cve_nist:`2015-1465`, :cve_nist:`2015-1573`, :cve_nist:`2015-1593`, :cve_nist:`2015-1805`, :cve_nist:`2015-2041`, :cve_nist:`2015-2042`, :cve_nist:`2015-2150`, :cve_nist:`2015-2666`, :cve_nist:`2015-2672`, :cve_nist:`2015-2686`, :cve_nist:`2015-2830`, :cve_nist:`2015-2922`, :cve_nist:`2015-2925`, :cve_nist:`2015-3212`, :cve_nist:`2015-3214`, :cve_nist:`2015-3288`, :cve_nist:`2015-3290`, :cve_nist:`2015-3291`, :cve_nist:`2015-3331`, :cve_nist:`2015-3339`, :cve_nist:`2015-3636`, :cve_nist:`2015-4001`, :cve_nist:`2015-4002`, :cve_nist:`2015-4003`, :cve_nist:`2015-4004`, :cve_nist:`2015-4036`, :cve_nist:`2015-4167`, :cve_nist:`2015-4170`, :cve_nist:`2015-4176`, :cve_nist:`2015-4177`, :cve_nist:`2015-4178`, :cve_nist:`2015-4692`, :cve_nist:`2015-4700`, :cve_nist:`2015-5156`, :cve_nist:`2015-5157`, :cve_nist:`2015-5257`, :cve_nist:`2015-5283`, :cve_nist:`2015-5307`, :cve_nist:`2015-5327`, :cve_nist:`2015-5364`, :cve_nist:`2015-5366`, :cve_nist:`2015-5697`, :cve_nist:`2015-5706`, :cve_nist:`2015-5707`, :cve_nist:`2015-6252`, :cve_nist:`2015-6526`, :cve_nist:`2015-6937`, :cve_nist:`2015-7509`, :cve_nist:`2015-7513`, :cve_nist:`2015-7515`, :cve_nist:`2015-7550`, :cve_nist:`2015-7566`, :cve_nist:`2015-7613`, :cve_nist:`2015-7799`, :cve_nist:`2015-7833`, :cve_nist:`2015-7872`, :cve_nist:`2015-7884`, :cve_nist:`2015-7885`, :cve_nist:`2015-7990`, :cve_nist:`2015-8104`, :cve_nist:`2015-8215`, :cve_nist:`2015-8324`, :cve_nist:`2015-8374`, :cve_nist:`2015-8539`, :cve_nist:`2015-8543`, :cve_nist:`2015-8550`, :cve_nist:`2015-8551`, :cve_nist:`2015-8552`, :cve_nist:`2015-8553`, :cve_nist:`2015-8569`, :cve_nist:`2015-8575`, :cve_nist:`2015-8660`, :cve_nist:`2015-8709`, :cve_nist:`2015-8746`, :cve_nist:`2015-8767`, :cve_nist:`2015-8785`, :cve_nist:`2015-8787`, :cve_nist:`2015-8812`, :cve_nist:`2015-8816`, :cve_nist:`2015-8830`, :cve_nist:`2015-8839`, :cve_nist:`2015-8844`, :cve_nist:`2015-8845`, :cve_nist:`2015-8950`, :cve_nist:`2015-8952`, :cve_nist:`2015-8953`, :cve_nist:`2015-8955`, :cve_nist:`2015-8956`, :cve_nist:`2015-8961`, :cve_nist:`2015-8962`, :cve_nist:`2015-8963`, :cve_nist:`2015-8964`, :cve_nist:`2015-8966`, :cve_nist:`2015-8967`, :cve_nist:`2015-8970`, :cve_nist:`2015-9004`, :cve_nist:`2015-9016`, :cve_nist:`2015-9289`, :cve_nist:`2016-0617`, :cve_nist:`2016-0723`, :cve_nist:`2016-0728`, :cve_nist:`2016-0758`, :cve_nist:`2016-0821`, :cve_nist:`2016-0823`, :cve_nist:`2016-10044`, :cve_nist:`2016-10088`, :cve_nist:`2016-10147`, :cve_nist:`2016-10150`, :cve_nist:`2016-10153`, :cve_nist:`2016-10154`, :cve_nist:`2016-10200`, :cve_nist:`2016-10208`, :cve_nist:`2016-10229`, :cve_nist:`2016-10318`, :cve_nist:`2016-10723`, :cve_nist:`2016-10741`, :cve_nist:`2016-10764`, :cve_nist:`2016-10905`, :cve_nist:`2016-10906`, :cve_nist:`2016-10907`, :cve_nist:`2016-1237`, :cve_nist:`2016-1575`, :cve_nist:`2016-1576`, :cve_nist:`2016-1583`, :cve_nist:`2016-2053`, :cve_nist:`2016-2069`, :cve_nist:`2016-2070`, :cve_nist:`2016-2085`, :cve_nist:`2016-2117`, :cve_nist:`2016-2143`, :cve_nist:`2016-2184`, :cve_nist:`2016-2185`, :cve_nist:`2016-2186`, :cve_nist:`2016-2187`, :cve_nist:`2016-2188`, :cve_nist:`2016-2383`, :cve_nist:`2016-2384`, :cve_nist:`2016-2543`, :cve_nist:`2016-2544`, :cve_nist:`2016-2545`, :cve_nist:`2016-2546`, :cve_nist:`2016-2547`, :cve_nist:`2016-2548`, :cve_nist:`2016-2549`, :cve_nist:`2016-2550`, :cve_nist:`2016-2782`, :cve_nist:`2016-2847`, :cve_nist:`2016-3044`, :cve_nist:`2016-3070`, :cve_nist:`2016-3134`, :cve_nist:`2016-3135`, :cve_nist:`2016-3136`, :cve_nist:`2016-3137`, :cve_nist:`2016-3138`, :cve_nist:`2016-3139`, :cve_nist:`2016-3140`, :cve_nist:`2016-3156`, :cve_nist:`2016-3157`, :cve_nist:`2016-3672`, :cve_nist:`2016-3689`, :cve_nist:`2016-3713`, :cve_nist:`2016-3841`, :cve_nist:`2016-3857`, :cve_nist:`2016-3951`, :cve_nist:`2016-3955`, :cve_nist:`2016-3961`, :cve_nist:`2016-4440`, :cve_nist:`2016-4470`, :cve_nist:`2016-4482`, :cve_nist:`2016-4485`, :cve_nist:`2016-4486`, :cve_nist:`2016-4557`, :cve_nist:`2016-4558`, :cve_nist:`2016-4565`, :cve_nist:`2016-4568`, :cve_nist:`2016-4569`, :cve_nist:`2016-4578`, :cve_nist:`2016-4580`, :cve_nist:`2016-4581`, :cve_nist:`2016-4794`, :cve_nist:`2016-4805`, :cve_nist:`2016-4913`, :cve_nist:`2016-4951`, :cve_nist:`2016-4997`, :cve_nist:`2016-4998`, :cve_nist:`2016-5195`, :cve_nist:`2016-5243`, :cve_nist:`2016-5244`, :cve_nist:`2016-5400`, :cve_nist:`2016-5412`, :cve_nist:`2016-5696`, :cve_nist:`2016-5728`, :cve_nist:`2016-5828`, :cve_nist:`2016-5829`, :cve_nist:`2016-6130`, :cve_nist:`2016-6136`, :cve_nist:`2016-6156`, :cve_nist:`2016-6162`, :cve_nist:`2016-6187`, :cve_nist:`2016-6197`, :cve_nist:`2016-6198`, :cve_nist:`2016-6213`, :cve_nist:`2016-6327`, :cve_nist:`2016-6480`, :cve_nist:`2016-6516`, :cve_nist:`2016-6786`, :cve_nist:`2016-6787`, :cve_nist:`2016-6828`, :cve_nist:`2016-7039`, :cve_nist:`2016-7042`, :cve_nist:`2016-7097`, :cve_nist:`2016-7117`, :cve_nist:`2016-7425`, :cve_nist:`2016-7910`, :cve_nist:`2016-7911`, :cve_nist:`2016-7912`, :cve_nist:`2016-7913`, :cve_nist:`2016-7914`, :cve_nist:`2016-7915`, :cve_nist:`2016-7916`, :cve_nist:`2016-7917`, :cve_nist:`2016-8399`, :cve_nist:`2016-8405`, :cve_nist:`2016-8630`, :cve_nist:`2016-8632`, :cve_nist:`2016-8633`, :cve_nist:`2016-8636`, :cve_nist:`2016-8645`, :cve_nist:`2016-8646`, :cve_nist:`2016-8650`, :cve_nist:`2016-8655`, :cve_nist:`2016-8658`, :cve_nist:`2016-8666`, :cve_nist:`2016-9083`, :cve_nist:`2016-9084`, :cve_nist:`2016-9120`, :cve_nist:`2016-9178`, :cve_nist:`2016-9191`, :cve_nist:`2016-9313`, :cve_nist:`2016-9555`, :cve_nist:`2016-9576`, :cve_nist:`2016-9588`, :cve_nist:`2016-9604`, :cve_nist:`2016-9685`, :cve_nist:`2016-9754`, :cve_nist:`2016-9755`, :cve_nist:`2016-9756`, :cve_nist:`2016-9777`, :cve_nist:`2016-9793`, :cve_nist:`2016-9794`, :cve_nist:`2016-9806`, :cve_nist:`2016-9919`, :cve_nist:`2017-0605`, :cve_nist:`2017-0627`, :cve_nist:`2017-0750`, :cve_nist:`2017-0786`, :cve_nist:`2017-0861`, :cve_nist:`2017-1000`, :cve_nist:`2017-1000111`, :cve_nist:`2017-1000112`, :cve_nist:`2017-1000251`, :cve_nist:`2017-1000252`, :cve_nist:`2017-1000253`, :cve_nist:`2017-1000255`, :cve_nist:`2017-1000363`, :cve_nist:`2017-1000364`, :cve_nist:`2017-1000365`, :cve_nist:`2017-1000370`, :cve_nist:`2017-1000371`, :cve_nist:`2017-1000379`, :cve_nist:`2017-1000380`, :cve_nist:`2017-1000405`, :cve_nist:`2017-1000407`, :cve_nist:`2017-1000410`, :cve_nist:`2017-10661`, :cve_nist:`2017-10662`, :cve_nist:`2017-10663`, :cve_nist:`2017-10810`, :cve_nist:`2017-10911`, :cve_nist:`2017-11089`, :cve_nist:`2017-11176`, :cve_nist:`2017-11472`, :cve_nist:`2017-11473`, :cve_nist:`2017-11600`, :cve_nist:`2017-12134`, :cve_nist:`2017-12146`, :cve_nist:`2017-12153`, :cve_nist:`2017-12154`, :cve_nist:`2017-12168`, :cve_nist:`2017-12188`, :cve_nist:`2017-12190`, :cve_nist:`2017-12192`, :cve_nist:`2017-12193`, :cve_nist:`2017-12762`, :cve_nist:`2017-13080`, :cve_nist:`2017-13166`, :cve_nist:`2017-13167`, :cve_nist:`2017-13168`, :cve_nist:`2017-13215`, :cve_nist:`2017-13216`, :cve_nist:`2017-13220`, :cve_nist:`2017-13305`, :cve_nist:`2017-13686`, :cve_nist:`2017-13695`, :cve_nist:`2017-13715`, :cve_nist:`2017-14051`, :cve_nist:`2017-14106`, :cve_nist:`2017-14140`, :cve_nist:`2017-14156`, :cve_nist:`2017-14340`, :cve_nist:`2017-14489`, :cve_nist:`2017-14497`, :cve_nist:`2017-14954`, :cve_nist:`2017-14991`, :cve_nist:`2017-15102`, :cve_nist:`2017-15115`, :cve_nist:`2017-15116`, :cve_nist:`2017-15121`, :cve_nist:`2017-15126`, :cve_nist:`2017-15127`, :cve_nist:`2017-15128`, :cve_nist:`2017-15129`, :cve_nist:`2017-15265`, :cve_nist:`2017-15274`, :cve_nist:`2017-15299`, :cve_nist:`2017-15306`, :cve_nist:`2017-15537`, :cve_nist:`2017-15649`, :cve_nist:`2017-15868`, :cve_nist:`2017-15951`, :cve_nist:`2017-16525`, :cve_nist:`2017-16526`, :cve_nist:`2017-16527`, :cve_nist:`2017-16528`, :cve_nist:`2017-16529`, :cve_nist:`2017-16530`, :cve_nist:`2017-16531`, :cve_nist:`2017-16532`, :cve_nist:`2017-16533`, :cve_nist:`2017-16534`, :cve_nist:`2017-16535`, :cve_nist:`2017-16536`, :cve_nist:`2017-16537`, :cve_nist:`2017-16538`, :cve_nist:`2017-16643`, :cve_nist:`2017-16644`, :cve_nist:`2017-16645`, :cve_nist:`2017-16646`, :cve_nist:`2017-16647`, :cve_nist:`2017-16648`, :cve_nist:`2017-16649`, :cve_nist:`2017-16650`, :cve_nist:`2017-16911`, :cve_nist:`2017-16912`, :cve_nist:`2017-16913`, :cve_nist:`2017-16914`, :cve_nist:`2017-16939`, :cve_nist:`2017-16994`, :cve_nist:`2017-16995`, :cve_nist:`2017-16996`, :cve_nist:`2017-17052`, :cve_nist:`2017-17053`, :cve_nist:`2017-17448`, :cve_nist:`2017-17449`, :cve_nist:`2017-17450`, :cve_nist:`2017-17558`, :cve_nist:`2017-17712`, :cve_nist:`2017-17741`, :cve_nist:`2017-17805`, :cve_nist:`2017-17806`, :cve_nist:`2017-17807`, :cve_nist:`2017-17852`, :cve_nist:`2017-17853`, :cve_nist:`2017-17854`, :cve_nist:`2017-17855`, :cve_nist:`2017-17856`, :cve_nist:`2017-17857`, :cve_nist:`2017-17862`, :cve_nist:`2017-17863`, :cve_nist:`2017-17864`, :cve_nist:`2017-17975`, :cve_nist:`2017-18017`, :cve_nist:`2017-18075`, :cve_nist:`2017-18079`, :cve_nist:`2017-18174`, :cve_nist:`2017-18193`, :cve_nist:`2017-18200`, :cve_nist:`2017-18202`, :cve_nist:`2017-18203`, :cve_nist:`2017-18204`, :cve_nist:`2017-18208`, :cve_nist:`2017-18216`, :cve_nist:`2017-18218`, :cve_nist:`2017-18221`, :cve_nist:`2017-18222`, :cve_nist:`2017-18224`, :cve_nist:`2017-18232`, :cve_nist:`2017-18241`, :cve_nist:`2017-18249`, :cve_nist:`2017-18255`, :cve_nist:`2017-18257`, :cve_nist:`2017-18261`, :cve_nist:`2017-18270`, :cve_nist:`2017-18344`, :cve_nist:`2017-18360`, :cve_nist:`2017-18379`, :cve_nist:`2017-18509`, :cve_nist:`2017-18549`, :cve_nist:`2017-18550`, :cve_nist:`2017-18551`, :cve_nist:`2017-18552`, :cve_nist:`2017-18595`, :cve_nist:`2017-2583`, :cve_nist:`2017-2584`, :cve_nist:`2017-2596`, :cve_nist:`2017-2618`, :cve_nist:`2017-2634`, :cve_nist:`2017-2636`, :cve_nist:`2017-2647`, :cve_nist:`2017-2671`, :cve_nist:`2017-5123`, :cve_nist:`2017-5546`, :cve_nist:`2017-5547`, :cve_nist:`2017-5548`, :cve_nist:`2017-5549`, :cve_nist:`2017-5550`, :cve_nist:`2017-5551`, :cve_nist:`2017-5576`, :cve_nist:`2017-5577`, :cve_nist:`2017-5669`, :cve_nist:`2017-5715`, :cve_nist:`2017-5753`, :cve_nist:`2017-5754`, :cve_nist:`2017-5897`, :cve_nist:`2017-5967`, :cve_nist:`2017-5970`, :cve_nist:`2017-5972`, :cve_nist:`2017-5986`, :cve_nist:`2017-6001`, :cve_nist:`2017-6074`, :cve_nist:`2017-6214`, :cve_nist:`2017-6345`, :cve_nist:`2017-6346`, :cve_nist:`2017-6347`, :cve_nist:`2017-6348`, :cve_nist:`2017-6353`, :cve_nist:`2017-6874`, :cve_nist:`2017-6951`, :cve_nist:`2017-7184`, :cve_nist:`2017-7187`, :cve_nist:`2017-7261`, :cve_nist:`2017-7273`, :cve_nist:`2017-7277`, :cve_nist:`2017-7294`, :cve_nist:`2017-7308`, :cve_nist:`2017-7346`, :cve_nist:`2017-7374`, :cve_nist:`2017-7472`, :cve_nist:`2017-7477`, :cve_nist:`2017-7482`, :cve_nist:`2017-7487`, :cve_nist:`2017-7495`, :cve_nist:`2017-7518`, :cve_nist:`2017-7533`, :cve_nist:`2017-7541`, :cve_nist:`2017-7542`, :cve_nist:`2017-7558`, :cve_nist:`2017-7616`, :cve_nist:`2017-7618`, :cve_nist:`2017-7645`, :cve_nist:`2017-7889`, :cve_nist:`2017-7895`, :cve_nist:`2017-7979`, :cve_nist:`2017-8061`, :cve_nist:`2017-8062`, :cve_nist:`2017-8063`, :cve_nist:`2017-8064`, :cve_nist:`2017-8065`, :cve_nist:`2017-8066`, :cve_nist:`2017-8067`, :cve_nist:`2017-8068`, :cve_nist:`2017-8069`, :cve_nist:`2017-8070`, :cve_nist:`2017-8071`, :cve_nist:`2017-8072`, :cve_nist:`2017-8106`, :cve_nist:`2017-8240`, :cve_nist:`2017-8797`, :cve_nist:`2017-8824`, :cve_nist:`2017-8831`, :cve_nist:`2017-8890`, :cve_nist:`2017-8924`, :cve_nist:`2017-8925`, :cve_nist:`2017-9059`, :cve_nist:`2017-9074`, :cve_nist:`2017-9075`, :cve_nist:`2017-9076`, :cve_nist:`2017-9077`, :cve_nist:`2017-9150`, :cve_nist:`2017-9211`, :cve_nist:`2017-9242`, :cve_nist:`2017-9605`, :cve_nist:`2017-9725`, :cve_nist:`2017-9984`, :cve_nist:`2017-9985`, :cve_nist:`2017-9986`, :cve_nist:`2018-1000004`, :cve_nist:`2018-1000026`, :cve_nist:`2018-1000028`, :cve_nist:`2018-1000199`, :cve_nist:`2018-1000200`, :cve_nist:`2018-1000204`, :cve_nist:`2018-10021`, :cve_nist:`2018-10074`, :cve_nist:`2018-10087`, :cve_nist:`2018-10124`, :cve_nist:`2018-10322`, :cve_nist:`2018-10323`, :cve_nist:`2018-1065`, :cve_nist:`2018-1066`, :cve_nist:`2018-10675`, :cve_nist:`2018-1068`, :cve_nist:`2018-10840`, :cve_nist:`2018-10853`, :cve_nist:`2018-1087`, :cve_nist:`2018-10876`, :cve_nist:`2018-10877`, :cve_nist:`2018-10878`, :cve_nist:`2018-10879`, :cve_nist:`2018-10880`, :cve_nist:`2018-10881`, :cve_nist:`2018-10882`, :cve_nist:`2018-10883`, :cve_nist:`2018-10901`, :cve_nist:`2018-10902`, :cve_nist:`2018-1091`, :cve_nist:`2018-1092`, :cve_nist:`2018-1093`, :cve_nist:`2018-10938`, :cve_nist:`2018-1094`, :cve_nist:`2018-10940`, :cve_nist:`2018-1095`, :cve_nist:`2018-1108`, :cve_nist:`2018-1118`, :cve_nist:`2018-1120`, :cve_nist:`2018-11232`, :cve_nist:`2018-1128`, :cve_nist:`2018-1129`, :cve_nist:`2018-1130`, :cve_nist:`2018-11412`, :cve_nist:`2018-11506`, :cve_nist:`2018-11508`, :cve_nist:`2018-12126`, :cve_nist:`2018-12127`, :cve_nist:`2018-12130`, :cve_nist:`2018-12207`, :cve_nist:`2018-12232`, :cve_nist:`2018-12233`, :cve_nist:`2018-12633`, :cve_nist:`2018-12714`, :cve_nist:`2018-12896`, :cve_nist:`2018-12904`, :cve_nist:`2018-13053`, :cve_nist:`2018-13093`, :cve_nist:`2018-13094`, :cve_nist:`2018-13095`, :cve_nist:`2018-13096`, :cve_nist:`2018-13097`, :cve_nist:`2018-13098`, :cve_nist:`2018-13099`, :cve_nist:`2018-13100`, :cve_nist:`2018-13405`, :cve_nist:`2018-13406`, :cve_nist:`2018-14609`, :cve_nist:`2018-14610`, :cve_nist:`2018-14611`, :cve_nist:`2018-14612`, :cve_nist:`2018-14613`, :cve_nist:`2018-14614`, :cve_nist:`2018-14615`, :cve_nist:`2018-14616`, :cve_nist:`2018-14617`, :cve_nist:`2018-14619`, :cve_nist:`2018-14625`, :cve_nist:`2018-14633`, :cve_nist:`2018-14634`, :cve_nist:`2018-14641`, :cve_nist:`2018-14646`, :cve_nist:`2018-14656`, :cve_nist:`2018-14678`, :cve_nist:`2018-14734`, :cve_nist:`2018-15471`, :cve_nist:`2018-15572`, :cve_nist:`2018-15594`, :cve_nist:`2018-16276`, :cve_nist:`2018-16597`, :cve_nist:`2018-16658`, :cve_nist:`2018-16862`, :cve_nist:`2018-16871`, :cve_nist:`2018-16880`, :cve_nist:`2018-16882`, :cve_nist:`2018-16884`, :cve_nist:`2018-17182`, :cve_nist:`2018-17972`, :cve_nist:`2018-18021`, :cve_nist:`2018-18281`, :cve_nist:`2018-18386`, :cve_nist:`2018-18397`, :cve_nist:`2018-18445`, :cve_nist:`2018-18559`, :cve_nist:`2018-18690`, :cve_nist:`2018-18710`, :cve_nist:`2018-18955`, :cve_nist:`2018-19406`, :cve_nist:`2018-19407`, :cve_nist:`2018-19824`, :cve_nist:`2018-19854`, :cve_nist:`2018-19985`, :cve_nist:`2018-20169`, :cve_nist:`2018-20449`, :cve_nist:`2018-20509`, :cve_nist:`2018-20510`, :cve_nist:`2018-20511`, :cve_nist:`2018-20669`, :cve_nist:`2018-20784`, :cve_nist:`2018-20836`, :cve_nist:`2018-20854`, :cve_nist:`2018-20855`, :cve_nist:`2018-20856`, :cve_nist:`2018-20961`, :cve_nist:`2018-20976`, :cve_nist:`2018-21008`, :cve_nist:`2018-25015`, :cve_nist:`2018-25020`, :cve_nist:`2018-3620`, :cve_nist:`2018-3639`, :cve_nist:`2018-3646`, :cve_nist:`2018-3665`, :cve_nist:`2018-3693`, :cve_nist:`2018-5332`, :cve_nist:`2018-5333`, :cve_nist:`2018-5344`, :cve_nist:`2018-5390`, :cve_nist:`2018-5391`, :cve_nist:`2018-5703`, :cve_nist:`2018-5750`, :cve_nist:`2018-5803`, :cve_nist:`2018-5814`, :cve_nist:`2018-5848`, :cve_nist:`2018-5873`, :cve_nist:`2018-5953`, :cve_nist:`2018-5995`, :cve_nist:`2018-6412`, :cve_nist:`2018-6554`, :cve_nist:`2018-6555`, :cve_nist:`2018-6927`, :cve_nist:`2018-7191`, :cve_nist:`2018-7273`, :cve_nist:`2018-7480`, :cve_nist:`2018-7492`, :cve_nist:`2018-7566`, :cve_nist:`2018-7740`, :cve_nist:`2018-7754`, :cve_nist:`2018-7755`, :cve_nist:`2018-7757`, :cve_nist:`2018-7995`, :cve_nist:`2018-8043`, :cve_nist:`2018-8087`, :cve_nist:`2018-8781`, :cve_nist:`2018-8822`, :cve_nist:`2018-8897`, :cve_nist:`2018-9363`, :cve_nist:`2018-9385`, :cve_nist:`2018-9415`, :cve_nist:`2018-9422`, :cve_nist:`2018-9465`, :cve_nist:`2018-9516`, :cve_nist:`2018-9517`, :cve_nist:`2018-9518`, :cve_nist:`2018-9568`, :cve_nist:`2019-0136`, :cve_nist:`2019-0145`, :cve_nist:`2019-0146`, :cve_nist:`2019-0147`, :cve_nist:`2019-0148`, :cve_nist:`2019-0149`, :cve_nist:`2019-0154`, :cve_nist:`2019-0155`, :cve_nist:`2019-10124`, :cve_nist:`2019-10125`, :cve_nist:`2019-10126`, :cve_nist:`2019-10142`, :cve_nist:`2019-10207`, :cve_nist:`2019-10220`, :cve_nist:`2019-10638`, :cve_nist:`2019-10639`, :cve_nist:`2019-11085`, :cve_nist:`2019-11091`, :cve_nist:`2019-11135`, :cve_nist:`2019-11190`, :cve_nist:`2019-11191`, :cve_nist:`2019-1125`, :cve_nist:`2019-11477`, :cve_nist:`2019-11478`, :cve_nist:`2019-11479`, :cve_nist:`2019-11486`, :cve_nist:`2019-11487`, :cve_nist:`2019-11599`, :cve_nist:`2019-11683`, :cve_nist:`2019-11810`, :cve_nist:`2019-11811`, :cve_nist:`2019-11815`, :cve_nist:`2019-11833`, :cve_nist:`2019-11884`, :cve_nist:`2019-12378`, :cve_nist:`2019-12379`, :cve_nist:`2019-12380`, :cve_nist:`2019-12381`, :cve_nist:`2019-12382`, :cve_nist:`2019-12454`, :cve_nist:`2019-12455`, :cve_nist:`2019-12614`, :cve_nist:`2019-12615`, :cve_nist:`2019-12817`, :cve_nist:`2019-12818`, :cve_nist:`2019-12819`, :cve_nist:`2019-12881`, :cve_nist:`2019-12984`, :cve_nist:`2019-13233`, :cve_nist:`2019-13272`, :cve_nist:`2019-13631`, :cve_nist:`2019-13648`, :cve_nist:`2019-14283`, :cve_nist:`2019-14284`, :cve_nist:`2019-14615`, :cve_nist:`2019-14763`, :cve_nist:`2019-14814`, :cve_nist:`2019-14815`, :cve_nist:`2019-14816`, :cve_nist:`2019-14821`, :cve_nist:`2019-14835`, :cve_nist:`2019-14895`, :cve_nist:`2019-14896`, :cve_nist:`2019-14897`, :cve_nist:`2019-14901`, :cve_nist:`2019-15030`, :cve_nist:`2019-15031`, :cve_nist:`2019-15090`, :cve_nist:`2019-15098`, :cve_nist:`2019-15099`, :cve_nist:`2019-15117`, :cve_nist:`2019-15118`, :cve_nist:`2019-15211`, :cve_nist:`2019-15212`, :cve_nist:`2019-15213`, :cve_nist:`2019-15214`, :cve_nist:`2019-15215`, :cve_nist:`2019-15216`, :cve_nist:`2019-15217`, :cve_nist:`2019-15218`, :cve_nist:`2019-15219`, :cve_nist:`2019-15220`, :cve_nist:`2019-15221`, :cve_nist:`2019-15222`, :cve_nist:`2019-15223`, :cve_nist:`2019-15291`, :cve_nist:`2019-15292`, :cve_nist:`2019-15504`, :cve_nist:`2019-15505`, :cve_nist:`2019-15538`, :cve_nist:`2019-15666`, :cve_nist:`2019-15794`, :cve_nist:`2019-15807`, :cve_nist:`2019-15916`, :cve_nist:`2019-15917`, :cve_nist:`2019-15918`, :cve_nist:`2019-15919`, :cve_nist:`2019-15920`, :cve_nist:`2019-15921`, :cve_nist:`2019-15922`, :cve_nist:`2019-15923`, :cve_nist:`2019-15924`, :cve_nist:`2019-15925`, :cve_nist:`2019-15926`, :cve_nist:`2019-15927`, :cve_nist:`2019-16229`, :cve_nist:`2019-16230`, :cve_nist:`2019-16231`, :cve_nist:`2019-16232`, :cve_nist:`2019-16233`, :cve_nist:`2019-16234`, :cve_nist:`2019-16413`, :cve_nist:`2019-16714`, :cve_nist:`2019-16746`, :cve_nist:`2019-16921`, :cve_nist:`2019-16994`, :cve_nist:`2019-16995`, :cve_nist:`2019-17052`, :cve_nist:`2019-17053`, :cve_nist:`2019-17054`, :cve_nist:`2019-17055`, :cve_nist:`2019-17056`, :cve_nist:`2019-17075`, :cve_nist:`2019-17133`, :cve_nist:`2019-17351`, :cve_nist:`2019-17666`, :cve_nist:`2019-18198`, :cve_nist:`2019-18282`, :cve_nist:`2019-18660`, :cve_nist:`2019-18675`, :cve_nist:`2019-18683`, :cve_nist:`2019-18786`, :cve_nist:`2019-18805`, :cve_nist:`2019-18806`, :cve_nist:`2019-18807`, :cve_nist:`2019-18808`, :cve_nist:`2019-18809`, :cve_nist:`2019-18810`, :cve_nist:`2019-18811`, :cve_nist:`2019-18812`, :cve_nist:`2019-18813`, :cve_nist:`2019-18814`, :cve_nist:`2019-18885`, :cve_nist:`2019-19036`, :cve_nist:`2019-19037`, :cve_nist:`2019-19039`, :cve_nist:`2019-19043`, :cve_nist:`2019-19044`, :cve_nist:`2019-19045`, :cve_nist:`2019-19046`, :cve_nist:`2019-19047`, :cve_nist:`2019-19048`, :cve_nist:`2019-19049`, :cve_nist:`2019-19050`, :cve_nist:`2019-19051`, :cve_nist:`2019-19052`, :cve_nist:`2019-19053`, :cve_nist:`2019-19054`, :cve_nist:`2019-19055`, :cve_nist:`2019-19056`, :cve_nist:`2019-19057`, :cve_nist:`2019-19058`, :cve_nist:`2019-19059`, :cve_nist:`2019-19060`, :cve_nist:`2019-19061`, :cve_nist:`2019-19062`, :cve_nist:`2019-19063`, :cve_nist:`2019-19064`, :cve_nist:`2019-19065`, :cve_nist:`2019-19066`, :cve_nist:`2019-19067`, :cve_nist:`2019-19068`, :cve_nist:`2019-19069`, :cve_nist:`2019-19070`, :cve_nist:`2019-19071`, :cve_nist:`2019-19072`, :cve_nist:`2019-19073`, :cve_nist:`2019-19074`, :cve_nist:`2019-19075`, :cve_nist:`2019-19076`, :cve_nist:`2019-19077`, :cve_nist:`2019-19078`, :cve_nist:`2019-19079`, :cve_nist:`2019-19080`, :cve_nist:`2019-19081`, :cve_nist:`2019-19082`, :cve_nist:`2019-19083`, :cve_nist:`2019-19227`, :cve_nist:`2019-19241`, :cve_nist:`2019-19252`, :cve_nist:`2019-19318`, :cve_nist:`2019-19319`, :cve_nist:`2019-19332`, :cve_nist:`2019-19338`, :cve_nist:`2019-19377`, :cve_nist:`2019-19447`, :cve_nist:`2019-19448`, :cve_nist:`2019-19449`, :cve_nist:`2019-19462`, :cve_nist:`2019-19523`, :cve_nist:`2019-19524`, :cve_nist:`2019-19525`, :cve_nist:`2019-19526`, :cve_nist:`2019-19527`, :cve_nist:`2019-19528`, :cve_nist:`2019-19529`, :cve_nist:`2019-19530`, :cve_nist:`2019-19531`, :cve_nist:`2019-19532`, :cve_nist:`2019-19533`, :cve_nist:`2019-19534`, :cve_nist:`2019-19535`, :cve_nist:`2019-19536`, :cve_nist:`2019-19537`, :cve_nist:`2019-19543`, :cve_nist:`2019-19602`, :cve_nist:`2019-19767`, :cve_nist:`2019-19768`, :cve_nist:`2019-19769`, :cve_nist:`2019-19770`, :cve_nist:`2019-19807`, :cve_nist:`2019-19813`, :cve_nist:`2019-19815`, :cve_nist:`2019-19816`, :cve_nist:`2019-19922`, :cve_nist:`2019-19927`, :cve_nist:`2019-19947`, :cve_nist:`2019-19965` and :cve_nist:`2019-1999`
34- nasm: Fix :cve:`2020-21528` 34- nasm: Fix :cve_nist:`2020-21528`
35- ncurses: Fix :cve:`2023-29491` 35- ncurses: Fix :cve_nist:`2023-29491`
36- nghttp2: Fix :cve:`2023-35945` 36- nghttp2: Fix :cve_nist:`2023-35945`
37- procps: Fix :cve:`2023-4016` 37- procps: Fix :cve_nist:`2023-4016`
38- python3-certifi: Fix :cve:`2023-37920` 38- python3-certifi: Fix :cve_nist:`2023-37920`
39- python3-git: Fix :cve:`2022-24439` and :cve:`2023-40267` 39- python3-git: Fix :cve_nist:`2022-24439` and :cve_nist:`2023-40267`
40- python3-pygments: Fix :cve:`2022-40896` 40- python3-pygments: Fix :cve_nist:`2022-40896`
41- python3: Fix :cve:`2023-40217` 41- python3: Fix :cve_nist:`2023-40217`
42- qemu: Fix :cve:`2020-14394`, :cve:`2021-3638`, :cve_mitre:`2023-2861`, :cve:`2023-3180` and :cve:`2023-3354` 42- qemu: Fix :cve_nist:`2020-14394`, :cve_nist:`2021-3638`, :cve_mitre:`2023-2861`, :cve_nist:`2023-3180` and :cve_nist:`2023-3354`
43- tiff: fix :cve:`2023-2908`, :cve:`2023-3316` and :cve:`2023-3618` 43- tiff: fix :cve_nist:`2023-2908`, :cve_nist:`2023-3316` and :cve_nist:`2023-3618`
44- vim: Fix :cve:`2023-3896`, :cve:`2023-4733`, :cve:`2023-4734`, :cve:`2023-4735`, :cve:`2023-4736`, :cve:`2023-4738`, :cve:`2023-4750` and :cve:`2023-4752` 44- vim: Fix :cve_nist:`2023-3896`, :cve_nist:`2023-4733`, :cve_nist:`2023-4734`, :cve_nist:`2023-4735`, :cve_nist:`2023-4736`, :cve_nist:`2023-4738`, :cve_nist:`2023-4750` and :cve_nist:`2023-4752`
45- webkitgtk: fix :cve:`2022-48503` and :cve:`2023-23529` 45- webkitgtk: fix :cve_nist:`2022-48503` and :cve_nist:`2023-23529`
46 46
47 47
48 48
diff --git a/documentation/migration-guides/release-notes-4.0.14.rst b/documentation/migration-guides/release-notes-4.0.14.rst
index 02253f33f7..ad6590a887 100644
--- a/documentation/migration-guides/release-notes-4.0.14.rst
+++ b/documentation/migration-guides/release-notes-4.0.14.rst
@@ -6,37 +6,37 @@ Release notes for Yocto-4.0.14 (Kirkstone)
6Security Fixes in Yocto-4.0.14 6Security Fixes in Yocto-4.0.14
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bind: Fix :cve:`2023-3341` and :cve:`2023-4236` 9- bind: Fix :cve_nist:`2023-3341` and :cve_nist:`2023-4236`
10- binutils: Fix :cve:`2022-44840`, :cve:`2022-45703`, :cve:`2022-47008`, :cve:`2022-47011`, :cve:`2022-47673`, :cve:`2022-47695`, :cve:`2022-47696` and :cve:`2022-48063` 10- binutils: Fix :cve_nist:`2022-44840`, :cve_nist:`2022-45703`, :cve_nist:`2022-47008`, :cve_nist:`2022-47011`, :cve_nist:`2022-47673`, :cve_nist:`2022-47695`, :cve_nist:`2022-47696` and :cve_nist:`2022-48063`
11- cups: Fix :cve:`2023-4504` 11- cups: Fix :cve_nist:`2023-4504`
12- curl: Fix :cve:`2023-38545` and :cve:`2023-38546` 12- curl: Fix :cve_nist:`2023-38545` and :cve_nist:`2023-38546`
13- gawk: Fix :cve:`2023-4156` 13- gawk: Fix :cve_nist:`2023-4156`
14- ghostscript: Fix :cve:`2023-43115` 14- ghostscript: Fix :cve_nist:`2023-43115`
15- glibc: Fix :cve:`2023-4806`, :cve:`2023-4813`, :cve:`2023-4911` and :cve:`2023-5156` 15- glibc: Fix :cve_nist:`2023-4806`, :cve_nist:`2023-4813`, :cve_nist:`2023-4911` and :cve_nist:`2023-5156`
16- glibc: Ignore :cve:`2023-4527` 16- glibc: Ignore :cve_nist:`2023-4527`
17- go: Fix :cve:`2023-24538` and :cve:`2023-39318` 17- go: Fix :cve_nist:`2023-24538` and :cve_nist:`2023-39318`
18- gstreamer1.0-plugins-bad: fix :cve_mitre:`2023-40474`, :cve_mitre:`2023-40475` and :cve_mitre:`2023-40476` 18- gstreamer1.0-plugins-bad: fix :cve_mitre:`2023-40474`, :cve_mitre:`2023-40475` and :cve_mitre:`2023-40476`
19- libtiff: Fix :cve:`2022-40090` and :cve:`2023-1916` 19- libtiff: Fix :cve_nist:`2022-40090` and :cve_nist:`2023-1916`
20- libwebp: Fix :cve:`2023-5129` 20- libwebp: Fix :cve_nist:`2023-5129`
21- libx11: Fix :cve:`2023-43785`, :cve:`2023-43786` and :cve:`2023-43787` 21- libx11: Fix :cve_nist:`2023-43785`, :cve_nist:`2023-43786` and :cve_nist:`2023-43787`
22- libxml2: Fix :cve:`2023-45322` 22- libxml2: Fix :cve_nist:`2023-45322`
23- libxpm: Fix :cve:`2023-43788` and :cve:`2023-43789` 23- libxpm: Fix :cve_nist:`2023-43788` and :cve_nist:`2023-43789`
24- linux-firmware: Fix :cve:`2022-40982`, :cve:`2023-20569` and :cve:`2023-20593` 24- linux-firmware: Fix :cve_nist:`2022-40982`, :cve_nist:`2023-20569` and :cve_nist:`2023-20593`
25- linux-yocto: update CVE exclusions 25- linux-yocto: update CVE exclusions
26- linux-yocto/5.10: Ignore :cve:`2003-1604`, :cve:`2004-0230`, :cve:`2006-3635`, :cve:`2006-5331`, :cve:`2006-6128`, :cve:`2007-4774`, :cve:`2007-6761`, :cve:`2007-6762`, :cve:`2008-7316`, :cve:`2009-2692`, :cve:`2010-0008`, :cve:`2010-3432`, :cve:`2010-4648`, :cve:`2010-5313`, :cve:`2010-5328`, :cve:`2010-5329`, :cve:`2010-5331`, :cve:`2010-5332`, :cve:`2011-4098`, :cve:`2011-4131`, :cve:`2011-4915`, :cve:`2011-5321`, :cve:`2011-5327`, :cve:`2012-0957`, :cve:`2012-2119`, :cve:`2012-2136`, :cve:`2012-2137`, :cve:`2012-2313`, :cve:`2012-2319`, :cve:`2012-2372`, :cve:`2012-2375`, :cve:`2012-2390`, :cve:`2012-2669`, :cve:`2012-2744`, :cve:`2012-2745`, :cve:`2012-3364`, :cve:`2012-3375`, :cve:`2012-3400`, :cve:`2012-3412`, :cve:`2012-3430`, :cve:`2012-3510`, :cve:`2012-3511`, :cve:`2012-3520`, :cve:`2012-3552`, :cve:`2012-4398`, :cve:`2012-4444`, :cve:`2012-4461`, :cve:`2012-4467`, :cve:`2012-4508`, :cve:`2012-4530`, :cve:`2012-4565`, :cve:`2012-5374`, :cve:`2012-5375`, :cve:`2012-5517`, :cve:`2012-6536`, :cve:`2012-6537`, :cve:`2012-6538`, :cve:`2012-6539`, :cve:`2012-6540`, :cve:`2012-6541`, :cve:`2012-6542`, :cve:`2012-6543`, :cve:`2012-6544`, :cve:`2012-6545`, :cve:`2012-6546`, :cve:`2012-6547`, :cve:`2012-6548`, :cve:`2012-6549`, :cve:`2012-6638`, :cve:`2012-6647`, :cve:`2012-6657`, :cve:`2012-6689`, :cve:`2012-6701`, :cve:`2012-6703`, :cve:`2012-6704`, :cve:`2012-6712`, :cve:`2013-0160`, :cve:`2013-0190`, :cve:`2013-0216`, :cve:`2013-0217`, :cve:`2013-0228`, :cve:`2013-0231`, :cve:`2013-0268`, :cve:`2013-0290`, :cve:`2013-0309`, :cve:`2013-0310`, :cve:`2013-0311`, :cve:`2013-0313`, :cve:`2013-0343`, :cve:`2013-0349`, :cve:`2013-0871`, :cve:`2013-0913`, :cve:`2013-0914`, :cve:`2013-1059`, :cve:`2013-1763`, :cve:`2013-1767`, :cve:`2013-1772`, :cve:`2013-1773`, :cve:`2013-1774`, :cve:`2013-1792`, :cve:`2013-1796`, :cve:`2013-1797`, :cve:`2013-1798`, :cve:`2013-1819`, :cve:`2013-1826`, :cve:`2013-1827`, :cve:`2013-1828`, :cve:`2013-1848`, :cve:`2013-1858`, :cve:`2013-1860`, :cve:`2013-1928`, :cve:`2013-1929`, :cve:`2013-1943`, :cve:`2013-1956`, :cve:`2013-1957`, :cve:`2013-1958`, :cve:`2013-1959`, :cve:`2013-1979`, :cve:`2013-2015`, :cve:`2013-2017`, :cve:`2013-2058`, :cve:`2013-2094`, :cve:`2013-2128`, :cve:`2013-2140`, :cve:`2013-2141`, :cve:`2013-2146`, :cve:`2013-2147`, :cve:`2013-2148`, :cve:`2013-2164`, :cve:`2013-2206`, :cve:`2013-2232`, :cve:`2013-2234`, :cve:`2013-2237`, :cve:`2013-2546`, :cve:`2013-2547`, :cve:`2013-2548`, :cve:`2013-2596`, :cve:`2013-2634`, :cve:`2013-2635`, :cve:`2013-2636`, :cve:`2013-2850`, :cve:`2013-2851`, :cve:`2013-2852`, :cve:`2013-2888`, :cve:`2013-2889`, :cve:`2013-2890`, :cve:`2013-2891`, :cve:`2013-2892`, :cve:`2013-2893`, :cve:`2013-2894`, :cve:`2013-2895`, :cve:`2013-2896`, :cve:`2013-2897`, :cve:`2013-2898`, :cve:`2013-2899`, :cve:`2013-2929`, :cve:`2013-2930`, :cve:`2013-3076`, :cve:`2013-3222`, :cve:`2013-3223`, :cve:`2013-3224`, :cve:`2013-3225`, :cve:`2013-3226`, :cve:`2013-3227`, :cve:`2013-3228`, :cve:`2013-3229`, :cve:`2013-3230`, :cve:`2013-3231`, :cve:`2013-3232`, :cve:`2013-3233`, :cve:`2013-3234`, :cve:`2013-3235`, :cve:`2013-3236`, :cve:`2013-3237`, :cve:`2013-3301`, :cve:`2013-3302`, :cve:`2013-4125`, :cve:`2013-4127`, :cve:`2013-4129`, :cve:`2013-4162`, :cve:`2013-4163`, :cve:`2013-4205`, :cve:`2013-4220`, :cve:`2013-4247`, :cve:`2013-4254`, :cve:`2013-4270`, :cve:`2013-4299`, :cve:`2013-4300`, :cve:`2013-4312`, :cve:`2013-4343`, :cve:`2013-4345`, :cve:`2013-4348`, :cve:`2013-4350`, :cve:`2013-4387`, :cve:`2013-4470`, :cve:`2013-4483`, :cve:`2013-4511`, :cve:`2013-4512`, :cve:`2013-4513`, :cve:`2013-4514`, :cve:`2013-4515`, :cve:`2013-4516`, :cve:`2013-4563`, :cve:`2013-4579`, :cve:`2013-4587`, :cve:`2013-4588`, :cve:`2013-4591`, :cve:`2013-4592`, :cve:`2013-5634`, :cve:`2013-6282`, :cve:`2013-6367`, :cve:`2013-6368`, :cve:`2013-6376`, :cve:`2013-6378`, :cve:`2013-6380`, :cve:`2013-6381`, :cve:`2013-6382`, :cve:`2013-6383`, :cve:`2013-6431`, :cve:`2013-6432`, :cve:`2013-6885`, :cve:`2013-7026`, :cve:`2013-7027`, :cve:`2013-7263`, :cve:`2013-7264`, :cve:`2013-7265`, :cve:`2013-7266`, :cve:`2013-7267`, :cve:`2013-7268`, :cve:`2013-7269`, :cve:`2013-7270`, :cve:`2013-7271`, :cve:`2013-7281`, :cve:`2013-7339`, :cve:`2013-7348`, :cve:`2013-7421`, :cve:`2013-7446`, :cve:`2013-7470`, :cve:`2014-0038`, :cve:`2014-0049`, :cve:`2014-0055`, :cve:`2014-0069`, :cve:`2014-0077`, :cve:`2014-0100`, :cve:`2014-0101`, :cve:`2014-0102`, :cve:`2014-0131`, :cve:`2014-0155`, :cve:`2014-0181`, :cve:`2014-0196`, :cve:`2014-0203`, :cve:`2014-0205`, :cve:`2014-0206`, :cve:`2014-1438`, :cve:`2014-1444`, :cve:`2014-1445`, :cve:`2014-1446`, :cve:`2014-1690`, :cve:`2014-1737`, :cve:`2014-1738`, :cve:`2014-1739`, :cve:`2014-1874`, :cve:`2014-2038`, :cve:`2014-2039`, :cve:`2014-2309`, :cve:`2014-2523`, :cve:`2014-2568`, :cve:`2014-2580`, :cve:`2014-2672`, :cve:`2014-2673`, :cve:`2014-2678`, :cve:`2014-2706`, :cve:`2014-2739`, :cve:`2014-2851`, :cve:`2014-2889`, :cve:`2014-3122`, :cve:`2014-3144`, :cve:`2014-3145`, :cve:`2014-3153`, :cve:`2014-3180`, :cve:`2014-3181`, :cve:`2014-3182`, :cve:`2014-3183`, :cve:`2014-3184`, :cve:`2014-3185`, :cve:`2014-3186`, :cve:`2014-3534`, :cve:`2014-3535`, :cve:`2014-3601`, :cve:`2014-3610`, :cve:`2014-3611`, :cve:`2014-3631`, :cve:`2014-3645`, :cve:`2014-3646`, :cve:`2014-3647`, :cve:`2014-3673`, :cve:`2014-3687`, :cve:`2014-3688`, :cve:`2014-3690`, :cve:`2014-3917`, :cve:`2014-3940`, :cve:`2014-4014`, :cve:`2014-4027`, :cve:`2014-4157`, :cve:`2014-4171`, :cve:`2014-4508`, :cve:`2014-4608`, :cve:`2014-4611`, :cve:`2014-4652`, :cve:`2014-4653`, :cve:`2014-4654`, :cve:`2014-4655`, :cve:`2014-4656`, :cve:`2014-4667`, :cve:`2014-4699`, :cve:`2014-4943`, :cve:`2014-5045`, :cve:`2014-5077`, :cve:`2014-5206`, :cve:`2014-5207`, :cve:`2014-5471`, :cve:`2014-5472`, :cve:`2014-6410`, :cve:`2014-6416`, :cve:`2014-6417`, :cve:`2014-6418`, :cve:`2014-7145`, :cve:`2014-7283`, :cve:`2014-7284`, :cve:`2014-7822`, :cve:`2014-7825`, :cve:`2014-7826`, :cve:`2014-7841`, :cve:`2014-7842`, :cve:`2014-7843`, :cve:`2014-7970`, :cve:`2014-7975`, :cve:`2014-8086`, :cve:`2014-8133`, :cve:`2014-8134`, :cve:`2014-8159`, :cve:`2014-8160`, :cve:`2014-8171`, :cve:`2014-8172`, :cve:`2014-8173`, :cve:`2014-8369`, :cve:`2014-8480`, :cve:`2014-8481`, :cve:`2014-8559`, :cve:`2014-8709`, :cve:`2014-8884`, :cve:`2014-8989`, :cve:`2014-9090`, :cve:`2014-9322`, :cve:`2014-9419`, :cve:`2014-9420`, :cve:`2014-9428`, :cve:`2014-9529`, :cve:`2014-9584`, :cve:`2014-9585`, :cve:`2014-9644`, :cve:`2014-9683`, :cve:`2014-9710`, :cve:`2014-9715`, :cve:`2014-9717`, :cve:`2014-9728`, :cve:`2014-9729`, :cve:`2014-9730`, :cve:`2014-9731`, :cve:`2014-9803`, :cve:`2014-9870`, :cve:`2014-9888`, :cve:`2014-9895`, :cve:`2014-9903`, :cve:`2014-9904`, :cve:`2014-9914`, :cve:`2014-9922`, :cve:`2014-9940`, :cve:`2015-0239`, :cve:`2015-0274`, :cve:`2015-0275`, :cve:`2015-1333`, :cve:`2015-1339`, :cve:`2015-1350`, :cve:`2015-1420`, :cve:`2015-1421`, :cve:`2015-1465`, :cve:`2015-1573`, :cve:`2015-1593`, :cve:`2015-1805`, :cve:`2015-2041`, :cve:`2015-2042`, :cve:`2015-2150`, :cve:`2015-2666`, :cve:`2015-2672`, :cve:`2015-2686`, :cve:`2015-2830`, :cve:`2015-2922`, :cve:`2015-2925`, :cve:`2015-3212`, :cve:`2015-3214`, :cve:`2015-3288`, :cve:`2015-3290`, :cve:`2015-3291`, :cve:`2015-3331`, :cve:`2015-3339`, :cve:`2015-3636`, :cve:`2015-4001`, :cve:`2015-4002`, :cve:`2015-4003`, :cve:`2015-4004`, :cve:`2015-4036`, :cve:`2015-4167`, :cve:`2015-4170`, :cve:`2015-4176`, :cve:`2015-4177`, :cve:`2015-4178`, :cve:`2015-4692`, :cve:`2015-4700`, :cve:`2015-5156`, :cve:`2015-5157`, :cve:`2015-5257`, :cve:`2015-5283`, :cve:`2015-5307`, :cve:`2015-5327`, :cve:`2015-5364`, :cve:`2015-5366`, :cve:`2015-5697`, :cve:`2015-5706`, :cve:`2015-5707`, :cve:`2015-6252`, :cve:`2015-6526`, :cve:`2015-6937`, :cve:`2015-7509`, :cve:`2015-7513`, :cve:`2015-7515`, :cve:`2015-7550`, :cve:`2015-7566`, :cve:`2015-7613`, :cve:`2015-7799`, :cve:`2015-7833`, :cve:`2015-7872`, :cve:`2015-7884`, :cve:`2015-7885`, :cve:`2015-7990`, :cve:`2015-8104`, :cve:`2015-8215`, :cve:`2015-8324`, :cve:`2015-8374`, :cve:`2015-8539`, :cve:`2015-8543`, :cve:`2015-8550`, :cve:`2015-8551`, :cve:`2015-8552`, :cve:`2015-8553`, :cve:`2015-8569`, :cve:`2015-8575`, :cve:`2015-8660`, :cve:`2015-8709`, :cve:`2015-8746`, :cve:`2015-8767`, :cve:`2015-8785`, :cve:`2015-8787`, :cve:`2015-8812`, :cve:`2015-8816`, :cve:`2015-8830`, :cve:`2015-8839`, :cve:`2015-8844`, :cve:`2015-8845`, :cve:`2015-8950`, :cve:`2015-8952`, :cve:`2015-8953`, :cve:`2015-8955`, :cve:`2015-8956`, :cve:`2015-8961`, :cve:`2015-8962`, :cve:`2015-8963`, :cve:`2015-8964`, :cve:`2015-8966`, :cve:`2015-8967`, :cve:`2015-8970`, :cve:`2015-9004`, :cve:`2015-9016`, :cve:`2015-9289`, :cve:`2016-0617`, :cve:`2016-0723`, :cve:`2016-0728`, :cve:`2016-0758`, :cve:`2016-0821`, :cve:`2016-0823`, :cve:`2016-10044`, :cve:`2016-10088`, :cve:`2016-10147`, :cve:`2016-10150`, :cve:`2016-10153`, :cve:`2016-10154`, :cve:`2016-10200`, :cve:`2016-10208`, :cve:`2016-10229`, :cve:`2016-10318`, :cve:`2016-10723`, :cve:`2016-10741`, :cve:`2016-10764`, :cve:`2016-10905`, :cve:`2016-10906`, :cve:`2016-10907`, :cve:`2016-1237`, :cve:`2016-1575`, :cve:`2016-1576`, :cve:`2016-1583`, :cve:`2016-2053`, :cve:`2016-2069`, :cve:`2016-2070`, :cve:`2016-2085`, :cve:`2016-2117`, :cve:`2016-2143`, :cve:`2016-2184`, :cve:`2016-2185`, :cve:`2016-2186`, :cve:`2016-2187`, :cve:`2016-2188`, :cve:`2016-2383`, :cve:`2016-2384`, :cve:`2016-2543`, :cve:`2016-2544`, :cve:`2016-2545`, :cve:`2016-2546`, :cve:`2016-2547`, :cve:`2016-2548`, :cve:`2016-2549`, :cve:`2016-2550`, :cve:`2016-2782`, :cve:`2016-2847`, :cve:`2016-3044`, :cve:`2016-3070`, :cve:`2016-3134`, :cve:`2016-3135`, :cve:`2016-3136`, :cve:`2016-3137`, :cve:`2016-3138`, :cve:`2016-3139`, :cve:`2016-3140`, :cve:`2016-3156`, :cve:`2016-3157`, :cve:`2016-3672`, :cve:`2016-3689`, :cve:`2016-3713`, :cve:`2016-3841`, :cve:`2016-3857`, :cve:`2016-3951`, :cve:`2016-3955`, :cve:`2016-3961`, :cve:`2016-4440`, :cve:`2016-4470`, :cve:`2016-4482`, :cve:`2016-4485`, :cve:`2016-4486`, :cve:`2016-4557`, :cve:`2016-4558`, :cve:`2016-4565`, :cve:`2016-4568`, :cve:`2016-4569`, :cve:`2016-4578`, :cve:`2016-4580`, :cve:`2016-4581`, :cve:`2016-4794`, :cve:`2016-4805`, :cve:`2016-4913`, :cve:`2016-4951`, :cve:`2016-4997`, :cve:`2016-4998`, :cve:`2016-5195`, :cve:`2016-5243`, :cve:`2016-5244`, :cve:`2016-5400`, :cve:`2016-5412`, :cve:`2016-5696`, :cve:`2016-5728`, :cve:`2016-5828`, :cve:`2016-5829`, :cve:`2016-6130`, :cve:`2016-6136`, :cve:`2016-6156`, :cve:`2016-6162`, :cve:`2016-6187`, :cve:`2016-6197`, :cve:`2016-6198`, :cve:`2016-6213`, :cve:`2016-6327`, :cve:`2016-6480`, :cve:`2016-6516`, :cve:`2016-6786`, :cve:`2016-6787`, :cve:`2016-6828`, :cve:`2016-7039`, :cve:`2016-7042`, :cve:`2016-7097`, :cve:`2016-7117`, :cve:`2016-7425`, :cve:`2016-7910`, :cve:`2016-7911`, :cve:`2016-7912`, :cve:`2016-7913`, :cve:`2016-7914`, :cve:`2016-7915`, :cve:`2016-7916`, :cve:`2016-7917`, :cve:`2016-8399`, :cve:`2016-8405`, :cve:`2016-8630`, :cve:`2016-8632`, :cve:`2016-8633`, :cve:`2016-8636`, :cve:`2016-8645`, :cve:`2016-8646`, :cve:`2016-8650`, :cve:`2016-8655`, :cve:`2016-8658`, :cve:`2016-8666`, :cve:`2016-9083`, :cve:`2016-9084`, :cve:`2016-9120`, :cve:`2016-9178`, :cve:`2016-9191`, :cve:`2016-9313`, :cve:`2016-9555`, :cve:`2016-9576`, :cve:`2016-9588`, :cve:`2016-9604`, :cve:`2016-9685`, :cve:`2016-9754`, :cve:`2016-9755`, :cve:`2016-9756`, :cve:`2016-9777`, :cve:`2016-9793`, :cve:`2016-9794`, :cve:`2016-9806`, :cve:`2016-9919`, :cve:`2017-0605`, :cve:`2017-0627`, :cve:`2017-0750`, :cve:`2017-0786`, :cve:`2017-0861`, :cve:`2017-1000`, :cve:`2017-1000111`, :cve:`2017-1000112`, :cve:`2017-1000251`, :cve:`2017-1000252`, :cve:`2017-1000253`, :cve:`2017-1000255`, :cve:`2017-1000363`, :cve:`2017-1000364`, :cve:`2017-1000365`, :cve:`2017-1000370`, :cve:`2017-1000371`, :cve:`2017-1000379`, :cve:`2017-1000380`, :cve:`2017-1000405`, :cve:`2017-1000407`, :cve:`2017-1000410`, :cve:`2017-10661`, :cve:`2017-10662`, :cve:`2017-10663`, :cve:`2017-10810`, :cve:`2017-10911`, :cve:`2017-11089`, :cve:`2017-11176`, :cve:`2017-11472`, :cve:`2017-11473`, :cve:`2017-11600`, :cve:`2017-12134`, :cve:`2017-12146`, :cve:`2017-12153`, :cve:`2017-12154`, :cve:`2017-12168`, :cve:`2017-12188`, :cve:`2017-12190`, :cve:`2017-12192`, :cve:`2017-12193`, :cve:`2017-12762`, :cve:`2017-13080`, :cve:`2017-13166`, :cve:`2017-13167`, :cve:`2017-13168`, :cve:`2017-13215`, :cve:`2017-13216`, :cve:`2017-13220`, :cve:`2017-13305`, :cve:`2017-13686`, :cve:`2017-13695`, :cve:`2017-13715`, :cve:`2017-14051`, :cve:`2017-14106`, :cve:`2017-14140`, :cve:`2017-14156`, :cve:`2017-14340`, :cve:`2017-14489`, :cve:`2017-14497`, :cve:`2017-14954`, :cve:`2017-14991`, :cve:`2017-15102`, :cve:`2017-15115`, :cve:`2017-15116`, :cve:`2017-15121`, :cve:`2017-15126`, :cve:`2017-15127`, :cve:`2017-15128`, :cve:`2017-15129`, :cve:`2017-15265`, :cve:`2017-15274`, :cve:`2017-15299`, :cve:`2017-15306`, :cve:`2017-15537`, :cve:`2017-15649`, :cve:`2017-15868`, :cve:`2017-15951`, :cve:`2017-16525`, :cve:`2017-16526`, :cve:`2017-16527`, :cve:`2017-16528`, :cve:`2017-16529`, :cve:`2017-16530`, :cve:`2017-16531`, :cve:`2017-16532`, :cve:`2017-16533`, :cve:`2017-16534`, :cve:`2017-16535`, :cve:`2017-16536`, :cve:`2017-16537`, :cve:`2017-16538`, :cve:`2017-16643`, :cve:`2017-16644`, :cve:`2017-16645`, :cve:`2017-16646`, :cve:`2017-16647`, :cve:`2017-16648`, :cve:`2017-16649`, :cve:`2017-16650`, :cve:`2017-16911`, :cve:`2017-16912`, :cve:`2017-16913`, :cve:`2017-16914`, :cve:`2017-16939`, :cve:`2017-16994`, :cve:`2017-16995`, :cve:`2017-16996`, :cve:`2017-17052`, :cve:`2017-17053`, :cve:`2017-17448`, :cve:`2017-17449`, :cve:`2017-17450`, :cve:`2017-17558`, :cve:`2017-17712`, :cve:`2017-17741`, :cve:`2017-17805`, :cve:`2017-17806`, :cve:`2017-17807`, :cve:`2017-17852`, :cve:`2017-17853`, :cve:`2017-17854`, :cve:`2017-17855`, :cve:`2017-17856`, :cve:`2017-17857`, :cve:`2017-17862`, :cve:`2017-17863`, :cve:`2017-17864`, :cve:`2017-17975`, :cve:`2017-18017`, :cve:`2017-18075`, :cve:`2017-18079`, :cve:`2017-18174`, :cve:`2017-18193`, :cve:`2017-18200`, :cve:`2017-18202`, :cve:`2017-18203`, :cve:`2017-18204`, :cve:`2017-18208`, :cve:`2017-18216`, :cve:`2017-18218`, :cve:`2017-18221`, :cve:`2017-18222`, :cve:`2017-18224`, :cve:`2017-18232`, :cve:`2017-18241`, :cve:`2017-18249`, :cve:`2017-18255`, :cve:`2017-18257`, :cve:`2017-18261`, :cve:`2017-18270`, :cve:`2017-18344`, :cve:`2017-18360`, :cve:`2017-18379`, :cve:`2017-18509`, :cve:`2017-18549`, :cve:`2017-18550`, :cve:`2017-18551`, :cve:`2017-18552`, :cve:`2017-18595`, :cve:`2017-2583`, :cve:`2017-2584`, :cve:`2017-2596`, :cve:`2017-2618`, :cve:`2017-2634`, :cve:`2017-2636`, :cve:`2017-2647`, :cve:`2017-2671`, :cve:`2017-5123`, :cve:`2017-5546`, :cve:`2017-5547`, :cve:`2017-5548`, :cve:`2017-5549`, :cve:`2017-5550`, :cve:`2017-5551`, :cve:`2017-5576`, :cve:`2017-5577`, :cve:`2017-5669`, :cve:`2017-5715`, :cve:`2017-5753`, :cve:`2017-5754`, :cve:`2017-5897`, :cve:`2017-5967`, :cve:`2017-5970`, :cve:`2017-5972`, :cve:`2017-5986`, :cve:`2017-6001`, :cve:`2017-6074`, :cve:`2017-6214`, :cve:`2017-6345`, :cve:`2017-6346`, :cve:`2017-6347`, :cve:`2017-6348`, :cve:`2017-6353`, :cve:`2017-6874`, :cve:`2017-6951`, :cve:`2017-7184`, :cve:`2017-7187`, :cve:`2017-7261`, :cve:`2017-7273`, :cve:`2017-7277`, :cve:`2017-7294`, :cve:`2017-7308`, :cve:`2017-7346`, :cve:`2017-7374`, :cve:`2017-7472`, :cve:`2017-7477`, :cve:`2017-7482`, :cve:`2017-7487`, :cve:`2017-7495`, :cve:`2017-7518`, :cve:`2017-7533`, :cve:`2017-7541`, :cve:`2017-7542`, :cve:`2017-7558`, :cve:`2017-7616`, :cve:`2017-7618`, :cve:`2017-7645`, :cve:`2017-7889`, :cve:`2017-7895`, :cve:`2017-7979`, :cve:`2017-8061`, :cve:`2017-8062`, :cve:`2017-8063`, :cve:`2017-8064`, :cve:`2017-8065`, :cve:`2017-8066`, :cve:`2017-8067`, :cve:`2017-8068`, :cve:`2017-8069`, :cve:`2017-8070`, :cve:`2017-8071`, :cve:`2017-8072`, :cve:`2017-8106`, :cve:`2017-8240`, :cve:`2017-8797`, :cve:`2017-8824`, :cve:`2017-8831`, :cve:`2017-8890`, :cve:`2017-8924`, :cve:`2017-8925`, :cve:`2017-9059`, :cve:`2017-9074`, :cve:`2017-9075`, :cve:`2017-9076`, :cve:`2017-9077`, :cve:`2017-9150`, :cve:`2017-9211`, :cve:`2017-9242`, :cve:`2017-9605`, :cve:`2017-9725`, :cve:`2017-9984`, :cve:`2017-9985`, :cve:`2017-9986`, :cve:`2018-1000004`, :cve:`2018-1000026`, :cve:`2018-1000028`, :cve:`2018-1000199`, :cve:`2018-1000200`, :cve:`2018-1000204`, :cve:`2018-10021`, :cve:`2018-10074`, :cve:`2018-10087`, :cve:`2018-10124`, :cve:`2018-10322`, :cve:`2018-10323`, :cve:`2018-1065`, :cve:`2018-1066`, :cve:`2018-10675`, :cve:`2018-1068`, :cve:`2018-10840`, :cve:`2018-10853`, :cve:`2018-1087`, :cve:`2018-10876`, :cve:`2018-10877`, :cve:`2018-10878`, :cve:`2018-10879`, :cve:`2018-10880`, :cve:`2018-10881`, :cve:`2018-10882`, :cve:`2018-10883`, :cve:`2018-10901`, :cve:`2018-10902`, :cve:`2018-1091`, :cve:`2018-1092`, :cve:`2018-1093`, :cve:`2018-10938`, :cve:`2018-1094`, :cve:`2018-10940`, :cve:`2018-1095`, :cve:`2018-1108`, :cve:`2018-1118`, :cve:`2018-1120`, :cve:`2018-11232`, :cve:`2018-1128`, :cve:`2018-1129`, :cve:`2018-1130`, :cve:`2018-11412`, :cve:`2018-11506`, :cve:`2018-11508`, :cve:`2018-12126`, :cve:`2018-12127`, :cve:`2018-12130`, :cve:`2018-12207`, :cve:`2018-12232`, :cve:`2018-12233`, :cve:`2018-12633`, :cve:`2018-12714`, :cve:`2018-12896`, :cve:`2018-12904`, :cve:`2018-13053`, :cve:`2018-13093`, :cve:`2018-13094`, :cve:`2018-13095`, :cve:`2018-13096`, :cve:`2018-13097`, :cve:`2018-13098`, :cve:`2018-13099`, :cve:`2018-13100`, :cve:`2018-13405`, :cve:`2018-13406`, :cve:`2018-14609`, :cve:`2018-14610`, :cve:`2018-14611`, :cve:`2018-14612`, :cve:`2018-14613`, :cve:`2018-14614`, :cve:`2018-14615`, :cve:`2018-14616`, :cve:`2018-14617`, :cve:`2018-14619`, :cve:`2018-14625`, :cve:`2018-14633`, :cve:`2018-14634`, :cve:`2018-14641`, :cve:`2018-14646`, :cve:`2018-14656`, :cve:`2018-14678`, :cve:`2018-14734`, :cve:`2018-15471`, :cve:`2018-15572`, :cve:`2018-15594`, :cve:`2018-16276`, :cve:`2018-16597`, :cve:`2018-16658`, :cve:`2018-16862`, :cve:`2018-16871`, :cve:`2018-16880`, :cve:`2018-16882`, :cve:`2018-16884`, :cve:`2018-17182`, :cve:`2018-17972`, :cve:`2018-18021`, :cve:`2018-18281`, :cve:`2018-18386`, :cve:`2018-18397`, :cve:`2018-18445`, :cve:`2018-18559`, :cve:`2018-18690`, :cve:`2018-18710`, :cve:`2018-18955`, :cve:`2018-19406`, :cve:`2018-19407`, :cve:`2018-19824`, :cve:`2018-19854`, :cve:`2018-19985`, :cve:`2018-20169`, :cve:`2018-20449`, :cve:`2018-20509`, :cve:`2018-20510`, :cve:`2018-20511`, :cve:`2018-20669`, :cve:`2018-20784`, :cve:`2018-20836`, :cve:`2018-20854`, :cve:`2018-20855`, :cve:`2018-20856`, :cve:`2018-20961`, :cve:`2018-20976`, :cve:`2018-21008`, :cve:`2018-25015`, :cve:`2018-25020`, :cve:`2018-3620`, :cve:`2018-3639`, :cve:`2018-3646`, :cve:`2018-3665`, :cve:`2018-3693`, :cve:`2018-5332`, :cve:`2018-5333`, :cve:`2018-5344`, :cve:`2018-5390`, :cve:`2018-5391`, :cve:`2018-5703`, :cve:`2018-5750`, :cve:`2018-5803`, :cve:`2018-5814`, :cve:`2018-5848`, :cve:`2018-5873`, :cve:`2018-5953`, :cve:`2018-5995`, :cve:`2018-6412`, :cve:`2018-6554`, :cve:`2018-6555`, :cve:`2018-6927`, :cve:`2018-7191`, :cve:`2018-7273`, :cve:`2018-7480`, :cve:`2018-7492`, :cve:`2018-7566`, :cve:`2018-7740`, :cve:`2018-7754`, :cve:`2018-7755`, :cve:`2018-7757`, :cve:`2018-7995`, :cve:`2018-8043`, :cve:`2018-8087`, :cve:`2018-8781`, :cve:`2018-8822`, :cve:`2018-8897`, :cve:`2018-9363`, :cve:`2018-9385`, :cve:`2018-9415`, :cve:`2018-9422`, :cve:`2018-9465`, :cve:`2018-9516`, :cve:`2018-9517`, :cve:`2018-9518`, :cve:`2018-9568`, :cve:`2019-0136`, :cve:`2019-0145`, :cve:`2019-0146`, :cve:`2019-0147`, :cve:`2019-0148`, :cve:`2019-0149`, :cve:`2019-0154`, :cve:`2019-0155`, :cve:`2019-10124`, :cve:`2019-10125`, :cve:`2019-10126`, :cve:`2019-10142`, :cve:`2019-10207`, :cve:`2019-10220`, :cve:`2019-10638`, :cve:`2019-10639`, :cve:`2019-11085`, :cve:`2019-11091`, :cve:`2019-11135`, :cve:`2019-11190`, :cve:`2019-11191`, :cve:`2019-1125`, :cve:`2019-11477`, :cve:`2019-11478`, :cve:`2019-11479`, :cve:`2019-11486`, :cve:`2019-11487`, :cve:`2019-11599`, :cve:`2019-11683`, :cve:`2019-11810`, :cve:`2019-11811`, :cve:`2019-11815`, :cve:`2019-11833`, :cve:`2019-11884`, :cve:`2019-12378`, :cve:`2019-12379`, :cve:`2019-12380`, :cve:`2019-12381`, :cve:`2019-12382`, :cve:`2019-12454`, :cve:`2019-12455`, :cve:`2019-12614`, :cve:`2019-12615`, :cve:`2019-12817`, :cve:`2019-12818`, :cve:`2019-12819`, :cve:`2019-12881`, :cve:`2019-12984`, :cve:`2019-13233`, :cve:`2019-13272`, :cve:`2019-13631`, :cve:`2019-13648`, :cve:`2019-14283`, :cve:`2019-14284`, :cve:`2019-14615`, :cve:`2019-14763`, :cve:`2019-14814`, :cve:`2019-14815`, :cve:`2019-14816`, :cve:`2019-14821`, :cve:`2019-14835`, :cve:`2019-14895`, :cve:`2019-14896`, :cve:`2019-14897`, :cve:`2019-14901`, :cve:`2019-15030`, :cve:`2019-15031`, :cve:`2019-15090`, :cve:`2019-15098`, :cve:`2019-15099`, :cve:`2019-15117`, :cve:`2019-15118`, :cve:`2019-15211`, :cve:`2019-15212`, :cve:`2019-15213`, :cve:`2019-15214`, :cve:`2019-15215`, :cve:`2019-15216`, :cve:`2019-15217`, :cve:`2019-15218`, :cve:`2019-15219`, :cve:`2019-15220`, :cve:`2019-15221`, :cve:`2019-15222`, :cve:`2019-15223`, :cve:`2019-15291`, :cve:`2019-15292`, :cve:`2019-15504`, :cve:`2019-15505`, :cve:`2019-15538`, :cve:`2019-15666`, :cve:`2019-15807`, :cve:`2019-15916`, :cve:`2019-15917`, :cve:`2019-15918`, :cve:`2019-15919`, :cve:`2019-15920`, :cve:`2019-15921`, :cve:`2019-15922`, :cve:`2019-15923`, :cve:`2019-15924`, :cve:`2019-15925`, :cve:`2019-15926`, :cve:`2019-15927`, :cve:`2019-16229`, :cve:`2019-16230`, :cve:`2019-16231`, :cve:`2019-16232`, :cve:`2019-16233`, :cve:`2019-16234`, :cve:`2019-16413`, :cve:`2019-16714`, :cve:`2019-16746`, :cve:`2019-16921`, :cve:`2019-16994`, :cve:`2019-16995`, :cve:`2019-17052`, :cve:`2019-17053`, :cve:`2019-17054`, :cve:`2019-17055`, :cve:`2019-17056`, :cve:`2019-17075`, :cve:`2019-17133`, :cve:`2019-17351`, :cve:`2019-17666`, :cve:`2019-18198`, :cve:`2019-18282`, :cve:`2019-18660`, :cve:`2019-18675`, :cve:`2019-18683`, :cve:`2019-18786`, :cve:`2019-18805`, :cve:`2019-18806`, :cve:`2019-18807`, :cve:`2019-18808`, :cve:`2019-18809`, :cve:`2019-18810`, :cve:`2019-18811`, :cve:`2019-18812`, :cve:`2019-18813`, :cve:`2019-18814`, :cve:`2019-18885`, :cve:`2019-19036`, :cve:`2019-19037`, :cve:`2019-19039`, :cve:`2019-19043`, :cve:`2019-19044`, :cve:`2019-19045`, :cve:`2019-19046`, :cve:`2019-19047`, :cve:`2019-19048`, :cve:`2019-19049`, :cve:`2019-19050`, :cve:`2019-19051`, :cve:`2019-19052`, :cve:`2019-19053`, :cve:`2019-19054`, :cve:`2019-19055`, :cve:`2019-19056`, :cve:`2019-19057`, :cve:`2019-19058`, :cve:`2019-19059`, :cve:`2019-19060`, :cve:`2019-19061`, :cve:`2019-19062`, :cve:`2019-19063`, :cve:`2019-19064`, :cve:`2019-19065`, :cve:`2019-19066`, :cve:`2019-19067`, :cve:`2019-19068`, :cve:`2019-19069`, :cve:`2019-19070`, :cve:`2019-19071`, :cve:`2019-19072`, :cve:`2019-19073`, :cve:`2019-19074`, :cve:`2019-19075`, :cve:`2019-19076`, :cve:`2019-19077`, :cve:`2019-19078`, :cve:`2019-19079`, :cve:`2019-19080`, :cve:`2019-19081`, :cve:`2019-19082`, :cve:`2019-19083`, :cve:`2019-19227`, :cve:`2019-19241`, :cve:`2019-19252`, :cve:`2019-19318`, :cve:`2019-19319`, :cve:`2019-19332`, :cve:`2019-19338`, :cve:`2019-19377`, :cve:`2019-19447`, :cve:`2019-19448`, :cve:`2019-19449`, :cve:`2019-19462`, :cve:`2019-19523`, :cve:`2019-19524`, :cve:`2019-19525`, :cve:`2019-19526`, :cve:`2019-19527`, :cve:`2019-19528`, :cve:`2019-19529`, :cve:`2019-19530`, :cve:`2019-19531`, :cve:`2019-19532`, :cve:`2019-19533`, :cve:`2019-19534`, :cve:`2019-19535`, :cve:`2019-19536`, :cve:`2019-19537`, :cve:`2019-19543`, :cve:`2019-19602`, :cve:`2019-19767`, :cve:`2019-19768`, :cve:`2019-19769`, :cve:`2019-19770`, :cve:`2019-19807`, :cve:`2019-19813`, :cve:`2019-19815`, :cve:`2019-19816`, :cve:`2019-19922`, :cve:`2019-19927`, :cve:`2019-19947`, :cve:`2019-19965`, :cve:`2019-19966`, :cve:`2019-1999`, :cve:`2019-20054`, :cve:`2019-20095`, :cve:`2019-20096`, :cve:`2019-2024`, :cve:`2019-2025`, :cve:`2019-20422`, :cve:`2019-2054`, :cve:`2019-20636`, :cve:`2019-20806`, :cve:`2019-20810`, :cve:`2019-20811`, :cve:`2019-20812`, :cve:`2019-20908`, :cve:`2019-20934`, :cve:`2019-2101`, :cve:`2019-2181`, :cve:`2019-2182`, :cve:`2019-2213`, :cve:`2019-2214`, :cve:`2019-2215`, :cve:`2019-25044`, :cve:`2019-25045`, :cve:`2019-3016`, :cve:`2019-3459`, :cve:`2019-3460`, :cve:`2019-3701`, :cve:`2019-3819`, :cve:`2019-3837`, :cve:`2019-3846`, :cve:`2019-3874`, :cve:`2019-3882`, :cve:`2019-3887`, :cve:`2019-3892`, :cve:`2019-3896`, :cve:`2019-3900`, :cve:`2019-3901`, :cve:`2019-5108`, :cve:`2019-6133`, :cve:`2019-6974`, :cve:`2019-7221`, :cve:`2019-7222`, :cve:`2019-7308`, :cve:`2019-8912`, :cve:`2019-8956`, :cve:`2019-8980`, :cve:`2019-9003`, :cve:`2019-9162`, :cve:`2019-9213`, :cve:`2019-9245`, :cve:`2019-9444`, :cve:`2019-9445`, :cve:`2019-9453`, :cve:`2019-9454`, :cve:`2019-9455`, :cve:`2019-9456`, :cve:`2019-9457`, :cve:`2019-9458`, :cve:`2019-9466`, :cve:`2019-9500`, :cve:`2019-9503`, :cve:`2019-9506`, :cve:`2019-9857`, :cve:`2020-0009`, :cve:`2020-0030`, :cve:`2020-0041`, :cve:`2020-0066`, :cve:`2020-0067`, :cve:`2020-0110`, :cve:`2020-0255`, :cve:`2020-0305`, :cve:`2020-0404`, :cve:`2020-0423`, :cve:`2020-0427`, :cve:`2020-0429`, :cve:`2020-0430`, :cve:`2020-0431`, :cve:`2020-0432`, :cve:`2020-0433`, :cve:`2020-0435`, :cve:`2020-0444`, :cve:`2020-0465`, :cve:`2020-0466`, :cve:`2020-0543`, :cve:`2020-10135`, :cve:`2020-10690`, :cve:`2020-10711`, :cve:`2020-10720`, :cve:`2020-10732`, :cve:`2020-10742`, :cve:`2020-10751`, :cve:`2020-10757`, :cve:`2020-10766`, :cve:`2020-10767`, :cve:`2020-10768`, :cve:`2020-10769`, :cve:`2020-10773`, :cve:`2020-10781`, :cve:`2020-10942`, :cve:`2020-11494`, :cve:`2020-11565`, :cve:`2020-11608`, :cve:`2020-11609`, :cve:`2020-11668`, :cve:`2020-11669`, :cve:`2020-11884`, :cve:`2020-12114`, :cve:`2020-12351`, :cve:`2020-12352`, :cve:`2020-12464`, :cve:`2020-12465`, :cve:`2020-12652`, :cve:`2020-12653`, :cve:`2020-12654`, :cve:`2020-12655`, :cve:`2020-12656`, :cve:`2020-12657`, :cve:`2020-12659`, :cve:`2020-12768`, :cve:`2020-12769`, :cve:`2020-12770`, :cve:`2020-12771`, :cve:`2020-12826`, :cve:`2020-12888`, :cve:`2020-12912`, :cve:`2020-13143`, :cve:`2020-13974`, :cve:`2020-14305`, :cve:`2020-14314`, :cve:`2020-14331`, :cve:`2020-14351`, :cve:`2020-14353`, :cve:`2020-14356`, :cve:`2020-14381`, :cve:`2020-14385`, :cve:`2020-14386`, :cve:`2020-14390`, :cve:`2020-14416`, :cve:`2020-15393`, :cve:`2020-15436`, :cve:`2020-15437`, :cve:`2020-15780`, :cve:`2020-15852`, :cve:`2020-16119`, :cve:`2020-16120`, :cve:`2020-16166`, :cve:`2020-1749`, :cve:`2020-24394`, :cve:`2020-24490`, :cve:`2020-24586`, :cve:`2020-24587`, :cve:`2020-24588`, :cve:`2020-25211`, :cve:`2020-25212`, :cve:`2020-25221`, :cve:`2020-25284`, :cve:`2020-25285`, :cve:`2020-25639`, :cve:`2020-25641`, :cve:`2020-25643`, :cve:`2020-25645`, :cve:`2020-25656`, :cve:`2020-25668`, :cve:`2020-25669`, :cve:`2020-25670`, :cve:`2020-25671`, :cve:`2020-25672`, :cve:`2020-25673`, :cve:`2020-25704`, :cve:`2020-25705`, :cve:`2020-26088`, :cve:`2020-26139`, :cve:`2020-26141`, :cve:`2020-26145`, :cve:`2020-26147`, :cve:`2020-26541`, :cve:`2020-26555`, :cve:`2020-26558`, :cve:`2020-27066`, :cve:`2020-27067`, :cve:`2020-27068`, :cve:`2020-27152`, :cve:`2020-27170`, :cve:`2020-27171`, :cve:`2020-27194`, :cve:`2020-2732`, :cve:`2020-27418`, :cve:`2020-27673`, :cve:`2020-27675`, :cve:`2020-27777`, :cve:`2020-27784`, :cve:`2020-27786`, :cve:`2020-27815`, :cve:`2020-27820`, :cve:`2020-27825`, :cve:`2020-27830`, :cve:`2020-27835`, :cve:`2020-28097`, :cve:`2020-28374`, :cve:`2020-28588`, :cve:`2020-28915`, :cve:`2020-28941`, :cve:`2020-28974`, :cve:`2020-29368`, :cve:`2020-29369`, :cve:`2020-29370`, :cve:`2020-29371`, :cve:`2020-29372`, :cve:`2020-29373`, :cve:`2020-29374`, :cve:`2020-29534`, :cve:`2020-29568`, :cve:`2020-29569`, :cve:`2020-29660`, :cve:`2020-29661`, :cve:`2020-35499`, :cve:`2020-35508`, :cve:`2020-35513`, :cve:`2020-35519`, :cve:`2020-36158`, :cve:`2020-36310`, :cve:`2020-36311`, :cve:`2020-36312`, :cve:`2020-36313`, :cve:`2020-36322`, :cve:`2020-36385`, :cve:`2020-36386`, :cve:`2020-36387`, :cve:`2020-36516`, :cve:`2020-36557`, :cve:`2020-36558`, :cve:`2020-36691`, :cve:`2020-36694`, :cve:`2020-36766`, :cve:`2020-3702`, :cve:`2020-4788`, :cve:`2020-7053`, :cve:`2020-8428`, :cve:`2020-8647`, :cve:`2020-8648`, :cve:`2020-8649`, :cve:`2020-8694`, :cve:`2020-8834`, :cve:`2020-8835`, :cve:`2020-8992`, :cve:`2020-9383`, :cve:`2020-9391`, :cve:`2021-0129`, :cve:`2021-0342`, :cve_mitre:`2021-0447`, :cve_mitre:`2021-0448`, :cve:`2021-0512`, :cve:`2021-0605`, :cve:`2021-0707`, :cve:`2021-0920`, :cve:`2021-0929`, :cve:`2021-0935`, :cve_mitre:`2021-0937`, :cve:`2021-0938`, :cve:`2021-0941`, :cve:`2021-1048`, :cve:`2021-20177`, :cve:`2021-20194`, :cve:`2021-20226`, :cve:`2021-20239`, :cve:`2021-20261`, :cve:`2021-20265`, :cve:`2021-20268`, :cve:`2021-20292`, :cve:`2021-20317`, :cve:`2021-20320`, :cve:`2021-20321`, :cve:`2021-20322`, :cve:`2021-21781`, :cve:`2021-22543`, :cve:`2021-22555`, :cve:`2021-22600`, :cve:`2021-23133`, :cve:`2021-23134`, :cve:`2021-26401`, :cve:`2021-26708`, :cve:`2021-26930`, :cve:`2021-26931`, :cve:`2021-26932`, :cve:`2021-27363`, :cve:`2021-27364`, :cve:`2021-27365`, :cve:`2021-28038`, :cve:`2021-28039`, :cve:`2021-28375`, :cve:`2021-28660`, :cve:`2021-28688`, :cve:`2021-28691`, :cve:`2021-28711`, :cve:`2021-28712`, :cve:`2021-28713`, :cve:`2021-28714`, :cve:`2021-28715`, :cve:`2021-28950`, :cve:`2021-28951`, :cve:`2021-28952`, :cve:`2021-28964`, :cve:`2021-28971`, :cve:`2021-28972`, :cve:`2021-29154`, :cve:`2021-29155`, :cve:`2021-29264`, :cve:`2021-29265`, :cve:`2021-29266`, :cve:`2021-29646`, :cve:`2021-29647`, :cve:`2021-29648`, :cve:`2021-29649`, :cve:`2021-29650`, :cve:`2021-29657`, :cve:`2021-30002`, :cve:`2021-30178`, :cve:`2021-31440`, :cve:`2021-3178`, :cve:`2021-31829`, :cve:`2021-31916`, :cve:`2021-32399`, :cve:`2021-32606`, :cve:`2021-33033`, :cve:`2021-33034`, :cve:`2021-33098`, :cve:`2021-33135`, :cve:`2021-33200`, :cve:`2021-3347`, :cve:`2021-3348`, :cve:`2021-33624`, :cve:`2021-33655`, :cve:`2021-33656`, :cve:`2021-33909`, :cve:`2021-3411`, :cve:`2021-3428`, :cve:`2021-3444`, :cve:`2021-34556`, :cve:`2021-34693`, :cve:`2021-3483`, :cve:`2021-34866`, :cve:`2021-3489`, :cve:`2021-3490`, :cve:`2021-3491`, :cve_mitre:`2021-34981`, :cve:`2021-3501`, :cve:`2021-35039`, :cve:`2021-3506`, :cve:`2021-3543`, :cve:`2021-35477`, :cve:`2021-3564`, :cve:`2021-3573`, :cve:`2021-3587`, :cve_mitre:`2021-3600`, :cve:`2021-3609`, :cve:`2021-3612`, :cve:`2021-3635`, :cve:`2021-3640`, :cve:`2021-3653`, :cve:`2021-3655`, :cve:`2021-3656`, :cve:`2021-3659`, :cve:`2021-3679`, :cve:`2021-3715`, :cve:`2021-37159`, :cve:`2021-3732`, :cve:`2021-3736`, :cve:`2021-3739`, :cve:`2021-3743`, :cve:`2021-3744`, :cve:`2021-3752`, :cve:`2021-3753`, :cve:`2021-37576`, :cve:`2021-3759`, :cve:`2021-3760`, :cve:`2021-3764`, :cve:`2021-3772`, :cve:`2021-38160`, :cve:`2021-38166`, :cve:`2021-38198`, :cve:`2021-38199`, :cve:`2021-38200`, :cve:`2021-38201`, :cve:`2021-38202`, :cve:`2021-38203`, :cve:`2021-38204`, :cve:`2021-38205`, :cve:`2021-38206`, :cve:`2021-38207`, :cve:`2021-38208`, :cve:`2021-38209`, :cve:`2021-38300`, :cve:`2021-3894`, :cve:`2021-3896`, :cve:`2021-3923`, :cve:`2021-39633`, :cve:`2021-39634`, :cve:`2021-39636`, :cve:`2021-39648`, :cve:`2021-39656`, :cve:`2021-39657`, :cve:`2021-39685`, :cve:`2021-39686`, :cve:`2021-39698`, :cve:`2021-39711`, :cve:`2021-39713`, :cve:`2021-39714`, :cve:`2021-4001`, :cve:`2021-4002`, :cve:`2021-4028`, :cve:`2021-4032`, :cve:`2021-4037`, :cve:`2021-40490`, :cve:`2021-4083`, :cve:`2021-4090`, :cve:`2021-4093`, :cve:`2021-4095`, :cve:`2021-41073`, :cve:`2021-4135`, :cve:`2021-4148`, :cve:`2021-4149`, :cve:`2021-4154`, :cve:`2021-4155`, :cve:`2021-4157`, :cve:`2021-4159`, :cve:`2021-41864`, :cve:`2021-4197`, :cve:`2021-42008`, :cve:`2021-4202`, :cve:`2021-4203`, :cve:`2021-4218`, :cve:`2021-42252`, :cve:`2021-42327`, :cve:`2021-42739`, :cve:`2021-43056`, :cve:`2021-43057`, :cve:`2021-43267`, :cve:`2021-43389`, :cve:`2021-43975`, :cve:`2021-43976`, :cve:`2021-44733`, :cve:`2021-45095`, :cve:`2021-45100`, :cve:`2021-45402`, :cve:`2021-45469`, :cve:`2021-45480`, :cve:`2021-45485`, :cve:`2021-45486`, :cve:`2021-45868`, :cve:`2021-46283`, :cve:`2022-0001`, :cve:`2022-0002`, :cve:`2022-0168`, :cve:`2022-0171`, :cve:`2022-0185`, :cve:`2022-0264`, :cve:`2022-0286`, :cve:`2022-0322`, :cve:`2022-0330`, :cve:`2022-0433`, :cve:`2022-0435`, :cve:`2022-0487`, :cve:`2022-0492`, :cve:`2022-0494`, :cve:`2022-0516`, :cve:`2022-0617`, :cve:`2022-0644`, :cve:`2022-0646`, :cve:`2022-0742`, :cve:`2022-0812`, :cve:`2022-0847`, :cve:`2022-0850`, :cve:`2022-0854`, :cve:`2022-0995`, :cve:`2022-1011`, :cve:`2022-1012`, :cve:`2022-1015`, :cve:`2022-1016`, :cve:`2022-1043`, :cve:`2022-1048`, :cve:`2022-1055`, :cve:`2022-1158`, :cve:`2022-1184`, :cve:`2022-1195`, :cve:`2022-1198`, :cve:`2022-1199`, :cve:`2022-1204`, :cve:`2022-1205`, :cve:`2022-1353`, :cve:`2022-1419`, :cve:`2022-1462`, :cve:`2022-1516`, :cve:`2022-1651`, :cve:`2022-1652`, :cve:`2022-1671`, :cve:`2022-1678`, :cve:`2022-1679`, :cve:`2022-1729`, :cve:`2022-1734`, :cve:`2022-1786`, :cve:`2022-1789`, :cve:`2022-1836`, :cve:`2022-1852`, :cve:`2022-1882`, :cve:`2022-1943`, :cve:`2022-1966`, :cve:`2022-1972`, :cve:`2022-1973`, :cve:`2022-1974`, :cve:`2022-1975`, :cve:`2022-1976`, :cve:`2022-1998`, :cve:`2022-20008`, :cve:`2022-20132`, :cve:`2022-20141`, :cve:`2022-20153`, :cve:`2022-20154`, :cve:`2022-20158`, :cve:`2022-20166`, :cve:`2022-20368`, :cve:`2022-20369`, :cve:`2022-20421`, :cve:`2022-20422`, :cve:`2022-20423`, :cve_mitre:`2022-20565`, :cve:`2022-20566`, :cve:`2022-20567`, :cve:`2022-20572`, :cve:`2022-2078`, :cve:`2022-21123`, :cve:`2022-21125`, :cve:`2022-21166`, :cve:`2022-21385`, :cve:`2022-21499`, :cve_mitre:`2022-21505`, :cve:`2022-2153`, :cve:`2022-2196`, :cve_mitre:`2022-22942`, :cve:`2022-23036`, :cve:`2022-23037`, :cve:`2022-23038`, :cve:`2022-23039`, :cve:`2022-23040`, :cve:`2022-23041`, :cve:`2022-23042`, :cve:`2022-2308`, :cve:`2022-2318`, :cve:`2022-2380`, :cve:`2022-23816`, :cve:`2022-23960`, :cve:`2022-24122`, :cve:`2022-24448`, :cve:`2022-24958`, :cve:`2022-24959`, :cve:`2022-2503`, :cve:`2022-25258`, :cve:`2022-25375`, :cve:`2022-25636`, :cve_mitre:`2022-2585`, :cve_mitre:`2022-2586`, :cve_mitre:`2022-2588`, :cve:`2022-2590`, :cve_mitre:`2022-2602`, :cve:`2022-26365`, :cve:`2022-26373`, :cve:`2022-2639`, :cve:`2022-26490`, :cve:`2022-2663`, :cve:`2022-26966`, :cve:`2022-27223`, :cve:`2022-27666`, :cve:`2022-2785`, :cve:`2022-27950`, :cve:`2022-28356`, :cve:`2022-28388`, :cve:`2022-28389`, :cve:`2022-28390`, :cve:`2022-2873`, :cve:`2022-28796`, :cve:`2022-28893`, :cve:`2022-2905`, :cve:`2022-29156`, :cve:`2022-2938`, :cve:`2022-29581`, :cve:`2022-29582`, :cve:`2022-2959`, :cve:`2022-2964`, :cve:`2022-2977`, :cve:`2022-2978`, :cve:`2022-29900`, :cve:`2022-29901`, :cve:`2022-29968`, :cve:`2022-3028`, :cve:`2022-30594`, :cve:`2022-3061`, :cve:`2022-3077`, :cve:`2022-3078`, :cve:`2022-3103`, :cve:`2022-3104`, :cve:`2022-3105`, :cve:`2022-3106`, :cve:`2022-3107`, :cve:`2022-3110`, :cve:`2022-3111`, :cve:`2022-3112`, :cve:`2022-3113`, :cve:`2022-3114`, :cve:`2022-3115`, :cve:`2022-3169`, :cve:`2022-3170`, :cve:`2022-3202`, :cve:`2022-32250`, :cve:`2022-32296`, :cve:`2022-3239`, :cve:`2022-32981`, :cve:`2022-3303`, :cve:`2022-33740`, :cve:`2022-33741`, :cve:`2022-33742`, :cve:`2022-33743`, :cve:`2022-33744`, :cve:`2022-33981`, :cve:`2022-3424`, :cve:`2022-3435`, :cve:`2022-34494`, :cve:`2022-34495`, :cve:`2022-34918`, :cve:`2022-3521`, :cve:`2022-3524`, :cve:`2022-3526`, :cve:`2022-3531`, :cve:`2022-3532`, :cve:`2022-3534`, :cve:`2022-3535`, :cve:`2022-3541`, :cve:`2022-3542`, :cve:`2022-3543`, :cve:`2022-3545`, :cve:`2022-3564`, :cve:`2022-3565`, :cve:`2022-3577`, :cve:`2022-3586`, :cve:`2022-3594`, :cve:`2022-36123`, :cve:`2022-3619`, :cve:`2022-3621`, :cve:`2022-3623`, :cve:`2022-3625`, :cve:`2022-3628`, :cve:`2022-36280`, :cve:`2022-3629`, :cve:`2022-3630`, :cve:`2022-3633`, :cve:`2022-3635`, :cve:`2022-3640`, :cve:`2022-3643`, :cve:`2022-3646`, :cve:`2022-3649`, :cve:`2022-36879`, :cve:`2022-36946`, :cve:`2022-3707`, :cve:`2022-3910`, :cve:`2022-39189`, :cve:`2022-39190`, :cve:`2022-3977`, :cve:`2022-39842`, :cve:`2022-40307`, :cve:`2022-40476`, :cve:`2022-40768`, :cve:`2022-4095`, :cve:`2022-40982`, :cve:`2022-41218`, :cve:`2022-41222`, :cve:`2022-4127`, :cve:`2022-4128`, :cve:`2022-4129`, :cve:`2022-4139`, :cve:`2022-41674`, :cve:`2022-41849`, :cve:`2022-41850`, :cve:`2022-41858`, :cve:`2022-42328`, :cve:`2022-42329`, :cve:`2022-42432`, :cve:`2022-4269`, :cve:`2022-42703`, :cve:`2022-42719`, :cve:`2022-42720`, :cve:`2022-42721`, :cve:`2022-42722`, :cve:`2022-42895`, :cve:`2022-42896`, :cve:`2022-43750`, :cve:`2022-4378`, :cve:`2022-4379`, :cve:`2022-4382`, :cve:`2022-43945`, :cve:`2022-45869`, :cve:`2022-45886`, :cve:`2022-45887`, :cve:`2022-45888`, :cve:`2022-45919`, :cve:`2022-45934`, :cve:`2022-4662`, :cve:`2022-4744`, :cve:`2022-47518`, :cve:`2022-47519`, :cve:`2022-47520`, :cve:`2022-47521`, :cve:`2022-47929`, :cve:`2022-47938`, :cve:`2022-47939`, :cve:`2022-47940`, :cve:`2022-47941`, :cve:`2022-47942`, :cve:`2022-47943`, :cve:`2022-4842`, :cve:`2022-48423`, :cve:`2022-48424`, :cve:`2022-48425`, :cve:`2022-48502`, :cve:`2023-0030`, :cve:`2023-0045`, :cve:`2023-0047`, :cve:`2023-0122`, :cve:`2023-0160`, :cve:`2023-0179`, :cve:`2023-0210`, :cve:`2023-0240`, :cve:`2023-0266`, :cve:`2023-0394`, :cve:`2023-0458`, :cve:`2023-0459`, :cve:`2023-0461`, :cve:`2023-0468`, :cve:`2023-0469`, :cve:`2023-0590`, :cve:`2023-0615`, :cve_mitre:`2023-1032`, :cve:`2023-1073`, :cve:`2023-1074`, :cve:`2023-1076`, :cve:`2023-1077`, :cve:`2023-1078`, :cve:`2023-1079`, :cve:`2023-1095`, :cve:`2023-1118`, :cve:`2023-1192`, :cve:`2023-1194`, :cve:`2023-1195`, :cve:`2023-1206`, :cve:`2023-1249`, :cve:`2023-1252`, :cve:`2023-1281`, :cve:`2023-1380`, :cve:`2023-1382`, :cve:`2023-1390`, :cve:`2023-1513`, :cve:`2023-1582`, :cve:`2023-1583`, :cve:`2023-1611`, :cve:`2023-1637`, :cve:`2023-1652`, :cve:`2023-1670`, :cve:`2023-1829`, :cve:`2023-1838`, :cve:`2023-1855`, :cve:`2023-1859`, :cve:`2023-1989`, :cve:`2023-1990`, :cve:`2023-1998`, :cve:`2023-2002`, :cve:`2023-2006`, :cve:`2023-2008`, :cve:`2023-2019`, :cve:`2023-20569`, :cve:`2023-20588`, :cve:`2023-20593`, :cve:`2023-20938`, :cve:`2023-21102`, :cve:`2023-21106`, :cve:`2023-2124`, :cve:`2023-21255`, :cve:`2023-21264`, :cve:`2023-2156`, :cve:`2023-2162`, :cve:`2023-2163`, :cve:`2023-2166`, :cve:`2023-2177`, :cve:`2023-2194`, :cve:`2023-2235`, :cve:`2023-2236`, :cve:`2023-2248`, :cve:`2023-2269`, :cve:`2023-22996`, :cve:`2023-22997`, :cve:`2023-22998`, :cve:`2023-22999`, :cve:`2023-23001`, :cve:`2023-23002`, :cve:`2023-23003`, :cve:`2023-23004`, :cve:`2023-23005`, :cve:`2023-23006`, :cve:`2023-23454`, :cve:`2023-23455`, :cve:`2023-23559`, :cve:`2023-2483`, :cve:`2023-25012`, :cve:`2023-2513`, :cve:`2023-25775`, :cve:`2023-2598`, :cve:`2023-26544`, :cve:`2023-26545`, :cve:`2023-26605`, :cve:`2023-26606`, :cve:`2023-26607`, :cve:`2023-28327`, :cve:`2023-28328`, :cve:`2023-28410`, :cve:`2023-28464`, :cve:`2023-28466`, :cve:`2023-2860`, :cve:`2023-28772`, :cve:`2023-28866`, :cve:`2023-2898`, :cve:`2023-2985`, :cve:`2023-3006`, :cve:`2023-30456`, :cve:`2023-30772`, :cve:`2023-3090`, :cve:`2023-3106`, :cve:`2023-3111`, :cve:`2023-3117`, :cve:`2023-31248`, :cve:`2023-3141`, :cve:`2023-31436`, :cve:`2023-3159`, :cve:`2023-3161`, :cve:`2023-3212`, :cve:`2023-3220`, :cve:`2023-32233`, :cve:`2023-32247`, :cve:`2023-32248`, :cve:`2023-32250`, :cve:`2023-32252`, :cve:`2023-32254`, :cve:`2023-32257`, :cve:`2023-32258`, :cve:`2023-32269`, :cve:`2023-3268`, :cve:`2023-3269`, :cve:`2023-3312`, :cve:`2023-3317`, :cve:`2023-33203`, :cve:`2023-33250`, :cve:`2023-33288`, :cve:`2023-3338`, :cve:`2023-3355`, :cve:`2023-3357`, :cve:`2023-3358`, :cve:`2023-3359`, :cve:`2023-3390`, :cve:`2023-33951`, :cve:`2023-33952`, :cve:`2023-34255`, :cve:`2023-34256`, :cve:`2023-34319`, :cve:`2023-3439`, :cve:`2023-35001`, :cve:`2023-3567`, :cve:`2023-35788`, :cve:`2023-35823`, :cve:`2023-35824`, :cve:`2023-35826`, :cve:`2023-35828`, :cve:`2023-35829`, :cve:`2023-3609`, :cve:`2023-3610`, :cve:`2023-3611`, :cve:`2023-37453`, :cve:`2023-3772`, :cve:`2023-3773`, :cve:`2023-3776`, :cve:`2023-3777`, :cve:`2023-3812`, :cve:`2023-38409`, :cve:`2023-38426`, :cve:`2023-38427`, :cve:`2023-38428`, :cve:`2023-38429`, :cve:`2023-38430`, :cve:`2023-38431`, :cve:`2023-38432`, :cve:`2023-3863`, :cve_mitre:`2023-3865`, :cve_mitre:`2023-3866`, :cve_mitre:`2023-3867`, :cve:`2023-39189`, :cve:`2023-39192`, :cve:`2023-39193`, :cve:`2023-39194`, :cve:`2023-4004`, :cve:`2023-4015`, :cve:`2023-40283`, :cve:`2023-4128`, :cve:`2023-4132`, :cve:`2023-4147`, :cve:`2023-4155`, :cve:`2023-4194`, :cve:`2023-4206`, :cve:`2023-4207`, :cve:`2023-4208`, :cve:`2023-4273`, :cve:`2023-42752`, :cve:`2023-42753`, :cve:`2023-42755`, :cve:`2023-42756`, :cve:`2023-4385`, :cve:`2023-4387`, :cve:`2023-4389`, :cve:`2023-4394`, :cve:`2023-44466`, :cve:`2023-4459`, :cve:`2023-4569`, :cve:`2023-45862`, :cve:`2023-45871`, :cve:`2023-4611`, :cve:`2023-4623`, :cve:`2023-4732`, :cve:`2023-4921` and :cve:`2023-5345` 26- linux-yocto/5.10: Ignore :cve_nist:`2003-1604`, :cve_nist:`2004-0230`, :cve_nist:`2006-3635`, :cve_nist:`2006-5331`, :cve_nist:`2006-6128`, :cve_nist:`2007-4774`, :cve_nist:`2007-6761`, :cve_nist:`2007-6762`, :cve_nist:`2008-7316`, :cve_nist:`2009-2692`, :cve_nist:`2010-0008`, :cve_nist:`2010-3432`, :cve_nist:`2010-4648`, :cve_nist:`2010-5313`, :cve_nist:`2010-5328`, :cve_nist:`2010-5329`, :cve_nist:`2010-5331`, :cve_nist:`2010-5332`, :cve_nist:`2011-4098`, :cve_nist:`2011-4131`, :cve_nist:`2011-4915`, :cve_nist:`2011-5321`, :cve_nist:`2011-5327`, :cve_nist:`2012-0957`, :cve_nist:`2012-2119`, :cve_nist:`2012-2136`, :cve_nist:`2012-2137`, :cve_nist:`2012-2313`, :cve_nist:`2012-2319`, :cve_nist:`2012-2372`, :cve_nist:`2012-2375`, :cve_nist:`2012-2390`, :cve_nist:`2012-2669`, :cve_nist:`2012-2744`, :cve_nist:`2012-2745`, :cve_nist:`2012-3364`, :cve_nist:`2012-3375`, :cve_nist:`2012-3400`, :cve_nist:`2012-3412`, :cve_nist:`2012-3430`, :cve_nist:`2012-3510`, :cve_nist:`2012-3511`, :cve_nist:`2012-3520`, :cve_nist:`2012-3552`, :cve_nist:`2012-4398`, :cve_nist:`2012-4444`, :cve_nist:`2012-4461`, :cve_nist:`2012-4467`, :cve_nist:`2012-4508`, :cve_nist:`2012-4530`, :cve_nist:`2012-4565`, :cve_nist:`2012-5374`, :cve_nist:`2012-5375`, :cve_nist:`2012-5517`, :cve_nist:`2012-6536`, :cve_nist:`2012-6537`, :cve_nist:`2012-6538`, :cve_nist:`2012-6539`, :cve_nist:`2012-6540`, :cve_nist:`2012-6541`, :cve_nist:`2012-6542`, :cve_nist:`2012-6543`, :cve_nist:`2012-6544`, :cve_nist:`2012-6545`, :cve_nist:`2012-6546`, :cve_nist:`2012-6547`, :cve_nist:`2012-6548`, :cve_nist:`2012-6549`, :cve_nist:`2012-6638`, :cve_nist:`2012-6647`, :cve_nist:`2012-6657`, :cve_nist:`2012-6689`, :cve_nist:`2012-6701`, :cve_nist:`2012-6703`, :cve_nist:`2012-6704`, :cve_nist:`2012-6712`, :cve_nist:`2013-0160`, :cve_nist:`2013-0190`, :cve_nist:`2013-0216`, :cve_nist:`2013-0217`, :cve_nist:`2013-0228`, :cve_nist:`2013-0231`, :cve_nist:`2013-0268`, :cve_nist:`2013-0290`, :cve_nist:`2013-0309`, :cve_nist:`2013-0310`, :cve_nist:`2013-0311`, :cve_nist:`2013-0313`, :cve_nist:`2013-0343`, :cve_nist:`2013-0349`, :cve_nist:`2013-0871`, :cve_nist:`2013-0913`, :cve_nist:`2013-0914`, :cve_nist:`2013-1059`, :cve_nist:`2013-1763`, :cve_nist:`2013-1767`, :cve_nist:`2013-1772`, :cve_nist:`2013-1773`, :cve_nist:`2013-1774`, :cve_nist:`2013-1792`, :cve_nist:`2013-1796`, :cve_nist:`2013-1797`, :cve_nist:`2013-1798`, :cve_nist:`2013-1819`, :cve_nist:`2013-1826`, :cve_nist:`2013-1827`, :cve_nist:`2013-1828`, :cve_nist:`2013-1848`, :cve_nist:`2013-1858`, :cve_nist:`2013-1860`, :cve_nist:`2013-1928`, :cve_nist:`2013-1929`, :cve_nist:`2013-1943`, :cve_nist:`2013-1956`, :cve_nist:`2013-1957`, :cve_nist:`2013-1958`, :cve_nist:`2013-1959`, :cve_nist:`2013-1979`, :cve_nist:`2013-2015`, :cve_nist:`2013-2017`, :cve_nist:`2013-2058`, :cve_nist:`2013-2094`, :cve_nist:`2013-2128`, :cve_nist:`2013-2140`, :cve_nist:`2013-2141`, :cve_nist:`2013-2146`, :cve_nist:`2013-2147`, :cve_nist:`2013-2148`, :cve_nist:`2013-2164`, :cve_nist:`2013-2206`, :cve_nist:`2013-2232`, :cve_nist:`2013-2234`, :cve_nist:`2013-2237`, :cve_nist:`2013-2546`, :cve_nist:`2013-2547`, :cve_nist:`2013-2548`, :cve_nist:`2013-2596`, :cve_nist:`2013-2634`, :cve_nist:`2013-2635`, :cve_nist:`2013-2636`, :cve_nist:`2013-2850`, :cve_nist:`2013-2851`, :cve_nist:`2013-2852`, :cve_nist:`2013-2888`, :cve_nist:`2013-2889`, :cve_nist:`2013-2890`, :cve_nist:`2013-2891`, :cve_nist:`2013-2892`, :cve_nist:`2013-2893`, :cve_nist:`2013-2894`, :cve_nist:`2013-2895`, :cve_nist:`2013-2896`, :cve_nist:`2013-2897`, :cve_nist:`2013-2898`, :cve_nist:`2013-2899`, :cve_nist:`2013-2929`, :cve_nist:`2013-2930`, :cve_nist:`2013-3076`, :cve_nist:`2013-3222`, :cve_nist:`2013-3223`, :cve_nist:`2013-3224`, :cve_nist:`2013-3225`, :cve_nist:`2013-3226`, :cve_nist:`2013-3227`, :cve_nist:`2013-3228`, :cve_nist:`2013-3229`, :cve_nist:`2013-3230`, :cve_nist:`2013-3231`, :cve_nist:`2013-3232`, :cve_nist:`2013-3233`, :cve_nist:`2013-3234`, :cve_nist:`2013-3235`, :cve_nist:`2013-3236`, :cve_nist:`2013-3237`, :cve_nist:`2013-3301`, :cve_nist:`2013-3302`, :cve_nist:`2013-4125`, :cve_nist:`2013-4127`, :cve_nist:`2013-4129`, :cve_nist:`2013-4162`, :cve_nist:`2013-4163`, :cve_nist:`2013-4205`, :cve_nist:`2013-4220`, :cve_nist:`2013-4247`, :cve_nist:`2013-4254`, :cve_nist:`2013-4270`, :cve_nist:`2013-4299`, :cve_nist:`2013-4300`, :cve_nist:`2013-4312`, :cve_nist:`2013-4343`, :cve_nist:`2013-4345`, :cve_nist:`2013-4348`, :cve_nist:`2013-4350`, :cve_nist:`2013-4387`, :cve_nist:`2013-4470`, :cve_nist:`2013-4483`, :cve_nist:`2013-4511`, :cve_nist:`2013-4512`, :cve_nist:`2013-4513`, :cve_nist:`2013-4514`, :cve_nist:`2013-4515`, :cve_nist:`2013-4516`, :cve_nist:`2013-4563`, :cve_nist:`2013-4579`, :cve_nist:`2013-4587`, :cve_nist:`2013-4588`, :cve_nist:`2013-4591`, :cve_nist:`2013-4592`, :cve_nist:`2013-5634`, :cve_nist:`2013-6282`, :cve_nist:`2013-6367`, :cve_nist:`2013-6368`, :cve_nist:`2013-6376`, :cve_nist:`2013-6378`, :cve_nist:`2013-6380`, :cve_nist:`2013-6381`, :cve_nist:`2013-6382`, :cve_nist:`2013-6383`, :cve_nist:`2013-6431`, :cve_nist:`2013-6432`, :cve_nist:`2013-6885`, :cve_nist:`2013-7026`, :cve_nist:`2013-7027`, :cve_nist:`2013-7263`, :cve_nist:`2013-7264`, :cve_nist:`2013-7265`, :cve_nist:`2013-7266`, :cve_nist:`2013-7267`, :cve_nist:`2013-7268`, :cve_nist:`2013-7269`, :cve_nist:`2013-7270`, :cve_nist:`2013-7271`, :cve_nist:`2013-7281`, :cve_nist:`2013-7339`, :cve_nist:`2013-7348`, :cve_nist:`2013-7421`, :cve_nist:`2013-7446`, :cve_nist:`2013-7470`, :cve_nist:`2014-0038`, :cve_nist:`2014-0049`, :cve_nist:`2014-0055`, :cve_nist:`2014-0069`, :cve_nist:`2014-0077`, :cve_nist:`2014-0100`, :cve_nist:`2014-0101`, :cve_nist:`2014-0102`, :cve_nist:`2014-0131`, :cve_nist:`2014-0155`, :cve_nist:`2014-0181`, :cve_nist:`2014-0196`, :cve_nist:`2014-0203`, :cve_nist:`2014-0205`, :cve_nist:`2014-0206`, :cve_nist:`2014-1438`, :cve_nist:`2014-1444`, :cve_nist:`2014-1445`, :cve_nist:`2014-1446`, :cve_nist:`2014-1690`, :cve_nist:`2014-1737`, :cve_nist:`2014-1738`, :cve_nist:`2014-1739`, :cve_nist:`2014-1874`, :cve_nist:`2014-2038`, :cve_nist:`2014-2039`, :cve_nist:`2014-2309`, :cve_nist:`2014-2523`, :cve_nist:`2014-2568`, :cve_nist:`2014-2580`, :cve_nist:`2014-2672`, :cve_nist:`2014-2673`, :cve_nist:`2014-2678`, :cve_nist:`2014-2706`, :cve_nist:`2014-2739`, :cve_nist:`2014-2851`, :cve_nist:`2014-2889`, :cve_nist:`2014-3122`, :cve_nist:`2014-3144`, :cve_nist:`2014-3145`, :cve_nist:`2014-3153`, :cve_nist:`2014-3180`, :cve_nist:`2014-3181`, :cve_nist:`2014-3182`, :cve_nist:`2014-3183`, :cve_nist:`2014-3184`, :cve_nist:`2014-3185`, :cve_nist:`2014-3186`, :cve_nist:`2014-3534`, :cve_nist:`2014-3535`, :cve_nist:`2014-3601`, :cve_nist:`2014-3610`, :cve_nist:`2014-3611`, :cve_nist:`2014-3631`, :cve_nist:`2014-3645`, :cve_nist:`2014-3646`, :cve_nist:`2014-3647`, :cve_nist:`2014-3673`, :cve_nist:`2014-3687`, :cve_nist:`2014-3688`, :cve_nist:`2014-3690`, :cve_nist:`2014-3917`, :cve_nist:`2014-3940`, :cve_nist:`2014-4014`, :cve_nist:`2014-4027`, :cve_nist:`2014-4157`, :cve_nist:`2014-4171`, :cve_nist:`2014-4508`, :cve_nist:`2014-4608`, :cve_nist:`2014-4611`, :cve_nist:`2014-4652`, :cve_nist:`2014-4653`, :cve_nist:`2014-4654`, :cve_nist:`2014-4655`, :cve_nist:`2014-4656`, :cve_nist:`2014-4667`, :cve_nist:`2014-4699`, :cve_nist:`2014-4943`, :cve_nist:`2014-5045`, :cve_nist:`2014-5077`, :cve_nist:`2014-5206`, :cve_nist:`2014-5207`, :cve_nist:`2014-5471`, :cve_nist:`2014-5472`, :cve_nist:`2014-6410`, :cve_nist:`2014-6416`, :cve_nist:`2014-6417`, :cve_nist:`2014-6418`, :cve_nist:`2014-7145`, :cve_nist:`2014-7283`, :cve_nist:`2014-7284`, :cve_nist:`2014-7822`, :cve_nist:`2014-7825`, :cve_nist:`2014-7826`, :cve_nist:`2014-7841`, :cve_nist:`2014-7842`, :cve_nist:`2014-7843`, :cve_nist:`2014-7970`, :cve_nist:`2014-7975`, :cve_nist:`2014-8086`, :cve_nist:`2014-8133`, :cve_nist:`2014-8134`, :cve_nist:`2014-8159`, :cve_nist:`2014-8160`, :cve_nist:`2014-8171`, :cve_nist:`2014-8172`, :cve_nist:`2014-8173`, :cve_nist:`2014-8369`, :cve_nist:`2014-8480`, :cve_nist:`2014-8481`, :cve_nist:`2014-8559`, :cve_nist:`2014-8709`, :cve_nist:`2014-8884`, :cve_nist:`2014-8989`, :cve_nist:`2014-9090`, :cve_nist:`2014-9322`, :cve_nist:`2014-9419`, :cve_nist:`2014-9420`, :cve_nist:`2014-9428`, :cve_nist:`2014-9529`, :cve_nist:`2014-9584`, :cve_nist:`2014-9585`, :cve_nist:`2014-9644`, :cve_nist:`2014-9683`, :cve_nist:`2014-9710`, :cve_nist:`2014-9715`, :cve_nist:`2014-9717`, :cve_nist:`2014-9728`, :cve_nist:`2014-9729`, :cve_nist:`2014-9730`, :cve_nist:`2014-9731`, :cve_nist:`2014-9803`, :cve_nist:`2014-9870`, :cve_nist:`2014-9888`, :cve_nist:`2014-9895`, :cve_nist:`2014-9903`, :cve_nist:`2014-9904`, :cve_nist:`2014-9914`, :cve_nist:`2014-9922`, :cve_nist:`2014-9940`, :cve_nist:`2015-0239`, :cve_nist:`2015-0274`, :cve_nist:`2015-0275`, :cve_nist:`2015-1333`, :cve_nist:`2015-1339`, :cve_nist:`2015-1350`, :cve_nist:`2015-1420`, :cve_nist:`2015-1421`, :cve_nist:`2015-1465`, :cve_nist:`2015-1573`, :cve_nist:`2015-1593`, :cve_nist:`2015-1805`, :cve_nist:`2015-2041`, :cve_nist:`2015-2042`, :cve_nist:`2015-2150`, :cve_nist:`2015-2666`, :cve_nist:`2015-2672`, :cve_nist:`2015-2686`, :cve_nist:`2015-2830`, :cve_nist:`2015-2922`, :cve_nist:`2015-2925`, :cve_nist:`2015-3212`, :cve_nist:`2015-3214`, :cve_nist:`2015-3288`, :cve_nist:`2015-3290`, :cve_nist:`2015-3291`, :cve_nist:`2015-3331`, :cve_nist:`2015-3339`, :cve_nist:`2015-3636`, :cve_nist:`2015-4001`, :cve_nist:`2015-4002`, :cve_nist:`2015-4003`, :cve_nist:`2015-4004`, :cve_nist:`2015-4036`, :cve_nist:`2015-4167`, :cve_nist:`2015-4170`, :cve_nist:`2015-4176`, :cve_nist:`2015-4177`, :cve_nist:`2015-4178`, :cve_nist:`2015-4692`, :cve_nist:`2015-4700`, :cve_nist:`2015-5156`, :cve_nist:`2015-5157`, :cve_nist:`2015-5257`, :cve_nist:`2015-5283`, :cve_nist:`2015-5307`, :cve_nist:`2015-5327`, :cve_nist:`2015-5364`, :cve_nist:`2015-5366`, :cve_nist:`2015-5697`, :cve_nist:`2015-5706`, :cve_nist:`2015-5707`, :cve_nist:`2015-6252`, :cve_nist:`2015-6526`, :cve_nist:`2015-6937`, :cve_nist:`2015-7509`, :cve_nist:`2015-7513`, :cve_nist:`2015-7515`, :cve_nist:`2015-7550`, :cve_nist:`2015-7566`, :cve_nist:`2015-7613`, :cve_nist:`2015-7799`, :cve_nist:`2015-7833`, :cve_nist:`2015-7872`, :cve_nist:`2015-7884`, :cve_nist:`2015-7885`, :cve_nist:`2015-7990`, :cve_nist:`2015-8104`, :cve_nist:`2015-8215`, :cve_nist:`2015-8324`, :cve_nist:`2015-8374`, :cve_nist:`2015-8539`, :cve_nist:`2015-8543`, :cve_nist:`2015-8550`, :cve_nist:`2015-8551`, :cve_nist:`2015-8552`, :cve_nist:`2015-8553`, :cve_nist:`2015-8569`, :cve_nist:`2015-8575`, :cve_nist:`2015-8660`, :cve_nist:`2015-8709`, :cve_nist:`2015-8746`, :cve_nist:`2015-8767`, :cve_nist:`2015-8785`, :cve_nist:`2015-8787`, :cve_nist:`2015-8812`, :cve_nist:`2015-8816`, :cve_nist:`2015-8830`, :cve_nist:`2015-8839`, :cve_nist:`2015-8844`, :cve_nist:`2015-8845`, :cve_nist:`2015-8950`, :cve_nist:`2015-8952`, :cve_nist:`2015-8953`, :cve_nist:`2015-8955`, :cve_nist:`2015-8956`, :cve_nist:`2015-8961`, :cve_nist:`2015-8962`, :cve_nist:`2015-8963`, :cve_nist:`2015-8964`, :cve_nist:`2015-8966`, :cve_nist:`2015-8967`, :cve_nist:`2015-8970`, :cve_nist:`2015-9004`, :cve_nist:`2015-9016`, :cve_nist:`2015-9289`, :cve_nist:`2016-0617`, :cve_nist:`2016-0723`, :cve_nist:`2016-0728`, :cve_nist:`2016-0758`, :cve_nist:`2016-0821`, :cve_nist:`2016-0823`, :cve_nist:`2016-10044`, :cve_nist:`2016-10088`, :cve_nist:`2016-10147`, :cve_nist:`2016-10150`, :cve_nist:`2016-10153`, :cve_nist:`2016-10154`, :cve_nist:`2016-10200`, :cve_nist:`2016-10208`, :cve_nist:`2016-10229`, :cve_nist:`2016-10318`, :cve_nist:`2016-10723`, :cve_nist:`2016-10741`, :cve_nist:`2016-10764`, :cve_nist:`2016-10905`, :cve_nist:`2016-10906`, :cve_nist:`2016-10907`, :cve_nist:`2016-1237`, :cve_nist:`2016-1575`, :cve_nist:`2016-1576`, :cve_nist:`2016-1583`, :cve_nist:`2016-2053`, :cve_nist:`2016-2069`, :cve_nist:`2016-2070`, :cve_nist:`2016-2085`, :cve_nist:`2016-2117`, :cve_nist:`2016-2143`, :cve_nist:`2016-2184`, :cve_nist:`2016-2185`, :cve_nist:`2016-2186`, :cve_nist:`2016-2187`, :cve_nist:`2016-2188`, :cve_nist:`2016-2383`, :cve_nist:`2016-2384`, :cve_nist:`2016-2543`, :cve_nist:`2016-2544`, :cve_nist:`2016-2545`, :cve_nist:`2016-2546`, :cve_nist:`2016-2547`, :cve_nist:`2016-2548`, :cve_nist:`2016-2549`, :cve_nist:`2016-2550`, :cve_nist:`2016-2782`, :cve_nist:`2016-2847`, :cve_nist:`2016-3044`, :cve_nist:`2016-3070`, :cve_nist:`2016-3134`, :cve_nist:`2016-3135`, :cve_nist:`2016-3136`, :cve_nist:`2016-3137`, :cve_nist:`2016-3138`, :cve_nist:`2016-3139`, :cve_nist:`2016-3140`, :cve_nist:`2016-3156`, :cve_nist:`2016-3157`, :cve_nist:`2016-3672`, :cve_nist:`2016-3689`, :cve_nist:`2016-3713`, :cve_nist:`2016-3841`, :cve_nist:`2016-3857`, :cve_nist:`2016-3951`, :cve_nist:`2016-3955`, :cve_nist:`2016-3961`, :cve_nist:`2016-4440`, :cve_nist:`2016-4470`, :cve_nist:`2016-4482`, :cve_nist:`2016-4485`, :cve_nist:`2016-4486`, :cve_nist:`2016-4557`, :cve_nist:`2016-4558`, :cve_nist:`2016-4565`, :cve_nist:`2016-4568`, :cve_nist:`2016-4569`, :cve_nist:`2016-4578`, :cve_nist:`2016-4580`, :cve_nist:`2016-4581`, :cve_nist:`2016-4794`, :cve_nist:`2016-4805`, :cve_nist:`2016-4913`, :cve_nist:`2016-4951`, :cve_nist:`2016-4997`, :cve_nist:`2016-4998`, :cve_nist:`2016-5195`, :cve_nist:`2016-5243`, :cve_nist:`2016-5244`, :cve_nist:`2016-5400`, :cve_nist:`2016-5412`, :cve_nist:`2016-5696`, :cve_nist:`2016-5728`, :cve_nist:`2016-5828`, :cve_nist:`2016-5829`, :cve_nist:`2016-6130`, :cve_nist:`2016-6136`, :cve_nist:`2016-6156`, :cve_nist:`2016-6162`, :cve_nist:`2016-6187`, :cve_nist:`2016-6197`, :cve_nist:`2016-6198`, :cve_nist:`2016-6213`, :cve_nist:`2016-6327`, :cve_nist:`2016-6480`, :cve_nist:`2016-6516`, :cve_nist:`2016-6786`, :cve_nist:`2016-6787`, :cve_nist:`2016-6828`, :cve_nist:`2016-7039`, :cve_nist:`2016-7042`, :cve_nist:`2016-7097`, :cve_nist:`2016-7117`, :cve_nist:`2016-7425`, :cve_nist:`2016-7910`, :cve_nist:`2016-7911`, :cve_nist:`2016-7912`, :cve_nist:`2016-7913`, :cve_nist:`2016-7914`, :cve_nist:`2016-7915`, :cve_nist:`2016-7916`, :cve_nist:`2016-7917`, :cve_nist:`2016-8399`, :cve_nist:`2016-8405`, :cve_nist:`2016-8630`, :cve_nist:`2016-8632`, :cve_nist:`2016-8633`, :cve_nist:`2016-8636`, :cve_nist:`2016-8645`, :cve_nist:`2016-8646`, :cve_nist:`2016-8650`, :cve_nist:`2016-8655`, :cve_nist:`2016-8658`, :cve_nist:`2016-8666`, :cve_nist:`2016-9083`, :cve_nist:`2016-9084`, :cve_nist:`2016-9120`, :cve_nist:`2016-9178`, :cve_nist:`2016-9191`, :cve_nist:`2016-9313`, :cve_nist:`2016-9555`, :cve_nist:`2016-9576`, :cve_nist:`2016-9588`, :cve_nist:`2016-9604`, :cve_nist:`2016-9685`, :cve_nist:`2016-9754`, :cve_nist:`2016-9755`, :cve_nist:`2016-9756`, :cve_nist:`2016-9777`, :cve_nist:`2016-9793`, :cve_nist:`2016-9794`, :cve_nist:`2016-9806`, :cve_nist:`2016-9919`, :cve_nist:`2017-0605`, :cve_nist:`2017-0627`, :cve_nist:`2017-0750`, :cve_nist:`2017-0786`, :cve_nist:`2017-0861`, :cve_nist:`2017-1000`, :cve_nist:`2017-1000111`, :cve_nist:`2017-1000112`, :cve_nist:`2017-1000251`, :cve_nist:`2017-1000252`, :cve_nist:`2017-1000253`, :cve_nist:`2017-1000255`, :cve_nist:`2017-1000363`, :cve_nist:`2017-1000364`, :cve_nist:`2017-1000365`, :cve_nist:`2017-1000370`, :cve_nist:`2017-1000371`, :cve_nist:`2017-1000379`, :cve_nist:`2017-1000380`, :cve_nist:`2017-1000405`, :cve_nist:`2017-1000407`, :cve_nist:`2017-1000410`, :cve_nist:`2017-10661`, :cve_nist:`2017-10662`, :cve_nist:`2017-10663`, :cve_nist:`2017-10810`, :cve_nist:`2017-10911`, :cve_nist:`2017-11089`, :cve_nist:`2017-11176`, :cve_nist:`2017-11472`, :cve_nist:`2017-11473`, :cve_nist:`2017-11600`, :cve_nist:`2017-12134`, :cve_nist:`2017-12146`, :cve_nist:`2017-12153`, :cve_nist:`2017-12154`, :cve_nist:`2017-12168`, :cve_nist:`2017-12188`, :cve_nist:`2017-12190`, :cve_nist:`2017-12192`, :cve_nist:`2017-12193`, :cve_nist:`2017-12762`, :cve_nist:`2017-13080`, :cve_nist:`2017-13166`, :cve_nist:`2017-13167`, :cve_nist:`2017-13168`, :cve_nist:`2017-13215`, :cve_nist:`2017-13216`, :cve_nist:`2017-13220`, :cve_nist:`2017-13305`, :cve_nist:`2017-13686`, :cve_nist:`2017-13695`, :cve_nist:`2017-13715`, :cve_nist:`2017-14051`, :cve_nist:`2017-14106`, :cve_nist:`2017-14140`, :cve_nist:`2017-14156`, :cve_nist:`2017-14340`, :cve_nist:`2017-14489`, :cve_nist:`2017-14497`, :cve_nist:`2017-14954`, :cve_nist:`2017-14991`, :cve_nist:`2017-15102`, :cve_nist:`2017-15115`, :cve_nist:`2017-15116`, :cve_nist:`2017-15121`, :cve_nist:`2017-15126`, :cve_nist:`2017-15127`, :cve_nist:`2017-15128`, :cve_nist:`2017-15129`, :cve_nist:`2017-15265`, :cve_nist:`2017-15274`, :cve_nist:`2017-15299`, :cve_nist:`2017-15306`, :cve_nist:`2017-15537`, :cve_nist:`2017-15649`, :cve_nist:`2017-15868`, :cve_nist:`2017-15951`, :cve_nist:`2017-16525`, :cve_nist:`2017-16526`, :cve_nist:`2017-16527`, :cve_nist:`2017-16528`, :cve_nist:`2017-16529`, :cve_nist:`2017-16530`, :cve_nist:`2017-16531`, :cve_nist:`2017-16532`, :cve_nist:`2017-16533`, :cve_nist:`2017-16534`, :cve_nist:`2017-16535`, :cve_nist:`2017-16536`, :cve_nist:`2017-16537`, :cve_nist:`2017-16538`, :cve_nist:`2017-16643`, :cve_nist:`2017-16644`, :cve_nist:`2017-16645`, :cve_nist:`2017-16646`, :cve_nist:`2017-16647`, :cve_nist:`2017-16648`, :cve_nist:`2017-16649`, :cve_nist:`2017-16650`, :cve_nist:`2017-16911`, :cve_nist:`2017-16912`, :cve_nist:`2017-16913`, :cve_nist:`2017-16914`, :cve_nist:`2017-16939`, :cve_nist:`2017-16994`, :cve_nist:`2017-16995`, :cve_nist:`2017-16996`, :cve_nist:`2017-17052`, :cve_nist:`2017-17053`, :cve_nist:`2017-17448`, :cve_nist:`2017-17449`, :cve_nist:`2017-17450`, :cve_nist:`2017-17558`, :cve_nist:`2017-17712`, :cve_nist:`2017-17741`, :cve_nist:`2017-17805`, :cve_nist:`2017-17806`, :cve_nist:`2017-17807`, :cve_nist:`2017-17852`, :cve_nist:`2017-17853`, :cve_nist:`2017-17854`, :cve_nist:`2017-17855`, :cve_nist:`2017-17856`, :cve_nist:`2017-17857`, :cve_nist:`2017-17862`, :cve_nist:`2017-17863`, :cve_nist:`2017-17864`, :cve_nist:`2017-17975`, :cve_nist:`2017-18017`, :cve_nist:`2017-18075`, :cve_nist:`2017-18079`, :cve_nist:`2017-18174`, :cve_nist:`2017-18193`, :cve_nist:`2017-18200`, :cve_nist:`2017-18202`, :cve_nist:`2017-18203`, :cve_nist:`2017-18204`, :cve_nist:`2017-18208`, :cve_nist:`2017-18216`, :cve_nist:`2017-18218`, :cve_nist:`2017-18221`, :cve_nist:`2017-18222`, :cve_nist:`2017-18224`, :cve_nist:`2017-18232`, :cve_nist:`2017-18241`, :cve_nist:`2017-18249`, :cve_nist:`2017-18255`, :cve_nist:`2017-18257`, :cve_nist:`2017-18261`, :cve_nist:`2017-18270`, :cve_nist:`2017-18344`, :cve_nist:`2017-18360`, :cve_nist:`2017-18379`, :cve_nist:`2017-18509`, :cve_nist:`2017-18549`, :cve_nist:`2017-18550`, :cve_nist:`2017-18551`, :cve_nist:`2017-18552`, :cve_nist:`2017-18595`, :cve_nist:`2017-2583`, :cve_nist:`2017-2584`, :cve_nist:`2017-2596`, :cve_nist:`2017-2618`, :cve_nist:`2017-2634`, :cve_nist:`2017-2636`, :cve_nist:`2017-2647`, :cve_nist:`2017-2671`, :cve_nist:`2017-5123`, :cve_nist:`2017-5546`, :cve_nist:`2017-5547`, :cve_nist:`2017-5548`, :cve_nist:`2017-5549`, :cve_nist:`2017-5550`, :cve_nist:`2017-5551`, :cve_nist:`2017-5576`, :cve_nist:`2017-5577`, :cve_nist:`2017-5669`, :cve_nist:`2017-5715`, :cve_nist:`2017-5753`, :cve_nist:`2017-5754`, :cve_nist:`2017-5897`, :cve_nist:`2017-5967`, :cve_nist:`2017-5970`, :cve_nist:`2017-5972`, :cve_nist:`2017-5986`, :cve_nist:`2017-6001`, :cve_nist:`2017-6074`, :cve_nist:`2017-6214`, :cve_nist:`2017-6345`, :cve_nist:`2017-6346`, :cve_nist:`2017-6347`, :cve_nist:`2017-6348`, :cve_nist:`2017-6353`, :cve_nist:`2017-6874`, :cve_nist:`2017-6951`, :cve_nist:`2017-7184`, :cve_nist:`2017-7187`, :cve_nist:`2017-7261`, :cve_nist:`2017-7273`, :cve_nist:`2017-7277`, :cve_nist:`2017-7294`, :cve_nist:`2017-7308`, :cve_nist:`2017-7346`, :cve_nist:`2017-7374`, :cve_nist:`2017-7472`, :cve_nist:`2017-7477`, :cve_nist:`2017-7482`, :cve_nist:`2017-7487`, :cve_nist:`2017-7495`, :cve_nist:`2017-7518`, :cve_nist:`2017-7533`, :cve_nist:`2017-7541`, :cve_nist:`2017-7542`, :cve_nist:`2017-7558`, :cve_nist:`2017-7616`, :cve_nist:`2017-7618`, :cve_nist:`2017-7645`, :cve_nist:`2017-7889`, :cve_nist:`2017-7895`, :cve_nist:`2017-7979`, :cve_nist:`2017-8061`, :cve_nist:`2017-8062`, :cve_nist:`2017-8063`, :cve_nist:`2017-8064`, :cve_nist:`2017-8065`, :cve_nist:`2017-8066`, :cve_nist:`2017-8067`, :cve_nist:`2017-8068`, :cve_nist:`2017-8069`, :cve_nist:`2017-8070`, :cve_nist:`2017-8071`, :cve_nist:`2017-8072`, :cve_nist:`2017-8106`, :cve_nist:`2017-8240`, :cve_nist:`2017-8797`, :cve_nist:`2017-8824`, :cve_nist:`2017-8831`, :cve_nist:`2017-8890`, :cve_nist:`2017-8924`, :cve_nist:`2017-8925`, :cve_nist:`2017-9059`, :cve_nist:`2017-9074`, :cve_nist:`2017-9075`, :cve_nist:`2017-9076`, :cve_nist:`2017-9077`, :cve_nist:`2017-9150`, :cve_nist:`2017-9211`, :cve_nist:`2017-9242`, :cve_nist:`2017-9605`, :cve_nist:`2017-9725`, :cve_nist:`2017-9984`, :cve_nist:`2017-9985`, :cve_nist:`2017-9986`, :cve_nist:`2018-1000004`, :cve_nist:`2018-1000026`, :cve_nist:`2018-1000028`, :cve_nist:`2018-1000199`, :cve_nist:`2018-1000200`, :cve_nist:`2018-1000204`, :cve_nist:`2018-10021`, :cve_nist:`2018-10074`, :cve_nist:`2018-10087`, :cve_nist:`2018-10124`, :cve_nist:`2018-10322`, :cve_nist:`2018-10323`, :cve_nist:`2018-1065`, :cve_nist:`2018-1066`, :cve_nist:`2018-10675`, :cve_nist:`2018-1068`, :cve_nist:`2018-10840`, :cve_nist:`2018-10853`, :cve_nist:`2018-1087`, :cve_nist:`2018-10876`, :cve_nist:`2018-10877`, :cve_nist:`2018-10878`, :cve_nist:`2018-10879`, :cve_nist:`2018-10880`, :cve_nist:`2018-10881`, :cve_nist:`2018-10882`, :cve_nist:`2018-10883`, :cve_nist:`2018-10901`, :cve_nist:`2018-10902`, :cve_nist:`2018-1091`, :cve_nist:`2018-1092`, :cve_nist:`2018-1093`, :cve_nist:`2018-10938`, :cve_nist:`2018-1094`, :cve_nist:`2018-10940`, :cve_nist:`2018-1095`, :cve_nist:`2018-1108`, :cve_nist:`2018-1118`, :cve_nist:`2018-1120`, :cve_nist:`2018-11232`, :cve_nist:`2018-1128`, :cve_nist:`2018-1129`, :cve_nist:`2018-1130`, :cve_nist:`2018-11412`, :cve_nist:`2018-11506`, :cve_nist:`2018-11508`, :cve_nist:`2018-12126`, :cve_nist:`2018-12127`, :cve_nist:`2018-12130`, :cve_nist:`2018-12207`, :cve_nist:`2018-12232`, :cve_nist:`2018-12233`, :cve_nist:`2018-12633`, :cve_nist:`2018-12714`, :cve_nist:`2018-12896`, :cve_nist:`2018-12904`, :cve_nist:`2018-13053`, :cve_nist:`2018-13093`, :cve_nist:`2018-13094`, :cve_nist:`2018-13095`, :cve_nist:`2018-13096`, :cve_nist:`2018-13097`, :cve_nist:`2018-13098`, :cve_nist:`2018-13099`, :cve_nist:`2018-13100`, :cve_nist:`2018-13405`, :cve_nist:`2018-13406`, :cve_nist:`2018-14609`, :cve_nist:`2018-14610`, :cve_nist:`2018-14611`, :cve_nist:`2018-14612`, :cve_nist:`2018-14613`, :cve_nist:`2018-14614`, :cve_nist:`2018-14615`, :cve_nist:`2018-14616`, :cve_nist:`2018-14617`, :cve_nist:`2018-14619`, :cve_nist:`2018-14625`, :cve_nist:`2018-14633`, :cve_nist:`2018-14634`, :cve_nist:`2018-14641`, :cve_nist:`2018-14646`, :cve_nist:`2018-14656`, :cve_nist:`2018-14678`, :cve_nist:`2018-14734`, :cve_nist:`2018-15471`, :cve_nist:`2018-15572`, :cve_nist:`2018-15594`, :cve_nist:`2018-16276`, :cve_nist:`2018-16597`, :cve_nist:`2018-16658`, :cve_nist:`2018-16862`, :cve_nist:`2018-16871`, :cve_nist:`2018-16880`, :cve_nist:`2018-16882`, :cve_nist:`2018-16884`, :cve_nist:`2018-17182`, :cve_nist:`2018-17972`, :cve_nist:`2018-18021`, :cve_nist:`2018-18281`, :cve_nist:`2018-18386`, :cve_nist:`2018-18397`, :cve_nist:`2018-18445`, :cve_nist:`2018-18559`, :cve_nist:`2018-18690`, :cve_nist:`2018-18710`, :cve_nist:`2018-18955`, :cve_nist:`2018-19406`, :cve_nist:`2018-19407`, :cve_nist:`2018-19824`, :cve_nist:`2018-19854`, :cve_nist:`2018-19985`, :cve_nist:`2018-20169`, :cve_nist:`2018-20449`, :cve_nist:`2018-20509`, :cve_nist:`2018-20510`, :cve_nist:`2018-20511`, :cve_nist:`2018-20669`, :cve_nist:`2018-20784`, :cve_nist:`2018-20836`, :cve_nist:`2018-20854`, :cve_nist:`2018-20855`, :cve_nist:`2018-20856`, :cve_nist:`2018-20961`, :cve_nist:`2018-20976`, :cve_nist:`2018-21008`, :cve_nist:`2018-25015`, :cve_nist:`2018-25020`, :cve_nist:`2018-3620`, :cve_nist:`2018-3639`, :cve_nist:`2018-3646`, :cve_nist:`2018-3665`, :cve_nist:`2018-3693`, :cve_nist:`2018-5332`, :cve_nist:`2018-5333`, :cve_nist:`2018-5344`, :cve_nist:`2018-5390`, :cve_nist:`2018-5391`, :cve_nist:`2018-5703`, :cve_nist:`2018-5750`, :cve_nist:`2018-5803`, :cve_nist:`2018-5814`, :cve_nist:`2018-5848`, :cve_nist:`2018-5873`, :cve_nist:`2018-5953`, :cve_nist:`2018-5995`, :cve_nist:`2018-6412`, :cve_nist:`2018-6554`, :cve_nist:`2018-6555`, :cve_nist:`2018-6927`, :cve_nist:`2018-7191`, :cve_nist:`2018-7273`, :cve_nist:`2018-7480`, :cve_nist:`2018-7492`, :cve_nist:`2018-7566`, :cve_nist:`2018-7740`, :cve_nist:`2018-7754`, :cve_nist:`2018-7755`, :cve_nist:`2018-7757`, :cve_nist:`2018-7995`, :cve_nist:`2018-8043`, :cve_nist:`2018-8087`, :cve_nist:`2018-8781`, :cve_nist:`2018-8822`, :cve_nist:`2018-8897`, :cve_nist:`2018-9363`, :cve_nist:`2018-9385`, :cve_nist:`2018-9415`, :cve_nist:`2018-9422`, :cve_nist:`2018-9465`, :cve_nist:`2018-9516`, :cve_nist:`2018-9517`, :cve_nist:`2018-9518`, :cve_nist:`2018-9568`, :cve_nist:`2019-0136`, :cve_nist:`2019-0145`, :cve_nist:`2019-0146`, :cve_nist:`2019-0147`, :cve_nist:`2019-0148`, :cve_nist:`2019-0149`, :cve_nist:`2019-0154`, :cve_nist:`2019-0155`, :cve_nist:`2019-10124`, :cve_nist:`2019-10125`, :cve_nist:`2019-10126`, :cve_nist:`2019-10142`, :cve_nist:`2019-10207`, :cve_nist:`2019-10220`, :cve_nist:`2019-10638`, :cve_nist:`2019-10639`, :cve_nist:`2019-11085`, :cve_nist:`2019-11091`, :cve_nist:`2019-11135`, :cve_nist:`2019-11190`, :cve_nist:`2019-11191`, :cve_nist:`2019-1125`, :cve_nist:`2019-11477`, :cve_nist:`2019-11478`, :cve_nist:`2019-11479`, :cve_nist:`2019-11486`, :cve_nist:`2019-11487`, :cve_nist:`2019-11599`, :cve_nist:`2019-11683`, :cve_nist:`2019-11810`, :cve_nist:`2019-11811`, :cve_nist:`2019-11815`, :cve_nist:`2019-11833`, :cve_nist:`2019-11884`, :cve_nist:`2019-12378`, :cve_nist:`2019-12379`, :cve_nist:`2019-12380`, :cve_nist:`2019-12381`, :cve_nist:`2019-12382`, :cve_nist:`2019-12454`, :cve_nist:`2019-12455`, :cve_nist:`2019-12614`, :cve_nist:`2019-12615`, :cve_nist:`2019-12817`, :cve_nist:`2019-12818`, :cve_nist:`2019-12819`, :cve_nist:`2019-12881`, :cve_nist:`2019-12984`, :cve_nist:`2019-13233`, :cve_nist:`2019-13272`, :cve_nist:`2019-13631`, :cve_nist:`2019-13648`, :cve_nist:`2019-14283`, :cve_nist:`2019-14284`, :cve_nist:`2019-14615`, :cve_nist:`2019-14763`, :cve_nist:`2019-14814`, :cve_nist:`2019-14815`, :cve_nist:`2019-14816`, :cve_nist:`2019-14821`, :cve_nist:`2019-14835`, :cve_nist:`2019-14895`, :cve_nist:`2019-14896`, :cve_nist:`2019-14897`, :cve_nist:`2019-14901`, :cve_nist:`2019-15030`, :cve_nist:`2019-15031`, :cve_nist:`2019-15090`, :cve_nist:`2019-15098`, :cve_nist:`2019-15099`, :cve_nist:`2019-15117`, :cve_nist:`2019-15118`, :cve_nist:`2019-15211`, :cve_nist:`2019-15212`, :cve_nist:`2019-15213`, :cve_nist:`2019-15214`, :cve_nist:`2019-15215`, :cve_nist:`2019-15216`, :cve_nist:`2019-15217`, :cve_nist:`2019-15218`, :cve_nist:`2019-15219`, :cve_nist:`2019-15220`, :cve_nist:`2019-15221`, :cve_nist:`2019-15222`, :cve_nist:`2019-15223`, :cve_nist:`2019-15291`, :cve_nist:`2019-15292`, :cve_nist:`2019-15504`, :cve_nist:`2019-15505`, :cve_nist:`2019-15538`, :cve_nist:`2019-15666`, :cve_nist:`2019-15807`, :cve_nist:`2019-15916`, :cve_nist:`2019-15917`, :cve_nist:`2019-15918`, :cve_nist:`2019-15919`, :cve_nist:`2019-15920`, :cve_nist:`2019-15921`, :cve_nist:`2019-15922`, :cve_nist:`2019-15923`, :cve_nist:`2019-15924`, :cve_nist:`2019-15925`, :cve_nist:`2019-15926`, :cve_nist:`2019-15927`, :cve_nist:`2019-16229`, :cve_nist:`2019-16230`, :cve_nist:`2019-16231`, :cve_nist:`2019-16232`, :cve_nist:`2019-16233`, :cve_nist:`2019-16234`, :cve_nist:`2019-16413`, :cve_nist:`2019-16714`, :cve_nist:`2019-16746`, :cve_nist:`2019-16921`, :cve_nist:`2019-16994`, :cve_nist:`2019-16995`, :cve_nist:`2019-17052`, :cve_nist:`2019-17053`, :cve_nist:`2019-17054`, :cve_nist:`2019-17055`, :cve_nist:`2019-17056`, :cve_nist:`2019-17075`, :cve_nist:`2019-17133`, :cve_nist:`2019-17351`, :cve_nist:`2019-17666`, :cve_nist:`2019-18198`, :cve_nist:`2019-18282`, :cve_nist:`2019-18660`, :cve_nist:`2019-18675`, :cve_nist:`2019-18683`, :cve_nist:`2019-18786`, :cve_nist:`2019-18805`, :cve_nist:`2019-18806`, :cve_nist:`2019-18807`, :cve_nist:`2019-18808`, :cve_nist:`2019-18809`, :cve_nist:`2019-18810`, :cve_nist:`2019-18811`, :cve_nist:`2019-18812`, :cve_nist:`2019-18813`, :cve_nist:`2019-18814`, :cve_nist:`2019-18885`, :cve_nist:`2019-19036`, :cve_nist:`2019-19037`, :cve_nist:`2019-19039`, :cve_nist:`2019-19043`, :cve_nist:`2019-19044`, :cve_nist:`2019-19045`, :cve_nist:`2019-19046`, :cve_nist:`2019-19047`, :cve_nist:`2019-19048`, :cve_nist:`2019-19049`, :cve_nist:`2019-19050`, :cve_nist:`2019-19051`, :cve_nist:`2019-19052`, :cve_nist:`2019-19053`, :cve_nist:`2019-19054`, :cve_nist:`2019-19055`, :cve_nist:`2019-19056`, :cve_nist:`2019-19057`, :cve_nist:`2019-19058`, :cve_nist:`2019-19059`, :cve_nist:`2019-19060`, :cve_nist:`2019-19061`, :cve_nist:`2019-19062`, :cve_nist:`2019-19063`, :cve_nist:`2019-19064`, :cve_nist:`2019-19065`, :cve_nist:`2019-19066`, :cve_nist:`2019-19067`, :cve_nist:`2019-19068`, :cve_nist:`2019-19069`, :cve_nist:`2019-19070`, :cve_nist:`2019-19071`, :cve_nist:`2019-19072`, :cve_nist:`2019-19073`, :cve_nist:`2019-19074`, :cve_nist:`2019-19075`, :cve_nist:`2019-19076`, :cve_nist:`2019-19077`, :cve_nist:`2019-19078`, :cve_nist:`2019-19079`, :cve_nist:`2019-19080`, :cve_nist:`2019-19081`, :cve_nist:`2019-19082`, :cve_nist:`2019-19083`, :cve_nist:`2019-19227`, :cve_nist:`2019-19241`, :cve_nist:`2019-19252`, :cve_nist:`2019-19318`, :cve_nist:`2019-19319`, :cve_nist:`2019-19332`, :cve_nist:`2019-19338`, :cve_nist:`2019-19377`, :cve_nist:`2019-19447`, :cve_nist:`2019-19448`, :cve_nist:`2019-19449`, :cve_nist:`2019-19462`, :cve_nist:`2019-19523`, :cve_nist:`2019-19524`, :cve_nist:`2019-19525`, :cve_nist:`2019-19526`, :cve_nist:`2019-19527`, :cve_nist:`2019-19528`, :cve_nist:`2019-19529`, :cve_nist:`2019-19530`, :cve_nist:`2019-19531`, :cve_nist:`2019-19532`, :cve_nist:`2019-19533`, :cve_nist:`2019-19534`, :cve_nist:`2019-19535`, :cve_nist:`2019-19536`, :cve_nist:`2019-19537`, :cve_nist:`2019-19543`, :cve_nist:`2019-19602`, :cve_nist:`2019-19767`, :cve_nist:`2019-19768`, :cve_nist:`2019-19769`, :cve_nist:`2019-19770`, :cve_nist:`2019-19807`, :cve_nist:`2019-19813`, :cve_nist:`2019-19815`, :cve_nist:`2019-19816`, :cve_nist:`2019-19922`, :cve_nist:`2019-19927`, :cve_nist:`2019-19947`, :cve_nist:`2019-19965`, :cve_nist:`2019-19966`, :cve_nist:`2019-1999`, :cve_nist:`2019-20054`, :cve_nist:`2019-20095`, :cve_nist:`2019-20096`, :cve_nist:`2019-2024`, :cve_nist:`2019-2025`, :cve_nist:`2019-20422`, :cve_nist:`2019-2054`, :cve_nist:`2019-20636`, :cve_nist:`2019-20806`, :cve_nist:`2019-20810`, :cve_nist:`2019-20811`, :cve_nist:`2019-20812`, :cve_nist:`2019-20908`, :cve_nist:`2019-20934`, :cve_nist:`2019-2101`, :cve_nist:`2019-2181`, :cve_nist:`2019-2182`, :cve_nist:`2019-2213`, :cve_nist:`2019-2214`, :cve_nist:`2019-2215`, :cve_nist:`2019-25044`, :cve_nist:`2019-25045`, :cve_nist:`2019-3016`, :cve_nist:`2019-3459`, :cve_nist:`2019-3460`, :cve_nist:`2019-3701`, :cve_nist:`2019-3819`, :cve_nist:`2019-3837`, :cve_nist:`2019-3846`, :cve_nist:`2019-3874`, :cve_nist:`2019-3882`, :cve_nist:`2019-3887`, :cve_nist:`2019-3892`, :cve_nist:`2019-3896`, :cve_nist:`2019-3900`, :cve_nist:`2019-3901`, :cve_nist:`2019-5108`, :cve_nist:`2019-6133`, :cve_nist:`2019-6974`, :cve_nist:`2019-7221`, :cve_nist:`2019-7222`, :cve_nist:`2019-7308`, :cve_nist:`2019-8912`, :cve_nist:`2019-8956`, :cve_nist:`2019-8980`, :cve_nist:`2019-9003`, :cve_nist:`2019-9162`, :cve_nist:`2019-9213`, :cve_nist:`2019-9245`, :cve_nist:`2019-9444`, :cve_nist:`2019-9445`, :cve_nist:`2019-9453`, :cve_nist:`2019-9454`, :cve_nist:`2019-9455`, :cve_nist:`2019-9456`, :cve_nist:`2019-9457`, :cve_nist:`2019-9458`, :cve_nist:`2019-9466`, :cve_nist:`2019-9500`, :cve_nist:`2019-9503`, :cve_nist:`2019-9506`, :cve_nist:`2019-9857`, :cve_nist:`2020-0009`, :cve_nist:`2020-0030`, :cve_nist:`2020-0041`, :cve_nist:`2020-0066`, :cve_nist:`2020-0067`, :cve_nist:`2020-0110`, :cve_nist:`2020-0255`, :cve_nist:`2020-0305`, :cve_nist:`2020-0404`, :cve_nist:`2020-0423`, :cve_nist:`2020-0427`, :cve_nist:`2020-0429`, :cve_nist:`2020-0430`, :cve_nist:`2020-0431`, :cve_nist:`2020-0432`, :cve_nist:`2020-0433`, :cve_nist:`2020-0435`, :cve_nist:`2020-0444`, :cve_nist:`2020-0465`, :cve_nist:`2020-0466`, :cve_nist:`2020-0543`, :cve_nist:`2020-10135`, :cve_nist:`2020-10690`, :cve_nist:`2020-10711`, :cve_nist:`2020-10720`, :cve_nist:`2020-10732`, :cve_nist:`2020-10742`, :cve_nist:`2020-10751`, :cve_nist:`2020-10757`, :cve_nist:`2020-10766`, :cve_nist:`2020-10767`, :cve_nist:`2020-10768`, :cve_nist:`2020-10769`, :cve_nist:`2020-10773`, :cve_nist:`2020-10781`, :cve_nist:`2020-10942`, :cve_nist:`2020-11494`, :cve_nist:`2020-11565`, :cve_nist:`2020-11608`, :cve_nist:`2020-11609`, :cve_nist:`2020-11668`, :cve_nist:`2020-11669`, :cve_nist:`2020-11884`, :cve_nist:`2020-12114`, :cve_nist:`2020-12351`, :cve_nist:`2020-12352`, :cve_nist:`2020-12464`, :cve_nist:`2020-12465`, :cve_nist:`2020-12652`, :cve_nist:`2020-12653`, :cve_nist:`2020-12654`, :cve_nist:`2020-12655`, :cve_nist:`2020-12656`, :cve_nist:`2020-12657`, :cve_nist:`2020-12659`, :cve_nist:`2020-12768`, :cve_nist:`2020-12769`, :cve_nist:`2020-12770`, :cve_nist:`2020-12771`, :cve_nist:`2020-12826`, :cve_nist:`2020-12888`, :cve_nist:`2020-12912`, :cve_nist:`2020-13143`, :cve_nist:`2020-13974`, :cve_nist:`2020-14305`, :cve_nist:`2020-14314`, :cve_nist:`2020-14331`, :cve_nist:`2020-14351`, :cve_nist:`2020-14353`, :cve_nist:`2020-14356`, :cve_nist:`2020-14381`, :cve_nist:`2020-14385`, :cve_nist:`2020-14386`, :cve_nist:`2020-14390`, :cve_nist:`2020-14416`, :cve_nist:`2020-15393`, :cve_nist:`2020-15436`, :cve_nist:`2020-15437`, :cve_nist:`2020-15780`, :cve_nist:`2020-15852`, :cve_nist:`2020-16119`, :cve_nist:`2020-16120`, :cve_nist:`2020-16166`, :cve_nist:`2020-1749`, :cve_nist:`2020-24394`, :cve_nist:`2020-24490`, :cve_nist:`2020-24586`, :cve_nist:`2020-24587`, :cve_nist:`2020-24588`, :cve_nist:`2020-25211`, :cve_nist:`2020-25212`, :cve_nist:`2020-25221`, :cve_nist:`2020-25284`, :cve_nist:`2020-25285`, :cve_nist:`2020-25639`, :cve_nist:`2020-25641`, :cve_nist:`2020-25643`, :cve_nist:`2020-25645`, :cve_nist:`2020-25656`, :cve_nist:`2020-25668`, :cve_nist:`2020-25669`, :cve_nist:`2020-25670`, :cve_nist:`2020-25671`, :cve_nist:`2020-25672`, :cve_nist:`2020-25673`, :cve_nist:`2020-25704`, :cve_nist:`2020-25705`, :cve_nist:`2020-26088`, :cve_nist:`2020-26139`, :cve_nist:`2020-26141`, :cve_nist:`2020-26145`, :cve_nist:`2020-26147`, :cve_nist:`2020-26541`, :cve_nist:`2020-26555`, :cve_nist:`2020-26558`, :cve_nist:`2020-27066`, :cve_nist:`2020-27067`, :cve_nist:`2020-27068`, :cve_nist:`2020-27152`, :cve_nist:`2020-27170`, :cve_nist:`2020-27171`, :cve_nist:`2020-27194`, :cve_nist:`2020-2732`, :cve_nist:`2020-27418`, :cve_nist:`2020-27673`, :cve_nist:`2020-27675`, :cve_nist:`2020-27777`, :cve_nist:`2020-27784`, :cve_nist:`2020-27786`, :cve_nist:`2020-27815`, :cve_nist:`2020-27820`, :cve_nist:`2020-27825`, :cve_nist:`2020-27830`, :cve_nist:`2020-27835`, :cve_nist:`2020-28097`, :cve_nist:`2020-28374`, :cve_nist:`2020-28588`, :cve_nist:`2020-28915`, :cve_nist:`2020-28941`, :cve_nist:`2020-28974`, :cve_nist:`2020-29368`, :cve_nist:`2020-29369`, :cve_nist:`2020-29370`, :cve_nist:`2020-29371`, :cve_nist:`2020-29372`, :cve_nist:`2020-29373`, :cve_nist:`2020-29374`, :cve_nist:`2020-29534`, :cve_nist:`2020-29568`, :cve_nist:`2020-29569`, :cve_nist:`2020-29660`, :cve_nist:`2020-29661`, :cve_nist:`2020-35499`, :cve_nist:`2020-35508`, :cve_nist:`2020-35513`, :cve_nist:`2020-35519`, :cve_nist:`2020-36158`, :cve_nist:`2020-36310`, :cve_nist:`2020-36311`, :cve_nist:`2020-36312`, :cve_nist:`2020-36313`, :cve_nist:`2020-36322`, :cve_nist:`2020-36385`, :cve_nist:`2020-36386`, :cve_nist:`2020-36387`, :cve_nist:`2020-36516`, :cve_nist:`2020-36557`, :cve_nist:`2020-36558`, :cve_nist:`2020-36691`, :cve_nist:`2020-36694`, :cve_nist:`2020-36766`, :cve_nist:`2020-3702`, :cve_nist:`2020-4788`, :cve_nist:`2020-7053`, :cve_nist:`2020-8428`, :cve_nist:`2020-8647`, :cve_nist:`2020-8648`, :cve_nist:`2020-8649`, :cve_nist:`2020-8694`, :cve_nist:`2020-8834`, :cve_nist:`2020-8835`, :cve_nist:`2020-8992`, :cve_nist:`2020-9383`, :cve_nist:`2020-9391`, :cve_nist:`2021-0129`, :cve_nist:`2021-0342`, :cve_mitre:`2021-0447`, :cve_mitre:`2021-0448`, :cve_nist:`2021-0512`, :cve_nist:`2021-0605`, :cve_nist:`2021-0707`, :cve_nist:`2021-0920`, :cve_nist:`2021-0929`, :cve_nist:`2021-0935`, :cve_mitre:`2021-0937`, :cve_nist:`2021-0938`, :cve_nist:`2021-0941`, :cve_nist:`2021-1048`, :cve_nist:`2021-20177`, :cve_nist:`2021-20194`, :cve_nist:`2021-20226`, :cve_nist:`2021-20239`, :cve_nist:`2021-20261`, :cve_nist:`2021-20265`, :cve_nist:`2021-20268`, :cve_nist:`2021-20292`, :cve_nist:`2021-20317`, :cve_nist:`2021-20320`, :cve_nist:`2021-20321`, :cve_nist:`2021-20322`, :cve_nist:`2021-21781`, :cve_nist:`2021-22543`, :cve_nist:`2021-22555`, :cve_nist:`2021-22600`, :cve_nist:`2021-23133`, :cve_nist:`2021-23134`, :cve_nist:`2021-26401`, :cve_nist:`2021-26708`, :cve_nist:`2021-26930`, :cve_nist:`2021-26931`, :cve_nist:`2021-26932`, :cve_nist:`2021-27363`, :cve_nist:`2021-27364`, :cve_nist:`2021-27365`, :cve_nist:`2021-28038`, :cve_nist:`2021-28039`, :cve_nist:`2021-28375`, :cve_nist:`2021-28660`, :cve_nist:`2021-28688`, :cve_nist:`2021-28691`, :cve_nist:`2021-28711`, :cve_nist:`2021-28712`, :cve_nist:`2021-28713`, :cve_nist:`2021-28714`, :cve_nist:`2021-28715`, :cve_nist:`2021-28950`, :cve_nist:`2021-28951`, :cve_nist:`2021-28952`, :cve_nist:`2021-28964`, :cve_nist:`2021-28971`, :cve_nist:`2021-28972`, :cve_nist:`2021-29154`, :cve_nist:`2021-29155`, :cve_nist:`2021-29264`, :cve_nist:`2021-29265`, :cve_nist:`2021-29266`, :cve_nist:`2021-29646`, :cve_nist:`2021-29647`, :cve_nist:`2021-29648`, :cve_nist:`2021-29649`, :cve_nist:`2021-29650`, :cve_nist:`2021-29657`, :cve_nist:`2021-30002`, :cve_nist:`2021-30178`, :cve_nist:`2021-31440`, :cve_nist:`2021-3178`, :cve_nist:`2021-31829`, :cve_nist:`2021-31916`, :cve_nist:`2021-32399`, :cve_nist:`2021-32606`, :cve_nist:`2021-33033`, :cve_nist:`2021-33034`, :cve_nist:`2021-33098`, :cve_nist:`2021-33135`, :cve_nist:`2021-33200`, :cve_nist:`2021-3347`, :cve_nist:`2021-3348`, :cve_nist:`2021-33624`, :cve_nist:`2021-33655`, :cve_nist:`2021-33656`, :cve_nist:`2021-33909`, :cve_nist:`2021-3411`, :cve_nist:`2021-3428`, :cve_nist:`2021-3444`, :cve_nist:`2021-34556`, :cve_nist:`2021-34693`, :cve_nist:`2021-3483`, :cve_nist:`2021-34866`, :cve_nist:`2021-3489`, :cve_nist:`2021-3490`, :cve_nist:`2021-3491`, :cve_mitre:`2021-34981`, :cve_nist:`2021-3501`, :cve_nist:`2021-35039`, :cve_nist:`2021-3506`, :cve_nist:`2021-3543`, :cve_nist:`2021-35477`, :cve_nist:`2021-3564`, :cve_nist:`2021-3573`, :cve_nist:`2021-3587`, :cve_mitre:`2021-3600`, :cve_nist:`2021-3609`, :cve_nist:`2021-3612`, :cve_nist:`2021-3635`, :cve_nist:`2021-3640`, :cve_nist:`2021-3653`, :cve_nist:`2021-3655`, :cve_nist:`2021-3656`, :cve_nist:`2021-3659`, :cve_nist:`2021-3679`, :cve_nist:`2021-3715`, :cve_nist:`2021-37159`, :cve_nist:`2021-3732`, :cve_nist:`2021-3736`, :cve_nist:`2021-3739`, :cve_nist:`2021-3743`, :cve_nist:`2021-3744`, :cve_nist:`2021-3752`, :cve_nist:`2021-3753`, :cve_nist:`2021-37576`, :cve_nist:`2021-3759`, :cve_nist:`2021-3760`, :cve_nist:`2021-3764`, :cve_nist:`2021-3772`, :cve_nist:`2021-38160`, :cve_nist:`2021-38166`, :cve_nist:`2021-38198`, :cve_nist:`2021-38199`, :cve_nist:`2021-38200`, :cve_nist:`2021-38201`, :cve_nist:`2021-38202`, :cve_nist:`2021-38203`, :cve_nist:`2021-38204`, :cve_nist:`2021-38205`, :cve_nist:`2021-38206`, :cve_nist:`2021-38207`, :cve_nist:`2021-38208`, :cve_nist:`2021-38209`, :cve_nist:`2021-38300`, :cve_nist:`2021-3894`, :cve_nist:`2021-3896`, :cve_nist:`2021-3923`, :cve_nist:`2021-39633`, :cve_nist:`2021-39634`, :cve_nist:`2021-39636`, :cve_nist:`2021-39648`, :cve_nist:`2021-39656`, :cve_nist:`2021-39657`, :cve_nist:`2021-39685`, :cve_nist:`2021-39686`, :cve_nist:`2021-39698`, :cve_nist:`2021-39711`, :cve_nist:`2021-39713`, :cve_nist:`2021-39714`, :cve_nist:`2021-4001`, :cve_nist:`2021-4002`, :cve_nist:`2021-4028`, :cve_nist:`2021-4032`, :cve_nist:`2021-4037`, :cve_nist:`2021-40490`, :cve_nist:`2021-4083`, :cve_nist:`2021-4090`, :cve_nist:`2021-4093`, :cve_nist:`2021-4095`, :cve_nist:`2021-41073`, :cve_nist:`2021-4135`, :cve_nist:`2021-4148`, :cve_nist:`2021-4149`, :cve_nist:`2021-4154`, :cve_nist:`2021-4155`, :cve_nist:`2021-4157`, :cve_nist:`2021-4159`, :cve_nist:`2021-41864`, :cve_nist:`2021-4197`, :cve_nist:`2021-42008`, :cve_nist:`2021-4202`, :cve_nist:`2021-4203`, :cve_nist:`2021-4218`, :cve_nist:`2021-42252`, :cve_nist:`2021-42327`, :cve_nist:`2021-42739`, :cve_nist:`2021-43056`, :cve_nist:`2021-43057`, :cve_nist:`2021-43267`, :cve_nist:`2021-43389`, :cve_nist:`2021-43975`, :cve_nist:`2021-43976`, :cve_nist:`2021-44733`, :cve_nist:`2021-45095`, :cve_nist:`2021-45100`, :cve_nist:`2021-45402`, :cve_nist:`2021-45469`, :cve_nist:`2021-45480`, :cve_nist:`2021-45485`, :cve_nist:`2021-45486`, :cve_nist:`2021-45868`, :cve_nist:`2021-46283`, :cve_nist:`2022-0001`, :cve_nist:`2022-0002`, :cve_nist:`2022-0168`, :cve_nist:`2022-0171`, :cve_nist:`2022-0185`, :cve_nist:`2022-0264`, :cve_nist:`2022-0286`, :cve_nist:`2022-0322`, :cve_nist:`2022-0330`, :cve_nist:`2022-0433`, :cve_nist:`2022-0435`, :cve_nist:`2022-0487`, :cve_nist:`2022-0492`, :cve_nist:`2022-0494`, :cve_nist:`2022-0516`, :cve_nist:`2022-0617`, :cve_nist:`2022-0644`, :cve_nist:`2022-0646`, :cve_nist:`2022-0742`, :cve_nist:`2022-0812`, :cve_nist:`2022-0847`, :cve_nist:`2022-0850`, :cve_nist:`2022-0854`, :cve_nist:`2022-0995`, :cve_nist:`2022-1011`, :cve_nist:`2022-1012`, :cve_nist:`2022-1015`, :cve_nist:`2022-1016`, :cve_nist:`2022-1043`, :cve_nist:`2022-1048`, :cve_nist:`2022-1055`, :cve_nist:`2022-1158`, :cve_nist:`2022-1184`, :cve_nist:`2022-1195`, :cve_nist:`2022-1198`, :cve_nist:`2022-1199`, :cve_nist:`2022-1204`, :cve_nist:`2022-1205`, :cve_nist:`2022-1353`, :cve_nist:`2022-1419`, :cve_nist:`2022-1462`, :cve_nist:`2022-1516`, :cve_nist:`2022-1651`, :cve_nist:`2022-1652`, :cve_nist:`2022-1671`, :cve_nist:`2022-1678`, :cve_nist:`2022-1679`, :cve_nist:`2022-1729`, :cve_nist:`2022-1734`, :cve_nist:`2022-1786`, :cve_nist:`2022-1789`, :cve_nist:`2022-1836`, :cve_nist:`2022-1852`, :cve_nist:`2022-1882`, :cve_nist:`2022-1943`, :cve_nist:`2022-1966`, :cve_nist:`2022-1972`, :cve_nist:`2022-1973`, :cve_nist:`2022-1974`, :cve_nist:`2022-1975`, :cve_nist:`2022-1976`, :cve_nist:`2022-1998`, :cve_nist:`2022-20008`, :cve_nist:`2022-20132`, :cve_nist:`2022-20141`, :cve_nist:`2022-20153`, :cve_nist:`2022-20154`, :cve_nist:`2022-20158`, :cve_nist:`2022-20166`, :cve_nist:`2022-20368`, :cve_nist:`2022-20369`, :cve_nist:`2022-20421`, :cve_nist:`2022-20422`, :cve_nist:`2022-20423`, :cve_mitre:`2022-20565`, :cve_nist:`2022-20566`, :cve_nist:`2022-20567`, :cve_nist:`2022-20572`, :cve_nist:`2022-2078`, :cve_nist:`2022-21123`, :cve_nist:`2022-21125`, :cve_nist:`2022-21166`, :cve_nist:`2022-21385`, :cve_nist:`2022-21499`, :cve_mitre:`2022-21505`, :cve_nist:`2022-2153`, :cve_nist:`2022-2196`, :cve_mitre:`2022-22942`, :cve_nist:`2022-23036`, :cve_nist:`2022-23037`, :cve_nist:`2022-23038`, :cve_nist:`2022-23039`, :cve_nist:`2022-23040`, :cve_nist:`2022-23041`, :cve_nist:`2022-23042`, :cve_nist:`2022-2308`, :cve_nist:`2022-2318`, :cve_nist:`2022-2380`, :cve_nist:`2022-23816`, :cve_nist:`2022-23960`, :cve_nist:`2022-24122`, :cve_nist:`2022-24448`, :cve_nist:`2022-24958`, :cve_nist:`2022-24959`, :cve_nist:`2022-2503`, :cve_nist:`2022-25258`, :cve_nist:`2022-25375`, :cve_nist:`2022-25636`, :cve_mitre:`2022-2585`, :cve_mitre:`2022-2586`, :cve_mitre:`2022-2588`, :cve_nist:`2022-2590`, :cve_mitre:`2022-2602`, :cve_nist:`2022-26365`, :cve_nist:`2022-26373`, :cve_nist:`2022-2639`, :cve_nist:`2022-26490`, :cve_nist:`2022-2663`, :cve_nist:`2022-26966`, :cve_nist:`2022-27223`, :cve_nist:`2022-27666`, :cve_nist:`2022-2785`, :cve_nist:`2022-27950`, :cve_nist:`2022-28356`, :cve_nist:`2022-28388`, :cve_nist:`2022-28389`, :cve_nist:`2022-28390`, :cve_nist:`2022-2873`, :cve_nist:`2022-28796`, :cve_nist:`2022-28893`, :cve_nist:`2022-2905`, :cve_nist:`2022-29156`, :cve_nist:`2022-2938`, :cve_nist:`2022-29581`, :cve_nist:`2022-29582`, :cve_nist:`2022-2959`, :cve_nist:`2022-2964`, :cve_nist:`2022-2977`, :cve_nist:`2022-2978`, :cve_nist:`2022-29900`, :cve_nist:`2022-29901`, :cve_nist:`2022-29968`, :cve_nist:`2022-3028`, :cve_nist:`2022-30594`, :cve_nist:`2022-3061`, :cve_nist:`2022-3077`, :cve_nist:`2022-3078`, :cve_nist:`2022-3103`, :cve_nist:`2022-3104`, :cve_nist:`2022-3105`, :cve_nist:`2022-3106`, :cve_nist:`2022-3107`, :cve_nist:`2022-3110`, :cve_nist:`2022-3111`, :cve_nist:`2022-3112`, :cve_nist:`2022-3113`, :cve_nist:`2022-3114`, :cve_nist:`2022-3115`, :cve_nist:`2022-3169`, :cve_nist:`2022-3170`, :cve_nist:`2022-3202`, :cve_nist:`2022-32250`, :cve_nist:`2022-32296`, :cve_nist:`2022-3239`, :cve_nist:`2022-32981`, :cve_nist:`2022-3303`, :cve_nist:`2022-33740`, :cve_nist:`2022-33741`, :cve_nist:`2022-33742`, :cve_nist:`2022-33743`, :cve_nist:`2022-33744`, :cve_nist:`2022-33981`, :cve_nist:`2022-3424`, :cve_nist:`2022-3435`, :cve_nist:`2022-34494`, :cve_nist:`2022-34495`, :cve_nist:`2022-34918`, :cve_nist:`2022-3521`, :cve_nist:`2022-3524`, :cve_nist:`2022-3526`, :cve_nist:`2022-3531`, :cve_nist:`2022-3532`, :cve_nist:`2022-3534`, :cve_nist:`2022-3535`, :cve_nist:`2022-3541`, :cve_nist:`2022-3542`, :cve_nist:`2022-3543`, :cve_nist:`2022-3545`, :cve_nist:`2022-3564`, :cve_nist:`2022-3565`, :cve_nist:`2022-3577`, :cve_nist:`2022-3586`, :cve_nist:`2022-3594`, :cve_nist:`2022-36123`, :cve_nist:`2022-3619`, :cve_nist:`2022-3621`, :cve_nist:`2022-3623`, :cve_nist:`2022-3625`, :cve_nist:`2022-3628`, :cve_nist:`2022-36280`, :cve_nist:`2022-3629`, :cve_nist:`2022-3630`, :cve_nist:`2022-3633`, :cve_nist:`2022-3635`, :cve_nist:`2022-3640`, :cve_nist:`2022-3643`, :cve_nist:`2022-3646`, :cve_nist:`2022-3649`, :cve_nist:`2022-36879`, :cve_nist:`2022-36946`, :cve_nist:`2022-3707`, :cve_nist:`2022-3910`, :cve_nist:`2022-39189`, :cve_nist:`2022-39190`, :cve_nist:`2022-3977`, :cve_nist:`2022-39842`, :cve_nist:`2022-40307`, :cve_nist:`2022-40476`, :cve_nist:`2022-40768`, :cve_nist:`2022-4095`, :cve_nist:`2022-40982`, :cve_nist:`2022-41218`, :cve_nist:`2022-41222`, :cve_nist:`2022-4127`, :cve_nist:`2022-4128`, :cve_nist:`2022-4129`, :cve_nist:`2022-4139`, :cve_nist:`2022-41674`, :cve_nist:`2022-41849`, :cve_nist:`2022-41850`, :cve_nist:`2022-41858`, :cve_nist:`2022-42328`, :cve_nist:`2022-42329`, :cve_nist:`2022-42432`, :cve_nist:`2022-4269`, :cve_nist:`2022-42703`, :cve_nist:`2022-42719`, :cve_nist:`2022-42720`, :cve_nist:`2022-42721`, :cve_nist:`2022-42722`, :cve_nist:`2022-42895`, :cve_nist:`2022-42896`, :cve_nist:`2022-43750`, :cve_nist:`2022-4378`, :cve_nist:`2022-4379`, :cve_nist:`2022-4382`, :cve_nist:`2022-43945`, :cve_nist:`2022-45869`, :cve_nist:`2022-45886`, :cve_nist:`2022-45887`, :cve_nist:`2022-45888`, :cve_nist:`2022-45919`, :cve_nist:`2022-45934`, :cve_nist:`2022-4662`, :cve_nist:`2022-4744`, :cve_nist:`2022-47518`, :cve_nist:`2022-47519`, :cve_nist:`2022-47520`, :cve_nist:`2022-47521`, :cve_nist:`2022-47929`, :cve_nist:`2022-47938`, :cve_nist:`2022-47939`, :cve_nist:`2022-47940`, :cve_nist:`2022-47941`, :cve_nist:`2022-47942`, :cve_nist:`2022-47943`, :cve_nist:`2022-4842`, :cve_nist:`2022-48423`, :cve_nist:`2022-48424`, :cve_nist:`2022-48425`, :cve_nist:`2022-48502`, :cve_nist:`2023-0030`, :cve_nist:`2023-0045`, :cve_nist:`2023-0047`, :cve_nist:`2023-0122`, :cve_nist:`2023-0160`, :cve_nist:`2023-0179`, :cve_nist:`2023-0210`, :cve_nist:`2023-0240`, :cve_nist:`2023-0266`, :cve_nist:`2023-0394`, :cve_nist:`2023-0458`, :cve_nist:`2023-0459`, :cve_nist:`2023-0461`, :cve_nist:`2023-0468`, :cve_nist:`2023-0469`, :cve_nist:`2023-0590`, :cve_nist:`2023-0615`, :cve_mitre:`2023-1032`, :cve_nist:`2023-1073`, :cve_nist:`2023-1074`, :cve_nist:`2023-1076`, :cve_nist:`2023-1077`, :cve_nist:`2023-1078`, :cve_nist:`2023-1079`, :cve_nist:`2023-1095`, :cve_nist:`2023-1118`, :cve_nist:`2023-1192`, :cve_nist:`2023-1194`, :cve_nist:`2023-1195`, :cve_nist:`2023-1206`, :cve_nist:`2023-1249`, :cve_nist:`2023-1252`, :cve_nist:`2023-1281`, :cve_nist:`2023-1380`, :cve_nist:`2023-1382`, :cve_nist:`2023-1390`, :cve_nist:`2023-1513`, :cve_nist:`2023-1582`, :cve_nist:`2023-1583`, :cve_nist:`2023-1611`, :cve_nist:`2023-1637`, :cve_nist:`2023-1652`, :cve_nist:`2023-1670`, :cve_nist:`2023-1829`, :cve_nist:`2023-1838`, :cve_nist:`2023-1855`, :cve_nist:`2023-1859`, :cve_nist:`2023-1989`, :cve_nist:`2023-1990`, :cve_nist:`2023-1998`, :cve_nist:`2023-2002`, :cve_nist:`2023-2006`, :cve_nist:`2023-2008`, :cve_nist:`2023-2019`, :cve_nist:`2023-20569`, :cve_nist:`2023-20588`, :cve_nist:`2023-20593`, :cve_nist:`2023-20938`, :cve_nist:`2023-21102`, :cve_nist:`2023-21106`, :cve_nist:`2023-2124`, :cve_nist:`2023-21255`, :cve_nist:`2023-21264`, :cve_nist:`2023-2156`, :cve_nist:`2023-2162`, :cve_nist:`2023-2163`, :cve_nist:`2023-2166`, :cve_nist:`2023-2177`, :cve_nist:`2023-2194`, :cve_nist:`2023-2235`, :cve_nist:`2023-2236`, :cve_nist:`2023-2248`, :cve_nist:`2023-2269`, :cve_nist:`2023-22996`, :cve_nist:`2023-22997`, :cve_nist:`2023-22998`, :cve_nist:`2023-22999`, :cve_nist:`2023-23001`, :cve_nist:`2023-23002`, :cve_nist:`2023-23003`, :cve_nist:`2023-23004`, :cve_nist:`2023-23005`, :cve_nist:`2023-23006`, :cve_nist:`2023-23454`, :cve_nist:`2023-23455`, :cve_nist:`2023-23559`, :cve_nist:`2023-2483`, :cve_nist:`2023-25012`, :cve_nist:`2023-2513`, :cve_nist:`2023-25775`, :cve_nist:`2023-2598`, :cve_nist:`2023-26544`, :cve_nist:`2023-26545`, :cve_nist:`2023-26605`, :cve_nist:`2023-26606`, :cve_nist:`2023-26607`, :cve_nist:`2023-28327`, :cve_nist:`2023-28328`, :cve_nist:`2023-28410`, :cve_nist:`2023-28464`, :cve_nist:`2023-28466`, :cve_nist:`2023-2860`, :cve_nist:`2023-28772`, :cve_nist:`2023-28866`, :cve_nist:`2023-2898`, :cve_nist:`2023-2985`, :cve_nist:`2023-3006`, :cve_nist:`2023-30456`, :cve_nist:`2023-30772`, :cve_nist:`2023-3090`, :cve_nist:`2023-3106`, :cve_nist:`2023-3111`, :cve_nist:`2023-3117`, :cve_nist:`2023-31248`, :cve_nist:`2023-3141`, :cve_nist:`2023-31436`, :cve_nist:`2023-3159`, :cve_nist:`2023-3161`, :cve_nist:`2023-3212`, :cve_nist:`2023-3220`, :cve_nist:`2023-32233`, :cve_nist:`2023-32247`, :cve_nist:`2023-32248`, :cve_nist:`2023-32250`, :cve_nist:`2023-32252`, :cve_nist:`2023-32254`, :cve_nist:`2023-32257`, :cve_nist:`2023-32258`, :cve_nist:`2023-32269`, :cve_nist:`2023-3268`, :cve_nist:`2023-3269`, :cve_nist:`2023-3312`, :cve_nist:`2023-3317`, :cve_nist:`2023-33203`, :cve_nist:`2023-33250`, :cve_nist:`2023-33288`, :cve_nist:`2023-3338`, :cve_nist:`2023-3355`, :cve_nist:`2023-3357`, :cve_nist:`2023-3358`, :cve_nist:`2023-3359`, :cve_nist:`2023-3390`, :cve_nist:`2023-33951`, :cve_nist:`2023-33952`, :cve_nist:`2023-34255`, :cve_nist:`2023-34256`, :cve_nist:`2023-34319`, :cve_nist:`2023-3439`, :cve_nist:`2023-35001`, :cve_nist:`2023-3567`, :cve_nist:`2023-35788`, :cve_nist:`2023-35823`, :cve_nist:`2023-35824`, :cve_nist:`2023-35826`, :cve_nist:`2023-35828`, :cve_nist:`2023-35829`, :cve_nist:`2023-3609`, :cve_nist:`2023-3610`, :cve_nist:`2023-3611`, :cve_nist:`2023-37453`, :cve_nist:`2023-3772`, :cve_nist:`2023-3773`, :cve_nist:`2023-3776`, :cve_nist:`2023-3777`, :cve_nist:`2023-3812`, :cve_nist:`2023-38409`, :cve_nist:`2023-38426`, :cve_nist:`2023-38427`, :cve_nist:`2023-38428`, :cve_nist:`2023-38429`, :cve_nist:`2023-38430`, :cve_nist:`2023-38431`, :cve_nist:`2023-38432`, :cve_nist:`2023-3863`, :cve_mitre:`2023-3865`, :cve_mitre:`2023-3866`, :cve_mitre:`2023-3867`, :cve_nist:`2023-39189`, :cve_nist:`2023-39192`, :cve_nist:`2023-39193`, :cve_nist:`2023-39194`, :cve_nist:`2023-4004`, :cve_nist:`2023-4015`, :cve_nist:`2023-40283`, :cve_nist:`2023-4128`, :cve_nist:`2023-4132`, :cve_nist:`2023-4147`, :cve_nist:`2023-4155`, :cve_nist:`2023-4194`, :cve_nist:`2023-4206`, :cve_nist:`2023-4207`, :cve_nist:`2023-4208`, :cve_nist:`2023-4273`, :cve_nist:`2023-42752`, :cve_nist:`2023-42753`, :cve_nist:`2023-42755`, :cve_nist:`2023-42756`, :cve_nist:`2023-4385`, :cve_nist:`2023-4387`, :cve_nist:`2023-4389`, :cve_nist:`2023-4394`, :cve_nist:`2023-44466`, :cve_nist:`2023-4459`, :cve_nist:`2023-4569`, :cve_nist:`2023-45862`, :cve_nist:`2023-45871`, :cve_nist:`2023-4611`, :cve_nist:`2023-4623`, :cve_nist:`2023-4732`, :cve_nist:`2023-4921` and :cve_nist:`2023-5345`
27- linux-yocto/5.15: Ignore :cve:`2022-45886`, :cve:`2022-45887`, :cve:`2022-45919`, :cve:`2022-48502`, :cve:`2023-0160`, :cve:`2023-1206`, :cve:`2023-20593`, :cve:`2023-21264`, :cve:`2023-2898`, :cve:`2023-31248`, :cve:`2023-33250`, :cve:`2023-34319`, :cve:`2023-35001`, :cve:`2023-3611`, :cve:`2023-37453`, :cve:`2023-3773`, :cve:`2023-3776`, :cve:`2023-3777`, :cve:`2023-38432`, :cve:`2023-3863`, :cve_mitre:`2023-3865`, :cve_mitre:`2023-3866`, :cve:`2023-4004`, :cve:`2023-4015`, :cve:`2023-4132`, :cve:`2023-4147`, :cve:`2023-4194`, :cve:`2023-4385`, :cve:`2023-4387`, :cve:`2023-4389`, :cve:`2023-4394`, :cve:`2023-4459` and :cve:`2023-4611` 27- linux-yocto/5.15: Ignore :cve_nist:`2022-45886`, :cve_nist:`2022-45887`, :cve_nist:`2022-45919`, :cve_nist:`2022-48502`, :cve_nist:`2023-0160`, :cve_nist:`2023-1206`, :cve_nist:`2023-20593`, :cve_nist:`2023-21264`, :cve_nist:`2023-2898`, :cve_nist:`2023-31248`, :cve_nist:`2023-33250`, :cve_nist:`2023-34319`, :cve_nist:`2023-35001`, :cve_nist:`2023-3611`, :cve_nist:`2023-37453`, :cve_nist:`2023-3773`, :cve_nist:`2023-3776`, :cve_nist:`2023-3777`, :cve_nist:`2023-38432`, :cve_nist:`2023-3863`, :cve_mitre:`2023-3865`, :cve_mitre:`2023-3866`, :cve_nist:`2023-4004`, :cve_nist:`2023-4015`, :cve_nist:`2023-4132`, :cve_nist:`2023-4147`, :cve_nist:`2023-4194`, :cve_nist:`2023-4385`, :cve_nist:`2023-4387`, :cve_nist:`2023-4389`, :cve_nist:`2023-4394`, :cve_nist:`2023-4459` and :cve_nist:`2023-4611`
28- openssl: Fix :cve:`2023-4807` and :cve:`2023-5363` 28- openssl: Fix :cve_nist:`2023-4807` and :cve_nist:`2023-5363`
29- python3-git: Fix :cve:`2023-40590` and :cve:`2023-41040` 29- python3-git: Fix :cve_nist:`2023-40590` and :cve_nist:`2023-41040`
30- python3-urllib3: Fix :cve:`2023-43804` 30- python3-urllib3: Fix :cve_nist:`2023-43804`
31- qemu: Ignore :cve:`2023-2680` 31- qemu: Ignore :cve_nist:`2023-2680`
32- ruby: Fix :cve:`2023-36617` 32- ruby: Fix :cve_nist:`2023-36617`
33- shadow: Fix :cve_mitre:`2023-4641` 33- shadow: Fix :cve_mitre:`2023-4641`
34- tiff: Fix :cve:`2023-3576` and :cve:`2023-40745` 34- tiff: Fix :cve_nist:`2023-3576` and :cve_nist:`2023-40745`
35- vim: Fix :cve:`2023-5441` and :cve:`2023-5535` 35- vim: Fix :cve_nist:`2023-5441` and :cve_nist:`2023-5535`
36- webkitgtk: Fix :cve:`2023-32439` 36- webkitgtk: Fix :cve_nist:`2023-32439`
37- xdg-utils: Fix :cve:`2022-4055` 37- xdg-utils: Fix :cve_nist:`2022-4055`
38- xserver-xorg: ignore :cve:`2022-3553` (XQuartz-specific) 38- xserver-xorg: ignore :cve_nist:`2022-3553` (XQuartz-specific)
39- zlib: Fix :cve:`2023-45853` 39- zlib: Fix :cve_nist:`2023-45853`
40 40
41 41
42 42
diff --git a/documentation/migration-guides/release-notes-4.0.15.rst b/documentation/migration-guides/release-notes-4.0.15.rst
index b2731530e8..e05cd6f143 100644
--- a/documentation/migration-guides/release-notes-4.0.15.rst
+++ b/documentation/migration-guides/release-notes-4.0.15.rst
@@ -6,24 +6,24 @@ Release notes for Yocto-4.0.15 (Kirkstone)
6Security Fixes in Yocto-4.0.15 6Security Fixes in Yocto-4.0.15
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- avahi: Fix :cve:`2023-1981`, :cve:`2023-38469`, :cve:`2023-38470`, :cve:`2023-38471`, :cve:`2023-38472` and :cve:`2023-38473` 9- avahi: Fix :cve_nist:`2023-1981`, :cve_nist:`2023-38469`, :cve_nist:`2023-38470`, :cve_nist:`2023-38471`, :cve_nist:`2023-38472` and :cve_nist:`2023-38473`
10- binutils: Fix :cve:`2022-47007`, :cve:`2022-47010` and :cve:`2022-48064` 10- binutils: Fix :cve_nist:`2022-47007`, :cve_nist:`2022-47010` and :cve_nist:`2022-48064`
11- bluez5: Fix :cve:`2023-45866` 11- bluez5: Fix :cve_nist:`2023-45866`
12- ghostscript: Ignore GhostPCL :cve:`2023-38560` 12- ghostscript: Ignore GhostPCL :cve_nist:`2023-38560`
13- gnutls: Fix :cve:`2023-5981` 13- gnutls: Fix :cve_nist:`2023-5981`
14- go: Ignore :cve:`2023-45283` and :cve:`2023-45284` 14- go: Ignore :cve_nist:`2023-45283` and :cve_nist:`2023-45284`
15- grub: Fix :cve:`2023-4692` and :cve:`2023-4693` 15- grub: Fix :cve_nist:`2023-4692` and :cve_nist:`2023-4693`
16- gstreamer1.0-plugins-bad: Fix :cve_mitre:`2023-44429` 16- gstreamer1.0-plugins-bad: Fix :cve_mitre:`2023-44429`
17- libsndfile: Fix :cve:`2022-33065` 17- libsndfile: Fix :cve_nist:`2022-33065`
18- libwebp: Fix :cve:`2023-4863` 18- libwebp: Fix :cve_nist:`2023-4863`
19- openssl: Fix :cve:`2023-5678` 19- openssl: Fix :cve_nist:`2023-5678`
20- python3-cryptography: Fix :cve:`2023-49083` 20- python3-cryptography: Fix :cve_nist:`2023-49083`
21- qemu: Fix :cve:`2023-1544` 21- qemu: Fix :cve_nist:`2023-1544`
22- sudo: :cve:`2023-42456` and :cve_mitre:`2023-42465` 22- sudo: :cve_nist:`2023-42456` and :cve_mitre:`2023-42465`
23- tiff: Fix :cve:`2023-41175` 23- tiff: Fix :cve_nist:`2023-41175`
24- vim: Fix :cve:`2023-46246`, :cve:`2023-48231`, :cve:`2023-48232`, :cve:`2023-48233`, :cve:`2023-48234`, :cve:`2023-48235`, :cve:`2023-48236`, :cve:`2023-48237` and :cve:`2023-48706` 24- vim: Fix :cve_nist:`2023-46246`, :cve_nist:`2023-48231`, :cve_nist:`2023-48232`, :cve_nist:`2023-48233`, :cve_nist:`2023-48234`, :cve_nist:`2023-48235`, :cve_nist:`2023-48236`, :cve_nist:`2023-48237` and :cve_nist:`2023-48706`
25- xserver-xorg: Fix :cve:`2023-5367` and :cve:`2023-5380` 25- xserver-xorg: Fix :cve_nist:`2023-5367` and :cve_nist:`2023-5380`
26- xwayland: Fix :cve:`2023-5367` 26- xwayland: Fix :cve_nist:`2023-5367`
27 27
28 28
29Fixes in Yocto-4.0.15 29Fixes in Yocto-4.0.15
diff --git a/documentation/migration-guides/release-notes-4.0.16.rst b/documentation/migration-guides/release-notes-4.0.16.rst
index 0eb31832ab..dea5b4c2bf 100644
--- a/documentation/migration-guides/release-notes-4.0.16.rst
+++ b/documentation/migration-guides/release-notes-4.0.16.rst
@@ -8,22 +8,22 @@ Security Fixes in Yocto-4.0.16
8 8
9- cpio: Fix :cve_mitre:`2023-7207` 9- cpio: Fix :cve_mitre:`2023-7207`
10- curl: Revert "curl: Backport fix CVE-2023-32001" 10- curl: Revert "curl: Backport fix CVE-2023-32001"
11- curl: Fix :cve:`2023-46218` 11- curl: Fix :cve_nist:`2023-46218`
12- dropbear:Fix :cve:`2023-48795` 12- dropbear:Fix :cve_nist:`2023-48795`
13- ffmpeg: Fix :cve:`2022-3964` and :cve:`2022-3965` 13- ffmpeg: Fix :cve_nist:`2022-3964` and :cve_nist:`2022-3965`
14- ghostscript: Fix :cve:`2023-46751` 14- ghostscript: Fix :cve_nist:`2023-46751`
15- gnutls: Fix :cve:`2024-0553` and :cve:`2024-0567` 15- gnutls: Fix :cve_nist:`2024-0553` and :cve_nist:`2024-0567`
16- go: Fix :cve:`2023-39326` 16- go: Fix :cve_nist:`2023-39326`
17- openssh: Fix :cve:`2023-48795`, :cve:`2023-51384` and :cve:`2023-51385` 17- openssh: Fix :cve_nist:`2023-48795`, :cve_nist:`2023-51384` and :cve_nist:`2023-51385`
18- openssl: Fix :cve:`2023-6129` and :cve_mitre:`2023-6237` 18- openssl: Fix :cve_nist:`2023-6129` and :cve_mitre:`2023-6237`
19- pam: Fix :cve_mitre:`2024-22365` 19- pam: Fix :cve_mitre:`2024-22365`
20- perl: Fix :cve:`2023-47038` 20- perl: Fix :cve_nist:`2023-47038`
21- qemu: Fix :cve:`2023-5088` 21- qemu: Fix :cve_nist:`2023-5088`
22- sqlite3: Fix :cve:`2023-7104` 22- sqlite3: Fix :cve_nist:`2023-7104`
23- systemd: Fix :cve:`2023-7008` 23- systemd: Fix :cve_nist:`2023-7008`
24- tiff: Fix :cve:`2023-6228` 24- tiff: Fix :cve_nist:`2023-6228`
25- xserver-xorg: Fix :cve:`2023-6377`, :cve:`2023-6478`, :cve:`2023-6816`, :cve_mitre:`2024-0229`, :cve:`2024-0408`, :cve:`2024-0409`, :cve_mitre:`2024-21885` and :cve_mitre:`2024-21886` 25- xserver-xorg: Fix :cve_nist:`2023-6377`, :cve_nist:`2023-6478`, :cve_nist:`2023-6816`, :cve_mitre:`2024-0229`, :cve_nist:`2024-0408`, :cve_nist:`2024-0409`, :cve_mitre:`2024-21885` and :cve_mitre:`2024-21886`
26- zlib: Ignore :cve:`2023-6992` 26- zlib: Ignore :cve_nist:`2023-6992`
27 27
28 28
29Fixes in Yocto-4.0.16 29Fixes in Yocto-4.0.16
diff --git a/documentation/migration-guides/release-notes-4.0.17.rst b/documentation/migration-guides/release-notes-4.0.17.rst
index 07242584b8..e917dc9bf8 100644
--- a/documentation/migration-guides/release-notes-4.0.17.rst
+++ b/documentation/migration-guides/release-notes-4.0.17.rst
@@ -6,27 +6,27 @@ Release notes for Yocto-4.0.17 (Kirkstone)
6Security Fixes in Yocto-4.0.17 6Security Fixes in Yocto-4.0.17
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bind: Fix :cve:`2023-4408`, :cve:`2023-5517`, :cve:`2023-5679`, :cve:`2023-50868` and :cve:`2023-50387` 9- bind: Fix :cve_nist:`2023-4408`, :cve_nist:`2023-5517`, :cve_nist:`2023-5679`, :cve_nist:`2023-50868` and :cve_nist:`2023-50387`
10- binutils: Fix :cve:`2023-39129` and :cve:`2023-39130` 10- binutils: Fix :cve_nist:`2023-39129` and :cve_nist:`2023-39130`
11- curl: Fix :cve:`2023-46219` 11- curl: Fix :cve_nist:`2023-46219`
12- curl: Ignore :cve:`2023-42915` 12- curl: Ignore :cve_nist:`2023-42915`
13- gcc: Ignore :cve:`2023-4039` 13- gcc: Ignore :cve_nist:`2023-4039`
14- gdb: Fix :cve:`2023-39129` and :cve:`2023-39130` 14- gdb: Fix :cve_nist:`2023-39129` and :cve_nist:`2023-39130`
15- glibc: Ignore :cve:`2023-0687` 15- glibc: Ignore :cve_nist:`2023-0687`
16- go: Fix :cve:`2023-29406`, :cve:`2023-45285`, :cve:`2023-45287`, :cve:`2023-45289`, :cve:`2023-45290`, :cve:`2024-24784` and :cve:`2024-24785` 16- go: Fix :cve_nist:`2023-29406`, :cve_nist:`2023-45285`, :cve_nist:`2023-45287`, :cve_nist:`2023-45289`, :cve_nist:`2023-45290`, :cve_nist:`2024-24784` and :cve_nist:`2024-24785`
17- less: Fix :cve:`2022-48624` 17- less: Fix :cve_nist:`2022-48624`
18- libgit2: Fix :cve:`2024-24575` and :cve:`2024-24577` 18- libgit2: Fix :cve_nist:`2024-24575` and :cve_nist:`2024-24577`
19- libuv: fix :cve:`2024-24806` 19- libuv: fix :cve_nist:`2024-24806`
20- libxml2: Fix for :cve:`2024-25062` 20- libxml2: Fix for :cve_nist:`2024-25062`
21- linux-yocto/5.15: Fix :cve:`2022-36402`, :cve:`2022-40982`, :cve:`2022-47940`, :cve:`2023-1193`, :cve:`2023-1194`, :cve:`2023-3772`, :cve_mitre:`2023-3867`, :cve:`2023-4128`, :cve:`2023-4206`, :cve:`2023-4207`, :cve:`2023-4208`, :cve:`2023-4244`, :cve:`2023-4273`, :cve:`2023-4563`, :cve:`2023-4569`, :cve:`2023-4623`, :cve:`2023-4881`, :cve:`2023-4921`, :cve:`2023-5158`, :cve:`2023-5717`, :cve:`2023-6040`, :cve:`2023-6121`, :cve:`2023-6176`, :cve:`2023-6546`, :cve:`2023-6606`, :cve:`2023-6622`, :cve:`2023-6817`, :cve:`2023-6915`, :cve:`2023-6931`, :cve:`2023-6932`, :cve:`2023-20569`, :cve:`2023-20588`, :cve:`2023-25775`, :cve:`2023-31085`, :cve:`2023-32247`, :cve:`2023-32250`, :cve:`2023-32252`, :cve:`2023-32254`, :cve:`2023-32257`, :cve:`2023-32258`, :cve:`2023-34324`, :cve:`2023-35827`, :cve:`2023-38427`, :cve:`2023-38430`, :cve:`2023-38431`, :cve:`2023-39189`, :cve:`2023-39192`, :cve:`2023-39193`, :cve:`2023-39194`, :cve:`2023-39198`, :cve:`2023-40283`, :cve:`2023-42752`, :cve:`2023-42753`, :cve:`2023-42754`, :cve:`2023-42755`, :cve:`2023-45871`, :cve:`2023-46343`, :cve:`2023-46813`, :cve:`2023-46838`, :cve:`2023-46862`, :cve:`2023-51042`, :cve:`2023-51779`, :cve_mitre:`2023-52340`, :cve:`2023-52429`, :cve:`2023-52435`, :cve:`2023-52436`, :cve:`2023-52438`, :cve:`2023-52439`, :cve:`2023-52441`, :cve:`2023-52442`, :cve:`2023-52443`, :cve:`2023-52444`, :cve:`2023-52445`, :cve:`2023-52448`, :cve:`2023-52449`, :cve:`2023-52451`, :cve:`2023-52454`, :cve:`2023-52456`, :cve:`2023-52457`, :cve:`2023-52458`, :cve:`2023-52463`, :cve:`2023-52464`, :cve:`2024-0340`, :cve:`2024-0584`, :cve:`2024-0607`, :cve:`2024-0641`, :cve:`2024-0646`, :cve:`2024-1085`, :cve:`2024-1086`, :cve:`2024-1151`, :cve:`2024-22705`, :cve:`2024-23849`, :cve:`2024-23850`, :cve:`2024-23851`, :cve:`2024-24860`, :cve:`2024-26586`, :cve:`2024-26589`, :cve:`2024-26591`, :cve:`2024-26592`, :cve:`2024-26593`, :cve:`2024-26594`, :cve:`2024-26597` and :cve:`2024-26598` 21- linux-yocto/5.15: Fix :cve_nist:`2022-36402`, :cve_nist:`2022-40982`, :cve_nist:`2022-47940`, :cve_nist:`2023-1193`, :cve_nist:`2023-1194`, :cve_nist:`2023-3772`, :cve_mitre:`2023-3867`, :cve_nist:`2023-4128`, :cve_nist:`2023-4206`, :cve_nist:`2023-4207`, :cve_nist:`2023-4208`, :cve_nist:`2023-4244`, :cve_nist:`2023-4273`, :cve_nist:`2023-4563`, :cve_nist:`2023-4569`, :cve_nist:`2023-4623`, :cve_nist:`2023-4881`, :cve_nist:`2023-4921`, :cve_nist:`2023-5158`, :cve_nist:`2023-5717`, :cve_nist:`2023-6040`, :cve_nist:`2023-6121`, :cve_nist:`2023-6176`, :cve_nist:`2023-6546`, :cve_nist:`2023-6606`, :cve_nist:`2023-6622`, :cve_nist:`2023-6817`, :cve_nist:`2023-6915`, :cve_nist:`2023-6931`, :cve_nist:`2023-6932`, :cve_nist:`2023-20569`, :cve_nist:`2023-20588`, :cve_nist:`2023-25775`, :cve_nist:`2023-31085`, :cve_nist:`2023-32247`, :cve_nist:`2023-32250`, :cve_nist:`2023-32252`, :cve_nist:`2023-32254`, :cve_nist:`2023-32257`, :cve_nist:`2023-32258`, :cve_nist:`2023-34324`, :cve_nist:`2023-35827`, :cve_nist:`2023-38427`, :cve_nist:`2023-38430`, :cve_nist:`2023-38431`, :cve_nist:`2023-39189`, :cve_nist:`2023-39192`, :cve_nist:`2023-39193`, :cve_nist:`2023-39194`, :cve_nist:`2023-39198`, :cve_nist:`2023-40283`, :cve_nist:`2023-42752`, :cve_nist:`2023-42753`, :cve_nist:`2023-42754`, :cve_nist:`2023-42755`, :cve_nist:`2023-45871`, :cve_nist:`2023-46343`, :cve_nist:`2023-46813`, :cve_nist:`2023-46838`, :cve_nist:`2023-46862`, :cve_nist:`2023-51042`, :cve_nist:`2023-51779`, :cve_mitre:`2023-52340`, :cve_nist:`2023-52429`, :cve_nist:`2023-52435`, :cve_nist:`2023-52436`, :cve_nist:`2023-52438`, :cve_nist:`2023-52439`, :cve_nist:`2023-52441`, :cve_nist:`2023-52442`, :cve_nist:`2023-52443`, :cve_nist:`2023-52444`, :cve_nist:`2023-52445`, :cve_nist:`2023-52448`, :cve_nist:`2023-52449`, :cve_nist:`2023-52451`, :cve_nist:`2023-52454`, :cve_nist:`2023-52456`, :cve_nist:`2023-52457`, :cve_nist:`2023-52458`, :cve_nist:`2023-52463`, :cve_nist:`2023-52464`, :cve_nist:`2024-0340`, :cve_nist:`2024-0584`, :cve_nist:`2024-0607`, :cve_nist:`2024-0641`, :cve_nist:`2024-0646`, :cve_nist:`2024-1085`, :cve_nist:`2024-1086`, :cve_nist:`2024-1151`, :cve_nist:`2024-22705`, :cve_nist:`2024-23849`, :cve_nist:`2024-23850`, :cve_nist:`2024-23851`, :cve_nist:`2024-24860`, :cve_nist:`2024-26586`, :cve_nist:`2024-26589`, :cve_nist:`2024-26591`, :cve_nist:`2024-26592`, :cve_nist:`2024-26593`, :cve_nist:`2024-26594`, :cve_nist:`2024-26597` and :cve_nist:`2024-26598`
22- linux-yocto/5.15: Ignore :cve:`2020-27418`, :cve:`2020-36766`, :cve:`2021-33630`, :cve:`2021-33631`, :cve:`2022-48619`, :cve:`2023-2430`, :cve:`2023-4610`, :cve:`2023-4732`, :cve:`2023-5090`, :cve:`2023-5178`, :cve:`2023-5197`, :cve:`2023-5345`, :cve:`2023-5633`, :cve:`2023-5972`, :cve:`2023-6111`, :cve:`2023-6200`, :cve:`2023-6531`, :cve:`2023-6679`, :cve:`2023-7192`, :cve:`2023-40791`, :cve:`2023-42756`, :cve:`2023-44466`, :cve:`2023-45862`, :cve:`2023-45863`, :cve:`2023-45898`, :cve:`2023-51043`, :cve:`2023-51780`, :cve:`2023-51781`, :cve:`2023-51782`, :cve:`2023-52433`, :cve:`2023-52440`, :cve:`2023-52446`, :cve:`2023-52450`, :cve:`2023-52453`, :cve:`2023-52455`, :cve:`2023-52459`, :cve:`2023-52460`, :cve:`2023-52461`, :cve:`2023-52462`, :cve:`2024-0193`, :cve:`2024-0443`, :cve:`2024-0562`, :cve:`2024-0582`, :cve:`2024-0639`, :cve:`2024-0775`, :cve:`2024-26581`, :cve:`2024-26582`, :cve:`2024-26590`, :cve:`2024-26596` and :cve:`2024-26599` 22- linux-yocto/5.15: Ignore :cve_nist:`2020-27418`, :cve_nist:`2020-36766`, :cve_nist:`2021-33630`, :cve_nist:`2021-33631`, :cve_nist:`2022-48619`, :cve_nist:`2023-2430`, :cve_nist:`2023-4610`, :cve_nist:`2023-4732`, :cve_nist:`2023-5090`, :cve_nist:`2023-5178`, :cve_nist:`2023-5197`, :cve_nist:`2023-5345`, :cve_nist:`2023-5633`, :cve_nist:`2023-5972`, :cve_nist:`2023-6111`, :cve_nist:`2023-6200`, :cve_nist:`2023-6531`, :cve_nist:`2023-6679`, :cve_nist:`2023-7192`, :cve_nist:`2023-40791`, :cve_nist:`2023-42756`, :cve_nist:`2023-44466`, :cve_nist:`2023-45862`, :cve_nist:`2023-45863`, :cve_nist:`2023-45898`, :cve_nist:`2023-51043`, :cve_nist:`2023-51780`, :cve_nist:`2023-51781`, :cve_nist:`2023-51782`, :cve_nist:`2023-52433`, :cve_nist:`2023-52440`, :cve_nist:`2023-52446`, :cve_nist:`2023-52450`, :cve_nist:`2023-52453`, :cve_nist:`2023-52455`, :cve_nist:`2023-52459`, :cve_nist:`2023-52460`, :cve_nist:`2023-52461`, :cve_nist:`2023-52462`, :cve_nist:`2024-0193`, :cve_nist:`2024-0443`, :cve_nist:`2024-0562`, :cve_nist:`2024-0582`, :cve_nist:`2024-0639`, :cve_nist:`2024-0775`, :cve_nist:`2024-26581`, :cve_nist:`2024-26582`, :cve_nist:`2024-26590`, :cve_nist:`2024-26596` and :cve_nist:`2024-26599`
23- linux-yocto/5.10: Fix :cve:`2023-6040`, :cve:`2023-6121`, :cve:`2023-6606`, :cve:`2023-6817`, :cve:`2023-6915`, :cve:`2023-6931`, :cve:`2023-6932`, :cve:`2023-39198`, :cve:`2023-46838`, :cve:`2023-51779`, :cve:`2023-51780`, :cve:`2023-51781`, :cve:`2023-51782`, :cve_mitre:`2023-52340`, :cve:`2024-0584` and :cve:`2024-0646` 23- linux-yocto/5.10: Fix :cve_nist:`2023-6040`, :cve_nist:`2023-6121`, :cve_nist:`2023-6606`, :cve_nist:`2023-6817`, :cve_nist:`2023-6915`, :cve_nist:`2023-6931`, :cve_nist:`2023-6932`, :cve_nist:`2023-39198`, :cve_nist:`2023-46838`, :cve_nist:`2023-51779`, :cve_nist:`2023-51780`, :cve_nist:`2023-51781`, :cve_nist:`2023-51782`, :cve_mitre:`2023-52340`, :cve_nist:`2024-0584` and :cve_nist:`2024-0646`
24- linux-yocto/5.10: Ignore :cve:`2021-33630`, :cve:`2021-33631`, :cve:`2022-1508`, :cve:`2022-36402`, :cve:`2022-48619`, :cve:`2023-2430`, :cve:`2023-4610`, :cve:`2023-5972`, :cve:`2023-6039`, :cve:`2023-6200`, :cve:`2023-6531`, :cve:`2023-6546`, :cve:`2023-6622`, :cve:`2023-6679`, :cve:`2023-7192`, :cve:`2023-46343`, :cve:`2023-51042`, :cve:`2023-51043`, :cve:`2024-0193`, :cve:`2024-0443`, :cve:`2024-0562`, :cve:`2024-0582`, :cve:`2024-0639`, :cve:`2024-0641`, :cve:`2024-0775`, :cve:`2024-1085` and :cve:`2024-22705` 24- linux-yocto/5.10: Ignore :cve_nist:`2021-33630`, :cve_nist:`2021-33631`, :cve_nist:`2022-1508`, :cve_nist:`2022-36402`, :cve_nist:`2022-48619`, :cve_nist:`2023-2430`, :cve_nist:`2023-4610`, :cve_nist:`2023-5972`, :cve_nist:`2023-6039`, :cve_nist:`2023-6200`, :cve_nist:`2023-6531`, :cve_nist:`2023-6546`, :cve_nist:`2023-6622`, :cve_nist:`2023-6679`, :cve_nist:`2023-7192`, :cve_nist:`2023-46343`, :cve_nist:`2023-51042`, :cve_nist:`2023-51043`, :cve_nist:`2024-0193`, :cve_nist:`2024-0443`, :cve_nist:`2024-0562`, :cve_nist:`2024-0582`, :cve_nist:`2024-0639`, :cve_nist:`2024-0641`, :cve_nist:`2024-0775`, :cve_nist:`2024-1085` and :cve_nist:`2024-22705`
25- openssl: Fix :cve:`2024-0727` 25- openssl: Fix :cve_nist:`2024-0727`
26- python3-pycryptodome: Fix :cve:`2023-52323` 26- python3-pycryptodome: Fix :cve_nist:`2023-52323`
27- qemu: Fix :cve:`2023-6693`, :cve:`2023-42467` and :cve:`2024-24474` 27- qemu: Fix :cve_nist:`2023-6693`, :cve_nist:`2023-42467` and :cve_nist:`2024-24474`
28- vim: Fix :cve:`2024-22667` 28- vim: Fix :cve_nist:`2024-22667`
29- xwayland: Fix :cve:`2023-6377` and :cve:`2023-6478` 29- xwayland: Fix :cve_nist:`2023-6377` and :cve_nist:`2023-6478`
30 30
31 31
32Fixes in Yocto-4.0.17 32Fixes in Yocto-4.0.17
diff --git a/documentation/migration-guides/release-notes-4.0.18.rst b/documentation/migration-guides/release-notes-4.0.18.rst
index fc8cd83c02..890148b5d6 100644
--- a/documentation/migration-guides/release-notes-4.0.18.rst
+++ b/documentation/migration-guides/release-notes-4.0.18.rst
@@ -6,22 +6,22 @@ Release notes for Yocto-4.0.18 (Kirkstone)
6Security Fixes in Yocto-4.0.18 6Security Fixes in Yocto-4.0.18
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- curl: Fix :cve:`2024-2398` 9- curl: Fix :cve_nist:`2024-2398`
10- expat: fix :cve:`2023-52426` and :cve:`2024-28757` 10- expat: fix :cve_nist:`2023-52426` and :cve_nist:`2024-28757`
11- libssh2: fix :cve:`2023-48795` 11- libssh2: fix :cve_nist:`2023-48795`
12- ncurses: Fix :cve:`2023-50495` 12- ncurses: Fix :cve_nist:`2023-50495`
13- nghttp2: Fix :cve:`2024-28182` and :cve:`2023-44487` 13- nghttp2: Fix :cve_nist:`2024-28182` and :cve_nist:`2023-44487`
14- openssh: Ignore :cve:`2023-51767` 14- openssh: Ignore :cve_nist:`2023-51767`
15- openssl: Fix :cve:`2024-2511` 15- openssl: Fix :cve_nist:`2024-2511`
16- perl: Ignore :cve:`2023-47100` 16- perl: Ignore :cve_nist:`2023-47100`
17- python3-cryptography: Fix :cve:`2024-26130` 17- python3-cryptography: Fix :cve_nist:`2024-26130`
18- python3-urllib3: Fix :cve:`2023-45803` 18- python3-urllib3: Fix :cve_nist:`2023-45803`
19- qemu: Fix :cve:`2023-6683` 19- qemu: Fix :cve_nist:`2023-6683`
20- ruby: fix :cve_mitre:`2024-27281` 20- ruby: fix :cve_mitre:`2024-27281`
21- rust: Ignore :cve:`2024-24576` 21- rust: Ignore :cve_nist:`2024-24576`
22- tiff: Fix :cve:`2023-52356` and :cve:`2023-6277` 22- tiff: Fix :cve_nist:`2023-52356` and :cve_nist:`2023-6277`
23- xserver-xorg: Fix :cve:`2024-31080` and :cve:`2024-31081` 23- xserver-xorg: Fix :cve_nist:`2024-31080` and :cve_nist:`2024-31081`
24- xwayland: Fix :cve:`2023-6816`, :cve:`2024-0408` and :cve:`2024-0409` 24- xwayland: Fix :cve_nist:`2023-6816`, :cve_nist:`2024-0408` and :cve_nist:`2024-0409`
25 25
26 26
27Fixes in Yocto-4.0.18 27Fixes in Yocto-4.0.18
@@ -31,7 +31,7 @@ Fixes in Yocto-4.0.18
31- common-licenses: Backport missing license 31- common-licenses: Backport missing license
32- contributor-guide: add notes for tests 32- contributor-guide: add notes for tests
33- contributor-guide: be more specific about meta-* trees 33- contributor-guide: be more specific about meta-* trees
34- cups: fix typo in :cve:`2023-32360` backport patch 34- cups: fix typo in :cve_nist:`2023-32360` backport patch
35- cve-update-nvd2-native: Add an age threshold for incremental update 35- cve-update-nvd2-native: Add an age threshold for incremental update
36- cve-update-nvd2-native: Fix CVE configuration update 36- cve-update-nvd2-native: Fix CVE configuration update
37- cve-update-nvd2-native: Fix typo in comment 37- cve-update-nvd2-native: Fix typo in comment
diff --git a/documentation/migration-guides/release-notes-4.0.19.rst b/documentation/migration-guides/release-notes-4.0.19.rst
index 5dcc977252..e363f05d7d 100644
--- a/documentation/migration-guides/release-notes-4.0.19.rst
+++ b/documentation/migration-guides/release-notes-4.0.19.rst
@@ -6,30 +6,30 @@ Release notes for Yocto-4.0.19 (Kirkstone)
6Security Fixes in Yocto-4.0.19 6Security Fixes in Yocto-4.0.19
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bluez5: Fix :cve:`2023-27349`, :cve:`2023-50229` and :cve:`2023-50230` 9- bluez5: Fix :cve_nist:`2023-27349`, :cve_nist:`2023-50229` and :cve_nist:`2023-50230`
10- ghostscript: Fix :cve:`2023-52722`, :cve_mitre:`2024-29510`, :cve_mitre:`2024-33869`, :cve_mitre:`2024-33870` and :cve_mitre:`2024-33871` 10- ghostscript: Fix :cve_nist:`2023-52722`, :cve_mitre:`2024-29510`, :cve_mitre:`2024-33869`, :cve_mitre:`2024-33870` and :cve_mitre:`2024-33871`
11- git: Fix :cve:`2024-32002`, :cve:`2024-32004`, :cve:`2024-32020`, :cve:`2024-32021` and :cve:`2024-32465` 11- git: Fix :cve_nist:`2024-32002`, :cve_nist:`2024-32004`, :cve_nist:`2024-32020`, :cve_nist:`2024-32021` and :cve_nist:`2024-32465`
12- glibc: Fix :cve:`2024-2961`, :cve:`2024-33599`, :cve:`2024-33600`, :cve:`2024-33601` and :cve:`2024-33602` 12- glibc: Fix :cve_nist:`2024-2961`, :cve_nist:`2024-33599`, :cve_nist:`2024-33600`, :cve_nist:`2024-33601` and :cve_nist:`2024-33602`
13- gnutls: Fix :cve:`2024-28834` and :cve:`2024-28835` 13- gnutls: Fix :cve_nist:`2024-28834` and :cve_nist:`2024-28835`
14- go: Fix :cve:`2023-45288` 14- go: Fix :cve_nist:`2023-45288`
15- gstreamer1.0-plugins-bad: Fix :cve:`2023-44446`, :cve:`2023-50186` and :cve_mitre:`2024-0444` 15- gstreamer1.0-plugins-bad: Fix :cve_nist:`2023-44446`, :cve_nist:`2023-50186` and :cve_mitre:`2024-0444`
16- less: Fix :cve:`2024-32487` 16- less: Fix :cve_nist:`2024-32487`
17- libarchive: Fix :cve:`2024-26256` 17- libarchive: Fix :cve_nist:`2024-26256`
18- libarchive: Fix multiple null deference and heap overflow in pax writer (no CVE assigned) 18- libarchive: Fix multiple null deference and heap overflow in pax writer (no CVE assigned)
19- linux-yocto/5.15: Fix :cve:`2023-6270`, :cve:`2023-7042`, :cve:`2023-52447`, :cve:`2023-52620`, :cve:`2024-22099`, :cve:`2024-26622`, :cve:`2024-26651`, :cve:`2024-26659`, :cve:`2024-26688`, :cve:`2024-26782`, :cve:`2024-26787`, :cve:`2024-26788`, :cve:`2024-26790`, :cve:`2024-26791`, :cve:`2024-26793`, :cve:`2024-26795`, :cve:`2024-26798`, :cve:`2024-26801`, :cve:`2024-26802`, :cve:`2024-26803`, :cve:`2024-26804`, :cve:`2024-26805` and :cve:`2024-26809` 19- linux-yocto/5.15: Fix :cve_nist:`2023-6270`, :cve_nist:`2023-7042`, :cve_nist:`2023-52447`, :cve_nist:`2023-52620`, :cve_nist:`2024-22099`, :cve_nist:`2024-26622`, :cve_nist:`2024-26651`, :cve_nist:`2024-26659`, :cve_nist:`2024-26688`, :cve_nist:`2024-26782`, :cve_nist:`2024-26787`, :cve_nist:`2024-26788`, :cve_nist:`2024-26790`, :cve_nist:`2024-26791`, :cve_nist:`2024-26793`, :cve_nist:`2024-26795`, :cve_nist:`2024-26798`, :cve_nist:`2024-26801`, :cve_nist:`2024-26802`, :cve_nist:`2024-26803`, :cve_nist:`2024-26804`, :cve_nist:`2024-26805` and :cve_nist:`2024-26809`
20- linux-yocto/5.15: Ignore :cve:`2019-25160`, :cve:`2019-25162`, :cve:`2020-36775`, :cve:`2020-36776`, :cve:`2020-36777`, :cve:`2020-36778`, :cve:`2020-36779`, :cve:`2020-36780`, :cve:`2020-36781`, :cve:`2020-36782`, :cve:`2020-36783`, :cve:`2020-36784`, :cve:`2020-36785`, :cve:`2020-36786`, :cve:`2020-36787`, :cve:`2021-46904`, :cve:`2021-46905`, :cve:`2021-46906`, :cve:`2021-46908`, :cve:`2021-46909`, :cve:`2021-46910`, :cve:`2021-46911`, :cve:`2021-46912`, :cve:`2021-46913`, :cve:`2021-46914`, :cve:`2021-46915`, :cve:`2021-46916`, :cve:`2021-46917`, :cve:`2021-46918`, :cve:`2021-46919`, :cve:`2021-46920`, :cve:`2021-46921`, :cve:`2021-46922`, :cve:`2021-46923`, :cve:`2021-46924`, :cve:`2021-46925`, :cve:`2021-46926`, :cve:`2021-46927`, :cve:`2021-46928`, :cve:`2021-46929`, :cve:`2021-46930`, :cve:`2021-46931`, :cve:`2021-46932`, :cve:`2021-46933`, :cve:`2021-46934`, :cve:`2021-46935`, :cve:`2021-46936`, :cve:`2021-46937`, :cve:`2021-46938`, :cve:`2021-46939`, :cve:`2021-46940`, :cve:`2021-46941`, :cve:`2021-46942`, :cve:`2021-46943`, :cve:`2021-46944`, :cve:`2021-46945`, :cve:`2021-46947`, :cve:`2021-46948`, :cve:`2021-46949`, :cve:`2021-46950`, :cve:`2021-46951`, :cve:`2021-46952`, :cve:`2021-46953`, :cve:`2021-46954`, :cve:`2021-46955`, :cve:`2021-46956`, :cve:`2021-46957`, :cve:`2021-46958`, :cve:`2021-46959`, :cve:`2021-46960`, :cve:`2021-46961`, :cve:`2021-46962`, :cve:`2021-46963`, :cve:`2021-46964`, :cve:`2021-46965`, :cve:`2021-46966`, :cve:`2021-46967`, :cve:`2021-46968`, :cve:`2021-46969`, :cve:`2021-46970`, :cve:`2021-46971`, :cve:`2021-46972`, :cve:`2021-46973`, :cve:`2021-46974`, :cve:`2021-46976`, :cve:`2021-46977`, :cve:`2021-46978`, :cve:`2021-46979`, :cve:`2021-46980`, :cve:`2021-46981`, :cve:`2021-46982`, :cve:`2021-46983`, :cve:`2021-46984`, :cve:`2021-46985`, :cve:`2021-46986`, :cve:`2021-46987`, :cve:`2021-46988`, :cve:`2021-46989`, :cve:`2021-46990`, :cve:`2021-46991`, :cve:`2021-46992`, :cve:`2021-46993`, :cve:`2021-46994`, :cve:`2021-46995`, :cve:`2021-46996`, :cve:`2021-46997`, :cve:`2021-46998`, :cve:`2021-46999`, :cve:`2021-47000`, :cve:`2021-47001`, :cve:`2021-47002`, :cve:`2021-47003`, :cve:`2021-47004`, :cve:`2021-47005`, :cve:`2021-47006`, :cve:`2021-47007`, :cve:`2021-47008`, :cve:`2021-47009`, :cve:`2021-47010`, :cve:`2021-47011`, :cve:`2021-47012`, :cve:`2021-47013`, :cve:`2021-47014`, :cve:`2021-47015`, :cve:`2021-47016`, :cve:`2021-47017`, :cve:`2021-47018`, :cve:`2021-47019`, :cve:`2021-47020`, :cve:`2021-47021`, :cve:`2021-47022`, :cve:`2021-47023`, :cve:`2021-47024`, :cve:`2021-47025`, :cve:`2021-47026`, :cve:`2021-47027`, :cve:`2021-47028`, :cve:`2021-47029`, :cve:`2021-47030`, :cve:`2021-47031`, :cve:`2021-47032`, :cve:`2021-47033`, :cve:`2021-47034`, :cve:`2021-47035`, :cve:`2021-47036`, :cve:`2021-47037`, :cve:`2021-47038`, :cve:`2021-47039`, :cve:`2021-47040`, :cve:`2021-47041`, :cve:`2021-47042`, :cve:`2021-47043`, :cve:`2021-47044`, :cve:`2021-47045`, :cve:`2021-47046`, :cve:`2021-47047`, :cve:`2021-47048`, :cve:`2021-47049`, :cve:`2021-47050`, :cve:`2021-47051`, :cve:`2021-47052`, :cve:`2021-47053`, :cve:`2021-47054`, :cve:`2021-47055`, :cve:`2021-47056`, :cve:`2021-47057`, :cve:`2021-47058`, :cve:`2021-47059`, :cve:`2021-47060`, :cve:`2021-47061`, :cve:`2021-47062`, :cve:`2021-47063`, :cve:`2021-47064`, :cve:`2021-47065`, :cve:`2021-47066`, :cve:`2021-47067`, :cve:`2021-47068`, :cve:`2021-47069`, :cve:`2021-47070`, :cve:`2021-47071`, :cve:`2021-47072`, :cve:`2021-47073`, :cve:`2021-47074`, :cve:`2021-47075`, :cve:`2021-47076`, :cve:`2021-47077`, :cve:`2021-47078`, :cve:`2021-47079`, :cve:`2021-47080`, :cve:`2021-47081`, :cve:`2021-47082`, :cve:`2021-47083`, :cve:`2021-47086`, :cve:`2021-47087`, :cve:`2021-47088`, :cve:`2021-47089`, :cve:`2021-47090`, :cve:`2021-47091`, :cve:`2021-47092`, :cve:`2021-47093`, :cve:`2021-47094`, :cve:`2021-47095`, :cve:`2021-47096`, :cve:`2021-47097`, :cve:`2021-47098`, :cve:`2021-47099`, :cve:`2021-47100`, :cve:`2021-47101`, :cve:`2021-47102`, :cve:`2021-47103`, :cve:`2021-47104`, :cve:`2021-47105`, :cve:`2021-47106`, :cve:`2021-47107`, :cve:`2021-47108`, :cve:`2021-47109`, :cve:`2021-47110`, :cve:`2021-47111`, :cve:`2021-47112`, :cve:`2021-47113`, :cve:`2021-47114`, :cve:`2021-47116`, :cve:`2021-47117`, :cve:`2021-47118`, :cve:`2021-47119`, :cve:`2021-47120`, :cve:`2021-47121`, :cve:`2021-47122`, :cve:`2021-47123`, :cve:`2021-47124`, :cve:`2021-47125`, :cve:`2021-47126`, :cve:`2021-47127`, :cve:`2021-47128`, :cve:`2021-47129`, :cve:`2021-47130`, :cve:`2021-47131`, :cve:`2021-47132`, :cve:`2021-47133`, :cve:`2021-47134`, :cve:`2021-47135`, :cve:`2021-47136`, :cve:`2021-47137`, :cve:`2021-47138`, :cve:`2021-47139`, :cve:`2021-47140`, :cve:`2021-47141`, :cve:`2021-47142`, :cve:`2021-47143`, :cve:`2021-47144`, :cve:`2021-47145`, :cve:`2021-47146`, :cve:`2021-47147`, :cve:`2021-47148`, :cve:`2021-47149`, :cve:`2021-47150`, :cve:`2021-47151`, :cve:`2021-47152`, :cve:`2021-47153`, :cve:`2021-47158`, :cve:`2021-47159`, :cve:`2021-47160`, :cve:`2021-47161`, :cve:`2021-47162`, :cve:`2021-47163`, :cve:`2021-47164`, :cve:`2021-47165`, :cve:`2021-47166`, :cve:`2021-47167`, :cve:`2021-47168`, :cve:`2021-47169`, :cve:`2021-47170`, :cve:`2021-47171`, :cve:`2021-47172`, :cve:`2021-47173`, :cve:`2021-47174`, :cve:`2021-47175`, :cve:`2021-47176`, :cve:`2021-47177`, :cve:`2021-47178`, :cve:`2021-47179` and :cve:`2021-47180` 20- linux-yocto/5.15: Ignore :cve_nist:`2019-25160`, :cve_nist:`2019-25162`, :cve_nist:`2020-36775`, :cve_nist:`2020-36776`, :cve_nist:`2020-36777`, :cve_nist:`2020-36778`, :cve_nist:`2020-36779`, :cve_nist:`2020-36780`, :cve_nist:`2020-36781`, :cve_nist:`2020-36782`, :cve_nist:`2020-36783`, :cve_nist:`2020-36784`, :cve_nist:`2020-36785`, :cve_nist:`2020-36786`, :cve_nist:`2020-36787`, :cve_nist:`2021-46904`, :cve_nist:`2021-46905`, :cve_nist:`2021-46906`, :cve_nist:`2021-46908`, :cve_nist:`2021-46909`, :cve_nist:`2021-46910`, :cve_nist:`2021-46911`, :cve_nist:`2021-46912`, :cve_nist:`2021-46913`, :cve_nist:`2021-46914`, :cve_nist:`2021-46915`, :cve_nist:`2021-46916`, :cve_nist:`2021-46917`, :cve_nist:`2021-46918`, :cve_nist:`2021-46919`, :cve_nist:`2021-46920`, :cve_nist:`2021-46921`, :cve_nist:`2021-46922`, :cve_nist:`2021-46923`, :cve_nist:`2021-46924`, :cve_nist:`2021-46925`, :cve_nist:`2021-46926`, :cve_nist:`2021-46927`, :cve_nist:`2021-46928`, :cve_nist:`2021-46929`, :cve_nist:`2021-46930`, :cve_nist:`2021-46931`, :cve_nist:`2021-46932`, :cve_nist:`2021-46933`, :cve_nist:`2021-46934`, :cve_nist:`2021-46935`, :cve_nist:`2021-46936`, :cve_nist:`2021-46937`, :cve_nist:`2021-46938`, :cve_nist:`2021-46939`, :cve_nist:`2021-46940`, :cve_nist:`2021-46941`, :cve_nist:`2021-46942`, :cve_nist:`2021-46943`, :cve_nist:`2021-46944`, :cve_nist:`2021-46945`, :cve_nist:`2021-46947`, :cve_nist:`2021-46948`, :cve_nist:`2021-46949`, :cve_nist:`2021-46950`, :cve_nist:`2021-46951`, :cve_nist:`2021-46952`, :cve_nist:`2021-46953`, :cve_nist:`2021-46954`, :cve_nist:`2021-46955`, :cve_nist:`2021-46956`, :cve_nist:`2021-46957`, :cve_nist:`2021-46958`, :cve_nist:`2021-46959`, :cve_nist:`2021-46960`, :cve_nist:`2021-46961`, :cve_nist:`2021-46962`, :cve_nist:`2021-46963`, :cve_nist:`2021-46964`, :cve_nist:`2021-46965`, :cve_nist:`2021-46966`, :cve_nist:`2021-46967`, :cve_nist:`2021-46968`, :cve_nist:`2021-46969`, :cve_nist:`2021-46970`, :cve_nist:`2021-46971`, :cve_nist:`2021-46972`, :cve_nist:`2021-46973`, :cve_nist:`2021-46974`, :cve_nist:`2021-46976`, :cve_nist:`2021-46977`, :cve_nist:`2021-46978`, :cve_nist:`2021-46979`, :cve_nist:`2021-46980`, :cve_nist:`2021-46981`, :cve_nist:`2021-46982`, :cve_nist:`2021-46983`, :cve_nist:`2021-46984`, :cve_nist:`2021-46985`, :cve_nist:`2021-46986`, :cve_nist:`2021-46987`, :cve_nist:`2021-46988`, :cve_nist:`2021-46989`, :cve_nist:`2021-46990`, :cve_nist:`2021-46991`, :cve_nist:`2021-46992`, :cve_nist:`2021-46993`, :cve_nist:`2021-46994`, :cve_nist:`2021-46995`, :cve_nist:`2021-46996`, :cve_nist:`2021-46997`, :cve_nist:`2021-46998`, :cve_nist:`2021-46999`, :cve_nist:`2021-47000`, :cve_nist:`2021-47001`, :cve_nist:`2021-47002`, :cve_nist:`2021-47003`, :cve_nist:`2021-47004`, :cve_nist:`2021-47005`, :cve_nist:`2021-47006`, :cve_nist:`2021-47007`, :cve_nist:`2021-47008`, :cve_nist:`2021-47009`, :cve_nist:`2021-47010`, :cve_nist:`2021-47011`, :cve_nist:`2021-47012`, :cve_nist:`2021-47013`, :cve_nist:`2021-47014`, :cve_nist:`2021-47015`, :cve_nist:`2021-47016`, :cve_nist:`2021-47017`, :cve_nist:`2021-47018`, :cve_nist:`2021-47019`, :cve_nist:`2021-47020`, :cve_nist:`2021-47021`, :cve_nist:`2021-47022`, :cve_nist:`2021-47023`, :cve_nist:`2021-47024`, :cve_nist:`2021-47025`, :cve_nist:`2021-47026`, :cve_nist:`2021-47027`, :cve_nist:`2021-47028`, :cve_nist:`2021-47029`, :cve_nist:`2021-47030`, :cve_nist:`2021-47031`, :cve_nist:`2021-47032`, :cve_nist:`2021-47033`, :cve_nist:`2021-47034`, :cve_nist:`2021-47035`, :cve_nist:`2021-47036`, :cve_nist:`2021-47037`, :cve_nist:`2021-47038`, :cve_nist:`2021-47039`, :cve_nist:`2021-47040`, :cve_nist:`2021-47041`, :cve_nist:`2021-47042`, :cve_nist:`2021-47043`, :cve_nist:`2021-47044`, :cve_nist:`2021-47045`, :cve_nist:`2021-47046`, :cve_nist:`2021-47047`, :cve_nist:`2021-47048`, :cve_nist:`2021-47049`, :cve_nist:`2021-47050`, :cve_nist:`2021-47051`, :cve_nist:`2021-47052`, :cve_nist:`2021-47053`, :cve_nist:`2021-47054`, :cve_nist:`2021-47055`, :cve_nist:`2021-47056`, :cve_nist:`2021-47057`, :cve_nist:`2021-47058`, :cve_nist:`2021-47059`, :cve_nist:`2021-47060`, :cve_nist:`2021-47061`, :cve_nist:`2021-47062`, :cve_nist:`2021-47063`, :cve_nist:`2021-47064`, :cve_nist:`2021-47065`, :cve_nist:`2021-47066`, :cve_nist:`2021-47067`, :cve_nist:`2021-47068`, :cve_nist:`2021-47069`, :cve_nist:`2021-47070`, :cve_nist:`2021-47071`, :cve_nist:`2021-47072`, :cve_nist:`2021-47073`, :cve_nist:`2021-47074`, :cve_nist:`2021-47075`, :cve_nist:`2021-47076`, :cve_nist:`2021-47077`, :cve_nist:`2021-47078`, :cve_nist:`2021-47079`, :cve_nist:`2021-47080`, :cve_nist:`2021-47081`, :cve_nist:`2021-47082`, :cve_nist:`2021-47083`, :cve_nist:`2021-47086`, :cve_nist:`2021-47087`, :cve_nist:`2021-47088`, :cve_nist:`2021-47089`, :cve_nist:`2021-47090`, :cve_nist:`2021-47091`, :cve_nist:`2021-47092`, :cve_nist:`2021-47093`, :cve_nist:`2021-47094`, :cve_nist:`2021-47095`, :cve_nist:`2021-47096`, :cve_nist:`2021-47097`, :cve_nist:`2021-47098`, :cve_nist:`2021-47099`, :cve_nist:`2021-47100`, :cve_nist:`2021-47101`, :cve_nist:`2021-47102`, :cve_nist:`2021-47103`, :cve_nist:`2021-47104`, :cve_nist:`2021-47105`, :cve_nist:`2021-47106`, :cve_nist:`2021-47107`, :cve_nist:`2021-47108`, :cve_nist:`2021-47109`, :cve_nist:`2021-47110`, :cve_nist:`2021-47111`, :cve_nist:`2021-47112`, :cve_nist:`2021-47113`, :cve_nist:`2021-47114`, :cve_nist:`2021-47116`, :cve_nist:`2021-47117`, :cve_nist:`2021-47118`, :cve_nist:`2021-47119`, :cve_nist:`2021-47120`, :cve_nist:`2021-47121`, :cve_nist:`2021-47122`, :cve_nist:`2021-47123`, :cve_nist:`2021-47124`, :cve_nist:`2021-47125`, :cve_nist:`2021-47126`, :cve_nist:`2021-47127`, :cve_nist:`2021-47128`, :cve_nist:`2021-47129`, :cve_nist:`2021-47130`, :cve_nist:`2021-47131`, :cve_nist:`2021-47132`, :cve_nist:`2021-47133`, :cve_nist:`2021-47134`, :cve_nist:`2021-47135`, :cve_nist:`2021-47136`, :cve_nist:`2021-47137`, :cve_nist:`2021-47138`, :cve_nist:`2021-47139`, :cve_nist:`2021-47140`, :cve_nist:`2021-47141`, :cve_nist:`2021-47142`, :cve_nist:`2021-47143`, :cve_nist:`2021-47144`, :cve_nist:`2021-47145`, :cve_nist:`2021-47146`, :cve_nist:`2021-47147`, :cve_nist:`2021-47148`, :cve_nist:`2021-47149`, :cve_nist:`2021-47150`, :cve_nist:`2021-47151`, :cve_nist:`2021-47152`, :cve_nist:`2021-47153`, :cve_nist:`2021-47158`, :cve_nist:`2021-47159`, :cve_nist:`2021-47160`, :cve_nist:`2021-47161`, :cve_nist:`2021-47162`, :cve_nist:`2021-47163`, :cve_nist:`2021-47164`, :cve_nist:`2021-47165`, :cve_nist:`2021-47166`, :cve_nist:`2021-47167`, :cve_nist:`2021-47168`, :cve_nist:`2021-47169`, :cve_nist:`2021-47170`, :cve_nist:`2021-47171`, :cve_nist:`2021-47172`, :cve_nist:`2021-47173`, :cve_nist:`2021-47174`, :cve_nist:`2021-47175`, :cve_nist:`2021-47176`, :cve_nist:`2021-47177`, :cve_nist:`2021-47178`, :cve_nist:`2021-47179` and :cve_nist:`2021-47180`
21- linux-yocto/5.15 (cont.): Ignore :cve:`2022-48626`, :cve:`2022-48627`, :cve:`2022-48629`, :cve:`2022-48630`, :cve:`2023-6356`, :cve:`2023-6536`, :cve:`2023-52434`, :cve:`2023-52465`, :cve:`2023-52467`, :cve:`2023-52468`, :cve:`2023-52469`, :cve:`2023-52470`, :cve:`2023-52471`, :cve:`2023-52472`, :cve:`2023-52473`, :cve:`2023-52474`, :cve:`2023-52475`, :cve:`2023-52476`, :cve:`2023-52477`, :cve:`2023-52478`, :cve:`2023-52479`, :cve:`2023-52480`, :cve:`2023-52482`, :cve:`2023-52483`, :cve:`2023-52484`, :cve:`2023-52486`, :cve:`2023-52487`, :cve:`2023-52489`, :cve:`2023-52490`, :cve:`2023-52491`, :cve:`2023-52492`, :cve:`2023-52493`, :cve:`2023-52494`, :cve:`2023-52495`, :cve:`2023-52497`, :cve:`2023-52498`, :cve:`2023-52499`, :cve:`2023-52500`, :cve:`2023-52501`, :cve:`2023-52502`, :cve:`2023-52503`, :cve:`2023-52504`, :cve:`2023-52505`, :cve:`2023-52507`, :cve:`2023-52509`, :cve:`2023-52510`, :cve:`2023-52511`, :cve:`2023-52512`, :cve:`2023-52513`, :cve:`2023-52515`, :cve:`2023-52516`, :cve:`2023-52517`, :cve:`2023-52518`, :cve:`2023-52519`, :cve:`2023-52520`, :cve:`2023-52522`, :cve:`2023-52523`, :cve:`2023-52524`, :cve:`2023-52525`, :cve:`2023-52526`, :cve:`2023-52527`, :cve:`2023-52528`, :cve:`2023-52529`, :cve:`2023-52531`, :cve:`2023-52559`, :cve:`2023-52560`, :cve:`2023-52562`, :cve:`2023-52563`, :cve:`2023-52564`, :cve:`2023-52566`, :cve:`2023-52567`, :cve:`2023-52570`, :cve:`2023-52573`, :cve:`2023-52574`, :cve:`2023-52575`, :cve:`2023-52577`, :cve:`2023-52578`, :cve:`2023-52580`, :cve:`2023-52581`, :cve:`2023-52583`, :cve:`2023-52587`, :cve:`2023-52588`, :cve:`2023-52594`, :cve:`2023-52595`, :cve:`2023-52597`, :cve:`2023-52598`, :cve:`2023-52599`, :cve:`2023-52600`, :cve:`2023-52601`, :cve:`2023-52602`, :cve:`2023-52603`, :cve:`2023-52604`, :cve:`2023-52606`, :cve:`2023-52607`, :cve:`2023-52608`, :cve:`2023-52609`, :cve:`2023-52610`, :cve:`2023-52611`, :cve:`2023-52612`, :cve:`2023-52613`, :cve:`2023-52614`, :cve:`2023-52615`, :cve:`2023-52616`, :cve:`2023-52617`, :cve:`2023-52618`, :cve:`2023-52619`, :cve:`2023-52622`, :cve:`2023-52623`, :cve:`2023-52626`, :cve:`2023-52627`, :cve:`2023-52628`, :cve:`2023-52630`, :cve:`2023-52631`, :cve:`2023-52633`, :cve:`2023-52635`, :cve:`2023-52636`, :cve:`2023-52637`, :cve:`2023-52638`, :cve:`2023-52640`, :cve:`2023-52641`, :cve:`2024-0565`, :cve:`2024-0841`, :cve:`2024-23196`, :cve:`2024-26587`, :cve:`2024-26588`, :cve:`2024-26600`, :cve:`2024-26601`, :cve:`2024-26602`, :cve:`2024-26603`, :cve:`2024-26604`, :cve:`2024-26605`, :cve:`2024-26606`, :cve:`2024-26608`, :cve:`2024-26610`, :cve:`2024-26611`, :cve:`2024-26612`, :cve:`2024-26614`, :cve:`2024-26615`, :cve:`2024-26616`, :cve:`2024-26617`, :cve:`2024-26618`, :cve:`2024-26619`, :cve:`2024-26620`, :cve:`2024-26621`, :cve:`2024-26625`, :cve:`2024-26626`, :cve:`2024-26627`, :cve:`2024-26629`, :cve:`2024-26630`, :cve:`2024-26631`, :cve:`2024-26632`, :cve:`2024-26633`, :cve:`2024-26634`, :cve:`2024-26635`, :cve:`2024-26636`, :cve:`2024-26637`, :cve:`2024-26638`, :cve:`2024-26639`, :cve:`2024-26640`, :cve:`2024-26641`, :cve:`2024-26643`, :cve:`2024-26644`, :cve:`2024-26645`, :cve:`2024-26649`, :cve:`2024-26652`, :cve:`2024-26653`, :cve:`2024-26657`, :cve:`2024-26660`, :cve:`2024-26663`, :cve:`2024-26664`, :cve:`2024-26665`, :cve:`2024-26666`, :cve:`2024-26667`, :cve:`2024-26668`, :cve:`2024-26670`, :cve:`2024-26671`, :cve:`2024-26673`, :cve:`2024-26674`, :cve:`2024-26675`, :cve:`2024-26676`, :cve:`2024-26678`, :cve:`2024-26679`, :cve:`2024-26681`, :cve:`2024-26682`, :cve:`2024-26683`, :cve:`2024-26684`, :cve:`2024-26685`, :cve:`2024-26689`, :cve:`2024-26690`, :cve:`2024-26692`, :cve:`2024-26693`, :cve:`2024-26694`, :cve:`2024-26695`, :cve:`2024-26696`, :cve:`2024-26697`, :cve:`2024-26698`, :cve:`2024-26702`, :cve:`2024-26703`, :cve:`2024-26704`, :cve:`2024-26705`, :cve:`2024-26707`, :cve:`2024-26708`, :cve:`2024-26709`, :cve:`2024-26710`, :cve:`2024-26711`, :cve:`2024-26712`, :cve:`2024-26715`, :cve:`2024-26716`, :cve:`2024-26717`, :cve:`2024-26720`, :cve:`2024-26721`, :cve:`2024-26722`, :cve:`2024-26723`, :cve:`2024-26724`, :cve:`2024-26725`, :cve:`2024-26727`, :cve:`2024-26728`, :cve:`2024-26729`, :cve:`2024-26730`, :cve:`2024-26731`, :cve:`2024-26732`, :cve:`2024-26733`, :cve:`2024-26734`, :cve:`2024-26735`, :cve:`2024-26736`, :cve:`2024-26737`, :cve:`2024-26741`, :cve:`2024-26742`, :cve:`2024-26743`, :cve:`2024-26744`, :cve:`2024-26746`, :cve:`2024-26747`, :cve:`2024-26748`, :cve:`2024-26749`, :cve:`2024-26750`, :cve:`2024-26751`, :cve:`2024-26752`, :cve:`2024-26753`, :cve:`2024-26754`, :cve:`2024-26755`, :cve:`2024-26760`, :cve:`2024-26761`, :cve:`2024-26762`, :cve:`2024-26763`, :cve:`2024-26764`, :cve:`2024-26766`, :cve:`2024-26769`, :cve:`2024-26771`, :cve:`2024-26772`, :cve:`2024-26773`, :cve:`2024-26774`, :cve:`2024-26776`, :cve:`2024-26777`, :cve:`2024-26778`, :cve:`2024-26779`, :cve:`2024-26780`, :cve:`2024-26781`, :cve:`2024-26783`, :cve:`2024-26785`, :cve:`2024-26786`, :cve:`2024-26792`, :cve:`2024-26794`, :cve:`2024-26796`, :cve:`2024-26799`, :cve:`2024-26800`, :cve:`2024-26807` and :cve:`2024-26808` 21- linux-yocto/5.15 (cont.): Ignore :cve_nist:`2022-48626`, :cve_nist:`2022-48627`, :cve_nist:`2022-48629`, :cve_nist:`2022-48630`, :cve_nist:`2023-6356`, :cve_nist:`2023-6536`, :cve_nist:`2023-52434`, :cve_nist:`2023-52465`, :cve_nist:`2023-52467`, :cve_nist:`2023-52468`, :cve_nist:`2023-52469`, :cve_nist:`2023-52470`, :cve_nist:`2023-52471`, :cve_nist:`2023-52472`, :cve_nist:`2023-52473`, :cve_nist:`2023-52474`, :cve_nist:`2023-52475`, :cve_nist:`2023-52476`, :cve_nist:`2023-52477`, :cve_nist:`2023-52478`, :cve_nist:`2023-52479`, :cve_nist:`2023-52480`, :cve_nist:`2023-52482`, :cve_nist:`2023-52483`, :cve_nist:`2023-52484`, :cve_nist:`2023-52486`, :cve_nist:`2023-52487`, :cve_nist:`2023-52489`, :cve_nist:`2023-52490`, :cve_nist:`2023-52491`, :cve_nist:`2023-52492`, :cve_nist:`2023-52493`, :cve_nist:`2023-52494`, :cve_nist:`2023-52495`, :cve_nist:`2023-52497`, :cve_nist:`2023-52498`, :cve_nist:`2023-52499`, :cve_nist:`2023-52500`, :cve_nist:`2023-52501`, :cve_nist:`2023-52502`, :cve_nist:`2023-52503`, :cve_nist:`2023-52504`, :cve_nist:`2023-52505`, :cve_nist:`2023-52507`, :cve_nist:`2023-52509`, :cve_nist:`2023-52510`, :cve_nist:`2023-52511`, :cve_nist:`2023-52512`, :cve_nist:`2023-52513`, :cve_nist:`2023-52515`, :cve_nist:`2023-52516`, :cve_nist:`2023-52517`, :cve_nist:`2023-52518`, :cve_nist:`2023-52519`, :cve_nist:`2023-52520`, :cve_nist:`2023-52522`, :cve_nist:`2023-52523`, :cve_nist:`2023-52524`, :cve_nist:`2023-52525`, :cve_nist:`2023-52526`, :cve_nist:`2023-52527`, :cve_nist:`2023-52528`, :cve_nist:`2023-52529`, :cve_nist:`2023-52531`, :cve_nist:`2023-52559`, :cve_nist:`2023-52560`, :cve_nist:`2023-52562`, :cve_nist:`2023-52563`, :cve_nist:`2023-52564`, :cve_nist:`2023-52566`, :cve_nist:`2023-52567`, :cve_nist:`2023-52570`, :cve_nist:`2023-52573`, :cve_nist:`2023-52574`, :cve_nist:`2023-52575`, :cve_nist:`2023-52577`, :cve_nist:`2023-52578`, :cve_nist:`2023-52580`, :cve_nist:`2023-52581`, :cve_nist:`2023-52583`, :cve_nist:`2023-52587`, :cve_nist:`2023-52588`, :cve_nist:`2023-52594`, :cve_nist:`2023-52595`, :cve_nist:`2023-52597`, :cve_nist:`2023-52598`, :cve_nist:`2023-52599`, :cve_nist:`2023-52600`, :cve_nist:`2023-52601`, :cve_nist:`2023-52602`, :cve_nist:`2023-52603`, :cve_nist:`2023-52604`, :cve_nist:`2023-52606`, :cve_nist:`2023-52607`, :cve_nist:`2023-52608`, :cve_nist:`2023-52609`, :cve_nist:`2023-52610`, :cve_nist:`2023-52611`, :cve_nist:`2023-52612`, :cve_nist:`2023-52613`, :cve_nist:`2023-52614`, :cve_nist:`2023-52615`, :cve_nist:`2023-52616`, :cve_nist:`2023-52617`, :cve_nist:`2023-52618`, :cve_nist:`2023-52619`, :cve_nist:`2023-52622`, :cve_nist:`2023-52623`, :cve_nist:`2023-52626`, :cve_nist:`2023-52627`, :cve_nist:`2023-52628`, :cve_nist:`2023-52630`, :cve_nist:`2023-52631`, :cve_nist:`2023-52633`, :cve_nist:`2023-52635`, :cve_nist:`2023-52636`, :cve_nist:`2023-52637`, :cve_nist:`2023-52638`, :cve_nist:`2023-52640`, :cve_nist:`2023-52641`, :cve_nist:`2024-0565`, :cve_nist:`2024-0841`, :cve_nist:`2024-23196`, :cve_nist:`2024-26587`, :cve_nist:`2024-26588`, :cve_nist:`2024-26600`, :cve_nist:`2024-26601`, :cve_nist:`2024-26602`, :cve_nist:`2024-26603`, :cve_nist:`2024-26604`, :cve_nist:`2024-26605`, :cve_nist:`2024-26606`, :cve_nist:`2024-26608`, :cve_nist:`2024-26610`, :cve_nist:`2024-26611`, :cve_nist:`2024-26612`, :cve_nist:`2024-26614`, :cve_nist:`2024-26615`, :cve_nist:`2024-26616`, :cve_nist:`2024-26617`, :cve_nist:`2024-26618`, :cve_nist:`2024-26619`, :cve_nist:`2024-26620`, :cve_nist:`2024-26621`, :cve_nist:`2024-26625`, :cve_nist:`2024-26626`, :cve_nist:`2024-26627`, :cve_nist:`2024-26629`, :cve_nist:`2024-26630`, :cve_nist:`2024-26631`, :cve_nist:`2024-26632`, :cve_nist:`2024-26633`, :cve_nist:`2024-26634`, :cve_nist:`2024-26635`, :cve_nist:`2024-26636`, :cve_nist:`2024-26637`, :cve_nist:`2024-26638`, :cve_nist:`2024-26639`, :cve_nist:`2024-26640`, :cve_nist:`2024-26641`, :cve_nist:`2024-26643`, :cve_nist:`2024-26644`, :cve_nist:`2024-26645`, :cve_nist:`2024-26649`, :cve_nist:`2024-26652`, :cve_nist:`2024-26653`, :cve_nist:`2024-26657`, :cve_nist:`2024-26660`, :cve_nist:`2024-26663`, :cve_nist:`2024-26664`, :cve_nist:`2024-26665`, :cve_nist:`2024-26666`, :cve_nist:`2024-26667`, :cve_nist:`2024-26668`, :cve_nist:`2024-26670`, :cve_nist:`2024-26671`, :cve_nist:`2024-26673`, :cve_nist:`2024-26674`, :cve_nist:`2024-26675`, :cve_nist:`2024-26676`, :cve_nist:`2024-26678`, :cve_nist:`2024-26679`, :cve_nist:`2024-26681`, :cve_nist:`2024-26682`, :cve_nist:`2024-26683`, :cve_nist:`2024-26684`, :cve_nist:`2024-26685`, :cve_nist:`2024-26689`, :cve_nist:`2024-26690`, :cve_nist:`2024-26692`, :cve_nist:`2024-26693`, :cve_nist:`2024-26694`, :cve_nist:`2024-26695`, :cve_nist:`2024-26696`, :cve_nist:`2024-26697`, :cve_nist:`2024-26698`, :cve_nist:`2024-26702`, :cve_nist:`2024-26703`, :cve_nist:`2024-26704`, :cve_nist:`2024-26705`, :cve_nist:`2024-26707`, :cve_nist:`2024-26708`, :cve_nist:`2024-26709`, :cve_nist:`2024-26710`, :cve_nist:`2024-26711`, :cve_nist:`2024-26712`, :cve_nist:`2024-26715`, :cve_nist:`2024-26716`, :cve_nist:`2024-26717`, :cve_nist:`2024-26720`, :cve_nist:`2024-26721`, :cve_nist:`2024-26722`, :cve_nist:`2024-26723`, :cve_nist:`2024-26724`, :cve_nist:`2024-26725`, :cve_nist:`2024-26727`, :cve_nist:`2024-26728`, :cve_nist:`2024-26729`, :cve_nist:`2024-26730`, :cve_nist:`2024-26731`, :cve_nist:`2024-26732`, :cve_nist:`2024-26733`, :cve_nist:`2024-26734`, :cve_nist:`2024-26735`, :cve_nist:`2024-26736`, :cve_nist:`2024-26737`, :cve_nist:`2024-26741`, :cve_nist:`2024-26742`, :cve_nist:`2024-26743`, :cve_nist:`2024-26744`, :cve_nist:`2024-26746`, :cve_nist:`2024-26747`, :cve_nist:`2024-26748`, :cve_nist:`2024-26749`, :cve_nist:`2024-26750`, :cve_nist:`2024-26751`, :cve_nist:`2024-26752`, :cve_nist:`2024-26753`, :cve_nist:`2024-26754`, :cve_nist:`2024-26755`, :cve_nist:`2024-26760`, :cve_nist:`2024-26761`, :cve_nist:`2024-26762`, :cve_nist:`2024-26763`, :cve_nist:`2024-26764`, :cve_nist:`2024-26766`, :cve_nist:`2024-26769`, :cve_nist:`2024-26771`, :cve_nist:`2024-26772`, :cve_nist:`2024-26773`, :cve_nist:`2024-26774`, :cve_nist:`2024-26776`, :cve_nist:`2024-26777`, :cve_nist:`2024-26778`, :cve_nist:`2024-26779`, :cve_nist:`2024-26780`, :cve_nist:`2024-26781`, :cve_nist:`2024-26783`, :cve_nist:`2024-26785`, :cve_nist:`2024-26786`, :cve_nist:`2024-26792`, :cve_nist:`2024-26794`, :cve_nist:`2024-26796`, :cve_nist:`2024-26799`, :cve_nist:`2024-26800`, :cve_nist:`2024-26807` and :cve_nist:`2024-26808`
22- ncurses: Fix :cve:`2023-45918` 22- ncurses: Fix :cve_nist:`2023-45918`
23- ofono: Fix :cve:`2023-4233` and :cve:`2023-4234` 23- ofono: Fix :cve_nist:`2023-4233` and :cve_nist:`2023-4234`
24- openssl: Fix :cve:`2024-4603` 24- openssl: Fix :cve_nist:`2024-4603`
25- util-linux: Fix :cve:`2024-28085` 25- util-linux: Fix :cve_nist:`2024-28085`
26- xserver-xorg: Fix :cve:`2024-31082` and :cve:`2024-31083` 26- xserver-xorg: Fix :cve_nist:`2024-31082` and :cve_nist:`2024-31083`
27 27
28 28
29Fixes in Yocto-4.0.19 29Fixes in Yocto-4.0.19
30~~~~~~~~~~~~~~~~~~~~~ 30~~~~~~~~~~~~~~~~~~~~~
31 31
32- binutils: Rename CVE-2022-38126 patch to :cve:`2022-35205` 32- binutils: Rename CVE-2022-38126 patch to :cve_nist:`2022-35205`
33- bitbake: parse: Improve/fix cache invalidation via mtime 33- bitbake: parse: Improve/fix cache invalidation via mtime
34- build-appliance-image: Update to kirkstone head revision 34- build-appliance-image: Update to kirkstone head revision
35- go-mod.bbclass: do not pack go mod cache 35- go-mod.bbclass: do not pack go mod cache
diff --git a/documentation/migration-guides/release-notes-4.0.2.rst b/documentation/migration-guides/release-notes-4.0.2.rst
index 2f724e33c4..57881fa359 100644
--- a/documentation/migration-guides/release-notes-4.0.2.rst
+++ b/documentation/migration-guides/release-notes-4.0.2.rst
@@ -6,13 +6,13 @@ Release notes for Yocto-4.0.2 (Kirkstone)
6Security Fixes in Yocto-4.0.2 6Security Fixes in Yocto-4.0.2
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- libxslt: Mark :cve:`2022-29824` as not applying 9- libxslt: Mark :cve_nist:`2022-29824` as not applying
10- tiff: Add jbig :term:`PACKAGECONFIG` and clarify IGNORE :cve:`2022-1210` 10- tiff: Add jbig :term:`PACKAGECONFIG` and clarify IGNORE :cve_nist:`2022-1210`
11- tiff: mark :cve:`2022-1622` and :cve:`2022-1623` as invalid 11- tiff: mark :cve_nist:`2022-1622` and :cve_nist:`2022-1623` as invalid
12- pcre2:fix :cve:`2022-1586` Out-of-bounds read 12- pcre2:fix :cve_nist:`2022-1586` Out-of-bounds read
13- curl: fix :cve:`2022-22576`, :cve:`2022-27775`, :cve:`2022-27776`, :cve:`2022-27774`, :cve:`2022-30115`, :cve:`2022-27780`, :cve:`2022-27781`, :cve:`2022-27779` and :cve:`2022-27782` 13- curl: fix :cve_nist:`2022-22576`, :cve_nist:`2022-27775`, :cve_nist:`2022-27776`, :cve_nist:`2022-27774`, :cve_nist:`2022-30115`, :cve_nist:`2022-27780`, :cve_nist:`2022-27781`, :cve_nist:`2022-27779` and :cve_nist:`2022-27782`
14- qemu: fix :cve:`2021-4206` and :cve:`2021-4207` 14- qemu: fix :cve_nist:`2021-4206` and :cve_nist:`2021-4207`
15- freetype: fix :cve:`2022-27404`, :cve:`2022-27405` and :cve:`2022-27406` 15- freetype: fix :cve_nist:`2022-27404`, :cve_nist:`2022-27405` and :cve_nist:`2022-27406`
16 16
17Fixes in Yocto-4.0.2 17Fixes in Yocto-4.0.2
18~~~~~~~~~~~~~~~~~~~~ 18~~~~~~~~~~~~~~~~~~~~
diff --git a/documentation/migration-guides/release-notes-4.0.20.rst b/documentation/migration-guides/release-notes-4.0.20.rst
index 97e0a3e91d..d0f95fff50 100644
--- a/documentation/migration-guides/release-notes-4.0.20.rst
+++ b/documentation/migration-guides/release-notes-4.0.20.rst
@@ -6,14 +6,14 @@ Release notes for Yocto-4.0.20 (Kirkstone)
6Security Fixes in Yocto-4.0.20 6Security Fixes in Yocto-4.0.20
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- acpica: Fix :cve:`2024-24856` 9- acpica: Fix :cve_nist:`2024-24856`
10- glib-2.0: Fix :cve:`2024-34397` 10- glib-2.0: Fix :cve_nist:`2024-34397`
11- gstreamer1.0-plugins-base: Fix :cve:`2024-4453` 11- gstreamer1.0-plugins-base: Fix :cve_nist:`2024-4453`
12- libxml2: Fix :cve:`2024-34459` 12- libxml2: Fix :cve_nist:`2024-34459`
13- openssh: fix :cve:`2024-6387` 13- openssh: fix :cve_nist:`2024-6387`
14- openssl: Fix :cve_mitre:`2024-4741` and :cve:`2024-5535` 14- openssl: Fix :cve_mitre:`2024-4741` and :cve_nist:`2024-5535`
15- ruby: fix :cve:`2024-27280` 15- ruby: fix :cve_nist:`2024-27280`
16- wget: Fix for :cve:`2024-38428` 16- wget: Fix for :cve_nist:`2024-38428`
17 17
18 18
19Fixes in Yocto-4.0.20 19Fixes in Yocto-4.0.20
diff --git a/documentation/migration-guides/release-notes-4.0.21.rst b/documentation/migration-guides/release-notes-4.0.21.rst
new file mode 100644
index 0000000000..abf2199ee5
--- /dev/null
+++ b/documentation/migration-guides/release-notes-4.0.21.rst
@@ -0,0 +1,166 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-4.0.21 (Kirkstone)
4------------------------------------------
5
6Security Fixes in Yocto-4.0.21
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- bind: Fix :cve_nist:`2024-4076`, :cve_nist:`2024-1737`, :cve_nist:`2024-0760` and :cve_nist:`2024-1975`
10- apr: Fix :cve_nist:`2023-49582`
11- busybox: Fix :cve_nist:`2023-42363`, :cve_nist:`2023-42364`, :cve_nist:`2023-42365`, :cve_nist:`2023-42366` and :cve_nist:`2021-42380`
12- curl: Ignore :cve_nist:`2024-32928`
13- curl: Fix :cve_nist:`2024-7264`
14- ghostscript: Fix :cve_nist:`2024-29506`, :cve_nist:`2024-29509` and :cve_nist:`2024-29511`
15- go: Fix :cve_nist:`2024-24789` and :cve_nist:`2024-24791`
16- gtk+3: Fix :cve_nist:`2024-6655`
17- libarchive: Ignore :cve_nist:`2024-37407`
18- libyaml: Ignore :cve_nist:`2024-35325`, :cve_nist:`2024-35326` and :cve_nist:`2024-35328`
19- linux-yocto/5.15: Fix :cve_nist:`2022-48772`, :cve_nist:`2024-35972`, :cve_nist:`2024-35984`, :cve_nist:`2024-35990`, :cve_nist:`2024-35997`, :cve_nist:`2024-36008`, :cve_nist:`2024-36270`, :cve_nist:`2024-36489`, :cve_nist:`2024-36897`, :cve_nist:`2024-36938`, :cve_nist:`2024-36965`, :cve_nist:`2024-36967`, :cve_nist:`2024-36969`, :cve_nist:`2024-36971`, :cve_nist:`2024-36978`, :cve_nist:`2024-38546`, :cve_nist:`2024-38547`, :cve_nist:`2024-38549`, :cve_nist:`2024-38552`, :cve_nist:`2024-38555`, :cve_nist:`2024-38571`, :cve_nist:`2024-38583`, :cve_nist:`2024-38591`, :cve_nist:`2024-38597`, :cve_nist:`2024-38598`, :cve_nist:`2024-38600`, :cve_nist:`2024-38627`, :cve_nist:`2024-38633`, :cve_nist:`2024-38661`, :cve_nist:`2024-38662`, :cve_nist:`2024-38780`, :cve_nist:`2024-39277`, :cve_nist:`2024-39292`, :cve_nist:`2024-39301`, :cve_nist:`2024-39466`, :cve_nist:`2024-39468`, :cve_nist:`2024-39471`, :cve_nist:`2024-39475`, :cve_nist:`2024-39476`, :cve_nist:`2024-39480`, :cve_nist:`2024-39482`, :cve_nist:`2024-39484`, :cve_nist:`2024-39487`, :cve_nist:`2024-39489`, :cve_nist:`2024-39493`, :cve_nist:`2024-39495`, :cve_nist:`2024-39506`, :cve_nist:`2024-40902`, :cve_nist:`2024-40911`, :cve_nist:`2024-40912`, :cve_nist:`2024-40932`, :cve_nist:`2024-40934`, :cve_nist:`2024-40954`, :cve_nist:`2024-40956`, :cve_nist:`2024-40957`, :cve_nist:`2024-40958`, :cve_nist:`2024-40959`, :cve_nist:`2024-40960`, :cve_nist:`2024-40961`, :cve_nist:`2024-40967`, :cve_nist:`2024-40970`, :cve_nist:`2024-40980`, :cve_nist:`2024-40981`, :cve_nist:`2024-40994`, :cve_nist:`2024-40995`, :cve_nist:`2024-41000`, :cve_nist:`2024-41002`, :cve_nist:`2024-41006`, :cve_nist:`2024-41007`, :cve_nist:`2024-41046`, :cve_nist:`2024-41049`, :cve_nist:`2024-41055`, :cve_nist:`2024-41064`, :cve_nist:`2024-41070`, :cve_nist:`2024-41073`, :cve_nist:`2024-41087`, :cve_nist:`2024-41089`, :cve_nist:`2024-41092`, :cve_nist:`2024-41093`, :cve_nist:`2024-41095`, :cve_nist:`2024-41097`, :cve_nist:`2024-42068`, :cve_nist:`2024-42070`, :cve_nist:`2024-42076`, :cve_nist:`2024-42077`, :cve_nist:`2024-42080`, :cve_nist:`2024-42082`, :cve_nist:`2024-42085`, :cve_nist:`2024-42090`, :cve_nist:`2024-42093`, :cve_nist:`2024-42094`, :cve_nist:`2024-42101`, :cve_nist:`2024-42102`, :cve_nist:`2024-42104`, :cve_nist:`2024-42109`, :cve_nist:`2024-42140`, :cve_nist:`2024-42148`, :cve_nist:`2024-42152`, :cve_nist:`2024-42153`, :cve_nist:`2024-42154`, :cve_nist:`2024-42157`, :cve_nist:`2024-42161`, :cve_nist:`2024-42223`, :cve_nist:`2024-42224`, :cve_nist:`2024-42225`, :cve_nist:`2024-42229`, :cve_nist:`2024-42232`, :cve_nist:`2024-42236`, :cve_nist:`2024-42244` and :cve_nist:`2024-42247`
20- llvm: Fix :cve_nist:`2023-46049` and :cve_nist:`2024-31852`
21- ofono: fix :cve_nist:`2023-2794`
22- orc: Fix :cve_nist:`2024-40897`
23- python3-certifi: Fix :cve_nist:`2024-39689`
24- python3-jinja2: Fix :cve_nist:`2024-34064`
25- python3: Fix :cve_nist:`2024-8088`
26- qemu: Fix :cve_nist:`2024-7409`
27- ruby: Fix for :cve_nist:`2024-27282`
28- tiff: Fix :cve_nist:`2024-7006`
29- vim: Fix :cve_nist:`2024-22667`, :cve_nist:`2024-41957`, :cve_nist:`2024-41965` and :cve_nist:`2024-43374`
30- wpa-supplicant: Fix :cve_nist:`2023-52160`
31
32
33Fixes in Yocto-4.0.21
34~~~~~~~~~~~~~~~~~~~~~
35
36- apr: upgrade to 1.7.5
37- bind: Upgrade to 9.18.28
38- bitbake: data_smart: Improve performance for VariableHistory
39- build-appliance-image: Update to kirkstone head revision
40- cryptodev-module: Fix build for linux 5.10.220
41- gcc-runtime: remove bashism
42- grub: fs/fat: Don't error when mtime is 0
43- image_types.bbclass: Use --force also with lz4,lzop
44- libsoup: fix compile error on centos7
45- linux-yocto/5.15: upgrade to v5.15.164
46- lttng-modules: Upgrade to 2.13.14
47- migration-guide: add release notes for 4.0.20
48- orc: upgrade to 0.4.39
49- poky.conf: bump version for 4.0.21
50- python3-jinja2: upgrade to 3.1.4
51- python3-pycryptodome(x): use python_setuptools_build_meta build class
52- python3: add PACKAGECONFIG[editline]
53- ref-manual: fix typo and move :term:`SYSROOT_DIRS` example
54- sqlite3: CVE_ID correction for :cve_nist:`2023-7104` as patched
55- sqlite3: Rename patch for :cve_nist:`2022-35737`
56- uboot-sign: Fix index error in concat_dtb_helper() with multiple configs
57- vim: upgrade to 9.1.0682
58- wireless-regdb: upgrade to 2024.07.04
59
60
61Known Issues in Yocto-4.0.21
62~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63
64- N/A
65
66
67Contributors to Yocto-4.0.21
68~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69
70- Archana Polampalli
71- Ashish Sharma
72- Bruce Ashfield
73- Deepthi Hemraj
74- Divya Chellam
75- Florian Amstutz
76- Guocai He
77- Hitendra Prajapati
78- Hugo SIMELIERE
79- Lee Chee Yang
80- Leon Anavi
81- Matthias Pritschet
82- Ming Liu
83- Niko Mauno
84- Peter Marko
85- Robert Yang
86- Rohini Sangam
87- Ross Burton
88- Siddharth Doshi
89- Soumya Sambu
90- Steve Sakoman
91- Vijay Anusuri
92- Vrushti Dabhi
93- Wang Mingyu
94- Yogita Urade
95
96
97Repositories / Downloads for Yocto-4.0.21
98~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
99
100poky
101
102- Repository Location: :yocto_git:`/poky`
103- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
104- Tag: :yocto_git:`yocto-4.0.21 </poky/log/?h=yocto-4.0.21>`
105- Git Revision: :yocto_git:`4cdc553814640851cce85f84ee9c0b58646cd33b </poky/commit/?id=4cdc553814640851cce85f84ee9c0b58646cd33b>`
106- Release Artefact: poky-4cdc553814640851cce85f84ee9c0b58646cd33b
107- sha: 460e3a4ede491a9b66c5d262cd9498d5bcca1f2d880885342b08dc32b967f33d
108- Download Locations:
109 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.21/poky-4cdc553814640851cce85f84ee9c0b58646cd33b.tar.bz2
110 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.21/poky-4cdc553814640851cce85f84ee9c0b58646cd33b.tar.bz2
111
112openembedded-core
113
114- Repository Location: :oe_git:`/openembedded-core`
115- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
116- Tag: :oe_git:`yocto-4.0.21 </openembedded-core/log/?h=yocto-4.0.21>`
117- Git Revision: :oe_git:`c40a3fec49942ac6d25ba33e57e801a550e252c9 </openembedded-core/commit/?id=c40a3fec49942ac6d25ba33e57e801a550e252c9>`
118- Release Artefact: oecore-c40a3fec49942ac6d25ba33e57e801a550e252c9
119- sha: afc2aaf312f9fb2590ae006615557ec605c98eff42bc380a1b2d6e39cfdf8930
120- Download Locations:
121 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.21/oecore-c40a3fec49942ac6d25ba33e57e801a550e252c9.tar.bz2
122 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.21/oecore-c40a3fec49942ac6d25ba33e57e801a550e252c9.tar.bz2
123
124meta-mingw
125
126- Repository Location: :yocto_git:`/meta-mingw`
127- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
128- Tag: :yocto_git:`yocto-4.0.21 </meta-mingw/log/?h=yocto-4.0.21>`
129- Git Revision: :yocto_git:`f6b38ce3c90e1600d41c2ebb41e152936a0357d7 </meta-mingw/commit/?id=f6b38ce3c90e1600d41c2ebb41e152936a0357d7>`
130- Release Artefact: meta-mingw-f6b38ce3c90e1600d41c2ebb41e152936a0357d7
131- sha: 7d57167c19077f4ab95623d55a24c2267a3a3fb5ed83688659b4c03586373b25
132- Download Locations:
133 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.21/meta-mingw-f6b38ce3c90e1600d41c2ebb41e152936a0357d7.tar.bz2
134 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.21/meta-mingw-f6b38ce3c90e1600d41c2ebb41e152936a0357d7.tar.bz2
135
136meta-gplv2
137
138- Repository Location: :yocto_git:`/meta-gplv2`
139- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
140- Tag: :yocto_git:`yocto-4.0.21 </meta-gplv2/log/?h=yocto-4.0.21>`
141- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
142- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
143- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
144- Download Locations:
145 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.21/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
146 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.21/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
147
148bitbake
149
150- Repository Location: :oe_git:`/bitbake`
151- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
152- Tag: :oe_git:`yocto-4.0.21 </bitbake/log/?h=yocto-4.0.21>`
153- Git Revision: :oe_git:`ec2a99a077da9aa0e99e8b05e0c65dcbd45864b1 </bitbake/commit/?id=ec2a99a077da9aa0e99e8b05e0c65dcbd45864b1>`
154- Release Artefact: bitbake-ec2a99a077da9aa0e99e8b05e0c65dcbd45864b1
155- sha: 1cb102f4c8dbd067f0262072e4e629ec7cb423103111ccdde75a09fcb8f55e5f
156- Download Locations:
157 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.21/bitbake-ec2a99a077da9aa0e99e8b05e0c65dcbd45864b1.tar.bz2
158 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.21/bitbake-ec2a99a077da9aa0e99e8b05e0c65dcbd45864b1.tar.bz2
159
160yocto-docs
161
162- Repository Location: :yocto_git:`/yocto-docs`
163- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
164- Tag: :yocto_git:`yocto-4.0.21 </yocto-docs/log/?h=yocto-4.0.21>`
165- Git Revision: :yocto_git:`512025edd9b3b6b8d0938b35bb6188c9f3b7f17d </yocto-docs/commit/?id=512025edd9b3b6b8d0938b35bb6188c9f3b7f17d>`
166
diff --git a/documentation/migration-guides/release-notes-4.0.22.rst b/documentation/migration-guides/release-notes-4.0.22.rst
new file mode 100644
index 0000000000..b2b98bd907
--- /dev/null
+++ b/documentation/migration-guides/release-notes-4.0.22.rst
@@ -0,0 +1,196 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-4.0.22 (Kirkstone)
4------------------------------------------
5
6Security Fixes in Yocto-4.0.22
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- cups: Fix :cve_nist:`2024-35235` and :cve_nist:`2024-47175`
10- curl: Fix :cve_nist:`2024-8096`
11- expat: Fix :cve_nist:`2024-45490`, :cve_nist:`2024-45491` and :cve_nist:`2024-45492`
12- gnupg: Ignore :cve_nist:`2022-3219`
13- libpcap: Fix :cve_nist:`2023-7256` and :cve_nist:`2024-8006`
14- linux-yocto/5.10: Fix :cve_nist:`2022-48772`, :cve_nist:`2023-52434`, :cve_nist:`2023-52447`, :cve_nist:`2023-52458`, :cve_nist:`2024-0841`, :cve_nist:`2024-26601`, :cve_nist:`2024-26882`, :cve_nist:`2024-26883`, :cve_nist:`2024-26884`, :cve_nist:`2024-26885`, :cve_nist:`2024-26898`, :cve_nist:`2024-26901`, :cve_nist:`2024-26903`, :cve_nist:`2024-26907`, :cve_nist:`2024-26934`, :cve_nist:`2024-26978`, :cve_nist:`2024-27013`, :cve_nist:`2024-27020`, :cve_nist:`2024-35972`, :cve_nist:`2024-35978`, :cve_nist:`2024-35982`, :cve_nist:`2024-35984`, :cve_nist:`2024-35990`, :cve_nist:`2024-35997`, :cve_nist:`2024-36008`, :cve_nist:`2024-36270`, :cve_nist:`2024-36489`, :cve_nist:`2024-36902`, :cve_nist:`2024-36971`, :cve_nist:`2024-36978`, :cve_nist:`2024-38546`, :cve_nist:`2024-38547`, :cve_nist:`2024-38549`, :cve_nist:`2024-38552`, :cve_nist:`2024-38555`, :cve_nist:`2024-38583`, :cve_nist:`2024-38590`, :cve_nist:`2024-38597`, :cve_nist:`2024-38598`, :cve_nist:`2024-38627`, :cve_nist:`2024-38633`, :cve_nist:`2024-38661`, :cve_nist:`2024-38662`, :cve_nist:`2024-38780`, :cve_nist:`2024-39292`, :cve_nist:`2024-39301`, :cve_nist:`2024-39468`, :cve_nist:`2024-39471`, :cve_nist:`2024-39475`, :cve_nist:`2024-39476`, :cve_nist:`2024-39480`, :cve_nist:`2024-39482`, :cve_nist:`2024-39484`, :cve_nist:`2024-39487`, :cve_nist:`2024-39489`, :cve_nist:`2024-39495`, :cve_nist:`2024-39506`, :cve_nist:`2024-40902`, :cve_nist:`2024-40904`, :cve_nist:`2024-40905`, :cve_nist:`2024-40912`, :cve_nist:`2024-40932`, :cve_nist:`2024-40934`, :cve_nist:`2024-40958`, :cve_nist:`2024-40959`, :cve_nist:`2024-40960`, :cve_nist:`2024-40961`, :cve_nist:`2024-40980`, :cve_nist:`2024-40981`, :cve_nist:`2024-40995`, :cve_nist:`2024-41000`, :cve_nist:`2024-41006`, :cve_nist:`2024-41007`, :cve_nist:`2024-41012`, :cve_nist:`2024-41040`, :cve_nist:`2024-41046`, :cve_nist:`2024-41049`, :cve_nist:`2024-41059`, :cve_nist:`2024-41063`, :cve_nist:`2024-41064`, :cve_nist:`2024-41070`, :cve_nist:`2024-41087`, :cve_nist:`2024-41089`, :cve_nist:`2024-41092`, :cve_nist:`2024-41095`, :cve_nist:`2024-41097`, :cve_nist:`2024-42070`, :cve_nist:`2024-42076`, :cve_nist:`2024-42077`, :cve_nist:`2024-42082`, :cve_nist:`2024-42090`, :cve_nist:`2024-42093`, :cve_nist:`2024-42094`, :cve_nist:`2024-42101`, :cve_nist:`2024-42102`, :cve_nist:`2024-42104`, :cve_nist:`2024-42131`, :cve_nist:`2024-42137`, :cve_nist:`2024-42148`, :cve_nist:`2024-42152`, :cve_nist:`2024-42153`, :cve_nist:`2024-42154`, :cve_nist:`2024-42157`, :cve_nist:`2024-42161`, :cve_nist:`2024-42223`, :cve_nist:`2024-42224`, :cve_nist:`2024-42229`, :cve_nist:`2024-42232`, :cve_nist:`2024-42236`, :cve_nist:`2024-42244` and :cve_nist:`2024-42247`
15- linux-yocto/5.15: Fix :cve_nist:`2023-52889`, :cve_nist:`2024-41011`, :cve_nist:`2024-42114`, :cve_nist:`2024-42259`, :cve_nist:`2024-42271`, :cve_nist:`2024-42272`, :cve_nist:`2024-42277`, :cve_nist:`2024-42280`, :cve_nist:`2024-42283`, :cve_nist:`2024-42284`, :cve_nist:`2024-42285`, :cve_nist:`2024-42286`, :cve_nist:`2024-42287`, :cve_nist:`2024-42288`, :cve_nist:`2024-42289`, :cve_nist:`2024-42301`, :cve_nist:`2024-42302`, :cve_nist:`2024-42309`, :cve_nist:`2024-42310`, :cve_nist:`2024-42311`, :cve_nist:`2024-42313`, :cve_nist:`2024-43817`, :cve_nist:`2024-43828`, :cve_nist:`2024-43854`, :cve_nist:`2024-43856`, :cve_nist:`2024-43858`, :cve_nist:`2024-43860`, :cve_nist:`2024-43861`, :cve_nist:`2024-43863`, :cve_nist:`2024-43871`, :cve_nist:`2024-43873`, :cve_nist:`2024-43882`, :cve_nist:`2024-43889`, :cve_nist:`2024-43890`, :cve_nist:`2024-43893`, :cve_nist:`2024-43894`, :cve_nist:`2024-43902`, :cve_nist:`2024-43907`, :cve_nist:`2024-43908`, :cve_nist:`2024-43909`, :cve_nist:`2024-43914`, :cve_nist:`2024-44934`, :cve_nist:`2024-44935`, :cve_nist:`2024-44944`, :cve_nist:`2024-44947`, :cve_nist:`2024-44952`, :cve_nist:`2024-44954`, :cve_nist:`2024-44958`, :cve_nist:`2024-44960`, :cve_nist:`2024-44965`, :cve_nist:`2024-44966`, :cve_nist:`2024-44969`, :cve_nist:`2024-44971`, :cve_nist:`2024-44982`, :cve_nist:`2024-44983`, :cve_nist:`2024-44985`, :cve_nist:`2024-44986`, :cve_nist:`2024-44987`, :cve_nist:`2024-44988`, :cve_nist:`2024-44989`, :cve_nist:`2024-44990`, :cve_nist:`2024-44995`, :cve_nist:`2024-44998`, :cve_nist:`2024-44999`, :cve_nist:`2024-45003`, :cve_nist:`2024-45006`, :cve_nist:`2024-45011`, :cve_nist:`2024-45016`, :cve_nist:`2024-45018`, :cve_nist:`2024-45021`, :cve_nist:`2024-45025`, :cve_nist:`2024-45026`, :cve_nist:`2024-45028`, :cve_nist:`2024-46673`, :cve_nist:`2024-46674`, :cve_nist:`2024-46675`, :cve_nist:`2024-46676`, :cve_nist:`2024-46677`, :cve_nist:`2024-46679`, :cve_nist:`2024-46685`, :cve_nist:`2024-46689`, :cve_nist:`2024-46702` and :cve_nist:`2024-46707`
16- openssl: Fix :cve_nist:`2024-6119`
17- procps: Fix :cve_nist:`2023-4016`
18- python3: Fix :cve_nist:`2023-27043`, :cve_nist:`2024-4030`, :cve_nist:`2024-4032`, :cve_nist:`2024-6923`, :cve_nist:`2024-6232`, :cve_nist:`2024-7592` and :cve_nist:`2024-8088`
19- qemu: Fix :cve_nist:`2024-4467`
20- rust: Ignore :cve_nist:`2024-43402`
21- webkitgtk: Fix :cve_nist:`2024-40779`
22- wpa-supplicant: Ignore :cve_nist:`2024-5290`
23- wpa-supplicant: Fix :cve_nist:`2024-3596`
24
25
26Fixes in Yocto-4.0.22
27~~~~~~~~~~~~~~~~~~~~~
28
29- bintuils: stable 2.38 branch update
30- bitbake: fetch2/wget: Canonicalize :term:`DL_DIR` paths for wget2 compatibility
31- bitbake: fetch/wget: Move files into place atomically
32- bitbake: hashserv: tests: Omit client in slow server start test
33- bitbake: tests/fetch: Tweak to work on Fedora40
34- bitbake: wget: Make wget --passive-ftp option conditional on ftp/ftps
35- build-appliance-image: Update to kirkstone head revision
36- buildhistory: Fix intermittent package file list creation
37- buildhistory: Restoring files from preserve list
38- buildhistory: Simplify intercept call sites and drop SSTATEPOSTINSTFUNC usage
39- busybox: Fix cut with "-s" flag
40- cdrtools-native: fix build with gcc-14
41- curl: free old conn better on reuse
42- cve-exclusion: Drop the version comparision/warning
43- dejagnu: Fix :term:`LICENSE` (change to GPL-3.0-only)
44- doc/features: remove duplicate word in distribution feature ext2
45- gcc: upgrade to v11.5
46- gcr: Fix :term:`LICENSE` (change to LGPL-2.0-only)
47- glibc: stable 2.35 branch updates
48- install-buildtools: fix "test installation" step
49- install-buildtools: remove md5 checksum validation
50- install-buildtools: support buildtools-make-tarball and update to 4.1
51- iw: Fix :term:`LICENSE` (change to ISC)
52- kmscube: Add patch to fix -int-conversion build error
53- lib/oeqa: rename assertRaisesRegexp to assertRaisesRegex
54- libedit: Make docs generation deterministic
55- linux-yocto/5.10: fix NFSV3 config warning
56- linux-yocto/5.10: remove obsolete options
57- linux-yocto/5.10: update to v5.10.223
58- linux-yocto/5.15: update to v5.15.166
59- meta-world-pkgdata: Inherit nopackages
60- migration-guide: add release notes for 4.0.21
61- openssl: Upgrade to 3.0.15
62- poky.conf: bump version for 4.0.22
63- populate_sdk_base: inherit nopackages
64- python3: Upgrade to 3.10.15
65- ruby: Make docs generation deterministic
66- runqemu: keep generating tap devices
67- scripts/install-buildtools: Update to 4.0.21
68- selftest/runtime_test/virgl: Disable for all fedora
69- testexport: fallback for empty :term:`IMAGE_LINK_NAME`
70- testimage: fallback for empty :term:`IMAGE_LINK_NAME`
71- tiff: Fix :term:`LICENSE` (change to libtiff)
72- udev-extraconf: Add collect flag to mount
73- unzip: Fix :term:`LICENSE` (change to Info-ZIP)
74- valgrind: disable avx_estimate_insn.vgtest
75- wpa-supplicant: Patch security advisory 2024-2
76- yocto-uninative: Update to 4.5 for gcc 14
77- yocto-uninative: Update to 4.6 for glibc 2.40
78- zip: Fix :term:`LICENSE` (change to Info-ZIP)
79- zstd: fix :term:`LICENSE` statement (change to "BSD-3-Clause | GPL-2.0-only")
80
81
82Known Issues in Yocto-4.0.22
83~~~~~~~~~~~~~~~~~~~~~~~~~~~~
84
85- ``oeqa/runtime``: the ``beaglebone-yocto`` target fails the ``parselogs``
86 runtime test due to unexpected kernel error messages in the log (see
87 :yocto_bugs:`bug 15624 </show_bug.cgi?id=15624>` on Bugzilla).
88
89
90Contributors to Yocto-4.0.22
91~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92
93- Aleksandar Nikolic
94- Alexandre Belloni
95- Archana Polampalli
96- Bruce Ashfield
97- Colin McAllister
98- Deepthi Hemraj
99- Divya Chellam
100- Hitendra Prajapati
101- Hugo SIMELIERE
102- Jinfeng Wang
103- Joshua Watt
104- Jörg Sommer
105- Konrad Weihmann
106- Lee Chee Yang
107- Martin Jansa
108- Massimiliano Minella
109- Michael Halstead
110- Mingli Yu
111- Niko Mauno
112- Paul Eggleton
113- Pedro Ferreira
114- Peter Marko
115- Purushottam Choudhary
116- Richard Purdie
117- Rob Woolley
118- Rohini Sangam
119- Ross Burton
120- Rudolf J Streif
121- Siddharth Doshi
122- Steve Sakoman
123- Vijay Anusuri
124- Vivek Kumbhar
125
126
127Repositories / Downloads for Yocto-4.0.22
128~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
129
130poky
131
132- Repository Location: :yocto_git:`/poky`
133- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
134- Tag: :yocto_git:`yocto-4.0.22 </poky/log/?h=yocto-4.0.22>`
135- Git Revision: :yocto_git:`7e87dc422d972e0dc98372318fcdc63a76347d16 </poky/commit/?id=7e87dc422d972e0dc98372318fcdc63a76347d16>`
136- Release Artefact: poky-7e87dc422d972e0dc98372318fcdc63a76347d16
137- sha: 5058e7b2474f8cb73c19e776ef58d9784321ef42109d5982747c8c432531239f
138- Download Locations:
139 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.22/poky-7e87dc422d972e0dc98372318fcdc63a76347d16.tar.bz2
140 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.22/poky-7e87dc422d972e0dc98372318fcdc63a76347d16.tar.bz2
141
142openembedded-core
143
144- Repository Location: :oe_git:`/openembedded-core`
145- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
146- Tag: :oe_git:`yocto-4.0.22 </openembedded-core/log/?h=yocto-4.0.22>`
147- Git Revision: :oe_git:`f09fca692f96c9c428e89c5ef53fbcb92ac0c9bf </openembedded-core/commit/?id=f09fca692f96c9c428e89c5ef53fbcb92ac0c9bf>`
148- Release Artefact: oecore-f09fca692f96c9c428e89c5ef53fbcb92ac0c9bf
149- sha: 378bcc840ba9fbf06a15fea1b5dacdd446f3ad4d85115d708e7bbb20629cdeb4
150- Download Locations:
151 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.22/oecore-f09fca692f96c9c428e89c5ef53fbcb92ac0c9bf.tar.bz2
152 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.22/oecore-f09fca692f96c9c428e89c5ef53fbcb92ac0c9bf.tar.bz2
153
154meta-mingw
155
156- Repository Location: :yocto_git:`/meta-mingw`
157- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
158- Tag: :yocto_git:`yocto-4.0.22 </meta-mingw/log/?h=yocto-4.0.22>`
159- Git Revision: :yocto_git:`f6b38ce3c90e1600d41c2ebb41e152936a0357d7 </meta-mingw/commit/?id=f6b38ce3c90e1600d41c2ebb41e152936a0357d7>`
160- Release Artefact: meta-mingw-f6b38ce3c90e1600d41c2ebb41e152936a0357d7
161- sha: 7d57167c19077f4ab95623d55a24c2267a3a3fb5ed83688659b4c03586373b25
162- Download Locations:
163 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.22/meta-mingw-f6b38ce3c90e1600d41c2ebb41e152936a0357d7.tar.bz2
164 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.22/meta-mingw-f6b38ce3c90e1600d41c2ebb41e152936a0357d7.tar.bz2
165
166meta-gplv2
167
168- Repository Location: :yocto_git:`/meta-gplv2`
169- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
170- Tag: :yocto_git:`yocto-4.0.22 </meta-gplv2/log/?h=yocto-4.0.22>`
171- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
172- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
173- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
174- Download Locations:
175 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.22/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
176 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.22/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
177
178bitbake
179
180- Repository Location: :oe_git:`/bitbake`
181- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
182- Tag: :oe_git:`yocto-4.0.22 </bitbake/log/?h=yocto-4.0.22>`
183- Git Revision: :oe_git:`eb5c1ce6b1b8f33535ff7b9263ec7648044163ea </bitbake/commit/?id=eb5c1ce6b1b8f33535ff7b9263ec7648044163ea>`
184- Release Artefact: bitbake-eb5c1ce6b1b8f33535ff7b9263ec7648044163ea
185- sha: 473d3e9539160633f3de9d88cce69123f6c623e4c8ab35beb7875868564593cf
186- Download Locations:
187 http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.22/bitbake-eb5c1ce6b1b8f33535ff7b9263ec7648044163ea.tar.bz2
188 http://mirrors.kernel.org/yocto/yocto/yocto-4.0.22/bitbake-eb5c1ce6b1b8f33535ff7b9263ec7648044163ea.tar.bz2
189
190yocto-docs
191
192- Repository Location: :yocto_git:`/yocto-docs`
193- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
194- Tag: :yocto_git:`yocto-4.0.22 </yocto-docs/log/?h=yocto-4.0.22>`
195- Git Revision: :yocto_git:`2169a52a24ebd1906039c42632bae6c4285a3aca </yocto-docs/commit/?id=2169a52a24ebd1906039c42632bae6c4285a3aca>`
196
diff --git a/documentation/migration-guides/release-notes-4.0.23.rst b/documentation/migration-guides/release-notes-4.0.23.rst
new file mode 100644
index 0000000000..abf7c69759
--- /dev/null
+++ b/documentation/migration-guides/release-notes-4.0.23.rst
@@ -0,0 +1,209 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-4.0.23 (Kirkstone)
4------------------------------------------
5
6Security Fixes in Yocto-4.0.23
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- ``curl``: Fix :cve_nist:`2024-9681`
10- ``expat``: Fix :cve_nist:`2024-50602`
11- ``gcc``: Ignore :cve_nist:`2023-4039`
12- ``ghostscript``: Fix :cve_nist:`2023-46361` and :cve_nist:`2024-29508`
13- ``gstreamer1.0``: Ignore :cve_nist:`2024-0444`
14- ``libarchive``: Fix :cve_nist:`2024-48957` and :cve_nist:`2024-48958`
15- ``openssl``: Fix :cve_nist:`2024-9143`
16- ``orc``: Fix :cve_nist:`2024-40897`
17- ``python3``: Ignore :cve_nist:`2023-27043`, :cve_nist:`2024-6232` and :cve_nist:`2024-7592`
18- ``qemu``: Fix :cve_nist:`2023-3019`
19- ``vim``: Fix :cve_nist:`2024-43790`, :cve_nist:`2024-43802`, :cve_nist:`2024-45306` and :cve_nist:`2024-47814`
20- ``zstd``: Fix :cve_nist:`2022-4899`
21
22
23Fixes in Yocto-4.0.23
24~~~~~~~~~~~~~~~~~~~~~
25
26- at-spi2-core: backport a patch to fix build with gcc-14 on host
27- bitbake: bitbake: doc/user-manual: Update the BB_HASHSERVE_UPSTREAM
28- bitbake: codeparser: Fix handling of string AST nodes with older Python versions
29- bitbake: fetch2/git: Use quote from shlex, not pipes
30- bitbake: gitsm: Add call_process_submodules() to remove duplicated code
31- bitbake: gitsm: Remove downloads/tmpdir when failed
32- bitbake: tests/fetch: Use our own mirror of mobile-broadband-provider to decouple from gnome gitlab
33- bitbake: tests/fetch: Use our own mirror of sysprof to decouple from gnome gitlab
34- bmap-tools: update :term:`HOMEPAGE` and :term:`SRC_URI`
35- build-appliance-image: Update to kirkstone head revision
36- cmake: Fix sporadic issues when determining compiler internals
37- cracklib: Modify patch to compile with GCC 14
38- cve-check: add CVSS vector string to CVE database and reports
39- cve-check: add support for cvss v4.0
40- cve_check: Use a local copy of the database during builds
41- dev-manual: document how to provide confs from layer.conf
42- documentation: Makefile: add SPHINXLINTDOCS to specify subset to sphinx-lint
43- documentation: Makefile: fix epub and latexpdf targets
44- documentation: README: add instruction to run Vale on a subset
45- documentation: brief-yoctoprojectqs: update BB_HASHSERVE_UPSTREAM for new infrastructure
46- documentation: conf.py: add a bitbake_git extlink
47- documentation: rename :cve: role to :cve_nist:
48- documentation: styles: vocabularies: Yocto: add sstate
49- documnetation: contributor-guide: Remove duplicated words
50- gcc: restore a patch for Neoverse N2 core
51- glib-2.0: patch regression of :cve_nist:`2023-32665`
52- kmscube: create_framebuffer: backport modifier fix
53- libffi: backport a fix to build libffi-native with gcc-14
54- linux-firmware: Upgrade to 20240909
55- local.conf.sample: update BB_HASHSERVE_UPSTREAM for new infrastructure
56- migration-guide: add release notes for 4.0.22
57- migration-guide: release-notes-4.0: update BB_HASHSERVE_UPSTREAM for new infrastructure
58- nativesdk-intercept: Fix bad intercept chgrp/chown logic
59- orc: Upgrade to 0.4.40
60- overlayfs-etc: add option to skip creation of mount dirs
61- overview-manual: concepts: add details on package splitting
62- package: Switch debug source handling to use prefix map
63- patch.py: Use shlex instead of deprecated pipe
64- poky.conf: bump version for 4.0.23
65- pseudo: Disable LFS on 32bit arches
66- pseudo: Fix envp bug and add posix_spawn wrapper
67- pseudo: Fix to work with glibc 2.40
68- pseudo: Switch back to the master branch
69- pseudo: Update to include logic fix
70- pseudo: Update to include open symlink handling bugfix
71- pseudo: Update to pull in fchmodat fix
72- pseudo: Update to pull in fd leak fix
73- pseudo: Update to pull in gcc14 fix and missing statvfs64 intercept
74- pseudo: Update to pull in linux-libc-headers race fix
75- pseudo: Update to pull in python 3.12+ fix
76- pseudo: Update to pull in syncfs probe fix
77- ref-manual: add description for the "sysroot" term
78- ref-manual: add missing CVE_CHECK manifest variables
79- ref-manual: add missing :term:`EXTERNAL_KERNEL_DEVICETREE` variable
80- ref-manual: add missing :term:`OPKGBUILDCMD` variable
81- ref-manual: devtool-reference: document missing commands
82- ref-manual: devtool-reference: refresh example outputs
83- ref-manual: introduce :term:`CVE_CHECK_REPORT_PATCHED` variable
84- ref-manual: release-process: add a reference to the doc's release
85- ref-manual: release-process: refresh the current LTS releases
86- ref-manual: release-process: update releases.svg
87- ref-manual: release-process: update releases.svg with month after "Current"
88- ref-manual: structure.rst: document missing tmp/ dirs
89- ref-manual: variables: add SIGGEN_LOCKEDSIGS* variables
90- syslinux: Disable error on implicit-function-declaration
91- util-linux: Define pidfd_* function signatures
92- vala: add -Wno-error=incompatible-pointer-types work around
93- vim: Upgrade to 9.1.0764
94- xmlto: backport a patch to fix build with gcc-14 on host
95- zip: Fix build with gcc-14
96- zip: Make configure checks to be more robust
97
98
99Known Issues in Yocto-4.0.23
100~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101
102-N/A
103
104
105Contributors to Yocto-4.0.23
106~~~~~~~~~~~~~~~~~~~~~~~~~~~~
107
108- Aleksandar Nikolic
109- Alexandre Belloni
110- Antoine Lubineau
111- Antonin Godard
112- Archana Polampalli
113- Ashish Sharma
114- Baruch Siach
115- Eilís 'pidge' Ní Fhlannagáin
116- Jose Quaresma
117- Julien Stephan
118- Khem Raj
119- Lee Chee Yang
120- Macpaul Lin
121- Martin Jansa
122- Michael Opdenacker
123- Ola x Nilsson
124- Peter Marko
125- Philip Lorenz
126- Randolph Sapp
127- Richard Purdie
128- Robert Yang
129- Rohini Sangam
130- Ruiqiang Hao
131- Siddharth Doshi
132- Steve Sakoman
133- Talel BELHAJSALEM
134- Wang Mingyu
135- Yogita Urade
136- Zoltan Boszormenyi
137
138
139Repositories / Downloads for Yocto-4.0.23
140~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
141
142poky
143
144- Repository Location: :yocto_git:`/poky`
145- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
146- Tag: :yocto_git:`yocto-4.0.23 </poky/log/?h=yocto-4.0.23>`
147- Git Revision: :yocto_git:`8e092852b63e998d990b8f8e1aa91297dec4430f </poky/commit/?id=8e092852b63e998d990b8f8e1aa91297dec4430f>`
148- Release Artefact: poky-8e092852b63e998d990b8f8e1aa91297dec4430f
149- sha: 339d34d8432070dac948449e732ebf06a888eeb27ff548958b2395c9446b029d
150- Download Locations:
151 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.23/poky-8e092852b63e998d990b8f8e1aa91297dec4430f.tar.bz2
152 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.23/poky-8e092852b63e998d990b8f8e1aa91297dec4430f.tar.bz2
153
154openembedded-core
155
156- Repository Location: :oe_git:`/openembedded-core`
157- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
158- Tag: :oe_git:`yocto-4.0.23 </openembedded-core/log/?h=yocto-4.0.23>`
159- Git Revision: :oe_git:`fb45c5cf8c2b663af293acb069d446610f77ff1a </openembedded-core/commit/?id=fb45c5cf8c2b663af293acb069d446610f77ff1a>`
160- Release Artefact: oecore-fb45c5cf8c2b663af293acb069d446610f77ff1a
161- sha: 1d394370ea7d43fb885ab8a952d6d1e43f1a850745a5152d5ead5565a283a0f5
162- Download Locations:
163 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.23/oecore-fb45c5cf8c2b663af293acb069d446610f77ff1a.tar.bz2
164 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.23/oecore-fb45c5cf8c2b663af293acb069d446610f77ff1a.tar.bz2
165
166meta-mingw
167
168- Repository Location: :yocto_git:`/meta-mingw`
169- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
170- Tag: :yocto_git:`yocto-4.0.23 </meta-mingw/log/?h=yocto-4.0.23>`
171- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
172- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
173- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
174- Download Locations:
175 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.23/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
176 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.23/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
177
178meta-gplv2
179
180- Repository Location: :yocto_git:`/meta-gplv2`
181- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
182- Tag: :yocto_git:`yocto-4.0.23 </meta-gplv2/log/?h=yocto-4.0.23>`
183- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
184- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
185- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
186- Download Locations:
187 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.23/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
188 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.23/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
189
190bitbake
191
192- Repository Location: :oe_git:`/bitbake`
193- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
194- Tag: :oe_git:`yocto-4.0.23 </bitbake/log/?h=yocto-4.0.23>`
195- Git Revision: :oe_git:`fb73c495c45d1d4107cfd60b67a5b4f11a99647b </bitbake/commit/?id=fb73c495c45d1d4107cfd60b67a5b4f11a99647b>`
196- Release Artefact: bitbake-fb73c495c45d1d4107cfd60b67a5b4f11a99647b
197- sha: 5cd271299951f25912a2e8d4de6d8769a4c0bb3bbcfc90815be41f23fd299a0b
198- Download Locations:
199 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.23/bitbake-fb73c495c45d1d4107cfd60b67a5b4f11a99647b.tar.bz2
200 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.23/bitbake-fb73c495c45d1d4107cfd60b67a5b4f11a99647b.tar.bz2
201
202yocto-docs
203
204- Repository Location: :yocto_git:`/yocto-docs`
205- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
206- Tag: :yocto_git:`yocto-4.0.23 </yocto-docs/log/?h=yocto-4.0.23>`
207- Git Revision: :yocto_git:`TBD </yocto-docs/commit/?id=TBD>`
208
209
diff --git a/documentation/migration-guides/release-notes-4.0.24.rst b/documentation/migration-guides/release-notes-4.0.24.rst
new file mode 100644
index 0000000000..33372dc89e
--- /dev/null
+++ b/documentation/migration-guides/release-notes-4.0.24.rst
@@ -0,0 +1,383 @@
1Release notes for Yocto-4.0.24 (Kirkstone)
2------------------------------------------
3
4Security Fixes in Yocto-4.0.24
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
7- coreutils: Fix :cve_nist:`2024-0684`
8- cpio: Ignore :cve_nist:`2023-7216`
9- diffoscope: Fix :cve_nist:`2024-25711`
10- ffmpeg: fix :cve_mitre:`2023-47342`, :cve_nist:`2023-50007`, :cve_nist:`2023-50008`,
11 :cve_nist:`2023-51793`, :cve_nist:`2023-51794`, :cve_nist:`2023-51796`, :cve_nist:`2023-51798`,
12 :cve_nist:`2024-7055`, :cve_nist:`2024-31578`, :cve_nist:`2024-31582`, :cve_nist:`2024-32230`,
13 :cve_nist:`2024-35366`, :cve_nist:`2024-35367` and :cve_nist:`2024-35368`
14- ghostscript: Fix :cve_nist:`2024-46951`, :cve_nist:`2024-46952`, :cve_nist:`2024-46953`,
15 :cve_nist:`2024-46955` and :cve_nist:`2024-46956`
16- ghostscript: Ignore :cve_nist:`2024-46954`
17- glib-2.0: Fix :cve_nist:`2024-52533`
18- gnupg: Ignore :cve_nist:`2022-3515`
19- grub: Ignore :cve_nist:`2024-1048` and :cve_nist:`2023-4001`
20- gstreame1.0: Ignore :cve_nist:`2023-40474`, :cve_nist:`2023-40475`, :cve_nist:`2023-40476`,
21 :cve_nist:`2023-44429`, :cve_nist:`2023-44446`, :cve_nist:`2023-50186` and :cve_nist:`2024-0444`
22- gstreamer1.0-plugins-base: Fix :cve_nist:`2024-47538`, :cve_nist:`2024-47541`,
23 :cve_nist:`2024-47542`, :cve_nist:`2024-47600`, :cve_nist:`2024-47607`, :cve_nist:`2024-47615`
24 and :cve_nist:`2024-47835`
25- gstreamer1.0-plugins-good: Fix :cve_nist:`2024-47537`, :cve_nist:`2024-47539`,
26 :cve_nist:`2024-47540`, :cve_nist:`2024-47543`, :cve_nist:`2024-47544`, :cve_nist:`2024-47545`,
27 :cve_nist:`2024-47546`, :cve_nist:`2024-47596`, :cve_nist:`2024-47597`, :cve_nist:`2024-47598`,
28 :cve_nist:`2024-47599`, :cve_nist:`2024-47601`, :cve_nist:`2024-47602`, :cve_nist:`2024-47603`,
29 :cve_nist:`2024-47606`, :cve_nist:`2024-47613`, :cve_nist:`2024-47774`, :cve_nist:`2024-47775`,
30 :cve_nist:`2024-47776`, :cve_nist:`2024-47777`, :cve_nist:`2024-47778` and :cve_nist:`2024-47834`
31- gstreamer1.0: Fix :cve_nist:`2024-47606`
32- libarchive: Fix :cve_nist:`2024-20696`
33- libpam: Fix :cve_nist:`2024-10041`
34- libsdl2: Ignore :cve_nist:`2020-14409` and :cve_nist:`2020-14410`
35- libsndfile1: Fix :cve_nist:`2022-33065` and :cve_nist:`2024-50612`
36- libsoup-2.4: Fix :cve_nist:`2024-52530`, :cve_nist:`2024-52531` and :cve_nist:`2024-52532`
37- libsoup: Fix :cve_nist:`2024-52530`, :cve_nist:`2024-52531` and :cve_nist:`2024-52532`
38- linux-yocto/5.10: Fix :cve_nist:`2023-52889`, :cve_nist:`2023-52917`, :cve_nist:`2023-52918`,
39 :cve_nist:`2024-41011`, :cve_nist:`2024-42259`, :cve_nist:`2024-42271`, :cve_nist:`2024-42272`,
40 :cve_nist:`2024-42280`, :cve_nist:`2024-42283`, :cve_nist:`2024-42284`, :cve_nist:`2024-42285`,
41 :cve_nist:`2024-42286`, :cve_nist:`2024-42287`, :cve_nist:`2024-42288`, :cve_nist:`2024-42289`,
42 :cve_nist:`2024-42301`, :cve_nist:`2024-42302`, :cve_nist:`2024-42309`, :cve_nist:`2024-42310`,
43 :cve_nist:`2024-42311`, :cve_nist:`2024-42313`, :cve_nist:`2024-43828`, :cve_nist:`2024-43856`,
44 :cve_nist:`2024-43858`, :cve_nist:`2024-43860`, :cve_nist:`2024-43861`, :cve_nist:`2024-43871`,
45 :cve_nist:`2024-43882`, :cve_nist:`2024-43889`, :cve_nist:`2024-43890`, :cve_nist:`2024-43893`,
46 :cve_nist:`2024-43894`, :cve_nist:`2024-43907`, :cve_nist:`2024-43908`, :cve_nist:`2024-43914`,
47 :cve_nist:`2024-44935`, :cve_nist:`2024-44944`, :cve_nist:`2024-44947`, :cve_nist:`2024-44954`,
48 :cve_nist:`2024-44960`, :cve_nist:`2024-44965`, :cve_nist:`2024-44969`, :cve_nist:`2024-44971`,
49 :cve_nist:`2024-44987`, :cve_nist:`2024-44988`, :cve_nist:`2024-44989`, :cve_nist:`2024-44990`,
50 :cve_nist:`2024-44995`, :cve_nist:`2024-44998`, :cve_nist:`2024-44999`, :cve_nist:`2024-45003`,
51 :cve_nist:`2024-45006`, :cve_nist:`2024-45016`, :cve_nist:`2024-45018`, :cve_nist:`2024-45021`,
52 :cve_nist:`2024-45025`, :cve_nist:`2024-45026`, :cve_nist:`2024-45028`, :cve_nist:`2024-46673`,
53 :cve_nist:`2024-46674`, :cve_nist:`2024-46675`, :cve_nist:`2024-46676`, :cve_nist:`2024-46677`,
54 :cve_nist:`2024-46679`, :cve_nist:`2024-46685`, :cve_nist:`2024-46689`, :cve_nist:`2024-46702`,
55 :cve_nist:`2024-46707`, :cve_nist:`2024-46714`, :cve_nist:`2024-46719`, :cve_nist:`2024-46721`,
56 :cve_nist:`2024-46722`, :cve_nist:`2024-46723`, :cve_nist:`2024-46724`, :cve_nist:`2024-46725`,
57 :cve_nist:`2024-46731`, :cve_nist:`2024-46737`, :cve_nist:`2024-46738`, :cve_nist:`2024-46739`,
58 :cve_nist:`2024-46740`, :cve_nist:`2024-46743`, :cve_nist:`2024-46744`, :cve_nist:`2024-46747`,
59 :cve_nist:`2024-46750`, :cve_nist:`2024-46755`, :cve_nist:`2024-46759`, :cve_nist:`2024-46761`,
60 :cve_nist:`2024-46763`, :cve_nist:`2024-46771`, :cve_nist:`2024-46777`, :cve_nist:`2024-46780`,
61 :cve_nist:`2024-46781`, :cve_nist:`2024-46782`, :cve_nist:`2024-46783`, :cve_nist:`2024-46791`,
62 :cve_nist:`2024-46798`, :cve_nist:`2024-46800`, :cve_nist:`2024-46804`, :cve_nist:`2024-46814`,
63 :cve_nist:`2024-46815`, :cve_nist:`2024-46817`, :cve_nist:`2024-46818`, :cve_nist:`2024-46819`,
64 :cve_nist:`2024-46822`, :cve_nist:`2024-46828`, :cve_nist:`2024-46829`, :cve_nist:`2024-46832`,
65 :cve_nist:`2024-46840`, :cve_nist:`2024-46844`, :cve_nist:`2024-47659`, :cve_nist:`2024-47660`,
66 :cve_nist:`2024-47663`, :cve_nist:`2024-47667`, :cve_nist:`2024-47668`, :cve_nist:`2024-47669`,
67 :cve_nist:`2024-47679`, :cve_nist:`2024-47684`, :cve_nist:`2024-47685`, :cve_nist:`2024-47692`,
68 :cve_nist:`2024-47697`, :cve_nist:`2024-47698`, :cve_nist:`2024-47699`, :cve_nist:`2024-47701`,
69 :cve_nist:`2024-47705`, :cve_nist:`2024-47706`, :cve_nist:`2024-47710`, :cve_nist:`2024-47712`,
70 :cve_nist:`2024-47713`, :cve_nist:`2024-47718`, :cve_nist:`2024-47723`, :cve_nist:`2024-47735`,
71 :cve_nist:`2024-47737`, :cve_nist:`2024-47739`, :cve_nist:`2024-47742`, :cve_nist:`2024-47747`,
72 :cve_nist:`2024-47748`, :cve_nist:`2024-47749`, :cve_nist:`2024-47757`, :cve_nist:`2024-49851`,
73 :cve_nist:`2024-49858`, :cve_nist:`2024-49860`, :cve_nist:`2024-49863`, :cve_nist:`2024-49867`,
74 :cve_nist:`2024-49868`, :cve_nist:`2024-49875`, :cve_nist:`2024-49877`, :cve_nist:`2024-49878`,
75 :cve_nist:`2024-49879`, :cve_nist:`2024-49881`, :cve_nist:`2024-49882`, :cve_nist:`2024-49883`,
76 :cve_nist:`2024-49884`, :cve_nist:`2024-49889`, :cve_nist:`2024-49890`, :cve_nist:`2024-49892`,
77 :cve_nist:`2024-49894`, :cve_nist:`2024-49895`, :cve_nist:`2024-49896`, :cve_nist:`2024-49900`,
78 :cve_nist:`2024-49902`, :cve_nist:`2024-49903`, :cve_nist:`2024-49907`, :cve_nist:`2024-49913`,
79 :cve_nist:`2024-49924`, :cve_nist:`2024-49930`, :cve_nist:`2024-49933`, :cve_nist:`2024-49936`,
80 :cve_nist:`2024-49938`, :cve_nist:`2024-49944`, :cve_nist:`2024-49948`, :cve_nist:`2024-49949`,
81 :cve_nist:`2024-49952`, :cve_nist:`2024-49955`, :cve_nist:`2024-49957`, :cve_nist:`2024-49958`,
82 :cve_nist:`2024-49959`, :cve_nist:`2024-49962`, :cve_nist:`2024-49963`, :cve_nist:`2024-49965`,
83 :cve_nist:`2024-49966`, :cve_nist:`2024-49969`, :cve_nist:`2024-49973`, :cve_nist:`2024-49975`,
84 :cve_nist:`2024-49977`, :cve_nist:`2024-49981`, :cve_nist:`2024-49982`, :cve_nist:`2024-49983`,
85 :cve_nist:`2024-49985`, :cve_nist:`2024-49995`, :cve_nist:`2024-49997`, :cve_nist:`2024-50001`,
86 :cve_nist:`2024-50006`, :cve_nist:`2024-50007`, :cve_nist:`2024-50008`, :cve_nist:`2024-50013`,
87 :cve_nist:`2024-50015`, :cve_nist:`2024-50024`, :cve_nist:`2024-50033`, :cve_nist:`2024-50035`,
88 :cve_nist:`2024-50039`, :cve_nist:`2024-50040`, :cve_nist:`2024-50044`, :cve_nist:`2024-50045`,
89 :cve_nist:`2024-50046`, :cve_nist:`2024-50049`, :cve_nist:`2024-50059`, :cve_nist:`2024-50095`,
90 :cve_nist:`2024-50096`, :cve_nist:`2024-50179`, :cve_nist:`2024-50180`, :cve_nist:`2024-50181`,
91 :cve_nist:`2024-50184` and :cve_nist:`2024-50188`
92- linux-yocto/5.15: Fix :cve_nist:`2022-48695`, :cve_nist:`2023-52530`, :cve_nist:`2023-52917`,
93 :cve_nist:`2024-45009`, :cve_nist:`2024-46714`, :cve_nist:`2024-46719`, :cve_nist:`2024-46721`,
94 :cve_nist:`2024-46722`, :cve_nist:`2024-46723`, :cve_nist:`2024-46724`, :cve_nist:`2024-46725`,
95 :cve_nist:`2024-46731`, :cve_nist:`2024-46732`, :cve_nist:`2024-46737`, :cve_nist:`2024-46738`,
96 :cve_nist:`2024-46739`, :cve_nist:`2024-46740`, :cve_nist:`2024-46743`, :cve_nist:`2024-46744`,
97 :cve_nist:`2024-46746`, :cve_nist:`2024-46747`, :cve_nist:`2024-46750`, :cve_nist:`2024-46755`,
98 :cve_nist:`2024-46759`, :cve_nist:`2024-46761`, :cve_nist:`2024-46763`, :cve_nist:`2024-46771`,
99 :cve_nist:`2024-46777`, :cve_nist:`2024-46780`, :cve_nist:`2024-46781`, :cve_nist:`2024-46782`,
100 :cve_nist:`2024-46783`, :cve_nist:`2024-46791`, :cve_nist:`2024-46795`, :cve_nist:`2024-46798`,
101 :cve_nist:`2024-46800`, :cve_nist:`2024-46804`, :cve_nist:`2024-46805`, :cve_nist:`2024-46807`,
102 :cve_nist:`2024-46810`, :cve_nist:`2024-46814`, :cve_nist:`2024-46815`, :cve_nist:`2024-46817`,
103 :cve_nist:`2024-46818`, :cve_nist:`2024-46819`, :cve_nist:`2024-46822`, :cve_nist:`2024-46828`,
104 :cve_nist:`2024-46829`, :cve_nist:`2024-46832`, :cve_nist:`2024-46840`, :cve_nist:`2024-46844`,
105 :cve_nist:`2024-47659`, :cve_nist:`2024-47660`, :cve_nist:`2024-47663`, :cve_nist:`2024-47665`,
106 :cve_nist:`2024-47667`, :cve_nist:`2024-47668`, :cve_nist:`2024-47669`, :cve_nist:`2024-47674`,
107 :cve_nist:`2024-47679`, :cve_nist:`2024-47684`, :cve_nist:`2024-47685`, :cve_nist:`2024-47690`,
108 :cve_nist:`2024-47692`, :cve_nist:`2024-47693`, :cve_nist:`2024-47695`, :cve_nist:`2024-47696`,
109 :cve_nist:`2024-47697`, :cve_nist:`2024-47698`, :cve_nist:`2024-47699`, :cve_nist:`2024-47701`,
110 :cve_nist:`2024-47705`, :cve_nist:`2024-47706`, :cve_nist:`2024-47710`, :cve_nist:`2024-47712`,
111 :cve_nist:`2024-47713`, :cve_nist:`2024-47718`, :cve_nist:`2024-47720`, :cve_nist:`2024-47723`,
112 :cve_nist:`2024-47734`, :cve_nist:`2024-47735`, :cve_nist:`2024-47737`, :cve_nist:`2024-47739`,
113 :cve_nist:`2024-47742`, :cve_nist:`2024-47747`, :cve_nist:`2024-47748`, :cve_nist:`2024-47749`,
114 :cve_nist:`2024-47757`, :cve_nist:`2024-49851`, :cve_nist:`2024-49852`, :cve_nist:`2024-49854`,
115 :cve_nist:`2024-49856`, :cve_nist:`2024-49858`, :cve_nist:`2024-49860`, :cve_nist:`2024-49863`,
116 :cve_nist:`2024-49866`, :cve_nist:`2024-49867`, :cve_nist:`2024-49868`, :cve_nist:`2024-49871`,
117 :cve_nist:`2024-49875`, :cve_nist:`2024-49877`, :cve_nist:`2024-49878`, :cve_nist:`2024-49879`,
118 :cve_nist:`2024-49881`, :cve_nist:`2024-49882`, :cve_nist:`2024-49883`, :cve_nist:`2024-49884`,
119 :cve_nist:`2024-49886`, :cve_nist:`2024-49889`, :cve_nist:`2024-49890`, :cve_nist:`2024-49892`,
120 :cve_nist:`2024-49894`, :cve_nist:`2024-49895`, :cve_nist:`2024-49896`, :cve_nist:`2024-49900`,
121 :cve_nist:`2024-49902`, :cve_nist:`2024-49903`, :cve_nist:`2024-49907`, :cve_nist:`2024-49913`,
122 :cve_nist:`2024-49924`, :cve_nist:`2024-49927`, :cve_nist:`2024-49930`, :cve_nist:`2024-49933`,
123 :cve_nist:`2024-49935`, :cve_nist:`2024-49936`, :cve_nist:`2024-49938`, :cve_nist:`2024-49944`,
124 :cve_nist:`2024-49946`, :cve_nist:`2024-49948`, :cve_nist:`2024-49949`, :cve_nist:`2024-49952`,
125 :cve_nist:`2024-49954`, :cve_nist:`2024-49955`, :cve_nist:`2024-49957`, :cve_nist:`2024-49958`,
126 :cve_nist:`2024-49959`, :cve_nist:`2024-49962`, :cve_nist:`2024-49963`, :cve_nist:`2024-49965`,
127 :cve_nist:`2024-49966`, :cve_nist:`2024-49969`, :cve_nist:`2024-49973`, :cve_nist:`2024-49975`,
128 :cve_nist:`2024-49977`, :cve_nist:`2024-49981`, :cve_nist:`2024-49982`, :cve_nist:`2024-49983`,
129 :cve_nist:`2024-49985`, :cve_nist:`2024-49995`, :cve_nist:`2024-49997`, :cve_nist:`2024-50000`,
130 :cve_nist:`2024-50001`, :cve_nist:`2024-50002`, :cve_nist:`2024-50003`, :cve_nist:`2024-50006`,
131 :cve_nist:`2024-50007`, :cve_nist:`2024-50008`, :cve_nist:`2024-50013`, :cve_nist:`2024-50015`,
132 :cve_nist:`2024-50019`, :cve_nist:`2024-50024`, :cve_nist:`2024-50031`, :cve_nist:`2024-50033`,
133 :cve_nist:`2024-50035`, :cve_nist:`2024-50038`, :cve_nist:`2024-50039`, :cve_nist:`2024-50040`,
134 :cve_nist:`2024-50041`, :cve_nist:`2024-50044`, :cve_nist:`2024-50045`, :cve_nist:`2024-50046`,
135 :cve_nist:`2024-50049`, :cve_nist:`2024-50059`, :cve_nist:`2024-50062`, :cve_nist:`2024-50074`,
136 :cve_nist:`2024-50082`, :cve_nist:`2024-50083`, :cve_nist:`2024-50093`, :cve_nist:`2024-50095`,
137 :cve_nist:`2024-50096`, :cve_nist:`2024-50099`, :cve_nist:`2024-50101`, :cve_nist:`2024-50103`,
138 :cve_nist:`2024-50110`, :cve_nist:`2024-50115`, :cve_nist:`2024-50116`, :cve_nist:`2024-50117`,
139 :cve_nist:`2024-50127`, :cve_nist:`2024-50128`, :cve_nist:`2024-50131`, :cve_nist:`2024-50134`,
140 :cve_nist:`2024-50141`, :cve_nist:`2024-50142`, :cve_nist:`2024-50143`, :cve_nist:`2024-50148`,
141 :cve_nist:`2024-50150`, :cve_nist:`2024-50151`, :cve_nist:`2024-50153`, :cve_nist:`2024-50154`,
142 :cve_nist:`2024-50156`, :cve_nist:`2024-50160`, :cve_nist:`2024-50162`, :cve_nist:`2024-50163`,
143 :cve_nist:`2024-50167`, :cve_nist:`2024-50168`, :cve_nist:`2024-50171`, :cve_nist:`2024-50179`,
144 :cve_nist:`2024-50180`, :cve_nist:`2024-50181`, :cve_nist:`2024-50182`, :cve_nist:`2024-50184`,
145 :cve_nist:`2024-50185`, :cve_nist:`2024-50186`, :cve_nist:`2024-50188`, :cve_nist:`2024-50189`,
146 :cve_nist:`2024-50191`, :cve_nist:`2024-50192`, :cve_nist:`2024-50193`, :cve_nist:`2024-50194`,
147 :cve_nist:`2024-50195`, :cve_nist:`2024-50196`, :cve_nist:`2024-50198`, :cve_nist:`2024-50201`,
148 :cve_nist:`2024-50202`, :cve_nist:`2024-50205`, :cve_nist:`2024-50208`, :cve_nist:`2024-50209`,
149 :cve_nist:`2024-50229`, :cve_nist:`2024-50230`, :cve_nist:`2024-50232`, :cve_nist:`2024-50233`,
150 :cve_nist:`2024-50234`, :cve_nist:`2024-50236`, :cve_nist:`2024-50237`, :cve_nist:`2024-50244`,
151 :cve_nist:`2024-50245`, :cve_nist:`2024-50247`, :cve_nist:`2024-50251`, :cve_nist:`2024-50257`,
152 :cve_nist:`2024-50259`, :cve_nist:`2024-50262`, :cve_nist:`2024-50264`, :cve_nist:`2024-50265`,
153 :cve_nist:`2024-50267`, :cve_nist:`2024-50268`, :cve_nist:`2024-50269`, :cve_nist:`2024-50273`,
154 :cve_nist:`2024-50278`, :cve_nist:`2024-50279`, :cve_nist:`2024-50282`, :cve_nist:`2024-50287`,
155 :cve_nist:`2024-50292`, :cve_nist:`2024-50296`, :cve_nist:`2024-50299`, :cve_nist:`2024-50301`,
156 :cve_nist:`2024-50302`, :cve_nist:`2024-53052`, :cve_nist:`2024-53055`, :cve_nist:`2024-53057`,
157 :cve_nist:`2024-53058`, :cve_nist:`2024-53059`, :cve_nist:`2024-53060`, :cve_nist:`2024-53061`,
158 :cve_nist:`2024-53063`, :cve_nist:`2024-53066`, :cve_nist:`2024-53088`, :cve_nist:`2024-53096`,
159 :cve_nist:`2024-53101`, :cve_nist:`2024-53103`, :cve_nist:`2024-53145`, :cve_nist:`2024-53146`,
160 :cve_nist:`2024-53150`, :cve_nist:`2024-53151`, :cve_nist:`2024-53155`, :cve_nist:`2024-53156`,
161 :cve_nist:`2024-53157`, :cve_nist:`2024-53165`, :cve_nist:`2024-53171`, :cve_nist:`2024-53173`,
162 :cve_nist:`2024-53226`, :cve_nist:`2024-53227`, :cve_nist:`2024-53237`, :cve_nist:`2024-56567`,
163 :cve_nist:`2024-56572`, :cve_nist:`2024-56574`, :cve_nist:`2024-56578`, :cve_nist:`2024-56581`,
164 :cve_nist:`2024-56593`, :cve_nist:`2024-56600`, :cve_nist:`2024-56601`, :cve_nist:`2024-56602`,
165 :cve_nist:`2024-56603`, :cve_nist:`2024-56605`, :cve_nist:`2024-56606`, :cve_nist:`2024-56614`,
166 :cve_nist:`2024-56622`, :cve_nist:`2024-56623`, :cve_nist:`2024-56629`, :cve_nist:`2024-56634`,
167 :cve_nist:`2024-56640`, :cve_nist:`2024-56642`, :cve_nist:`2024-56643`, :cve_nist:`2024-56648`,
168 :cve_nist:`2024-56650`, :cve_nist:`2024-56659`, :cve_nist:`2024-56662`, :cve_nist:`2024-56670`,
169 :cve_nist:`2024-56688`, :cve_nist:`2024-56694`, :cve_nist:`2024-56704`, :cve_nist:`2024-56708`,
170 :cve_nist:`2024-56720`, :cve_nist:`2024-56723`, :cve_nist:`2024-56724`, :cve_nist:`2024-56726`,
171 :cve_nist:`2024-56728`, :cve_nist:`2024-56739`, :cve_nist:`2024-56741`, :cve_nist:`2024-56745`,
172 :cve_nist:`2024-56746`, :cve_nist:`2024-56747`, :cve_nist:`2024-56748`, :cve_nist:`2024-56754`,
173 :cve_nist:`2024-56756`, :cve_nist:`2024-56770`, :cve_nist:`2024-56774`, :cve_nist:`2024-56776`,
174 :cve_nist:`2024-56777`, :cve_nist:`2024-56778`, :cve_nist:`2024-56779`, :cve_nist:`2024-56780`,
175 :cve_nist:`2024-56781`, :cve_nist:`2024-56785` and :cve_nist:`2024-56787`
176- ovmf: Fix :cve_nist:`2022-36763`, :cve_nist:`2022-36764`, :cve_nist:`2022-36765`,
177 :cve_nist:`2023-45229`, :cve_nist:`2023-45230`, :cve_nist:`2023-45231`, :cve_nist:`2023-45232`,
178 :cve_nist:`2023-45233`, :cve_nist:`2023-45234`, :cve_nist:`2023-45235`, :cve_nist:`2023-45236`,
179 :cve_nist:`2023-45237`, :cve_nist:`2024-1298` and :cve_nist:`2024-38796`
180- pixman: Ignore :cve_nist:`2023-37769`
181- python3: Fix :cve_nist:`2024-9287`, :cve_nist:`2024-11168` and :cve_nist:`2024-50602`
182- python3-pip: Fix :cve_nist:`2023-5752`
183- python3-requests: Fix :cve_nist:`2024-35195`
184- python3-zipp: Fix :cve_nist:`2024-5569`
185- qemu: Fix :cve_nist:`2024-3446`, :cve_nist:`2024-3447` and :cve_nist:`2024-6505`
186- qemu: Ignore :cve_nist:`2022-36648`
187- subversion: Fix :cve_nist:`2024-46901`
188- tiff: Fix :cve_nist:`2023-3164`
189- tiff: Ignore :cve_nist:`2023-2731`
190- webkitgtk: Fix :cve_nist:`2024-40776` and :cve_nist:`2024-40780`
191- xserver-xorg: Fix :cve_nist:`2024-9632`
192- xwayland: Fix :cve_nist:`2023-5380` and :cve_nist:`2024-0229`
193
194
195Fixes in Yocto-4.0.24
196~~~~~~~~~~~~~~~~~~~~~
197
198- base-passwd: Add the sgx group
199- base-passwd: Regenerate the patches
200- base-passwd: Update the status for two patches
201- base-passwd: Update to 3.5.52
202- base-passwd: add the wheel group
203- base-passwd: fix patchreview warning
204- bitbake: fetch2: use persist_data context managers
205- bitbake: fetch/wget: Increase timeout to 100s from 30s
206- bitbake: persist_data: close connection in SQLTable __exit__
207- build-appliance-image: Update to kirkstone head revision
208- builder: set :term:`CVE_PRODUCT`
209- contributor-guide: submit-changes.rst: suggest to remove the git signature
210- cve-update-nvd2-native: Tweak to work better with NFS :term:`DL_DIR`
211- dbus: disable assertions and enable only modular tests
212- do_package/sstate/sstatesig: Change timestamp clamping to hash output only
213- docs: Gather dependencies in poky.yaml.in
214- docs: standards.md: add a section on admonitions
215- gstreamer1.0: improve test reliability
216- linux-yocto/5.10: update to v5.10.227
217- linux-yocto/5.15: update to v5.15.175
218- llvm: reduce size of -dbg package
219- lttng-modules: fix build error after kernel update to 5.15.171
220- migration-guides: add release notes for 4.0.23
221- ninja: fix build with python 3.13
222- oeqa/utils/gitarchive: Return tag name and improve exclude handling
223- ovmf-native: remove .pyc files from install
224- package.bbclass: Use shlex instead of deprecated pipes
225- package_rpm: restrict rpm to 4 threads
226- package_rpm: use zstd's default compression level
227- poky.conf: add new tested distros
228- poky.conf: bump version for 4.0.24
229- poky.yaml.in: add missing locales dependency
230- python3: upgrade to 3.10.16
231- ref-manual: SSTATE_MIRRORS/SOURCE_MIRROR_URL: add instructions for mirror authentication
232- ref-manual: classes: fix bin_package description
233- ref-manual: devtool-reference: add warning note on deploy-target and shared objects
234- ref-manual: move runtime-testing section to the test-manual
235- ref-manual: packages: move ptest section to the test-manual
236- ref-manual: system-requirements: update list of supported distros
237- ref-manual: use standardized method accross both ubuntu and debian for locale install
238- resulttool: Add --logfile-archive option to store mode
239- resulttool: Allow store to filter to specific revisions
240- resulttool: Clean up repoducible build logs
241- resulttool: Fix passthrough of --all files in store mode
242- resulttool: Handle ltp rawlogs as well as ptest
243- resulttool: Improve repo layout for oeselftest results
244- resulttool: Trim the precision of duration information
245- resulttool: Use single space indentation in json output
246- rootfs-postcommands.bbclass: make opkg status reproducible
247- rxvt-unicode.inc: disable the terminfo installation by setting TIC to :
248- sanity: check for working user namespaces
249- scripts/install-buildtools: Update to 4.0.22
250- selftest/reproducible: Clean up pathnames
251- selftest/reproducible: Drop rawlogs
252- test-manual: reproducible-builds.rst: document :term:`OEQA_REPRODUCIBLE_TEST_TARGET` and
253 :term:`OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS`
254- test-manual: reproducible-builds.rst: show how to build a single package
255- toolchain-shar-extract.sh: exit when post-relocate-setup.sh fails
256- tzdata & tzcode-native: upgrade 2024b
257- udev-extraconf: fix network.sh script did not configure hotplugged interfaces
258- unzip: Fix configure tests to use modern C
259- webkitgtk: Fix build on 32bit arm
260- webkitgtk: fix perl-native dependency
261- webkitgtk: reduce size of -dbg package
262- wireless-regdb: upgrade to 2024.10.07
263
264
265Known Issues in Yocto-4.0.24
266~~~~~~~~~~~~~~~~~~~~~~~~~~~~
267
268- N/A
269
270Contributors to Yocto-4.0.24
271~~~~~~~~~~~~~~~~~~~~~~~~~~~~
272
273Thanks to the following people who contributed to this release:
274
275- Aleksandar Nikolic
276- Alex Kiernan
277- Alexander Kanavin
278- Alexandre Belloni
279- Antonin Godard
280- Archana Polampalli
281- Bruce Ashfield
282- Changqing Li
283- Chen Qi
284- Chris Laplante
285- Divya Chellam
286- Ernst Persson
287- Guénaël Muller
288- Hitendra Prajapati
289- Hongxu Jia
290- Jiaying Song
291- Jinfeng Wang
292- Khem Raj
293- Lee Chee Yang
294- Liyin Zhang
295- Louis Rannou
296- Markus Volk
297- Mikko Rapeli
298- Ovidiu Panait
299- Peter Kjellerstedt
300- Peter Marko
301- Regis Dargent
302- Richard Purdie
303- Rohini Sangam
304- Ross Burton
305- Soumya Sambu
306- Steve Sakoman
307- Trevor Gamblin
308- Vijay Anusuri
309- Wang Mingyu
310- Yogita Urade
311- Zahir Hussain
312
313
314Repositories / Downloads for Yocto-4.0.24
315~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
316
317poky
318
319- Repository Location: :yocto_git:`/poky`
320- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
321- Tag: :yocto_git:`yocto-4.0.24 </poky/log/?h=yocto-4.0.24>`
322- Git Revision: :yocto_git:`f50532593651dff82bc952288d786c55038c2c86 </poky/commit/?id=f50532593651dff82bc952288d786c55038c2c86>`
323- Release Artefact: poky-f50532593651dff82bc952288d786c55038c2c86
324- sha: 0aa062d19510394748db9a2d6ded2d764f435383296d9c94fb6b25755280556e
325- Download Locations:
326 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.24/poky-f50532593651dff82bc952288d786c55038c2c86.tar.bz2
327 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.24/poky-f50532593651dff82bc952288d786c55038c2c86.tar.bz2
328
329openembedded-core
330
331- Repository Location: :oe_git:`/openembedded-core`
332- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
333- Tag: :oe_git:`yocto-4.0.24 </openembedded-core/log/?h=yocto-4.0.24>`
334- Git Revision: :oe_git:`a270d4c957259761bcc7382fcc54642a02f9fc7d </openembedded-core/commit/?id=a270d4c957259761bcc7382fcc54642a02f9fc7d>`
335- Release Artefact: oecore-a270d4c957259761bcc7382fcc54642a02f9fc7d
336- sha: b08b9b16c8ffa587d521ad28e24e38c79d757a6f0839d18165ebac3081a34b68
337- Download Locations:
338 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.24/oecore-a270d4c957259761bcc7382fcc54642a02f9fc7d.tar.bz2
339 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.24/oecore-a270d4c957259761bcc7382fcc54642a02f9fc7d.tar.bz2
340
341meta-mingw
342
343- Repository Location: :yocto_git:`/meta-mingw`
344- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
345- Tag: :yocto_git:`yocto-4.0.24 </meta-mingw/log/?h=yocto-4.0.24>`
346- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
347- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
348- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
349- Download Locations:
350 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.24/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
351 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.24/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
352
353meta-gplv2
354
355- Repository Location: :yocto_git:`/meta-gplv2`
356- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
357- Tag: :yocto_git:`yocto-4.0.24 </meta-gplv2/log/?h=yocto-4.0.24>`
358- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
359- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
360- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
361- Download Locations:
362 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.24/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
363 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.24/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
364
365bitbake
366
367- Repository Location: :oe_git:`/bitbake`
368- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
369- Tag: :oe_git:`yocto-4.0.24 </bitbake/log/?h=yocto-4.0.24>`
370- Git Revision: :oe_git:`3f88b005244a0afb5d5c7260e54a94a453ec9b3e </bitbake/commit/?id=3f88b005244a0afb5d5c7260e54a94a453ec9b3e>`
371- Release Artefact: bitbake-3f88b005244a0afb5d5c7260e54a94a453ec9b3e
372- sha: 31f442b72ec7d81ca75509b1a7179c3fe3942528b1e31c823b21a413244bd15b
373- Download Locations:
374 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.24/bitbake-3f88b005244a0afb5d5c7260e54a94a453ec9b3e.tar.bz2
375 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.24/bitbake-3f88b005244a0afb5d5c7260e54a94a453ec9b3e.tar.bz2
376
377yocto-docs
378
379- Repository Location: :yocto_git:`/yocto-docs`
380- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
381- Tag: :yocto_git:`yocto-4.0.24 </yocto-docs/log/?h=yocto-4.0.24>`
382- Git Revision: :yocto_git:`3128bf149f40928e6c2a3e264590a0c6c9778c6a </yocto-docs/commit/?id=3128bf149f40928e6c2a3e264590a0c6c9778c6a>`
383
diff --git a/documentation/migration-guides/release-notes-4.0.25.rst b/documentation/migration-guides/release-notes-4.0.25.rst
new file mode 100644
index 0000000000..e52f57913f
--- /dev/null
+++ b/documentation/migration-guides/release-notes-4.0.25.rst
@@ -0,0 +1,167 @@
1Release notes for Yocto-4.0.25 (Kirkstone)
2------------------------------------------
3
4Security Fixes in Yocto-4.0.25
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
7- avahi: Fix :cve_nist:`2024-52616`
8- binutils: Fix :cve_nist:`2024-53589`
9- gdb: Fix :cve_nist:`2024-53589`
10- go: Fix :cve_nist:`2024-34155`, :cve_nist:`2024-34156`, :cve_nist:`2024-34158` and
11 :cve_nist:`2024-45336`
12- gstreamer1.0: Ignore :cve_nist:`2024-47537`, :cve_nist:`2024-47539`, :cve_nist:`2024-47540`,
13 :cve_nist:`2024-47543`, :cve_nist:`2024-47544`, :cve_nist:`2024-47545`, :cve_nist:`2024-47538`,
14 :cve_nist:`2024-47541`, :cve_nist:`2024-47542`, :cve_nist:`2024-47600`, :cve_nist:`2024-47607`,
15 :cve_nist:`2024-47615`, :cve_nist:`2024-47835`, :cve_nist:`2024-47546`, :cve_nist:`2024-47596`,
16 :cve_nist:`2024-47597`, :cve_nist:`2024-47598`, :cve_nist:`2024-47599`, :cve_nist:`2024-47601`,
17 :cve_nist:`2024-47777`, :cve_nist:`2024-47778`, :cve_nist:`2024-47834`, :cve_nist:`2024-47602`,
18 :cve_nist:`2024-47603`, :cve_nist:`2024-47613`, :cve_nist:`2024-47774`, :cve_nist:`2024-47775`
19 and :cve_nist:`2024-47776`
20- linux-yocto/5.15: Fix :cve_nist:`2024-36476`, :cve_nist:`2024-55916`, :cve_nist:`2024-56369`,
21 :cve_nist:`2024-56626`, :cve_nist:`2024-56627`, :cve_nist:`2024-56715`, :cve_nist:`2024-56716`,
22 :cve_nist:`2024-57802`, :cve_nist:`2024-57807`, :cve_nist:`2024-57841`, :cve_nist:`2024-57890`,
23 :cve_nist:`2024-57896`, :cve_nist:`2024-57900`, :cve_nist:`2024-57910`, :cve_nist:`2024-57911`,
24 :cve_nist:`2024-57938`, :cve_nist:`2024-57951`, :cve_nist:`2025-21631`, :cve_nist:`2025-21665`,
25 :cve_nist:`2025-21666`, :cve_nist:`2025-21669`, :cve_nist:`2025-21680`, :cve_nist:`2025-21683`,
26 :cve_nist:`2025-21694`, :cve_nist:`2025-21697` and :cve_nist:`2025-21699`
27- ofono: Fix :cve_nist:`2024-7539`, :cve_nist:`2024-7540`, :cve_nist:`2024-7541`,
28 :cve_nist:`2024-7542`, :cve_nist:`2024-7543`, :cve_nist:`2024-7544`, :cve_nist:`2024-7545`,
29 :cve_nist:`2024-7546` and :cve_nist:`2024-7547`
30- openssl: Fix :cve_nist:`2024-13176`
31- rsync: Fix :cve_nist:`2024-12084`, :cve_nist:`2024-12085`, :cve_nist:`2024-12086`,
32 :cve_nist:`2024-12087`, :cve_nist:`2024-12088` and :cve_nist:`2024-12747`
33- ruby: Fix :cve_nist:`2024-49761`
34- socat: Fix :cve_nist:`2024-54661`
35- vte: Fix :cve_nist:`2024-37535`
36- wget: Fix :cve_nist:`2024-10524`
37
38
39Fixes in Yocto-4.0.25
40~~~~~~~~~~~~~~~~~~~~~
41
42- bitbake: tests/fetch: Fix git shallow test failure with git >= 2.48
43- build-appliance-image: Update to kirkstone head revision
44- classes-global/insane: Look up all runtime providers for file-rdeps
45- classes/nativesdk: also override :term:`TUNE_PKGARCH`
46- classes/qemu: use tune to select QEMU_EXTRAOPTIONS, not package architecture
47- cmake: apply parallel build settings to ptest tasks
48- dev-manual/building: document the initramfs-framework recipe
49- docs: Update autobuilder URLs to valkyrie
50- documentation: Fix typo in standards.md
51- glibc: Suppress GCC -Os warning on user2netname for sunrpc
52- glibc: stable 2.35 branch updates
53- lib/packagedata.py: Add API to iterate over rprovides
54- linux-yocto/5.15: upgrade to v5.15.178
55- migration-guides: add release notes for 4.0.24
56- openssl: upgrade to 3.0.16
57- poky.conf: bump version for 4.0.25
58- python3: Treat UID/GID overflow as failure
59- rsync: Delete pedantic errors re-ordering patch
60- rsync: upgrade to 3.2.7
61- rust-common.bbclass: soft assignment for RUSTLIB path
62- scripts/install-buildtools: Update to 4.0.23
63- test-manual/reproducible-builds: fix reproducible links
64
65
66Known Issues in Yocto-4.0.25
67~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68
69- N/A
70
71
72Contributors to Yocto-4.0.25
73~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74
75- Aleksandar Nikolic
76- Alexander Kanavin
77- Antonin Godard
78- Archana Polampalli
79- Bruce Ashfield
80- Deepesh Varatharajan
81- Divya Chellam
82- Joshua Watt
83- Khem Raj
84- Lee Chee Yang
85- Nikhil R
86- Pedro Ferreira
87- Peter Marko
88- Praveen Kumar
89- Richard Purdie
90- Ross Burton
91- Simon A. Eugster
92- Steve Sakoman
93- Yash Shinde
94- Yogita Urade
95- Zhang Peng
96
97
98Repositories / Downloads for Yocto-4.0.25
99~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100
101poky
102
103- Repository Location: :yocto_git:`/poky`
104- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
105- Tag: :yocto_git:`yocto-4.0.25 </poky/log/?h=yocto-4.0.25>`
106- Git Revision: :yocto_git:`b5aa03f336c121269551f9e7baed4c677c76bb39 </poky/commit/?id=b5aa03f336c121269551f9e7baed4c677c76bb39>`
107- Release Artefact: poky-b5aa03f336c121269551f9e7baed4c677c76bb39
108- sha: 7afbcb25f0dd89a4fb6dd4c5945061705ef9ce79a6863806278603273c2b3b4a
109- Download Locations:
110 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.25/poky-b5aa03f336c121269551f9e7baed4c677c76bb39.tar.bz2
111 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.25/poky-b5aa03f336c121269551f9e7baed4c677c76bb39.tar.bz2
112
113openembedded-core
114
115- Repository Location: :oe_git:`/openembedded-core`
116- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
117- Tag: :oe_git:`yocto-4.0.25 </openembedded-core/log/?h=yocto-4.0.25>`
118- Git Revision: :oe_git:`5a794fd244f7fdeb426bd5e3def6b4effc0e8c62 </openembedded-core/commit/?id=5a794fd244f7fdeb426bd5e3def6b4effc0e8c62>`
119- Release Artefact: oecore-5a794fd244f7fdeb426bd5e3def6b4effc0e8c62
120- sha: 8fc93109693e5f4702b3fe0633b6be833605291b3d595dc8bdeb6379f40cd2de
121- Download Locations:
122 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.25/oecore-5a794fd244f7fdeb426bd5e3def6b4effc0e8c62.tar.bz2
123 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.25/oecore-5a794fd244f7fdeb426bd5e3def6b4effc0e8c62.tar.bz2
124
125meta-mingw
126
127- Repository Location: :yocto_git:`/meta-mingw`
128- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
129- Tag: :yocto_git:`yocto-4.0.25 </meta-mingw/log/?h=yocto-4.0.25>`
130- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
131- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
132- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
133- Download Locations:
134 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.25/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
135 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.25/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
136
137meta-gplv2
138
139- Repository Location: :yocto_git:`/meta-gplv2`
140- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
141- Tag: :yocto_git:`yocto-4.0.25 </meta-gplv2/log/?h=yocto-4.0.25>`
142- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
143- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
144- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
145- Download Locations:
146 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.25/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
147 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.25/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
148
149bitbake
150
151- Repository Location: :oe_git:`/bitbake`
152- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
153- Tag: :oe_git:`yocto-4.0.25 </bitbake/log/?h=yocto-4.0.25>`
154- Git Revision: :oe_git:`e71f1ce53cf3b8320caa481ae62d1ce2900c4670 </bitbake/commit/?id=e71f1ce53cf3b8320caa481ae62d1ce2900c4670>`
155- Release Artefact: bitbake-e71f1ce53cf3b8320caa481ae62d1ce2900c4670
156- sha: 007eef35174586c85b233f4ec91578956fe21e0236f7ca2c3f90f9d034f94b5b
157- Download Locations:
158 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.25/bitbake-e71f1ce53cf3b8320caa481ae62d1ce2900c4670.tar.bz2
159 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.25/bitbake-e71f1ce53cf3b8320caa481ae62d1ce2900c4670.tar.bz2
160
161yocto-docs
162
163- Repository Location: :yocto_git:`/yocto-docs`
164- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
165- Tag: :yocto_git:`yocto-4.0.25 </yocto-docs/log/?h=yocto-4.0.25>`
166- Git Revision: :yocto_git:`c6dce0c77481dee7b0a0fcdc803f755ceccef234 </yocto-docs/commit/?id=c6dce0c77481dee7b0a0fcdc803f755ceccef234>`
167
diff --git a/documentation/migration-guides/release-notes-4.0.26.rst b/documentation/migration-guides/release-notes-4.0.26.rst
new file mode 100644
index 0000000000..42ff28c6a2
--- /dev/null
+++ b/documentation/migration-guides/release-notes-4.0.26.rst
@@ -0,0 +1,263 @@
1Release notes for Yocto-4.0.26 (Kirkstone)
2------------------------------------------
3
4Security Fixes in Yocto-4.0.26
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
7
8- bind: Fix :cve_nist:`2024-11187` and :cve_nist:`2024-12705`
9- binutils: Fix :cve_nist:`2025-0840`
10- elfutils: Fix :cve_nist:`2025-1352` and :cve_nist:`2025-1372`
11- ffmpeg: Fix CVE-2024-28661, :cve_nist:`2024-35369`, :cve_nist:`2024-36613`, :cve_nist:`2024-36616`,
12 :cve_nist:`2024-36617`, :cve_nist:`2024-36618`, :cve_nist:`2025-0518` and :cve_nist:`2025-25473`
13- ffmpeg: Ignore :cve_nist:`2023-46407`, :cve_nist:`2023-47470`, :cve_nist:`2024-7272`,
14 :cve_nist:`2024-22860`, :cve_nist:`2024-22861` and :cve_nist:`2024-22862`
15- freetype: Fix :cve_nist:`2025-27363`
16- gnutls: Fix :cve_nist:`2024-12243`
17- grub: Fix :cve_nist:`2024-45774`, :cve_nist:`2024-45775`, :cve_nist:`2024-45776`,
18 :cve_nist:`2024-45777`, :cve_nist:`2024-45778`, :cve_nist:`2024-45779`, :cve_nist:`2024-45780`,
19 :cve_nist:`2024-45781`, :cve_nist:`2024-45782`, :cve_nist:`2024-45783`, :cve_nist:`2024-56737`,
20 :cve_nist:`2025-0622`, :cve_nist:`2025-0624`, :cve_nist:`2025-0677`, :cve_nist:`2025-0684`,
21 :cve_nist:`2025-0685`, :cve_nist:`2025-0686`, :cve_nist:`2025-0689`, :cve_nist:`2025-0678`,
22 :cve_nist:`2025-0690`, :cve_nist:`2025-1118` and :cve_nist:`2025-1125`
23- gstreamer1.0-rtsp-server: fix :cve_nist:`2024-44331`
24- libarchive: Fix :cve_nist:`2025-25724`
25- libarchive: Ignore :cve_nist:`2025-1632`
26- libcap: Fix :cve_nist:`2025-1390`
27- linux-yocto/5.10: Fix :cve_nist:`2024-36476`, :cve_nist:`2024-43098`, :cve_nist:`2024-47143`,
28 :cve_nist:`2024-48881`, :cve_nist:`2024-50051`, :cve_nist:`2024-50074`, :cve_nist:`2024-50082`,
29 :cve_nist:`2024-50083`, :cve_nist:`2024-50099`, :cve_nist:`2024-50115`, :cve_nist:`2024-50116`,
30 :cve_nist:`2024-50117`, :cve_nist:`2024-50142`, :cve_nist:`2024-50148`, :cve_nist:`2024-50150`,
31 :cve_nist:`2024-50151`, :cve_nist:`2024-50167`, :cve_nist:`2024-50168`, :cve_nist:`2024-50171`,
32 :cve_nist:`2024-50185`, :cve_nist:`2024-50192`, :cve_nist:`2024-50193`, :cve_nist:`2024-50194`,
33 :cve_nist:`2024-50195`, :cve_nist:`2024-50198`, :cve_nist:`2024-50201`, :cve_nist:`2024-50202`,
34 :cve_nist:`2024-50205`, :cve_nist:`2024-50208`, :cve_nist:`2024-50209`, :cve_nist:`2024-50229`,
35 :cve_nist:`2024-50230`, :cve_nist:`2024-50233`, :cve_nist:`2024-50234`, :cve_nist:`2024-50236`,
36 :cve_nist:`2024-50237`, :cve_nist:`2024-50251`, :cve_nist:`2024-50262`, :cve_nist:`2024-50264`,
37 :cve_nist:`2024-50265`, :cve_nist:`2024-50267`, :cve_nist:`2024-50268`, :cve_nist:`2024-50269`,
38 :cve_nist:`2024-50273`, :cve_nist:`2024-50278`, :cve_nist:`2024-50279`, :cve_nist:`2024-50282`,
39 :cve_nist:`2024-50287`, :cve_nist:`2024-50292`, :cve_nist:`2024-50296`, :cve_nist:`2024-50299`,
40 :cve_nist:`2024-50301`, :cve_nist:`2024-50302`, :cve_nist:`2024-53042`, :cve_nist:`2024-53052`,
41 :cve_nist:`2024-53057`, :cve_nist:`2024-53059`, :cve_nist:`2024-53060`, :cve_nist:`2024-53061`,
42 :cve_nist:`2024-53063`, :cve_nist:`2024-53066`, :cve_nist:`2024-53096`, :cve_nist:`2024-53097`,
43 :cve_nist:`2024-53101`, :cve_nist:`2024-53103`, :cve_nist:`2024-53104`, :cve_nist:`2024-53145`,
44 :cve_nist:`2024-53146`, :cve_nist:`2024-53150`, :cve_nist:`2024-53155`, :cve_nist:`2024-53156`,
45 :cve_nist:`2024-53157`, :cve_nist:`2024-53161`, :cve_nist:`2024-53165`, :cve_nist:`2024-53171`,
46 :cve_nist:`2024-53173`, :cve_nist:`2024-53174`, :cve_nist:`2024-53194`, :cve_nist:`2024-53197`,
47 :cve_nist:`2024-53217`, :cve_nist:`2024-53226`, :cve_nist:`2024-53227`, :cve_nist:`2024-53237`,
48 :cve_nist:`2024-53239`, :cve_nist:`2024-55916`, :cve_nist:`2024-56548`, :cve_nist:`2024-56558`,
49 :cve_nist:`2024-56567`, :cve_nist:`2024-56568`, :cve_nist:`2024-56569`, :cve_nist:`2024-56572`,
50 :cve_nist:`2024-56574`, :cve_nist:`2024-56581`, :cve_nist:`2024-56587`, :cve_nist:`2024-56593`,
51 :cve_nist:`2024-56595`, :cve_nist:`2024-56596`, :cve_nist:`2024-56598`, :cve_nist:`2024-56600`,
52 :cve_nist:`2024-56601`, :cve_nist:`2024-56602`, :cve_nist:`2024-56603`, :cve_nist:`2024-56605`,
53 :cve_nist:`2024-56606`, :cve_nist:`2024-56615`, :cve_nist:`2024-56619`, :cve_nist:`2024-56623`,
54 :cve_nist:`2024-56629`, :cve_nist:`2024-56634`, :cve_nist:`2024-56642`, :cve_nist:`2024-56643`,
55 :cve_nist:`2024-56648`, :cve_nist:`2024-56650`, :cve_nist:`2024-56659`, :cve_nist:`2024-56662`,
56 :cve_nist:`2024-56670`, :cve_nist:`2024-56688`, :cve_nist:`2024-56698`, :cve_nist:`2024-56704`,
57 :cve_nist:`2024-56716`, :cve_nist:`2024-56720`, :cve_nist:`2024-56723`, :cve_nist:`2024-56724`,
58 :cve_nist:`2024-56728`, :cve_nist:`2024-56739`, :cve_nist:`2024-56746`, :cve_nist:`2024-56747`,
59 :cve_nist:`2024-56748`, :cve_nist:`2024-56754`, :cve_nist:`2024-56756`, :cve_nist:`2024-56770`,
60 :cve_nist:`2024-56779`, :cve_nist:`2024-56780`, :cve_nist:`2024-56781`, :cve_nist:`2024-56785`,
61 :cve_nist:`2024-57802`, :cve_nist:`2024-57807`, :cve_nist:`2024-57850`, :cve_nist:`2024-57874`,
62 :cve_nist:`2024-57890`, :cve_nist:`2024-57896`, :cve_nist:`2024-57900`, :cve_nist:`2024-57901`,
63 :cve_nist:`2024-57902`, :cve_nist:`2024-57910`, :cve_nist:`2024-57911`, :cve_nist:`2024-57913`,
64 :cve_nist:`2024-57922`, :cve_nist:`2024-57938`, :cve_nist:`2024-57939`, :cve_nist:`2024-57946`,
65 :cve_nist:`2024-57951`, :cve_nist:`2025-21638`, :cve_nist:`2025-21687`, :cve_nist:`2025-21689`,
66 :cve_nist:`2025-21692`, :cve_nist:`2025-21694`, :cve_nist:`2025-21697` and :cve_nist:`2025-21699`
67- linux-yocto/5.15: Fix :cve_nist:`2024-57979`, :cve_nist:`2024-58034`, :cve_nist:`2024-58052`,
68 :cve_nist:`2024-58055`, :cve_nist:`2024-58058`, :cve_nist:`2024-58063`, :cve_nist:`2024-58069`,
69 :cve_nist:`2024-58071`, :cve_nist:`2024-58076`, :cve_nist:`2024-58083`, :cve_nist:`2025-21700`,
70 :cve_nist:`2025-21703`, :cve_nist:`2025-21715`, :cve_nist:`2025-21722`, :cve_nist:`2025-21727`,
71 :cve_nist:`2025-21731`, :cve_nist:`2025-21753`, :cve_nist:`2025-21756`, :cve_nist:`2025-21760`,
72 :cve_nist:`2025-21761`, :cve_nist:`2025-21762`, :cve_nist:`2025-21763`, :cve_nist:`2025-21764`,
73 :cve_nist:`2025-21796`, :cve_nist:`2025-21811`, :cve_nist:`2025-21887`, :cve_nist:`2025-21898`,
74 :cve_nist:`2025-21904`, :cve_nist:`2025-21905`, :cve_nist:`2025-21912`, :cve_nist:`2025-21917`,
75 :cve_nist:`2025-21919`, :cve_nist:`2025-21920`, :cve_nist:`2025-21922`, :cve_nist:`2025-21934`,
76 :cve_nist:`2025-21943`, :cve_nist:`2025-21948` and :cve_nist:`2025-21951`
77- libpcre2: Ignore :cve_nist:`2022-1586`
78- libtasn1: Fix :cve_nist:`2024-12133`
79- libxml2: Fix :cve_nist:`2022-49043`, :cve_nist:`2024-56171`, :cve_nist:`2025-24928` and
80 :cve_nist:`2025-27113`
81- libxslt: Fix :cve_nist:`2024-55549` and :cve_nist:`2025-24855`
82- llvm: Fix :cve_nist:`2024-0151`
83- mpg123: Fix :cve_nist:`2024-10573`
84- openssh: Fix :cve_nist:`2025-26465`
85- ovmf: Revert Fix for CVE-2023-45236 :cve_nist:`2023-45237`
86- perl: Ignore :cve_nist:`2023-47038`
87- puzzles: Ignore :cve_nist:`2024-13769`, :cve_nist:`2024-13770` and :cve_nist:`2025-0837`
88- python3: Fix :cve_nist:`2025-0938`
89- ruby: Fix :cve_nist:`2024-41946`, :cve_nist:`2025-27219` and :cve_nist:`2025-27220`
90- subversion: Ignore :cve_nist:`2024-45720`
91- systemd: Fix :cve_nist:`2022-3821`, :cve_nist:`2022-4415`, :cve_nist:`2022-45873` and
92 :cve_nist:`2023-7008`
93- tiff: mark :cve_nist:`2023-30774` as patched with existing patch
94- u-boot: Fix :cve_nist:`2022-2347`, :cve_nist:`2022-30767`, :cve_nist:`2022-30790`,
95 :cve_nist:`2024-57254`, :cve_nist:`2024-57255`, :cve_nist:`2024-57256`, :cve_nist:`2024-57257`,
96 :cve_nist:`2024-57258` and :cve_nist:`2024-57259`
97- vim: Fix :cve_nist:`2025-1215`, :cve_nist:`2025-22134`, :cve_nist:`2025-24014`,
98 :cve_nist:`2025-26603`, :cve_nist:`2025-27423` and :cve_nist:`2025-29768`
99- xserver-xorg: Fix :cve_nist:`2022-49737`, :cve_nist:`2025-26594`, :cve_nist:`2025-26595`,
100 :cve_nist:`2025-26596`, :cve_nist:`2025-26597`, :cve_nist:`2025-26598`, :cve_nist:`2025-26599`,
101 :cve_nist:`2025-26600` and :cve_nist:`2025-26601`
102- xwayland: Fix :cve_nist:`2022-49737`, :cve_nist:`2024-9632`, :cve_nist:`2024-21885`,
103 :cve_nist:`2024-21886`, :cve_nist:`2024-31080`, :cve_nist:`2024-31081`, :cve_nist:`2024-31083`,
104 :cve_nist:`2025-26594`, :cve_nist:`2025-26595`, :cve_nist:`2025-26596`, :cve_nist:`2025-26597`,
105 :cve_nist:`2025-26598`, :cve_nist:`2025-26599`, :cve_nist:`2025-26600` and :cve_nist:`2025-26601`
106- zlib: Fix :cve_nist:`2014-9485`
107
108
109
110Fixes in Yocto-4.0.26
111~~~~~~~~~~~~~~~~~~~~~
112
113- bind: Upgrade to 9.18.33
114- bitbake: cache: bump cache version
115- bitbake: siggen.py: Improve taskhash reproducibility
116- boost: fix do_fetch error
117- build-appliance-image: Update to kirkstone head revision
118- contributor-guide/submit-changes: add policy on AI generated code
119- cve-update-nvd2-native: handle missing vulnStatus
120- docs: Add favicon for the documentation html
121- docs: Remove all mention of core-image-lsb
122- libtasn1: upgrade to 4.20.0
123- libxcrypt-compat: Remove libcrypt.so to fix conflict with libcrypt
124- libxml2: fix compilation of explicit child axis in pattern
125- linux-yocto/5.10: update to v5.10.234
126- linux-yocto/5.15: update to v5.15.179
127- mesa: Fix missing GLES3 headers in SDK sysroot
128- mesa: Update :term:`SRC_URI`
129- meta: Enable '-o pipefail' for the SDK installer
130- migration-guides: add release notes for 4.0.25
131- poky.conf: add ubuntu2404 to :term:`SANITY_TESTED_DISTROS`
132- poky.conf: bump version for 4.0.26
133- procps: replaced one use of fputs(3) with a write(2) call
134- ref-manual: don't refer to poky-lsb
135- scripts/install-buildtools: Update to 4.0.24
136- scritps/runqemu: Ensure we only have two serial ports
137- systemd: upgrade to 250.14
138- tzcode-native: Fix compiler setting from 2023d version
139- tzcode: Update :term:`SRC_URI`
140- tzdata/tzcode-native: upgrade 2025a
141- vim: Upgrade to 9.1.1198
142- virglrenderer: fix do_fetch error
143- vulnerabilities/classes: remove references to cve-check text format
144- xz: Update :term:`SRC_URI`
145- yocto-uninative: Update to 4.7 for glibc 2.41
146
147
148Known Issues in Yocto-4.0.26
149~~~~~~~~~~~~~~~~~~~~~~~~~~~~
150
151- N/A
152
153
154Contributors to Yocto-4.0.26
155~~~~~~~~~~~~~~~~~~~~~~~~~~~~
156
157Thanks to the following people who contributed to this release:
158
159- Aleksandar Nikolic
160- Alessio Cascone
161- Antonin Godard
162- Archana Polampalli
163- Ashish Sharma
164- Bruce Ashfield
165- Carlos Dominguez
166- Deepesh Varatharajan
167- Divya Chellam
168- Guocai He
169- Hitendra Prajapati
170- Hongxu Jia
171- Jiaying Song
172- Johannes Kauffmann
173- Kai Kang
174- Lee Chee Yang
175- Libo Chen
176- Marta Rybczynska
177- Michael Halstead
178- Mingli Yu
179- Moritz Haase
180- Narpat Mali
181- Paulo Neves
182- Peter Marko
183- Priyal Doshi
184- Richard Purdie
185- Robert Yang
186- Ross Burton
187- Sakib Sajal
188- Steve Sakoman
189- Vijay Anusuri
190- Yogita Urade
191- Zhang Peng
192
193
194Repositories / Downloads for Yocto-4.0.26
195~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
196
197poky
198
199- Repository Location: :yocto_git:`/poky`
200- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
201- Tag: :yocto_git:`yocto-4.0.26 </poky/log/?h=yocto-4.0.26>`
202- Git Revision: :yocto_git:`d70d287a77d5026b698ac237ab865b2dafd36bb8 </poky/commit/?id=d70d287a77d5026b698ac237ab865b2dafd36bb8>`
203- Release Artefact: poky-d70d287a77d5026b698ac237ab865b2dafd36bb8
204- sha: 3ebfadb8bff4c1ca12b3cf3e4ef6e3ac2ce52b73570266daa98436c9959249f2
205- Download Locations:
206 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/poky-d70d287a77d5026b698ac237ab865b2dafd36bb8.tar.bz2
207 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/poky-d70d287a77d5026b698ac237ab865b2dafd36bb8.tar.bz2
208
209openembedded-core
210
211- Repository Location: :oe_git:`/openembedded-core`
212- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
213- Tag: :oe_git:`yocto-4.0.26 </openembedded-core/log/?h=yocto-4.0.26>`
214- Git Revision: :oe_git:`1efbe1004bc82e7c14c1e8bd4ce644f5015c3346 </openembedded-core/commit/?id=1efbe1004bc82e7c14c1e8bd4ce644f5015c3346>`
215- Release Artefact: oecore-1efbe1004bc82e7c14c1e8bd4ce644f5015c3346
216- sha: d3805e034dabd0865dbf55488b2c16d4ea0351d37aa826f0054a6bfdde5a8be9
217- Download Locations:
218 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/oecore-1efbe1004bc82e7c14c1e8bd4ce644f5015c3346.tar.bz2
219 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/oecore-1efbe1004bc82e7c14c1e8bd4ce644f5015c3346.tar.bz2
220
221meta-mingw
222
223- Repository Location: :yocto_git:`/meta-mingw`
224- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
225- Tag: :yocto_git:`yocto-4.0.26 </meta-mingw/log/?h=yocto-4.0.26>`
226- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
227- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
228- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
229- Download Locations:
230 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
231 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
232
233meta-gplv2
234
235- Repository Location: :yocto_git:`/meta-gplv2`
236- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
237- Tag: :yocto_git:`yocto-4.0.26 </meta-gplv2/log/?h=yocto-4.0.26>`
238- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
239- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
240- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
241- Download Locations:
242 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
243 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
244
245bitbake
246
247- Repository Location: :oe_git:`/bitbake`
248- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
249- Tag: :oe_git:`yocto-4.0.26 </bitbake/log/?h=yocto-4.0.26>`
250- Git Revision: :oe_git:`046871d9fd76efdca7b72718b328d8f545523f7e </bitbake/commit/?id=046871d9fd76efdca7b72718b328d8f545523f7e>`
251- Release Artefact: bitbake-046871d9fd76efdca7b72718b328d8f545523f7e
252- sha: e9df0a9f5921b583b539188d66b23f120e1751000e7822e76c3391d5c76ee21a
253- Download Locations:
254 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.26/bitbake-046871d9fd76efdca7b72718b328d8f545523f7e.tar.bz2
255 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.26/bitbake-046871d9fd76efdca7b72718b328d8f545523f7e.tar.bz2
256
257yocto-docs
258
259- Repository Location: :yocto_git:`/yocto-docs`
260- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
261- Tag: :yocto_git:`yocto-4.0.26 </yocto-docs/log/?h=yocto-4.0.26>`
262- Git Revision: :yocto_git:`9b4c36f7b02dd4bedfec90206744a1e90e37733c </yocto-docs/commit/?id=9b4c36f7b02dd4bedfec90206744a1e90e37733c>`
263
diff --git a/documentation/migration-guides/release-notes-4.0.27.rst b/documentation/migration-guides/release-notes-4.0.27.rst
new file mode 100644
index 0000000000..e37e2f78b6
--- /dev/null
+++ b/documentation/migration-guides/release-notes-4.0.27.rst
@@ -0,0 +1,153 @@
1Release notes for Yocto-4.0.27 (Kirkstone)
2------------------------------------------
3
4Security Fixes in Yocto-4.0.27
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
7- binutils: Fix :cve_nist:`2025-1178`
8- busybox: fix :cve_nist:`2023-39810`
9- connman :fix :cve_nist:`2025-32743`
10- curl: Ignore :cve_nist:`2025-0725`
11- ghostscript: Fix :cve_nist:`2025-27830`, :cve_nist:`2025-27831`, :cve_nist:`2025-27832`,
12 :cve_nist:`2025-27834`, :cve_nist:`2025-27835` and :cve_nist:`2025-27836`
13- ghostscript: Ignore :cve_nist:`2024-29507`, :cve_nist:`2025-27833` and :cve_nist:`2025-27837`
14- glib-2.0: Fix :cve_nist:`2025-3360`
15- go: Fix :cve_nist:`2025-22871`
16- libarchive: Ignore :cve_nist:`2024-48615`
17- libpam: Fix :cve_nist:`2024-10041`
18- libsoup-2.4: Fix :cve_nist:`2024-52532`, :cve_nist:`2025-32906` and :cve_nist:`2025-32909`
19- libsoup: Fix :cve_nist:`2024-52532`, :cve_nist:`2025-32906`, :cve_nist:`2025-32909`,
20 :cve_nist:`2025-32910`, :cve_nist:`2025-32911`, :cve_nist:`2025-32912`, :cve_nist:`2025-32913`
21 and :cve_nist:`2025-32914`
22- libxml2: Fix :cve_nist:`2025-32414` and :cve_nist:`2025-32415`
23- ofono: Fix :cve_nist:`2024-7537`
24- perl: Fix :cve_nist:`2024-56406`
25- ppp: Fix :cve_nist:`2024-58250`
26- python3-setuptools: Fix :cve_nist:`2024-6345`
27- qemu: Ignore :cve_nist:`2023-1386`
28- ruby: Fix :cve_nist:`2024-43398`
29- sqlite3: Fix :cve_nist:`2025-29088`
30- systemd: Ignore :cve_nist:`2022-3821`, :cve_nist:`2022-4415` and :cve_nist:`2022-45873`
31
32
33Fixes in Yocto-4.0.27
34~~~~~~~~~~~~~~~~~~~~~
35
36- Revert "cve-update-nvd2-native: Tweak to work better with NFS DL_DIR"
37- build-appliance-image: Update to kirkstone head revision
38- cve-update-nvd2-native: add workaround for json5 style list
39- docs: Fix dead links that use the :term:`DISTRO` macro
40- docs: manuals: remove repeated word
41- docs: poky.yaml: introduce DISTRO_LATEST_TAG
42- glibc: Add single-threaded fast path to rand()
43- glibc: stable 2.35 branch updates
44- module.bbclass: add KBUILD_EXTRA_SYMBOLS to install
45- perl: enable _GNU_SOURCE define via d_gnulibc
46- poky.conf: bump version for 4.0.27
47- ref-manual/variables.rst: document autotools class related variables
48- scripts/install-buildtools: Update to 4.0.26
49- systemd: backport patch to fix journal issue
50- systemd: systemd-journald fails to setup LogNamespace
51- tzdata/tzcode-native: upgrade to 2025b
52
53
54Known Issues in Yocto-4.0.27
55~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56
57- N/A
58
59
60Contributors to Yocto-4.0.27
61~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62
63- Aleksandar Nikolic
64- Alexander Kanavin
65- Alon Bar-Lev
66- Andrew Kreimer
67- Antonin Godard
68- Chen Qi
69- Deepesh Varatharajan
70- Divya Chellam
71- Haitao Liu
72- Haixiao Yan
73- Hitendra Prajapati
74- Peter Marko
75- Praveen Kumar
76- Priyal Doshi
77- Shubham Kulkarni
78- Soumya Sambu
79- Steve Sakoman
80- Vijay Anusuri
81- Yogita Urade
82
83
84Repositories / Downloads for Yocto-4.0.27
85~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86
87poky
88
89- Repository Location: :yocto_git:`/poky`
90- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
91- Tag: :yocto_git:`yocto-4.0.27 </poky/log/?h=yocto-4.0.27>`
92- Git Revision: :yocto_git:`ab9a994a8cd8e06b519a693db444030999d273b7 </poky/commit/?id=ab9a994a8cd8e06b519a693db444030999d273b7>`
93- Release Artefact: poky-ab9a994a8cd8e06b519a693db444030999d273b7
94- sha: 77a366c17cf29eef15c6ff3f44e73f81c07288c723fd4a6dbd8c7ee9b79933f3
95- Download Locations:
96 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/poky-ab9a994a8cd8e06b519a693db444030999d273b7.tar.bz2
97 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/poky-ab9a994a8cd8e06b519a693db444030999d273b7.tar.bz2
98
99openembedded-core
100
101- Repository Location: :oe_git:`/openembedded-core`
102- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
103- Tag: :oe_git:`yocto-4.0.27 </openembedded-core/log/?h=yocto-4.0.27>`
104- Git Revision: :oe_git:`e8be08a624b2d024715a5c8b0c37f2345a02336b </openembedded-core/commit/?id=e8be08a624b2d024715a5c8b0c37f2345a02336b>`
105- Release Artefact: oecore-e8be08a624b2d024715a5c8b0c37f2345a02336b
106- sha: cc5b0fadab021c6dc61f37fc4ff01a1cf657e7c219488ce264bede42f7f6212f
107- Download Locations:
108 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/oecore-e8be08a624b2d024715a5c8b0c37f2345a02336b.tar.bz2
109 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/oecore-e8be08a624b2d024715a5c8b0c37f2345a02336b.tar.bz2
110
111meta-mingw
112
113- Repository Location: :yocto_git:`/meta-mingw`
114- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
115- Tag: :yocto_git:`yocto-4.0.27 </meta-mingw/log/?h=yocto-4.0.27>`
116- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
117- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
118- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
119- Download Locations:
120 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
121 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
122
123meta-gplv2
124
125- Repository Location: :yocto_git:`/meta-gplv2`
126- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
127- Tag: :yocto_git:`yocto-4.0.27 </meta-gplv2/log/?h=yocto-4.0.27>`
128- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
129- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
130- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
131- Download Locations:
132 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
133 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
134
135bitbake
136
137- Repository Location: :oe_git:`/bitbake`
138- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
139- Tag: :oe_git:`yocto-4.0.27 </bitbake/log/?h=yocto-4.0.27>`
140- Git Revision: :oe_git:`046871d9fd76efdca7b72718b328d8f545523f7e </bitbake/commit/?id=046871d9fd76efdca7b72718b328d8f545523f7e>`
141- Release Artefact: bitbake-046871d9fd76efdca7b72718b328d8f545523f7e
142- sha: e9df0a9f5921b583b539188d66b23f120e1751000e7822e76c3391d5c76ee21a
143- Download Locations:
144 https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.27/bitbake-046871d9fd76efdca7b72718b328d8f545523f7e.tar.bz2
145 https://mirrors.kernel.org/yocto/yocto/yocto-4.0.27/bitbake-046871d9fd76efdca7b72718b328d8f545523f7e.tar.bz2
146
147yocto-docs
148
149- Repository Location: :yocto_git:`/yocto-docs`
150- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
151- Tag: :yocto_git:`yocto-4.0.27 </yocto-docs/log/?h=yocto-4.0.27>`
152- Git Revision: :yocto_git:`0d51e553d5f83eea6634e03ddc9c7740bf72fcea </yocto-docs/commit/?id=0d51e553d5f83eea6634e03ddc9c7740bf72fcea>`
153
diff --git a/documentation/migration-guides/release-notes-4.0.3.rst b/documentation/migration-guides/release-notes-4.0.3.rst
index 46fe858cb7..1b9559a962 100644
--- a/documentation/migration-guides/release-notes-4.0.3.rst
+++ b/documentation/migration-guides/release-notes-4.0.3.rst
@@ -6,21 +6,21 @@ Release notes for Yocto-4.0.3 (Kirkstone)
6Security Fixes in Yocto-4.0.3 6Security Fixes in Yocto-4.0.3
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- binutils: fix :cve:`2019-1010204` 9- binutils: fix :cve_nist:`2019-1010204`
10- busybox: fix :cve:`2022-30065` 10- busybox: fix :cve_nist:`2022-30065`
11- cups: ignore :cve:`2022-26691` 11- cups: ignore :cve_nist:`2022-26691`
12- curl: Fix :cve:`2022-32205`, :cve:`2022-32206`, :cve:`2022-32207` and :cve:`2022-32208` 12- curl: Fix :cve_nist:`2022-32205`, :cve_nist:`2022-32206`, :cve_nist:`2022-32207` and :cve_nist:`2022-32208`
13- dpkg: fix :cve:`2022-1664` 13- dpkg: fix :cve_nist:`2022-1664`
14- ghostscript: fix :cve:`2022-2085` 14- ghostscript: fix :cve_nist:`2022-2085`
15- harfbuzz: fix :cve:`2022-33068` 15- harfbuzz: fix :cve_nist:`2022-33068`
16- libtirpc: fix :cve:`2021-46828` 16- libtirpc: fix :cve_nist:`2021-46828`
17- lua: fix :cve:`2022-33099` 17- lua: fix :cve_nist:`2022-33099`
18- nasm: ignore :cve:`2020-18974` 18- nasm: ignore :cve_nist:`2020-18974`
19- qemu: fix :cve:`2022-35414` 19- qemu: fix :cve_nist:`2022-35414`
20- qemu: ignore :cve:`2021-20255` and :cve:`2019-12067` 20- qemu: ignore :cve_nist:`2021-20255` and :cve_nist:`2019-12067`
21- tiff: fix :cve:`2022-1354`, :cve:`2022-1355`, :cve:`2022-2056`, :cve:`2022-2057` and :cve:`2022-2058` 21- tiff: fix :cve_nist:`2022-1354`, :cve_nist:`2022-1355`, :cve_nist:`2022-2056`, :cve_nist:`2022-2057` and :cve_nist:`2022-2058`
22- u-boot: fix :cve:`2022-34835` 22- u-boot: fix :cve_nist:`2022-34835`
23- unzip: fix :cve:`2022-0529` and :cve:`2022-0530` 23- unzip: fix :cve_nist:`2022-0529` and :cve_nist:`2022-0530`
24 24
25 25
26Fixes in Yocto-4.0.3 26Fixes in Yocto-4.0.3
diff --git a/documentation/migration-guides/release-notes-4.0.4.rst b/documentation/migration-guides/release-notes-4.0.4.rst
index 1d6e525bbc..41ef095c45 100644
--- a/documentation/migration-guides/release-notes-4.0.4.rst
+++ b/documentation/migration-guides/release-notes-4.0.4.rst
@@ -6,17 +6,17 @@ Release notes for Yocto-4.0.4 (Kirkstone)
6Security Fixes in Yocto-4.0.4 6Security Fixes in Yocto-4.0.4
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- binutils : fix :cve:`2022-38533` 9- binutils : fix :cve_nist:`2022-38533`
10- curl: fix :cve:`2022-35252` 10- curl: fix :cve_nist:`2022-35252`
11- sqlite: fix :cve:`2022-35737` 11- sqlite: fix :cve_nist:`2022-35737`
12- grub2: fix :cve:`2021-3695`, :cve:`2021-3696`, :cve:`2021-3697`, :cve:`2022-28733`, :cve:`2022-28734` and :cve:`2022-28735` 12- grub2: fix :cve_nist:`2021-3695`, :cve_nist:`2021-3696`, :cve_nist:`2021-3697`, :cve_nist:`2022-28733`, :cve_nist:`2022-28734` and :cve_nist:`2022-28735`
13- u-boot: fix :cve:`2022-30552` and :cve:`2022-33967` 13- u-boot: fix :cve_nist:`2022-30552` and :cve_nist:`2022-33967`
14- libxml2: Ignore :cve:`2016-3709` 14- libxml2: Ignore :cve_nist:`2016-3709`
15- libtiff: fix :cve:`2022-34526` 15- libtiff: fix :cve_nist:`2022-34526`
16- zlib: fix :cve:`2022-37434` 16- zlib: fix :cve_nist:`2022-37434`
17- gnutls: fix :cve:`2022-2509` 17- gnutls: fix :cve_nist:`2022-2509`
18- u-boot: fix :cve:`2022-33103` 18- u-boot: fix :cve_nist:`2022-33103`
19- qemu: fix :cve:`2021-3507`, :cve:`2021-3929`, :cve:`2021-4158`, :cve:`2022-0216` and :cve:`2022-0358` 19- qemu: fix :cve_nist:`2021-3507`, :cve_nist:`2021-3929`, :cve_nist:`2021-4158`, :cve_nist:`2022-0216` and :cve_nist:`2022-0358`
20 20
21 21
22Fixes in Yocto-4.0.4 22Fixes in Yocto-4.0.4
diff --git a/documentation/migration-guides/release-notes-4.0.5.rst b/documentation/migration-guides/release-notes-4.0.5.rst
index cdfe85b750..ae061ed633 100644
--- a/documentation/migration-guides/release-notes-4.0.5.rst
+++ b/documentation/migration-guides/release-notes-4.0.5.rst
@@ -6,11 +6,11 @@ Release notes for Yocto-4.0.5 (Kirkstone)
6Security Fixes in Yocto-4.0.5 6Security Fixes in Yocto-4.0.5
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- qemu: fix :cve:`2021-3750`, :cve:`2021-3611` and :cve:`2022-2962` 9- qemu: fix :cve_nist:`2021-3750`, :cve_nist:`2021-3611` and :cve_nist:`2022-2962`
10- binutils : fix :cve:`2022-38126`, :cve:`2022-38127` and :cve:`2022-38128` 10- binutils : fix :cve_nist:`2022-38126`, :cve_nist:`2022-38127` and :cve_nist:`2022-38128`
11- tff: fix :cve:`2022-2867`, :cve:`2022-2868` and :cve:`2022-2869` 11- tff: fix :cve_nist:`2022-2867`, :cve_nist:`2022-2868` and :cve_nist:`2022-2869`
12- inetutils: fix :cve:`2022-39028` 12- inetutils: fix :cve_nist:`2022-39028`
13- go: fix :cve:`2022-27664` 13- go: fix :cve_nist:`2022-27664`
14 14
15Fixes in Yocto-4.0.5 15Fixes in Yocto-4.0.5
16~~~~~~~~~~~~~~~~~~~~ 16~~~~~~~~~~~~~~~~~~~~
diff --git a/documentation/migration-guides/release-notes-4.0.6.rst b/documentation/migration-guides/release-notes-4.0.6.rst
index 76d23fcf0c..e0c0cc09b9 100644
--- a/documentation/migration-guides/release-notes-4.0.6.rst
+++ b/documentation/migration-guides/release-notes-4.0.6.rst
@@ -6,28 +6,28 @@ Release notes for Yocto-4.0.6 (Kirkstone)
6Security Fixes in Yocto-4.0.6 6Security Fixes in Yocto-4.0.6
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bash: Fix :cve:`2022-3715` 9- bash: Fix :cve_nist:`2022-3715`
10- curl: Fix :cve:`2022-32221`, :cve:`2022-42915` and :cve:`2022-42916` 10- curl: Fix :cve_nist:`2022-32221`, :cve_nist:`2022-42915` and :cve_nist:`2022-42916`
11- dbus: Fix :cve:`2022-42010`, :cve:`2022-42011` and :cve:`2022-42012` 11- dbus: Fix :cve_nist:`2022-42010`, :cve_nist:`2022-42011` and :cve_nist:`2022-42012`
12- dropbear: Fix :cve:`2021-36369` 12- dropbear: Fix :cve_nist:`2021-36369`
13- ffmpeg: Fix :cve:`2022-3964`, :cve:`2022-3965` 13- ffmpeg: Fix :cve_nist:`2022-3964`, :cve_nist:`2022-3965`
14- go: Fix :cve:`2022-2880` 14- go: Fix :cve_nist:`2022-2880`
15- grub2: Fix :cve:`2022-2601`, :cve:`2022-3775` and :cve:`2022-28736` 15- grub2: Fix :cve_nist:`2022-2601`, :cve_nist:`2022-3775` and :cve_nist:`2022-28736`
16- libarchive: Fix :cve:`2022-36227` 16- libarchive: Fix :cve_nist:`2022-36227`
17- libpam: Fix :cve:`2022-28321` 17- libpam: Fix :cve_nist:`2022-28321`
18- libsndfile1: Fix :cve:`2021-4156` 18- libsndfile1: Fix :cve_nist:`2021-4156`
19- lighttpd: Fix :cve:`2022-41556` 19- lighttpd: Fix :cve_nist:`2022-41556`
20- openssl: Fix :cve:`2022-3358` 20- openssl: Fix :cve_nist:`2022-3358`
21- pixman: Fix :cve:`2022-44638` 21- pixman: Fix :cve_nist:`2022-44638`
22- python3-mako: Fix :cve:`2022-40023` 22- python3-mako: Fix :cve_nist:`2022-40023`
23- python3: Fix :cve:`2022-42919` 23- python3: Fix :cve_nist:`2022-42919`
24- qemu: Fix :cve:`2022-3165` 24- qemu: Fix :cve_nist:`2022-3165`
25- sysstat: Fix :cve:`2022-39377` 25- sysstat: Fix :cve_nist:`2022-39377`
26- systemd: Fix :cve:`2022-3821` 26- systemd: Fix :cve_nist:`2022-3821`
27- tiff: Fix :cve:`2022-2953`, :cve:`2022-3599`, :cve:`2022-3597`, :cve:`2022-3626`, :cve:`2022-3627`, :cve:`2022-3570`, :cve:`2022-3598` and :cve:`2022-3970` 27- tiff: Fix :cve_nist:`2022-2953`, :cve_nist:`2022-3599`, :cve_nist:`2022-3597`, :cve_nist:`2022-3626`, :cve_nist:`2022-3627`, :cve_nist:`2022-3570`, :cve_nist:`2022-3598` and :cve_nist:`2022-3970`
28- vim: Fix :cve:`2022-3352`, :cve:`2022-3705` and :cve:`2022-4141` 28- vim: Fix :cve_nist:`2022-3352`, :cve_nist:`2022-3705` and :cve_nist:`2022-4141`
29- wayland: Fix :cve:`2021-3782` 29- wayland: Fix :cve_nist:`2021-3782`
30- xserver-xorg: Fix :cve:`2022-3550` and :cve:`2022-3551` 30- xserver-xorg: Fix :cve_nist:`2022-3550` and :cve_nist:`2022-3551`
31 31
32 32
33Fixes in Yocto-4.0.6 33Fixes in Yocto-4.0.6
diff --git a/documentation/migration-guides/release-notes-4.0.7.rst b/documentation/migration-guides/release-notes-4.0.7.rst
index c3885d9e0e..a11a29889d 100644
--- a/documentation/migration-guides/release-notes-4.0.7.rst
+++ b/documentation/migration-guides/release-notes-4.0.7.rst
@@ -6,25 +6,25 @@ Release notes for Yocto-4.0.7 (Kirkstone)
6Security Fixes in Yocto-4.0.7 6Security Fixes in Yocto-4.0.7
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- binutils: Fix :cve:`2022-4285` 9- binutils: Fix :cve_nist:`2022-4285`
10- curl: Fix :cve:`2022-43551` and :cve_mitre:`2022-43552` 10- curl: Fix :cve_nist:`2022-43551` and :cve_mitre:`2022-43552`
11- ffmpeg: Fix :cve:`2022-3109` and :cve:`2022-3341` 11- ffmpeg: Fix :cve_nist:`2022-3109` and :cve_nist:`2022-3341`
12- go: Fix :cve:`2022-41715` and :cve:`2022-41717` 12- go: Fix :cve_nist:`2022-41715` and :cve_nist:`2022-41717`
13- libX11: Fix :cve:`2022-3554` and :cve:`2022-3555` 13- libX11: Fix :cve_nist:`2022-3554` and :cve_nist:`2022-3555`
14- libarchive: Fix :cve:`2022-36227` 14- libarchive: Fix :cve_nist:`2022-36227`
15- libksba: Fix :cve:`2022-47629` 15- libksba: Fix :cve_nist:`2022-47629`
16- libpng: Fix :cve:`2019-6129` 16- libpng: Fix :cve_nist:`2019-6129`
17- libxml2: Fix :cve:`2022-40303` and :cve:`2022-40304` 17- libxml2: Fix :cve_nist:`2022-40303` and :cve_nist:`2022-40304`
18- openssl: Fix :cve:`2022-3996` 18- openssl: Fix :cve_nist:`2022-3996`
19- python3: Fix :cve:`2022-45061` 19- python3: Fix :cve_nist:`2022-45061`
20- python3-git: Fix :cve:`2022-24439` 20- python3-git: Fix :cve_nist:`2022-24439`
21- python3-setuptools: Fix :cve:`2022-40897` 21- python3-setuptools: Fix :cve_nist:`2022-40897`
22- python3-wheel: Fix :cve:`2022-40898` 22- python3-wheel: Fix :cve_nist:`2022-40898`
23- qemu: Fix :cve:`2022-4144` 23- qemu: Fix :cve_nist:`2022-4144`
24- sqlite: Fix :cve:`2022-46908` 24- sqlite: Fix :cve_nist:`2022-46908`
25- systemd: Fix :cve:`2022-45873` 25- systemd: Fix :cve_nist:`2022-45873`
26- vim: Fix :cve:`2023-0049`, :cve:`2023-0051`, :cve:`2023-0054` and :cve:`2023-0088` 26- vim: Fix :cve_nist:`2023-0049`, :cve_nist:`2023-0051`, :cve_nist:`2023-0054` and :cve_nist:`2023-0088`
27- webkitgtk: Fix :cve:`2022-32886`, :cve_mitre:`2022-32891` and :cve:`2022-32912` 27- webkitgtk: Fix :cve_nist:`2022-32886`, :cve_mitre:`2022-32891` and :cve_nist:`2022-32912`
28 28
29 29
30Fixes in Yocto-4.0.7 30Fixes in Yocto-4.0.7
@@ -39,7 +39,7 @@ Fixes in Yocto-4.0.7
39- busybox: always start do_compile with orig config files 39- busybox: always start do_compile with orig config files
40- busybox: rm temporary files if do_compile was interrupted 40- busybox: rm temporary files if do_compile was interrupted
41- cairo: fix CVE patches assigned wrong CVE number 41- cairo: fix CVE patches assigned wrong CVE number
42- cairo: update patch for :cve:`2019-6461` with upstream solution 42- cairo: update patch for :cve_nist:`2019-6461` with upstream solution
43- classes/create-spdx: Add SPDX_PRETTY option 43- classes/create-spdx: Add SPDX_PRETTY option
44- classes: image: Set empty weak default IMAGE_LINGUAS 44- classes: image: Set empty weak default IMAGE_LINGUAS
45- combo-layer: add sync-revs command 45- combo-layer: add sync-revs command
diff --git a/documentation/migration-guides/release-notes-4.0.8.rst b/documentation/migration-guides/release-notes-4.0.8.rst
index 223b74fbaf..af58d0462c 100644
--- a/documentation/migration-guides/release-notes-4.0.8.rst
+++ b/documentation/migration-guides/release-notes-4.0.8.rst
@@ -6,16 +6,16 @@ Release notes for Yocto-4.0.8 (Kirkstone)
6Security Fixes in Yocto-4.0.8 6Security Fixes in Yocto-4.0.8
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- apr-util: Fix :cve:`2022-25147` 9- apr-util: Fix :cve_nist:`2022-25147`
10- apr: Fix :cve:`2022-24963`, :cve:`2022-28331` and :cve:`2021-35940` 10- apr: Fix :cve_nist:`2022-24963`, :cve_nist:`2022-28331` and :cve_nist:`2021-35940`
11- bind: Fix :cve:`2022-3094`, :cve:`2022-3736` and :cve:`2022-3924` 11- bind: Fix :cve_nist:`2022-3094`, :cve_nist:`2022-3736` and :cve_nist:`2022-3924`
12- git: Ignore :cve:`2022-41953` 12- git: Ignore :cve_nist:`2022-41953`
13- git: Fix :cve:`2022-23521` and :cve:`2022-41903` 13- git: Fix :cve_nist:`2022-23521` and :cve_nist:`2022-41903`
14- libgit2: Fix :cve:`2023-22742` 14- libgit2: Fix :cve_nist:`2023-22742`
15- ppp: Fix :cve:`2022-4603` 15- ppp: Fix :cve_nist:`2022-4603`
16- python3-certifi: Fix :cve:`2022-23491` 16- python3-certifi: Fix :cve_nist:`2022-23491`
17- sudo: Fix :cve:`2023-22809` 17- sudo: Fix :cve_nist:`2023-22809`
18- tar: Fix :cve:`2022-48303` 18- tar: Fix :cve_nist:`2022-48303`
19 19
20 20
21Fixes in Yocto-4.0.8 21Fixes in Yocto-4.0.8
diff --git a/documentation/migration-guides/release-notes-4.0.9.rst b/documentation/migration-guides/release-notes-4.0.9.rst
index 236477443a..a571e95724 100644
--- a/documentation/migration-guides/release-notes-4.0.9.rst
+++ b/documentation/migration-guides/release-notes-4.0.9.rst
@@ -6,26 +6,26 @@ Release notes for Yocto-4.0.9 (Kirkstone)
6Security Fixes in Yocto-4.0.9 6Security Fixes in Yocto-4.0.9
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- binutils: Fix :cve:`2023-22608` 9- binutils: Fix :cve_nist:`2023-22608`
10- curl: Fix :cve:`2023-23914`, :cve:`2023-23915` and :cve:`2023-23916` 10- curl: Fix :cve_nist:`2023-23914`, :cve_nist:`2023-23915` and :cve_nist:`2023-23916`
11- epiphany: Fix :cve:`2023-26081` 11- epiphany: Fix :cve_nist:`2023-26081`
12- git: Ignore :cve:`2023-22743` 12- git: Ignore :cve_nist:`2023-22743`
13- glibc: Fix :cve:`2023-0687` 13- glibc: Fix :cve_nist:`2023-0687`
14- gnutls: Fix :cve:`2023-0361` 14- gnutls: Fix :cve_nist:`2023-0361`
15- go: Fix :cve:`2022-2879`, :cve:`2022-41720` and :cve:`2022-41723` 15- go: Fix :cve_nist:`2022-2879`, :cve_nist:`2022-41720` and :cve_nist:`2022-41723`
16- harfbuzz: Fix :cve:`2023-25193` 16- harfbuzz: Fix :cve_nist:`2023-25193`
17- less: Fix :cve:`2022-46663` 17- less: Fix :cve_nist:`2022-46663`
18- libmicrohttpd: Fix :cve:`2023-27371` 18- libmicrohttpd: Fix :cve_nist:`2023-27371`
19- libsdl2: Fix :cve:`2022-4743` 19- libsdl2: Fix :cve_nist:`2022-4743`
20- openssl: Fix :cve:`2022-3996`, :cve:`2023-0464`, :cve:`2023-0465` and :cve:`2023-0466` 20- openssl: Fix :cve_nist:`2022-3996`, :cve_nist:`2023-0464`, :cve_nist:`2023-0465` and :cve_nist:`2023-0466`
21- pkgconf: Fix :cve:`2023-24056` 21- pkgconf: Fix :cve_nist:`2023-24056`
22- python3: Fix :cve:`2023-24329` 22- python3: Fix :cve_nist:`2023-24329`
23- shadow: Ignore :cve:`2016-15024` 23- shadow: Ignore :cve_nist:`2016-15024`
24- systemd: Fix :cve:`2022-4415` 24- systemd: Fix :cve_nist:`2022-4415`
25- tiff: Fix :cve:`2023-0800`, :cve:`2023-0801`, :cve:`2023-0802`, :cve:`2023-0803` and :cve:`2023-0804` 25- tiff: Fix :cve_nist:`2023-0800`, :cve_nist:`2023-0801`, :cve_nist:`2023-0802`, :cve_nist:`2023-0803` and :cve_nist:`2023-0804`
26- vim: Fix :cve:`2023-0433`, :cve:`2023-0512`, :cve:`2023-1127`, :cve:`2023-1170`, :cve:`2023-1175`, :cve:`2023-1264` and :cve:`2023-1355` 26- vim: Fix :cve_nist:`2023-0433`, :cve_nist:`2023-0512`, :cve_nist:`2023-1127`, :cve_nist:`2023-1170`, :cve_nist:`2023-1175`, :cve_nist:`2023-1264` and :cve_nist:`2023-1355`
27- xserver-xorg: Fix :cve:`2023-0494` 27- xserver-xorg: Fix :cve_nist:`2023-0494`
28- xwayland: Fix :cve:`2023-0494` 28- xwayland: Fix :cve_nist:`2023-0494`
29 29
30 30
31Fixes in Yocto-4.0.9 31Fixes in Yocto-4.0.9
@@ -90,7 +90,7 @@ Fixes in Yocto-4.0.9
90- pybootchartui: Fix python syntax issue 90- pybootchartui: Fix python syntax issue
91- python3-git: fix indent error 91- python3-git: fix indent error
92- python3-setuptools-rust-native: Add direct dependency of native python3 modules 92- python3-setuptools-rust-native: Add direct dependency of native python3 modules
93- qemu: Revert "fix :cve:`2021-3507`" as not applicable for qemu 6.2 93- qemu: Revert "fix :cve_nist:`2021-3507`" as not applicable for qemu 6.2
94- rsync: Add missing prototypes to function declarations 94- rsync: Add missing prototypes to function declarations
95- rsync: Turn on -pedantic-errors at the end of 'configure' 95- rsync: Turn on -pedantic-errors at the end of 'configure'
96- runqemu: kill qemu if it hangs 96- runqemu: kill qemu if it hangs
diff --git a/documentation/migration-guides/release-notes-4.0.rst b/documentation/migration-guides/release-notes-4.0.rst
index a5d66c0410..e9e6949527 100644
--- a/documentation/migration-guides/release-notes-4.0.rst
+++ b/documentation/migration-guides/release-notes-4.0.rst
@@ -25,7 +25,7 @@ New Features / Enhancements in 4.0
25 25
26 BB_SIGNATURE_HANDLER = "OEEquivHash" 26 BB_SIGNATURE_HANDLER = "OEEquivHash"
27 BB_HASHSERVE = "auto" 27 BB_HASHSERVE = "auto"
28 BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687" 28 BB_HASHSERVE_UPSTREAM = "hashserv.yoctoproject.org:8686"
29 SSTATE_MIRRORS ?= "file://.* https://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH" 29 SSTATE_MIRRORS ?= "file://.* https://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
30 30
31- The Python package build process is now based on `wheels <https://pythonwheels.com/>`__ 31- The Python package build process is now based on `wheels <https://pythonwheels.com/>`__
@@ -337,37 +337,37 @@ Other license-related notes:
337Security Fixes in 4.0 337Security Fixes in 4.0
338~~~~~~~~~~~~~~~~~~~~~ 338~~~~~~~~~~~~~~~~~~~~~
339 339
340- binutils: :cve:`2021-42574`, :cve:`2021-45078` 340- binutils: :cve_nist:`2021-42574`, :cve_nist:`2021-45078`
341- curl: :cve:`2021-22945`, :cve:`2021-22946`, :cve:`2021-22947` 341- curl: :cve_nist:`2021-22945`, :cve_nist:`2021-22946`, :cve_nist:`2021-22947`
342- epiphany: :cve:`2021-45085`, :cve:`2021-45086`, :cve:`2021-45087`, :cve:`2021-45088` 342- epiphany: :cve_nist:`2021-45085`, :cve_nist:`2021-45086`, :cve_nist:`2021-45087`, :cve_nist:`2021-45088`
343- expat: :cve:`2021-45960`, :cve:`2021-46143`, :cve:`2022-22822`, :cve:`2022-22823`, :cve:`2022-22824`, :cve:`2022-22825`, :cve:`2022-22826`, :cve:`2022-22827`, :cve:`2022-23852`, :cve:`2022-23990`, :cve:`2022-25235`, :cve:`2022-25236`, :cve:`2022-25313`, :cve:`2022-25314`, :cve:`2022-25315` 343- expat: :cve_nist:`2021-45960`, :cve_nist:`2021-46143`, :cve_nist:`2022-22822`, :cve_nist:`2022-22823`, :cve_nist:`2022-22824`, :cve_nist:`2022-22825`, :cve_nist:`2022-22826`, :cve_nist:`2022-22827`, :cve_nist:`2022-23852`, :cve_nist:`2022-23990`, :cve_nist:`2022-25235`, :cve_nist:`2022-25236`, :cve_nist:`2022-25313`, :cve_nist:`2022-25314`, :cve_nist:`2022-25315`
344- ffmpeg: :cve:`2021-38114` 344- ffmpeg: :cve_nist:`2021-38114`
345- gcc: :cve:`2021-35465`, :cve:`2021-42574`, :cve:`2021-46195`, :cve:`2022-24765` 345- gcc: :cve_nist:`2021-35465`, :cve_nist:`2021-42574`, :cve_nist:`2021-46195`, :cve_nist:`2022-24765`
346- glibc: :cve:`2021-3998`, :cve:`2021-3999`, :cve:`2021-43396`, :cve:`2022-23218`, :cve:`2022-23219` 346- glibc: :cve_nist:`2021-3998`, :cve_nist:`2021-3999`, :cve_nist:`2021-43396`, :cve_nist:`2022-23218`, :cve_nist:`2022-23219`
347- gmp: :cve:`2021-43618` 347- gmp: :cve_nist:`2021-43618`
348- go: :cve:`2021-41771` and :cve:`2021-41772` 348- go: :cve_nist:`2021-41771` and :cve_nist:`2021-41772`
349- grub2: :cve:`2021-3981` 349- grub2: :cve_nist:`2021-3981`
350- gzip: :cve:`2022-1271` 350- gzip: :cve_nist:`2022-1271`
351- libarchive : :cve:`2021-31566`, :cve:`2021-36976` 351- libarchive : :cve_nist:`2021-31566`, :cve_nist:`2021-36976`
352- libxml2: :cve:`2022-23308` 352- libxml2: :cve_nist:`2022-23308`
353- libxslt: :cve:`2021-30560` 353- libxslt: :cve_nist:`2021-30560`
354- lighttpd: :cve:`2022-22707` 354- lighttpd: :cve_nist:`2022-22707`
355- linux-yocto/5.10: amdgpu: :cve:`2021-42327` 355- linux-yocto/5.10: amdgpu: :cve_nist:`2021-42327`
356- lua: :cve:`2021-43396` 356- lua: :cve_nist:`2021-43396`
357- openssl: :cve:`2021-4044`, :cve:`2022-0778` 357- openssl: :cve_nist:`2021-4044`, :cve_nist:`2022-0778`
358- qemu: :cve:`2022-1050`, :cve:`2022-26353`, :cve:`2022-26354` 358- qemu: :cve_nist:`2022-1050`, :cve_nist:`2022-26353`, :cve_nist:`2022-26354`
359- rpm: :cve:`2021-3521` 359- rpm: :cve_nist:`2021-3521`
360- seatd: :cve:`2022-25643` 360- seatd: :cve_nist:`2022-25643`
361- speex: :cve:`2020-23903` 361- speex: :cve_nist:`2020-23903`
362- squashfs-tools: :cve:`2021-41072` 362- squashfs-tools: :cve_nist:`2021-41072`
363- systemd: :cve:`2021-4034` 363- systemd: :cve_nist:`2021-4034`
364- tiff: :cve:`2022-0561`, :cve:`2022-0562`, :cve:`2022-0865`, :cve:`2022-0891`, :cve:`2022-0907`, :cve:`2022-0908`, :cve:`2022-0909`, :cve:`2022-0924`, :cve:`2022-1056`, :cve:`2022-22844` 364- tiff: :cve_nist:`2022-0561`, :cve_nist:`2022-0562`, :cve_nist:`2022-0865`, :cve_nist:`2022-0891`, :cve_nist:`2022-0907`, :cve_nist:`2022-0908`, :cve_nist:`2022-0909`, :cve_nist:`2022-0924`, :cve_nist:`2022-1056`, :cve_nist:`2022-22844`
365- unzip: :cve:`2021-4217` 365- unzip: :cve_nist:`2021-4217`
366- vim: :cve:`2021-3796`, :cve:`2021-3872`, :cve:`2021-3875`, :cve:`2021-3927`, :cve:`2021-3928`, :cve:`2021-3968`, :cve:`2021-3973`, :cve:`2021-4187`, :cve:`2022-0128`, :cve:`2022-0156`, :cve:`2022-0158`, :cve:`2022-0261`, :cve:`2022-0318`, :cve:`2022-0319`, :cve:`2022-0554`, :cve:`2022-0696`, :cve:`2022-0714`, :cve:`2022-0729`, :cve:`2022-0943` 366- vim: :cve_nist:`2021-3796`, :cve_nist:`2021-3872`, :cve_nist:`2021-3875`, :cve_nist:`2021-3927`, :cve_nist:`2021-3928`, :cve_nist:`2021-3968`, :cve_nist:`2021-3973`, :cve_nist:`2021-4187`, :cve_nist:`2022-0128`, :cve_nist:`2022-0156`, :cve_nist:`2022-0158`, :cve_nist:`2022-0261`, :cve_nist:`2022-0318`, :cve_nist:`2022-0319`, :cve_nist:`2022-0554`, :cve_nist:`2022-0696`, :cve_nist:`2022-0714`, :cve_nist:`2022-0729`, :cve_nist:`2022-0943`
367- virglrenderer: :cve:`2022-0135`, :cve:`2022-0175` 367- virglrenderer: :cve_nist:`2022-0135`, :cve_nist:`2022-0175`
368- webkitgtk: :cve:`2022-22589`, :cve:`2022-22590`, :cve:`2022-22592` 368- webkitgtk: :cve_nist:`2022-22589`, :cve_nist:`2022-22590`, :cve_nist:`2022-22592`
369- xz: :cve:`2022-1271` 369- xz: :cve_nist:`2022-1271`
370- zlib: :cve:`2018-25032` 370- zlib: :cve_nist:`2018-25032`
371 371
372 372
373 373
diff --git a/documentation/migration-guides/release-notes-4.1.1.rst b/documentation/migration-guides/release-notes-4.1.1.rst
index 4f31fbf1c7..8393bc5320 100644
--- a/documentation/migration-guides/release-notes-4.1.1.rst
+++ b/documentation/migration-guides/release-notes-4.1.1.rst
@@ -6,16 +6,16 @@ Release notes for Yocto-4.1.1 (Langdale)
6Security Fixes in Yocto-4.1.1 6Security Fixes in Yocto-4.1.1
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- curl: Fix :cve:`2022-32221`, :cve:`2022-35260`, :cve:`2022-42915` and :cve:`2022-42916` 9- curl: Fix :cve_nist:`2022-32221`, :cve_nist:`2022-35260`, :cve_nist:`2022-42915` and :cve_nist:`2022-42916`
10- libx11: Fix :cve:`2022-3554` 10- libx11: Fix :cve_nist:`2022-3554`
11- lighttpd: Fix :cve:`2022-41556` 11- lighttpd: Fix :cve_nist:`2022-41556`
12- openssl: Fix :cve:`2022-3358`, :cve:`2022-3602` and :cve:`2022-3786` 12- openssl: Fix :cve_nist:`2022-3358`, :cve_nist:`2022-3602` and :cve_nist:`2022-3786`
13- pixman: Fix :cve:`2022-44638` 13- pixman: Fix :cve_nist:`2022-44638`
14- qemu: Fix :cve:`2022-3165` 14- qemu: Fix :cve_nist:`2022-3165`
15- sudo: Fix :cve:`2022-43995` 15- sudo: Fix :cve_nist:`2022-43995`
16- tiff: Fix :cve:`2022-3599`, :cve:`2022-3597`, :cve:`2022-3626`, :cve:`2022-3627`, :cve:`2022-3570` and :cve:`2022-3598` 16- tiff: Fix :cve_nist:`2022-3599`, :cve_nist:`2022-3597`, :cve_nist:`2022-3626`, :cve_nist:`2022-3627`, :cve_nist:`2022-3570` and :cve_nist:`2022-3598`
17- xserver-xorg: Fix :cve:`2022-3550` and :cve:`2022-3551` 17- xserver-xorg: Fix :cve_nist:`2022-3550` and :cve_nist:`2022-3551`
18- xserver-xorg: Ignore :cve:`2022-3553` 18- xserver-xorg: Ignore :cve_nist:`2022-3553`
19 19
20 20
21Fixes in Yocto-4.1.1 21Fixes in Yocto-4.1.1
@@ -179,7 +179,7 @@ Fixes in Yocto-4.1.1
179- shadow: update 4.12.1 -> 4.12.3 179- shadow: update 4.12.1 -> 4.12.3
180- systemd: add systemd-creds and systemd-cryptenroll to systemd-extra-utils 180- systemd: add systemd-creds and systemd-cryptenroll to systemd-extra-utils
181- test-manual: fix typo in machine name 181- test-manual: fix typo in machine name
182- tiff: fix a typo for :cve:`2022-2953`.patch 182- tiff: fix a typo for :cve_nist:`2022-2953`.patch
183- u-boot: Add savedefconfig task 183- u-boot: Add savedefconfig task
184- u-boot: Remove duplicate inherit of cml1 184- u-boot: Remove duplicate inherit of cml1
185- uboot-sign: Fix using wrong KEY_REQ_ARGS 185- uboot-sign: Fix using wrong KEY_REQ_ARGS
diff --git a/documentation/migration-guides/release-notes-4.1.2.rst b/documentation/migration-guides/release-notes-4.1.2.rst
index ee5d4ccc51..ea20ced1be 100644
--- a/documentation/migration-guides/release-notes-4.1.2.rst
+++ b/documentation/migration-guides/release-notes-4.1.2.rst
@@ -6,18 +6,18 @@ Release notes for Yocto-4.1.2 (Langdale)
6Security Fixes in Yocto-4.1.2 6Security Fixes in Yocto-4.1.2
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- sudo: Fix :cve:`2022-43995` 9- sudo: Fix :cve_nist:`2022-43995`
10- binutils: Fix :cve:`2022-4285` 10- binutils: Fix :cve_nist:`2022-4285`
11- cairo: update patch for :cve:`2019-6461` with upstream solution 11- cairo: update patch for :cve_nist:`2019-6461` with upstream solution
12- expat: Fix :cve:`2022-43680` 12- expat: Fix :cve_nist:`2022-43680`
13- ffmpeg: Fix :cve:`2022-3964` and :cve:`2022-3965` 13- ffmpeg: Fix :cve_nist:`2022-3964` and :cve_nist:`2022-3965`
14- grub: Fix :cve:`2022-28736` 14- grub: Fix :cve_nist:`2022-28736`
15- libarchive: Fix :cve:`2022-36227` 15- libarchive: Fix :cve_nist:`2022-36227`
16- libpam: Fix :cve:`2022-28321` 16- libpam: Fix :cve_nist:`2022-28321`
17- libpng: Fix :cve:`2019-6129` 17- libpng: Fix :cve_nist:`2019-6129`
18- ruby: Fix :cve:`2022-28738` and :cve:`2022-28739` 18- ruby: Fix :cve_nist:`2022-28738` and :cve_nist:`2022-28739`
19- tiff: Fix :cve:`2022-3970` 19- tiff: Fix :cve_nist:`2022-3970`
20- vim: Fix :cve:`2022-4141` 20- vim: Fix :cve_nist:`2022-4141`
21 21
22 22
23Fixes in Yocto-4.1.2 23Fixes in Yocto-4.1.2
diff --git a/documentation/migration-guides/release-notes-4.1.3.rst b/documentation/migration-guides/release-notes-4.1.3.rst
index d8474cda68..b07cfa4689 100644
--- a/documentation/migration-guides/release-notes-4.1.3.rst
+++ b/documentation/migration-guides/release-notes-4.1.3.rst
@@ -6,24 +6,24 @@ Release notes for Yocto-4.1.3 (Langdale)
6Security Fixes in Yocto-4.1.3 6Security Fixes in Yocto-4.1.3
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- apr-util: Fix :cve:`2022-25147` 9- apr-util: Fix :cve_nist:`2022-25147`
10- apr: Fix :cve:`2022-24963` and :cve:`2022-28331` 10- apr: Fix :cve_nist:`2022-24963` and :cve_nist:`2022-28331`
11- bind: Fix :cve:`2022-3094`, :cve:`2022-3736` and :cve:`2022-3924` 11- bind: Fix :cve_nist:`2022-3094`, :cve_nist:`2022-3736` and :cve_nist:`2022-3924`
12- curl: Fix :cve:`2022-43551` and :cve:`2022-43552` 12- curl: Fix :cve_nist:`2022-43551` and :cve_nist:`2022-43552`
13- dbus: Fix :cve:`2022-42010`, :cve:`2022-42011` and :cve:`2022-42012` 13- dbus: Fix :cve_nist:`2022-42010`, :cve_nist:`2022-42011` and :cve_nist:`2022-42012`
14- git: Fix :cve:`2022-23521`, :cve:`2022-39253`, :cve:`2022-39260` and :cve:`2022-41903` 14- git: Fix :cve_nist:`2022-23521`, :cve_nist:`2022-39253`, :cve_nist:`2022-39260` and :cve_nist:`2022-41903`
15- git: Ignore :cve:`2022-41953` 15- git: Ignore :cve_nist:`2022-41953`
16- go: Fix :cve:`2022-41717` and :cve:`2022-41720` 16- go: Fix :cve_nist:`2022-41717` and :cve_nist:`2022-41720`
17- grub2: Fix :cve:`2022-2601` and :cve:`2022-3775` 17- grub2: Fix :cve_nist:`2022-2601` and :cve_nist:`2022-3775`
18- less: Fix :cve:`2022-46663` 18- less: Fix :cve_nist:`2022-46663`
19- libarchive: Fix :cve:`2022-36227` 19- libarchive: Fix :cve_nist:`2022-36227`
20- libksba: Fix :cve:`2022-47629` 20- libksba: Fix :cve_nist:`2022-47629`
21- openssl: Fix :cve:`2022-3996` 21- openssl: Fix :cve_nist:`2022-3996`
22- pkgconf: Fix :cve:`2023-24056` 22- pkgconf: Fix :cve_nist:`2023-24056`
23- ppp: Fix :cve:`2022-4603` 23- ppp: Fix :cve_nist:`2022-4603`
24- sudo: Fix :cve:`2023-22809` 24- sudo: Fix :cve_nist:`2023-22809`
25- tar: Fix :cve:`2022-48303` 25- tar: Fix :cve_nist:`2022-48303`
26- vim: Fix :cve:`2023-0049`, :cve:`2023-0051`, :cve:`2023-0054`, :cve:`2023-0288`, :cve:`2023-0433` and :cve:`2023-0512` 26- vim: Fix :cve_nist:`2023-0049`, :cve_nist:`2023-0051`, :cve_nist:`2023-0054`, :cve_nist:`2023-0288`, :cve_nist:`2023-0433` and :cve_nist:`2023-0512`
27- xserver-xorg: Fix :cve_mitre:`2023-0494` 27- xserver-xorg: Fix :cve_mitre:`2023-0494`
28- xwayland: Fix :cve_mitre:`2023-0494` 28- xwayland: Fix :cve_mitre:`2023-0494`
29 29
diff --git a/documentation/migration-guides/release-notes-4.1.4.rst b/documentation/migration-guides/release-notes-4.1.4.rst
index de469f4bee..147dd371b1 100644
--- a/documentation/migration-guides/release-notes-4.1.4.rst
+++ b/documentation/migration-guides/release-notes-4.1.4.rst
@@ -6,23 +6,23 @@ Release notes for Yocto-4.1.4 (Langdale)
6Security Fixes in Yocto-4.1.4 6Security Fixes in Yocto-4.1.4
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- cve-extra-exclusions/linux-yocto: Ignore :cve:`2020-27784`, :cve:`2021-3669`, :cve:`2021-3759`, :cve:`2021-4218`, :cve:`2022-0480`, :cve:`2022-1184`, :cve:`2022-1462`, :cve:`2022-2308`, :cve:`2022-2327`, :cve:`2022-26365`, :cve:`2022-2663`, :cve:`2022-2785`, :cve:`2022-3176`, :cve:`2022-33740`, :cve:`2022-33741`, :cve:`2022-33742`, :cve:`2022-3526`, :cve:`2022-3563`, :cve:`2022-3621`, :cve:`2022-3623`, :cve:`2022-3624`, :cve:`2022-3625`, :cve:`2022-3629`, :cve:`2022-3630`, :cve:`2022-3633`, :cve:`2022-3635`, :cve:`2022-3636`, :cve:`2022-3637`, :cve:`2022-3646` and :cve:`2022-3649` 9- cve-extra-exclusions/linux-yocto: Ignore :cve_nist:`2020-27784`, :cve_nist:`2021-3669`, :cve_nist:`2021-3759`, :cve_nist:`2021-4218`, :cve_nist:`2022-0480`, :cve_nist:`2022-1184`, :cve_nist:`2022-1462`, :cve_nist:`2022-2308`, :cve_nist:`2022-2327`, :cve_nist:`2022-26365`, :cve_nist:`2022-2663`, :cve_nist:`2022-2785`, :cve_nist:`2022-3176`, :cve_nist:`2022-33740`, :cve_nist:`2022-33741`, :cve_nist:`2022-33742`, :cve_nist:`2022-3526`, :cve_nist:`2022-3563`, :cve_nist:`2022-3621`, :cve_nist:`2022-3623`, :cve_nist:`2022-3624`, :cve_nist:`2022-3625`, :cve_nist:`2022-3629`, :cve_nist:`2022-3630`, :cve_nist:`2022-3633`, :cve_nist:`2022-3635`, :cve_nist:`2022-3636`, :cve_nist:`2022-3637`, :cve_nist:`2022-3646` and :cve_nist:`2022-3649`
10- cve-extra-exclusions/linux-yocto 5.15: Ignore :cve:`2022-3435`, :cve:`2022-3534`, :cve:`2022-3564`, :cve:`2022-3564`, :cve:`2022-3619`, :cve:`2022-3640`, :cve:`2022-42895`, :cve:`2022-42896`, :cve:`2022-4382`, :cve:`2023-0266` and :cve:`2023-0394` 10- cve-extra-exclusions/linux-yocto 5.15: Ignore :cve_nist:`2022-3435`, :cve_nist:`2022-3534`, :cve_nist:`2022-3564`, :cve_nist:`2022-3564`, :cve_nist:`2022-3619`, :cve_nist:`2022-3640`, :cve_nist:`2022-42895`, :cve_nist:`2022-42896`, :cve_nist:`2022-4382`, :cve_nist:`2023-0266` and :cve_nist:`2023-0394`
11- epiphany: Fix :cve:`2023-26081` 11- epiphany: Fix :cve_nist:`2023-26081`
12- git: Ignore :cve:`2023-22743` 12- git: Ignore :cve_nist:`2023-22743`
13- go: Fix :cve:`2022-41722`, :cve:`2022-41723`, :cve:`2022-41724`, :cve:`2022-41725` and :cve:`2023-24532` 13- go: Fix :cve_nist:`2022-41722`, :cve_nist:`2022-41723`, :cve_nist:`2022-41724`, :cve_nist:`2022-41725` and :cve_nist:`2023-24532`
14- harfbuzz: Fix :cve:`2023-25193` 14- harfbuzz: Fix :cve_nist:`2023-25193`
15- libmicrohttpd: Fix :cve:`2023-27371` 15- libmicrohttpd: Fix :cve_nist:`2023-27371`
16- libxml2: Fix :cve:`2022-40303` and :cve:`2022-40304` 16- libxml2: Fix :cve_nist:`2022-40303` and :cve_nist:`2022-40304`
17- openssl: Fix :cve:`2023-0464`, :cve:`2023-0465` and :cve:`2023-0466` 17- openssl: Fix :cve_nist:`2023-0464`, :cve_nist:`2023-0465` and :cve_nist:`2023-0466`
18- python3-setuptools: Fix :cve:`2022-40897` 18- python3-setuptools: Fix :cve_nist:`2022-40897`
19- qemu: Fix :cve:`2022-4144` 19- qemu: Fix :cve_nist:`2022-4144`
20- screen: Fix :cve:`2023-24626` 20- screen: Fix :cve_nist:`2023-24626`
21- shadow: Ignore :cve:`2016-15024` 21- shadow: Ignore :cve_nist:`2016-15024`
22- tiff: Fix :cve:`2022-48281`, :cve:`2023-0795`, :cve:`2023-0796`, :cve:`2023-0797`, :cve:`2023-0798`, :cve:`2023-0799`, :cve:`2023-0800`, :cve:`2023-0801`, :cve:`2023-0802`, :cve:`2023-0803` and :cve:`2023-0804` 22- tiff: Fix :cve_nist:`2022-48281`, :cve_nist:`2023-0795`, :cve_nist:`2023-0796`, :cve_nist:`2023-0797`, :cve_nist:`2023-0798`, :cve_nist:`2023-0799`, :cve_nist:`2023-0800`, :cve_nist:`2023-0801`, :cve_nist:`2023-0802`, :cve_nist:`2023-0803` and :cve_nist:`2023-0804`
23- vim: Fix :cve:`2023-1127`, :cve:`2023-1170`, :cve:`2023-1175`, :cve:`2023-1264` and :cve:`2023-1355` 23- vim: Fix :cve_nist:`2023-1127`, :cve_nist:`2023-1170`, :cve_nist:`2023-1175`, :cve_nist:`2023-1264` and :cve_nist:`2023-1355`
24- xdg-utils: Fix :cve:`2022-4055` 24- xdg-utils: Fix :cve_nist:`2022-4055`
25- xserver-xorg: Fix for :cve:`2023-1393` 25- xserver-xorg: Fix for :cve_nist:`2023-1393`
26 26
27 27
28Fixes in Yocto-4.1.4 28Fixes in Yocto-4.1.4
diff --git a/documentation/migration-guides/release-notes-4.1.rst b/documentation/migration-guides/release-notes-4.1.rst
index a0d5196128..3ad3611b80 100644
--- a/documentation/migration-guides/release-notes-4.1.rst
+++ b/documentation/migration-guides/release-notes-4.1.rst
@@ -225,36 +225,36 @@ The following corrections have been made to the :term:`LICENSE` values set by re
225Security Fixes in 4.1 225Security Fixes in 4.1
226~~~~~~~~~~~~~~~~~~~~~ 226~~~~~~~~~~~~~~~~~~~~~
227 227
228- bind: :cve:`2022-1183`, :cve:`2022-2795`, :cve:`2022-2881`, :cve:`2022-2906`, :cve:`2022-3080`, :cve:`2022-38178` 228- bind: :cve_nist:`2022-1183`, :cve_nist:`2022-2795`, :cve_nist:`2022-2881`, :cve_nist:`2022-2906`, :cve_nist:`2022-3080`, :cve_nist:`2022-38178`
229- binutils: :cve:`2019-1010204`, :cve:`2022-38126`, :cve:`2022-38127`, :cve:`2022-38128`, :cve:`2022-38533` 229- binutils: :cve_nist:`2019-1010204`, :cve_nist:`2022-38126`, :cve_nist:`2022-38127`, :cve_nist:`2022-38128`, :cve_nist:`2022-38533`
230- busybox: :cve:`2022-30065` 230- busybox: :cve_nist:`2022-30065`
231- connman: :cve:`2022-32292`, :cve:`2022-32293` 231- connman: :cve_nist:`2022-32292`, :cve_nist:`2022-32293`
232- cups: :cve:`2022-26691` 232- cups: :cve_nist:`2022-26691`
233- e2fsprogs: :cve:`2022-1304` 233- e2fsprogs: :cve_nist:`2022-1304`
234- expat: :cve:`2022-40674` 234- expat: :cve_nist:`2022-40674`
235- freetype: :cve:`2022-27404` 235- freetype: :cve_nist:`2022-27404`
236- glibc: :cve:`2022-39046` 236- glibc: :cve_nist:`2022-39046`
237- gnupg: :cve:`2022-34903` 237- gnupg: :cve_nist:`2022-34903`
238- grub2: :cve:`2021-3695`, :cve:`2021-3696`, :cve:`2021-3697`, :cve:`2022-28733`, :cve:`2022-28734`, :cve:`2022-28735` 238- grub2: :cve_nist:`2021-3695`, :cve_nist:`2021-3696`, :cve_nist:`2021-3697`, :cve_nist:`2022-28733`, :cve_nist:`2022-28734`, :cve_nist:`2022-28735`
239- inetutils: :cve:`2022-39028` 239- inetutils: :cve_nist:`2022-39028`
240- libtirpc: :cve:`2021-46828` 240- libtirpc: :cve_nist:`2021-46828`
241- libxml2: :cve:`2016-3709` (ignored) 241- libxml2: :cve_nist:`2016-3709` (ignored)
242- libxslt: :cve:`2022-29824` (not applicable) 242- libxslt: :cve_nist:`2022-29824` (not applicable)
243- linux-yocto/5.15: :cve:`2022-28796` 243- linux-yocto/5.15: :cve_nist:`2022-28796`
244- logrotate: :cve:`2022-1348` 244- logrotate: :cve_nist:`2022-1348`
245- lua: :cve:`2022-33099` 245- lua: :cve_nist:`2022-33099`
246- nasm: :cve:`2020-18974` (ignored) 246- nasm: :cve_nist:`2020-18974` (ignored)
247- ncurses: :cve:`2022-29458` 247- ncurses: :cve_nist:`2022-29458`
248- openssl: :cve:`2022-1292`, :cve:`2022-1343`, :cve:`2022-1434`, :cve:`2022-1473`, :cve:`2022-2068`, :cve:`2022-2274`, :cve:`2022-2097` 248- openssl: :cve_nist:`2022-1292`, :cve_nist:`2022-1343`, :cve_nist:`2022-1434`, :cve_nist:`2022-1473`, :cve_nist:`2022-2068`, :cve_nist:`2022-2274`, :cve_nist:`2022-2097`
249- python3: :cve:`2015-20107` (ignored) 249- python3: :cve_nist:`2015-20107` (ignored)
250- qemu: :cve:`2021-20255` (ignored), :cve:`2019-12067` (ignored), :cve:`2021-3507`, :cve:`2022-0216`, :cve:`2022-2962`, :cve:`2022-35414` 250- qemu: :cve_nist:`2021-20255` (ignored), :cve_nist:`2019-12067` (ignored), :cve_nist:`2021-3507`, :cve_nist:`2022-0216`, :cve_nist:`2022-2962`, :cve_nist:`2022-35414`
251- rpm: :cve:`2021-35937`, :cve:`2021-35938`, :cve:`2021-35939` 251- rpm: :cve_nist:`2021-35937`, :cve_nist:`2021-35938`, :cve_nist:`2021-35939`
252- rsync: :cve:`2022-29154` 252- rsync: :cve_nist:`2022-29154`
253- subversion: :cve:`2021-28544`, :cve:`2022-24070` 253- subversion: :cve_nist:`2021-28544`, :cve_nist:`2022-24070`
254- tiff: :cve:`2022-1210` (not applicable), :cve:`2022-1622`, :cve:`2022-1623` (invalid), :cve:`2022-2056`, :cve:`2022-2057`, :cve:`2022-2058`, :cve:`2022-2953`, :cve:`2022-34526` 254- tiff: :cve_nist:`2022-1210` (not applicable), :cve_nist:`2022-1622`, :cve_nist:`2022-1623` (invalid), :cve_nist:`2022-2056`, :cve_nist:`2022-2057`, :cve_nist:`2022-2058`, :cve_nist:`2022-2953`, :cve_nist:`2022-34526`
255- unzip: :cve:`2022-0529`, :cve:`2022-0530` 255- unzip: :cve_nist:`2022-0529`, :cve_nist:`2022-0530`
256- vim: :cve:`2022-1381`, :cve:`2022-1420`, :cve:`2022-1621`, :cve:`2022-1629`, :cve:`2022-1674`, :cve:`2022-1733`, :cve:`2022-1735`, :cve:`2022-1769`, :cve:`2022-1771`, :cve:`2022-1785`, :cve:`2022-1796`, :cve:`2022-1927`, :cve:`2022-1942`, :cve:`2022-2257`, :cve:`2022-2264`, :cve:`2022-2284`, :cve:`2022-2285`, :cve:`2022-2286`, :cve:`2022-2287`, :cve:`2022-2816`, :cve:`2022-2817`, :cve:`2022-2819`, :cve:`2022-2845`, :cve:`2022-2849`, :cve:`2022-2862`, :cve:`2022-2874`, :cve:`2022-2889`, :cve:`2022-2980`, :cve:`2022-2946`, :cve:`2022-2982`, :cve:`2022-3099`, :cve:`2022-3134`, :cve:`2022-3234`, :cve:`2022-3278` 256- vim: :cve_nist:`2022-1381`, :cve_nist:`2022-1420`, :cve_nist:`2022-1621`, :cve_nist:`2022-1629`, :cve_nist:`2022-1674`, :cve_nist:`2022-1733`, :cve_nist:`2022-1735`, :cve_nist:`2022-1769`, :cve_nist:`2022-1771`, :cve_nist:`2022-1785`, :cve_nist:`2022-1796`, :cve_nist:`2022-1927`, :cve_nist:`2022-1942`, :cve_nist:`2022-2257`, :cve_nist:`2022-2264`, :cve_nist:`2022-2284`, :cve_nist:`2022-2285`, :cve_nist:`2022-2286`, :cve_nist:`2022-2287`, :cve_nist:`2022-2816`, :cve_nist:`2022-2817`, :cve_nist:`2022-2819`, :cve_nist:`2022-2845`, :cve_nist:`2022-2849`, :cve_nist:`2022-2862`, :cve_nist:`2022-2874`, :cve_nist:`2022-2889`, :cve_nist:`2022-2980`, :cve_nist:`2022-2946`, :cve_nist:`2022-2982`, :cve_nist:`2022-3099`, :cve_nist:`2022-3134`, :cve_nist:`2022-3234`, :cve_nist:`2022-3278`
257- zlib: :cve:`2022-37434` 257- zlib: :cve_nist:`2022-37434`
258 258
259 259
260 260
diff --git a/documentation/migration-guides/release-notes-4.2.1.rst b/documentation/migration-guides/release-notes-4.2.1.rst
index 948c35fd67..0b2ef060fc 100644
--- a/documentation/migration-guides/release-notes-4.2.1.rst
+++ b/documentation/migration-guides/release-notes-4.2.1.rst
@@ -6,13 +6,13 @@ Release notes for Yocto-4.2.1 (Mickledore)
6Security Fixes in Yocto-4.2.1 6Security Fixes in Yocto-4.2.1
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- connman: Fix :cve:`2023-28488` 9- connman: Fix :cve_nist:`2023-28488`
10- linux-yocto: Ignore :cve:`2023-1652` and :cve:`2023-1829` 10- linux-yocto: Ignore :cve_nist:`2023-1652` and :cve_nist:`2023-1829`
11- ghostscript: Fix :cve:`2023-28879` 11- ghostscript: Fix :cve_nist:`2023-28879`
12- qemu: Ignore :cve:`2023-0664` 12- qemu: Ignore :cve_nist:`2023-0664`
13- ruby: Fix :cve:`2022-28738` and :cve:`2022-28739` 13- ruby: Fix :cve_nist:`2022-28738` and :cve_nist:`2022-28739`
14- tiff: Fix :cve:`2022-4645` 14- tiff: Fix :cve_nist:`2022-4645`
15- xwayland: Fix :cve:`2023-1393` 15- xwayland: Fix :cve_nist:`2023-1393`
16 16
17 17
18Fixes in Yocto-4.2.1 18Fixes in Yocto-4.2.1
diff --git a/documentation/migration-guides/release-notes-4.2.2.rst b/documentation/migration-guides/release-notes-4.2.2.rst
index 74f2d0e82a..0795c8e938 100644
--- a/documentation/migration-guides/release-notes-4.2.2.rst
+++ b/documentation/migration-guides/release-notes-4.2.2.rst
@@ -6,21 +6,21 @@ Release notes for Yocto-4.2.2 (Mickledore)
6Security Fixes in Yocto-4.2.2 6Security Fixes in Yocto-4.2.2
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- binutils: Fix :cve:`2023-1972` 9- binutils: Fix :cve_nist:`2023-1972`
10- cups: Fix :cve:`2023-32324` 10- cups: Fix :cve_nist:`2023-32324`
11- curl: Fix :cve:`2023-28319`, :cve:`2023-28320`, :cve:`2023-28321` and :cve:`2023-28322` 11- curl: Fix :cve_nist:`2023-28319`, :cve_nist:`2023-28320`, :cve_nist:`2023-28321` and :cve_nist:`2023-28322`
12- dbus: Fix :cve:`2023-34969` 12- dbus: Fix :cve_nist:`2023-34969`
13- git: Fix :cve:`2023-25652` and :cve:`2023-29007` 13- git: Fix :cve_nist:`2023-25652` and :cve_nist:`2023-29007`
14- git: Ignore :cve:`2023-25815` 14- git: Ignore :cve_nist:`2023-25815`
15- libwebp: Fix :cve:`2023-1999` 15- libwebp: Fix :cve_nist:`2023-1999`
16- libxml2: Fix :cve:`2023-28484` and :cve:`2023-29469` 16- libxml2: Fix :cve_nist:`2023-28484` and :cve_nist:`2023-29469`
17- libxpm: Fix :cve:`2022-44617` 17- libxpm: Fix :cve_nist:`2022-44617`
18- ninja: Ignore :cve:`2021-4336` 18- ninja: Ignore :cve_nist:`2021-4336`
19- openssl: Fix :cve:`2023-0464`, :cve:`2023-0465`, :cve:`2023-0466`, :cve:`2023-1255` and :cve:`2023-2650` 19- openssl: Fix :cve_nist:`2023-0464`, :cve_nist:`2023-0465`, :cve_nist:`2023-0466`, :cve_nist:`2023-1255` and :cve_nist:`2023-2650`
20- perl: Fix :cve:`2023-31484` and :cve:`2023-31486` 20- perl: Fix :cve_nist:`2023-31484` and :cve_nist:`2023-31486`
21- sysstat: Fix :cve:`2023-33204` 21- sysstat: Fix :cve_nist:`2023-33204`
22- tiff: Fix :cve_mitre:`2023-25434`, :cve:`2023-26965` and :cve:`2023-2731` 22- tiff: Fix :cve_mitre:`2023-25434`, :cve_nist:`2023-26965` and :cve_nist:`2023-2731`
23- vim: Fix :cve:`2023-2426` 23- vim: Fix :cve_nist:`2023-2426`
24 24
25 25
26Fixes in Yocto-4.2.2 26Fixes in Yocto-4.2.2
diff --git a/documentation/migration-guides/release-notes-4.2.3.rst b/documentation/migration-guides/release-notes-4.2.3.rst
index 3b568a1c29..86ce5b7025 100644
--- a/documentation/migration-guides/release-notes-4.2.3.rst
+++ b/documentation/migration-guides/release-notes-4.2.3.rst
@@ -6,24 +6,24 @@ Release notes for Yocto-4.2.3 (Mickledore)
6Security Fixes in Yocto-4.2.3 6Security Fixes in Yocto-4.2.3
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bind: Fix :cve:`2023-2828` and :cve:`2023-2911` 9- bind: Fix :cve_nist:`2023-2828` and :cve_nist:`2023-2911`
10- cups: Fix :cve:`2023-34241` 10- cups: Fix :cve_nist:`2023-34241`
11- dmidecode: Fix :cve:`2023-30630` 11- dmidecode: Fix :cve_nist:`2023-30630`
12- erofs-utils: Fix :cve:`2023-33551` and :cve:`2023-33552` 12- erofs-utils: Fix :cve_nist:`2023-33551` and :cve_nist:`2023-33552`
13- ghostscript: Fix :cve:`2023-36664` 13- ghostscript: Fix :cve_nist:`2023-36664`
14- go: Fix :cve_mitre:`2023-24531` 14- go: Fix :cve_mitre:`2023-24531`
15- libarchive: ignore :cve:`2023-30571` 15- libarchive: ignore :cve_nist:`2023-30571`
16- libjpeg-turbo: Fix :cve:`2023-2804` 16- libjpeg-turbo: Fix :cve_nist:`2023-2804`
17- libx11: Fix :cve:`2023-3138` 17- libx11: Fix :cve_nist:`2023-3138`
18- ncurses: Fix :cve:`2023-29491` 18- ncurses: Fix :cve_nist:`2023-29491`
19- openssh: Fix :cve:`2023-38408` 19- openssh: Fix :cve_nist:`2023-38408`
20- python3-certifi: Fix :cve:`2023-37920` 20- python3-certifi: Fix :cve_nist:`2023-37920`
21- python3-requests: Fix :cve:`2023-32681` 21- python3-requests: Fix :cve_nist:`2023-32681`
22- python3: Ignore :cve:`2023-36632` 22- python3: Ignore :cve_nist:`2023-36632`
23- qemu: fix :cve:`2023-0330`, :cve_mitre:`2023-2861`, :cve_mitre:`2023-3255` and :cve_mitre:`2023-3301` 23- qemu: fix :cve_nist:`2023-0330`, :cve_mitre:`2023-2861`, :cve_mitre:`2023-3255` and :cve_mitre:`2023-3301`
24- ruby: Fix :cve:`2023-36617` 24- ruby: Fix :cve_nist:`2023-36617`
25- vim: Fix :cve:`2023-2609` and :cve:`2023-2610` 25- vim: Fix :cve_nist:`2023-2609` and :cve_nist:`2023-2610`
26- webkitgtk: Fix :cve:`2023-27932` and :cve:`2023-27954` 26- webkitgtk: Fix :cve_nist:`2023-27932` and :cve_nist:`2023-27954`
27 27
28 28
29Fixes in Yocto-4.2.3 29Fixes in Yocto-4.2.3
diff --git a/documentation/migration-guides/release-notes-4.2.4.rst b/documentation/migration-guides/release-notes-4.2.4.rst
index 3c20140e29..60f878c3b0 100644
--- a/documentation/migration-guides/release-notes-4.2.4.rst
+++ b/documentation/migration-guides/release-notes-4.2.4.rst
@@ -6,44 +6,44 @@ Release notes for Yocto-4.2.4 (Mickledore)
6Security Fixes in Yocto-4.2.4 6Security Fixes in Yocto-4.2.4
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bind: Fix :cve:`2023-3341` and :cve:`2023-4236` 9- bind: Fix :cve_nist:`2023-3341` and :cve_nist:`2023-4236`
10- binutils: Fix :cve:`2023-39128` 10- binutils: Fix :cve_nist:`2023-39128`
11- cups: fix :cve:`2023-4504` 11- cups: fix :cve_nist:`2023-4504`
12- curl: Fix :cve:`2023-28320`, :cve:`2023-32001`, :cve:`2023-38039`, :cve:`2023-38545` and :cve:`2023-38546` 12- curl: Fix :cve_nist:`2023-28320`, :cve_nist:`2023-32001`, :cve_nist:`2023-38039`, :cve_nist:`2023-38545` and :cve_nist:`2023-38546`
13- dmidecode: fix for :cve:`2023-30630` 13- dmidecode: fix for :cve_nist:`2023-30630`
14- dropbear: fix :cve:`2023-36328` 14- dropbear: fix :cve_nist:`2023-36328`
15- ffmpeg: Ignore :cve:`2023-39018` 15- ffmpeg: Ignore :cve_nist:`2023-39018`
16- gcc: Fix :cve:`2023-4039` 16- gcc: Fix :cve_nist:`2023-4039`
17- gdb: Fix :cve:`2023-39128` 17- gdb: Fix :cve_nist:`2023-39128`
18- ghostscript: Fix :cve:`2023-38559` and :cve:`2023-43115` 18- ghostscript: Fix :cve_nist:`2023-38559` and :cve_nist:`2023-43115`
19- glibc: Fix :cve:`2023-4527` and :cve:`2023-4806` 19- glibc: Fix :cve_nist:`2023-4527` and :cve_nist:`2023-4806`
20- go: Fix :cve:`2023-29409` and :cve:`2023-39533` 20- go: Fix :cve_nist:`2023-29409` and :cve_nist:`2023-39533`
21- grub: Fix :cve:`2023-4692` and :cve:`2023-4693` 21- grub: Fix :cve_nist:`2023-4692` and :cve_nist:`2023-4693`
22- gstreamer: Fix :cve_mitre:`2023-40474`, :cve_mitre:`2023-40475` and :cve_mitre:`2023-40476` 22- gstreamer: Fix :cve_mitre:`2023-40474`, :cve_mitre:`2023-40475` and :cve_mitre:`2023-40476`
23- inetutils: fix :cve:`2023-40303` 23- inetutils: fix :cve_nist:`2023-40303`
24- librsvg: Fix :cve:`2023-38633` 24- librsvg: Fix :cve_nist:`2023-38633`
25- libssh2: Fix :cve:`2020-22218` 25- libssh2: Fix :cve_nist:`2020-22218`
26- libwebp: Fix :cve:`2023-4863` and :cve:`2023-5129` 26- libwebp: Fix :cve_nist:`2023-4863` and :cve_nist:`2023-5129`
27- libx11: Fix :cve:`2023-43785`, :cve:`2023-43786` and :cve:`2023-43787` 27- libx11: Fix :cve_nist:`2023-43785`, :cve_nist:`2023-43786` and :cve_nist:`2023-43787`
28- libxpm: Fix :cve:`2023-43788` and :cve:`2023-43789` 28- libxpm: Fix :cve_nist:`2023-43788` and :cve_nist:`2023-43789`
29- linux-yocto/6.1: Ignore :cve:`2003-1604`, :cve:`2004-0230`, :cve:`2006-3635`, :cve:`2006-5331`, :cve:`2006-6128`, :cve:`2007-4774`, :cve:`2007-6761`, :cve:`2007-6762`, :cve:`2008-7316`, :cve:`2009-2692`, :cve:`2010-0008`, :cve:`2010-3432`, :cve:`2010-4648`, :cve:`2010-5313`, :cve:`2010-5328`, :cve:`2010-5329`, :cve:`2010-5331`, :cve:`2010-5332`, :cve:`2011-4098`, :cve:`2011-4131`, :cve:`2011-4915`, :cve:`2011-5321`, :cve:`2011-5327`, :cve:`2012-0957`, :cve:`2012-2119`, :cve:`2012-2136`, :cve:`2012-2137`, :cve:`2012-2313`, :cve:`2012-2319`, :cve:`2012-2372`, :cve:`2012-2375`, :cve:`2012-2390`, :cve:`2012-2669`, :cve:`2012-2744`, :cve:`2012-2745`, :cve:`2012-3364`, :cve:`2012-3375`, :cve:`2012-3400`, :cve:`2012-3412`, :cve:`2012-3430`, :cve:`2012-3510`, :cve:`2012-3511`, :cve:`2012-3520`, :cve:`2012-3552`, :cve:`2012-4398`, :cve:`2012-4444`, :cve:`2012-4461`, :cve:`2012-4467`, :cve:`2012-4508`, :cve:`2012-4530`, :cve:`2012-4565`, :cve:`2012-5374`, :cve:`2012-5375`, :cve:`2012-5517`, :cve:`2012-6536`, :cve:`2012-6537`, :cve:`2012-6538`, :cve:`2012-6539`, :cve:`2012-6540`, :cve:`2012-6541`, :cve:`2012-6542`, :cve:`2012-6543`, :cve:`2012-6544`, :cve:`2012-6545`, :cve:`2012-6546`, :cve:`2012-6547`, :cve:`2012-6548`, :cve:`2012-6549`, :cve:`2012-6638`, :cve:`2012-6647`, :cve:`2012-6657`, :cve:`2012-6689`, :cve:`2012-6701`, :cve:`2012-6703`, :cve:`2012-6704`, :cve:`2012-6712`, :cve:`2013-0160`, :cve:`2013-0190`, :cve:`2013-0216`, :cve:`2013-0217`, :cve:`2013-0228`, :cve:`2013-0231`, :cve:`2013-0268`, :cve:`2013-0290`, :cve:`2013-0309`, :cve:`2013-0310`, :cve:`2013-0311`, :cve:`2013-0313`, :cve:`2013-0343`, :cve:`2013-0349`, :cve:`2013-0871`, :cve:`2013-0913`, :cve:`2013-0914`, :cve:`2013-1059`, :cve:`2013-1763`, :cve:`2013-1767`, :cve:`2013-1772`, :cve:`2013-1773`, :cve:`2013-1774`, :cve:`2013-1792`, :cve:`2013-1796`, :cve:`2013-1797`, :cve:`2013-1798`, :cve:`2013-1819`, :cve:`2013-1826`, :cve:`2013-1827`, :cve:`2013-1828`, :cve:`2013-1848`, :cve:`2013-1858`, :cve:`2013-1860`, :cve:`2013-1928`, :cve:`2013-1929`, :cve:`2013-1943`, :cve:`2013-1956`, :cve:`2013-1957`, :cve:`2013-1958`, :cve:`2013-1959`, :cve:`2013-1979`, :cve:`2013-2015`, :cve:`2013-2017`, :cve:`2013-2058`, :cve:`2013-2094`, :cve:`2013-2128`, :cve:`2013-2140`, :cve:`2013-2141`, :cve:`2013-2146`, :cve:`2013-2147`, :cve:`2013-2148`, :cve:`2013-2164`, :cve:`2013-2206`, :cve:`2013-2232`, :cve:`2013-2234`, :cve:`2013-2237`, :cve:`2013-2546`, :cve:`2013-2547`, :cve:`2013-2548`, :cve:`2013-2596`, :cve:`2013-2634`, :cve:`2013-2635`, :cve:`2013-2636`, :cve:`2013-2850`, :cve:`2013-2851`, :cve:`2013-2852`, :cve:`2013-2888`, :cve:`2013-2889`, :cve:`2013-2890`, :cve:`2013-2891`, :cve:`2013-2892`, :cve:`2013-2893`, :cve:`2013-2894`, :cve:`2013-2895`, :cve:`2013-2896`, :cve:`2013-2897`, :cve:`2013-2898`, :cve:`2013-2899`, :cve:`2013-2929`, :cve:`2013-2930`, :cve:`2013-3076`, :cve:`2013-3222`, :cve:`2013-3223`, :cve:`2013-3224`, :cve:`2013-3225`, :cve:`2013-3226`, :cve:`2013-3227`, :cve:`2013-3228`, :cve:`2013-3229`, :cve:`2013-3230`, :cve:`2013-3231`, :cve:`2013-3232`, :cve:`2013-3233`, :cve:`2013-3234`, :cve:`2013-3235`, :cve:`2013-3236`, :cve:`2013-3237`, :cve:`2013-3301`, :cve:`2013-3302`, :cve:`2013-4125`, :cve:`2013-4127`, :cve:`2013-4129`, :cve:`2013-4162`, :cve:`2013-4163`, :cve:`2013-4205`, :cve:`2013-4220`, :cve:`2013-4247`, :cve:`2013-4254`, :cve:`2013-4270`, :cve:`2013-4299`, :cve:`2013-4300`, :cve:`2013-4312`, :cve:`2013-4343`, :cve:`2013-4345`, :cve:`2013-4348`, :cve:`2013-4350`, :cve:`2013-4387`, :cve:`2013-4470`, :cve:`2013-4483`, :cve:`2013-4511`, :cve:`2013-4512`, :cve:`2013-4513`, :cve:`2013-4514`, :cve:`2013-4515`, :cve:`2013-4516`, :cve:`2013-4563`, :cve:`2013-4579`, :cve:`2013-4587`, :cve:`2013-4588`, :cve:`2013-4591`, :cve:`2013-4592`, :cve:`2013-5634`, :cve:`2013-6282`, :cve:`2013-6367`, :cve:`2013-6368`, :cve:`2013-6376`, :cve:`2013-6378`, :cve:`2013-6380`, :cve:`2013-6381`, :cve:`2013-6382`, :cve:`2013-6383`, :cve:`2013-6431`, :cve:`2013-6432`, :cve:`2013-6885`, :cve:`2013-7026`, :cve:`2013-7027`, :cve:`2013-7263`, :cve:`2013-7264`, :cve:`2013-7265`, :cve:`2013-7266`, :cve:`2013-7267`, :cve:`2013-7268`, :cve:`2013-7269`, :cve:`2013-7270`, :cve:`2013-7271`, :cve:`2013-7281`, :cve:`2013-7339`, :cve:`2013-7348`, :cve:`2013-7421`, :cve:`2013-7446`, :cve:`2013-7470`, :cve:`2014-0038`, :cve:`2014-0049`, :cve:`2014-0055`, :cve:`2014-0069`, :cve:`2014-0077`, :cve:`2014-0100`, :cve:`2014-0101`, :cve:`2014-0102`, :cve:`2014-0131`, :cve:`2014-0155`, :cve:`2014-0181`, :cve:`2014-0196`, :cve:`2014-0203`, :cve:`2014-0205`, :cve:`2014-0206`, :cve:`2014-1438`, :cve:`2014-1444`, :cve:`2014-1445`, :cve:`2014-1446`, :cve:`2014-1690`, :cve:`2014-1737`, :cve:`2014-1738`, :cve:`2014-1739`, :cve:`2014-1874`, :cve:`2014-2038`, :cve:`2014-2039`, :cve:`2014-2309`, :cve:`2014-2523`, :cve:`2014-2568`, :cve:`2014-2580`, :cve:`2014-2672`, :cve:`2014-2673`, :cve:`2014-2678`, :cve:`2014-2706`, :cve:`2014-2739`, :cve:`2014-2851`, :cve:`2014-2889`, :cve:`2014-3122`, :cve:`2014-3144`, :cve:`2014-3145`, :cve:`2014-3153`, :cve:`2014-3180`, :cve:`2014-3181`, :cve:`2014-3182`, :cve:`2014-3183`, :cve:`2014-3184`, :cve:`2014-3185`, :cve:`2014-3186`, :cve:`2014-3534`, :cve:`2014-3535`, :cve:`2014-3601`, :cve:`2014-3610`, :cve:`2014-3611`, :cve:`2014-3631`, :cve:`2014-3645`, :cve:`2014-3646`, :cve:`2014-3647`, :cve:`2014-3673`, :cve:`2014-3687`, :cve:`2014-3688`, :cve:`2014-3690`, :cve:`2014-3917`, :cve:`2014-3940`, :cve:`2014-4014`, :cve:`2014-4027`, :cve:`2014-4157`, :cve:`2014-4171`, :cve:`2014-4508`, :cve:`2014-4608`, :cve:`2014-4611`, :cve:`2014-4652`, :cve:`2014-4653`, :cve:`2014-4654`, :cve:`2014-4655`, :cve:`2014-4656`, :cve:`2014-4667`, :cve:`2014-4699`, :cve:`2014-4943`, :cve:`2014-5045`, :cve:`2014-5077`, :cve:`2014-5206`, :cve:`2014-5207`, :cve:`2014-5471`, :cve:`2014-5472`, :cve:`2014-6410`, :cve:`2014-6416`, :cve:`2014-6417`, :cve:`2014-6418`, :cve:`2014-7145`, :cve:`2014-7283`, :cve:`2014-7284`, :cve:`2014-7822`, :cve:`2014-7825`, :cve:`2014-7826`, :cve:`2014-7841`, :cve:`2014-7842`, :cve:`2014-7843`, :cve:`2014-7970`, :cve:`2014-7975`, :cve:`2014-8086`, :cve:`2014-8133`, :cve:`2014-8134`, :cve:`2014-8159`, :cve:`2014-8160`, :cve:`2014-8171`, :cve:`2014-8172`, :cve:`2014-8173`, :cve:`2014-8369`, :cve:`2014-8480`, :cve:`2014-8481`, :cve:`2014-8559`, :cve:`2014-8709`, :cve:`2014-8884`, :cve:`2014-8989`, :cve:`2014-9090`, :cve:`2014-9322`, :cve:`2014-9419`, :cve:`2014-9420`, :cve:`2014-9428`, :cve:`2014-9529`, :cve:`2014-9584`, :cve:`2014-9585`, :cve:`2014-9644`, :cve:`2014-9683`, :cve:`2014-9710`, :cve:`2014-9715`, :cve:`2014-9717`, :cve:`2014-9728`, :cve:`2014-9729`, :cve:`2014-9730`, :cve:`2014-9731`, :cve:`2014-9803`, :cve:`2014-9870`, :cve:`2014-9888`, :cve:`2014-9895`, :cve:`2014-9903`, :cve:`2014-9904`, :cve:`2014-9914`, :cve:`2014-9922`, :cve:`2014-9940`, :cve:`2015-0239`, :cve:`2015-0274`, :cve:`2015-0275`, :cve:`2015-1333`, :cve:`2015-1339`, :cve:`2015-1350`, :cve:`2015-1420`, :cve:`2015-1421`, :cve:`2015-1465`, :cve:`2015-1573`, :cve:`2015-1593`, :cve:`2015-1805`, :cve:`2015-2041`, :cve:`2015-2042`, :cve:`2015-2150`, :cve:`2015-2666`, :cve:`2015-2672`, :cve:`2015-2686`, :cve:`2015-2830`, :cve:`2015-2922`, :cve:`2015-2925`, :cve:`2015-3212`, :cve:`2015-3214`, :cve:`2015-3288`, :cve:`2015-3290`, :cve:`2015-3291`, :cve:`2015-3331`, :cve:`2015-3339`, :cve:`2015-3636`, :cve:`2015-4001`, :cve:`2015-4002`, :cve:`2015-4003`, :cve:`2015-4004`, :cve:`2015-4036`, :cve:`2015-4167`, :cve:`2015-4170`, :cve:`2015-4176`, :cve:`2015-4177`, :cve:`2015-4178`, :cve:`2015-4692`, :cve:`2015-4700`, :cve:`2015-5156`, :cve:`2015-5157`, :cve:`2015-5257`, :cve:`2015-5283`, :cve:`2015-5307`, :cve:`2015-5327`, :cve:`2015-5364`, :cve:`2015-5366`, :cve:`2015-5697`, :cve:`2015-5706`, :cve:`2015-5707`, :cve:`2015-6252`, :cve:`2015-6526`, :cve:`2015-6937`, :cve:`2015-7509`, :cve:`2015-7513`, :cve:`2015-7515`, :cve:`2015-7550`, :cve:`2015-7566`, :cve:`2015-7613`, :cve:`2015-7799`, :cve:`2015-7833`, :cve:`2015-7872`, :cve:`2015-7884`, :cve:`2015-7885`, :cve:`2015-7990`, :cve:`2015-8104`, :cve:`2015-8215`, :cve:`2015-8324`, :cve:`2015-8374`, :cve:`2015-8539`, :cve:`2015-8543`, :cve:`2015-8550`, :cve:`2015-8551`, :cve:`2015-8552`, :cve:`2015-8553`, :cve:`2015-8569`, :cve:`2015-8575`, :cve:`2015-8660`, :cve:`2015-8709`, :cve:`2015-8746`, :cve:`2015-8767`, :cve:`2015-8785`, :cve:`2015-8787`, :cve:`2015-8812`, :cve:`2015-8816`, :cve:`2015-8830`, :cve:`2015-8839`, :cve:`2015-8844`, :cve:`2015-8845`, :cve:`2015-8950`, :cve:`2015-8952`, :cve:`2015-8953`, :cve:`2015-8955`, :cve:`2015-8956`, :cve:`2015-8961`, :cve:`2015-8962`, :cve:`2015-8963`, :cve:`2015-8964`, :cve:`2015-8966`, :cve:`2015-8967`, :cve:`2015-8970`, :cve:`2015-9004`, :cve:`2015-9016`, :cve:`2015-9289`, :cve:`2016-0617`, :cve:`2016-0723`, :cve:`2016-0728`, :cve:`2016-0758`, :cve:`2016-0821`, :cve:`2016-0823`, :cve:`2016-10044`, :cve:`2016-10088`, :cve:`2016-10147`, :cve:`2016-10150`, :cve:`2016-10153`, :cve:`2016-10154`, :cve:`2016-10200`, :cve:`2016-10208`, :cve:`2016-10229`, :cve:`2016-10318`, :cve:`2016-10723`, :cve:`2016-10741`, :cve:`2016-10764`, :cve:`2016-10905`, :cve:`2016-10906`, :cve:`2016-10907`, :cve:`2016-1237`, :cve:`2016-1575`, :cve:`2016-1576`, :cve:`2016-1583`, :cve:`2016-2053`, :cve:`2016-2069`, :cve:`2016-2070`, :cve:`2016-2085`, :cve:`2016-2117`, :cve:`2016-2143`, :cve:`2016-2184`, :cve:`2016-2185`, :cve:`2016-2186`, :cve:`2016-2187`, :cve:`2016-2188`, :cve:`2016-2383`, :cve:`2016-2384`, :cve:`2016-2543`, :cve:`2016-2544`, :cve:`2016-2545`, :cve:`2016-2546`, :cve:`2016-2547`, :cve:`2016-2548`, :cve:`2016-2549`, :cve:`2016-2550`, :cve:`2016-2782`, :cve:`2016-2847`, :cve:`2016-3044`, :cve:`2016-3070`, :cve:`2016-3134`, :cve:`2016-3135`, :cve:`2016-3136`, :cve:`2016-3137`, :cve:`2016-3138`, :cve:`2016-3139`, :cve:`2016-3140`, :cve:`2016-3156`, :cve:`2016-3157`, :cve:`2016-3672`, :cve:`2016-3689`, :cve:`2016-3713`, :cve:`2016-3841`, :cve:`2016-3857`, :cve:`2016-3951`, :cve:`2016-3955`, :cve:`2016-3961`, :cve:`2016-4440`, :cve:`2016-4470`, :cve:`2016-4482`, :cve:`2016-4485`, :cve:`2016-4486`, :cve:`2016-4557`, :cve:`2016-4558`, :cve:`2016-4565`, :cve:`2016-4568`, :cve:`2016-4569`, :cve:`2016-4578`, :cve:`2016-4580`, :cve:`2016-4581`, :cve:`2016-4794`, :cve:`2016-4805`, :cve:`2016-4913`, :cve:`2016-4951`, :cve:`2016-4997`, :cve:`2016-4998`, :cve:`2016-5195`, :cve:`2016-5243`, :cve:`2016-5244`, :cve:`2016-5400`, :cve:`2016-5412`, :cve:`2016-5696`, :cve:`2016-5728`, :cve:`2016-5828`, :cve:`2016-5829`, :cve:`2016-6130`, :cve:`2016-6136`, :cve:`2016-6156`, :cve:`2016-6162`, :cve:`2016-6187`, :cve:`2016-6197`, :cve:`2016-6198`, :cve:`2016-6213`, :cve:`2016-6327`, :cve:`2016-6480`, :cve:`2016-6516`, :cve:`2016-6786`, :cve:`2016-6787`, :cve:`2016-6828`, :cve:`2016-7039`, :cve:`2016-7042`, :cve:`2016-7097`, :cve:`2016-7117`, :cve:`2016-7425`, :cve:`2016-7910`, :cve:`2016-7911`, :cve:`2016-7912`, :cve:`2016-7913`, :cve:`2016-7914`, :cve:`2016-7915`, :cve:`2016-7916`, :cve:`2016-7917`, :cve:`2016-8399`, :cve:`2016-8405`, :cve:`2016-8630`, :cve:`2016-8632`, :cve:`2016-8633`, :cve:`2016-8636`, :cve:`2016-8645`, :cve:`2016-8646`, :cve:`2016-8650`, :cve:`2016-8655`, :cve:`2016-8658`, :cve:`2016-8666`, :cve:`2016-9083`, :cve:`2016-9084`, :cve:`2016-9120`, :cve:`2016-9178`, :cve:`2016-9191`, :cve:`2016-9313`, :cve:`2016-9555`, :cve:`2016-9576`, :cve:`2016-9588`, :cve:`2016-9604`, :cve:`2016-9685`, :cve:`2016-9754`, :cve:`2016-9755`, :cve:`2016-9756`, :cve:`2016-9777`, :cve:`2016-9793`, :cve:`2016-9794`, :cve:`2016-9806`, :cve:`2016-9919`, :cve:`2017-0605`, :cve:`2017-0627`, :cve:`2017-0750`, :cve:`2017-0786`, :cve:`2017-0861`, :cve:`2017-1000`, :cve:`2017-1000111`, :cve:`2017-1000112`, :cve:`2017-1000251`, :cve:`2017-1000252`, :cve:`2017-1000253`, :cve:`2017-1000255`, :cve:`2017-1000363`, :cve:`2017-1000364`, :cve:`2017-1000365`, :cve:`2017-1000370`, :cve:`2017-1000371`, :cve:`2017-1000379`, :cve:`2017-1000380`, :cve:`2017-1000405`, :cve:`2017-1000407`, :cve:`2017-1000410`, :cve:`2017-10661`, :cve:`2017-10662`, :cve:`2017-10663`, :cve:`2017-10810`, :cve:`2017-10911`, :cve:`2017-11089`, :cve:`2017-11176`, :cve:`2017-11472`, :cve:`2017-11473`, :cve:`2017-11600`, :cve:`2017-12134`, :cve:`2017-12146`, :cve:`2017-12153`, :cve:`2017-12154`, :cve:`2017-12168`, :cve:`2017-12188`, :cve:`2017-12190`, :cve:`2017-12192`, :cve:`2017-12193`, :cve:`2017-12762`, :cve:`2017-13080`, :cve:`2017-13166`, :cve:`2017-13167`, :cve:`2017-13168`, :cve:`2017-13215`, :cve:`2017-13216`, :cve:`2017-13220`, :cve:`2017-13305`, :cve:`2017-13686`, :cve:`2017-13695`, :cve:`2017-13715`, :cve:`2017-14051`, :cve:`2017-14106`, :cve:`2017-14140`, :cve:`2017-14156`, :cve:`2017-14340`, :cve:`2017-14489`, :cve:`2017-14497`, :cve:`2017-14954`, :cve:`2017-14991`, :cve:`2017-15102`, :cve:`2017-15115`, :cve:`2017-15116`, :cve:`2017-15121`, :cve:`2017-15126`, :cve:`2017-15127`, :cve:`2017-15128`, :cve:`2017-15129`, :cve:`2017-15265`, :cve:`2017-15274`, :cve:`2017-15299`, :cve:`2017-15306`, :cve:`2017-15537`, :cve:`2017-15649`, :cve:`2017-15868`, :cve:`2017-15951`, :cve:`2017-16525`, :cve:`2017-16526`, :cve:`2017-16527`, :cve:`2017-16528`, :cve:`2017-16529`, :cve:`2017-16530`, :cve:`2017-16531`, :cve:`2017-16532`, :cve:`2017-16533`, :cve:`2017-16534`, :cve:`2017-16535`, :cve:`2017-16536`, :cve:`2017-16537`, :cve:`2017-16538`, :cve:`2017-16643`, :cve:`2017-16644`, :cve:`2017-16645`, :cve:`2017-16646`, :cve:`2017-16647`, :cve:`2017-16648`, :cve:`2017-16649`, :cve:`2017-16650`, :cve:`2017-16911`, :cve:`2017-16912`, :cve:`2017-16913`, :cve:`2017-16914`, :cve:`2017-16939`, :cve:`2017-16994`, :cve:`2017-16995`, :cve:`2017-16996`, :cve:`2017-17052`, :cve:`2017-17053`, :cve:`2017-17448`, :cve:`2017-17449`, :cve:`2017-17450`, :cve:`2017-17558`, :cve:`2017-17712`, :cve:`2017-17741`, :cve:`2017-17805`, :cve:`2017-17806`, :cve:`2017-17807`, :cve:`2017-17852`, :cve:`2017-17853`, :cve:`2017-17854`, :cve:`2017-17855`, :cve:`2017-17856`, :cve:`2017-17857`, :cve:`2017-17862`, :cve:`2017-17863`, :cve:`2017-17864`, :cve:`2017-17975`, :cve:`2017-18017`, :cve:`2017-18075`, :cve:`2017-18079`, :cve:`2017-18174`, :cve:`2017-18193`, :cve:`2017-18200`, :cve:`2017-18202`, :cve:`2017-18203`, :cve:`2017-18204`, :cve:`2017-18208`, :cve:`2017-18216`, :cve:`2017-18218`, :cve:`2017-18221`, :cve:`2017-18222`, :cve:`2017-18224`, :cve:`2017-18232`, :cve:`2017-18241`, :cve:`2017-18249`, :cve:`2017-18255`, :cve:`2017-18257`, :cve:`2017-18261`, :cve:`2017-18270`, :cve:`2017-18344`, :cve:`2017-18360`, :cve:`2017-18379`, :cve:`2017-18509`, :cve:`2017-18549`, :cve:`2017-18550`, :cve:`2017-18551`, :cve:`2017-18552`, :cve:`2017-18595`, :cve:`2017-2583`, :cve:`2017-2584`, :cve:`2017-2596`, :cve:`2017-2618`, :cve:`2017-2634`, :cve:`2017-2636`, :cve:`2017-2647`, :cve:`2017-2671`, :cve:`2017-5123`, :cve:`2017-5546`, :cve:`2017-5547`, :cve:`2017-5548`, :cve:`2017-5549`, :cve:`2017-5550`, :cve:`2017-5551`, :cve:`2017-5576`, :cve:`2017-5577`, :cve:`2017-5669`, :cve:`2017-5715`, :cve:`2017-5753`, :cve:`2017-5754`, :cve:`2017-5897`, :cve:`2017-5967`, :cve:`2017-5970`, :cve:`2017-5972`, :cve:`2017-5986`, :cve:`2017-6001`, :cve:`2017-6074`, :cve:`2017-6214`, :cve:`2017-6345`, :cve:`2017-6346`, :cve:`2017-6347`, :cve:`2017-6348`, :cve:`2017-6353`, :cve:`2017-6874`, :cve:`2017-6951`, :cve:`2017-7184`, :cve:`2017-7187`, :cve:`2017-7261`, :cve:`2017-7273`, :cve:`2017-7277`, :cve:`2017-7294`, :cve:`2017-7308`, :cve:`2017-7346`, :cve:`2017-7374`, :cve:`2017-7472`, :cve:`2017-7477`, :cve:`2017-7482`, :cve:`2017-7487`, :cve:`2017-7495`, :cve:`2017-7518`, :cve:`2017-7533`, :cve:`2017-7541`, :cve:`2017-7542`, :cve:`2017-7558`, :cve:`2017-7616`, :cve:`2017-7618`, :cve:`2017-7645`, :cve:`2017-7889`, :cve:`2017-7895`, :cve:`2017-7979`, :cve:`2017-8061`, :cve:`2017-8062`, :cve:`2017-8063`, :cve:`2017-8064`, :cve:`2017-8065`, :cve:`2017-8066`, :cve:`2017-8067`, :cve:`2017-8068`, :cve:`2017-8069`, :cve:`2017-8070`, :cve:`2017-8071`, :cve:`2017-8072`, :cve:`2017-8106`, :cve:`2017-8240`, :cve:`2017-8797`, :cve:`2017-8824`, :cve:`2017-8831`, :cve:`2017-8890`, :cve:`2017-8924`, :cve:`2017-8925`, :cve:`2017-9059`, :cve:`2017-9074`, :cve:`2017-9075`, :cve:`2017-9076`, :cve:`2017-9077`, :cve:`2017-9150`, :cve:`2017-9211`, :cve:`2017-9242`, :cve:`2017-9605`, :cve:`2017-9725`, :cve:`2017-9984`, :cve:`2017-9985`, :cve:`2017-9986`, :cve:`2018-1000004`, :cve:`2018-1000026`, :cve:`2018-1000028`, :cve:`2018-1000199`, :cve:`2018-1000200`, :cve:`2018-1000204`, :cve:`2018-10021`, :cve:`2018-10074`, :cve:`2018-10087`, :cve:`2018-10124`, :cve:`2018-10322`, :cve:`2018-10323`, :cve:`2018-1065`, :cve:`2018-1066`, :cve:`2018-10675`, :cve:`2018-1068`, :cve:`2018-10840`, :cve:`2018-10853`, :cve:`2018-1087`, :cve:`2018-10876`, :cve:`2018-10877`, :cve:`2018-10878`, :cve:`2018-10879`, :cve:`2018-10880`, :cve:`2018-10881`, :cve:`2018-10882`, :cve:`2018-10883`, :cve:`2018-10901`, :cve:`2018-10902`, :cve:`2018-1091`, :cve:`2018-1092`, :cve:`2018-1093`, :cve:`2018-10938`, :cve:`2018-1094`, :cve:`2018-10940`, :cve:`2018-1095`, :cve:`2018-1108`, :cve:`2018-1118`, :cve:`2018-1120`, :cve:`2018-11232`, :cve:`2018-1128`, :cve:`2018-1129`, :cve:`2018-1130`, :cve:`2018-11412`, :cve:`2018-11506`, :cve:`2018-11508`, :cve:`2018-12126`, :cve:`2018-12127`, :cve:`2018-12130`, :cve:`2018-12207`, :cve:`2018-12232`, :cve:`2018-12233`, :cve:`2018-12633`, :cve:`2018-12714`, :cve:`2018-12896`, :cve:`2018-12904`, :cve:`2018-13053`, :cve:`2018-13093`, :cve:`2018-13094`, :cve:`2018-13095`, :cve:`2018-13096`, :cve:`2018-13097`, :cve:`2018-13098`, :cve:`2018-13099`, :cve:`2018-13100`, :cve:`2018-13405`, :cve:`2018-13406`, :cve:`2018-14609`, :cve:`2018-14610`, :cve:`2018-14611`, :cve:`2018-14612`, :cve:`2018-14613`, :cve:`2018-14614`, :cve:`2018-14615`, :cve:`2018-14616`, :cve:`2018-14617`, :cve:`2018-14619`, :cve:`2018-14625`, :cve:`2018-14633`, :cve:`2018-14634`, :cve:`2018-14641`, :cve:`2018-14646`, :cve:`2018-14656`, :cve:`2018-14678`, :cve:`2018-14734`, :cve:`2018-15471`, :cve:`2018-15572`, :cve:`2018-15594`, :cve:`2018-16276`, :cve:`2018-16597`, :cve:`2018-16658`, :cve:`2018-16862`, :cve:`2018-16871`, :cve:`2018-16880`, :cve:`2018-16882`, :cve:`2018-16884`, :cve:`2018-17182`, :cve:`2018-17972`, :cve:`2018-18021`, :cve:`2018-18281`, :cve:`2018-18386`, :cve:`2018-18397`, :cve:`2018-18445`, :cve:`2018-18559`, :cve:`2018-18690`, :cve:`2018-18710`, :cve:`2018-18955`, :cve:`2018-19406`, :cve:`2018-19407`, :cve:`2018-19824`, :cve:`2018-19854`, :cve:`2018-19985`, :cve:`2018-20169`, :cve:`2018-20449`, :cve:`2018-20509`, :cve:`2018-20510`, :cve:`2018-20511`, :cve:`2018-20669`, :cve:`2018-20784`, :cve:`2018-20836`, :cve:`2018-20854`, :cve:`2018-20855`, :cve:`2018-20856`, :cve:`2018-20961`, :cve:`2018-20976`, :cve:`2018-21008`, :cve:`2018-25015`, :cve:`2018-25020`, :cve:`2018-3620`, :cve:`2018-3639`, :cve:`2018-3646`, :cve:`2018-3665`, :cve:`2018-3693`, :cve:`2018-5332`, :cve:`2018-5333`, :cve:`2018-5344`, :cve:`2018-5390`, :cve:`2018-5391`, :cve:`2018-5703`, :cve:`2018-5750`, :cve:`2018-5803`, :cve:`2018-5814`, :cve:`2018-5848`, :cve:`2018-5873`, :cve:`2018-5953`, :cve:`2018-5995`, :cve:`2018-6412`, :cve:`2018-6554`, :cve:`2018-6555`, :cve:`2018-6927`, :cve:`2018-7191`, :cve:`2018-7273`, :cve:`2018-7480`, :cve:`2018-7492`, :cve:`2018-7566`, :cve:`2018-7740`, :cve:`2018-7754`, :cve:`2018-7755`, :cve:`2018-7757`, :cve:`2018-7995`, :cve:`2018-8043`, :cve_mitre:`2018-8087`, :cve_mitre:`2018-8781`, :cve_mitre:`2018-8822`, :cve_mitre:`2018-8897`, :cve_mitre:`2018-9363`, :cve_mitre:`2018-9385`, :cve_mitre:`2018-9415`, :cve_mitre:`2018-9422`, :cve_mitre:`2018-9465`, :cve_mitre:`2018-9516`, :cve_mitre:`2018-9517`, :cve_mitre:`2018-9518` and :cve_mitre:`2018-9568` 29- linux-yocto/6.1: Ignore :cve_nist:`2003-1604`, :cve_nist:`2004-0230`, :cve_nist:`2006-3635`, :cve_nist:`2006-5331`, :cve_nist:`2006-6128`, :cve_nist:`2007-4774`, :cve_nist:`2007-6761`, :cve_nist:`2007-6762`, :cve_nist:`2008-7316`, :cve_nist:`2009-2692`, :cve_nist:`2010-0008`, :cve_nist:`2010-3432`, :cve_nist:`2010-4648`, :cve_nist:`2010-5313`, :cve_nist:`2010-5328`, :cve_nist:`2010-5329`, :cve_nist:`2010-5331`, :cve_nist:`2010-5332`, :cve_nist:`2011-4098`, :cve_nist:`2011-4131`, :cve_nist:`2011-4915`, :cve_nist:`2011-5321`, :cve_nist:`2011-5327`, :cve_nist:`2012-0957`, :cve_nist:`2012-2119`, :cve_nist:`2012-2136`, :cve_nist:`2012-2137`, :cve_nist:`2012-2313`, :cve_nist:`2012-2319`, :cve_nist:`2012-2372`, :cve_nist:`2012-2375`, :cve_nist:`2012-2390`, :cve_nist:`2012-2669`, :cve_nist:`2012-2744`, :cve_nist:`2012-2745`, :cve_nist:`2012-3364`, :cve_nist:`2012-3375`, :cve_nist:`2012-3400`, :cve_nist:`2012-3412`, :cve_nist:`2012-3430`, :cve_nist:`2012-3510`, :cve_nist:`2012-3511`, :cve_nist:`2012-3520`, :cve_nist:`2012-3552`, :cve_nist:`2012-4398`, :cve_nist:`2012-4444`, :cve_nist:`2012-4461`, :cve_nist:`2012-4467`, :cve_nist:`2012-4508`, :cve_nist:`2012-4530`, :cve_nist:`2012-4565`, :cve_nist:`2012-5374`, :cve_nist:`2012-5375`, :cve_nist:`2012-5517`, :cve_nist:`2012-6536`, :cve_nist:`2012-6537`, :cve_nist:`2012-6538`, :cve_nist:`2012-6539`, :cve_nist:`2012-6540`, :cve_nist:`2012-6541`, :cve_nist:`2012-6542`, :cve_nist:`2012-6543`, :cve_nist:`2012-6544`, :cve_nist:`2012-6545`, :cve_nist:`2012-6546`, :cve_nist:`2012-6547`, :cve_nist:`2012-6548`, :cve_nist:`2012-6549`, :cve_nist:`2012-6638`, :cve_nist:`2012-6647`, :cve_nist:`2012-6657`, :cve_nist:`2012-6689`, :cve_nist:`2012-6701`, :cve_nist:`2012-6703`, :cve_nist:`2012-6704`, :cve_nist:`2012-6712`, :cve_nist:`2013-0160`, :cve_nist:`2013-0190`, :cve_nist:`2013-0216`, :cve_nist:`2013-0217`, :cve_nist:`2013-0228`, :cve_nist:`2013-0231`, :cve_nist:`2013-0268`, :cve_nist:`2013-0290`, :cve_nist:`2013-0309`, :cve_nist:`2013-0310`, :cve_nist:`2013-0311`, :cve_nist:`2013-0313`, :cve_nist:`2013-0343`, :cve_nist:`2013-0349`, :cve_nist:`2013-0871`, :cve_nist:`2013-0913`, :cve_nist:`2013-0914`, :cve_nist:`2013-1059`, :cve_nist:`2013-1763`, :cve_nist:`2013-1767`, :cve_nist:`2013-1772`, :cve_nist:`2013-1773`, :cve_nist:`2013-1774`, :cve_nist:`2013-1792`, :cve_nist:`2013-1796`, :cve_nist:`2013-1797`, :cve_nist:`2013-1798`, :cve_nist:`2013-1819`, :cve_nist:`2013-1826`, :cve_nist:`2013-1827`, :cve_nist:`2013-1828`, :cve_nist:`2013-1848`, :cve_nist:`2013-1858`, :cve_nist:`2013-1860`, :cve_nist:`2013-1928`, :cve_nist:`2013-1929`, :cve_nist:`2013-1943`, :cve_nist:`2013-1956`, :cve_nist:`2013-1957`, :cve_nist:`2013-1958`, :cve_nist:`2013-1959`, :cve_nist:`2013-1979`, :cve_nist:`2013-2015`, :cve_nist:`2013-2017`, :cve_nist:`2013-2058`, :cve_nist:`2013-2094`, :cve_nist:`2013-2128`, :cve_nist:`2013-2140`, :cve_nist:`2013-2141`, :cve_nist:`2013-2146`, :cve_nist:`2013-2147`, :cve_nist:`2013-2148`, :cve_nist:`2013-2164`, :cve_nist:`2013-2206`, :cve_nist:`2013-2232`, :cve_nist:`2013-2234`, :cve_nist:`2013-2237`, :cve_nist:`2013-2546`, :cve_nist:`2013-2547`, :cve_nist:`2013-2548`, :cve_nist:`2013-2596`, :cve_nist:`2013-2634`, :cve_nist:`2013-2635`, :cve_nist:`2013-2636`, :cve_nist:`2013-2850`, :cve_nist:`2013-2851`, :cve_nist:`2013-2852`, :cve_nist:`2013-2888`, :cve_nist:`2013-2889`, :cve_nist:`2013-2890`, :cve_nist:`2013-2891`, :cve_nist:`2013-2892`, :cve_nist:`2013-2893`, :cve_nist:`2013-2894`, :cve_nist:`2013-2895`, :cve_nist:`2013-2896`, :cve_nist:`2013-2897`, :cve_nist:`2013-2898`, :cve_nist:`2013-2899`, :cve_nist:`2013-2929`, :cve_nist:`2013-2930`, :cve_nist:`2013-3076`, :cve_nist:`2013-3222`, :cve_nist:`2013-3223`, :cve_nist:`2013-3224`, :cve_nist:`2013-3225`, :cve_nist:`2013-3226`, :cve_nist:`2013-3227`, :cve_nist:`2013-3228`, :cve_nist:`2013-3229`, :cve_nist:`2013-3230`, :cve_nist:`2013-3231`, :cve_nist:`2013-3232`, :cve_nist:`2013-3233`, :cve_nist:`2013-3234`, :cve_nist:`2013-3235`, :cve_nist:`2013-3236`, :cve_nist:`2013-3237`, :cve_nist:`2013-3301`, :cve_nist:`2013-3302`, :cve_nist:`2013-4125`, :cve_nist:`2013-4127`, :cve_nist:`2013-4129`, :cve_nist:`2013-4162`, :cve_nist:`2013-4163`, :cve_nist:`2013-4205`, :cve_nist:`2013-4220`, :cve_nist:`2013-4247`, :cve_nist:`2013-4254`, :cve_nist:`2013-4270`, :cve_nist:`2013-4299`, :cve_nist:`2013-4300`, :cve_nist:`2013-4312`, :cve_nist:`2013-4343`, :cve_nist:`2013-4345`, :cve_nist:`2013-4348`, :cve_nist:`2013-4350`, :cve_nist:`2013-4387`, :cve_nist:`2013-4470`, :cve_nist:`2013-4483`, :cve_nist:`2013-4511`, :cve_nist:`2013-4512`, :cve_nist:`2013-4513`, :cve_nist:`2013-4514`, :cve_nist:`2013-4515`, :cve_nist:`2013-4516`, :cve_nist:`2013-4563`, :cve_nist:`2013-4579`, :cve_nist:`2013-4587`, :cve_nist:`2013-4588`, :cve_nist:`2013-4591`, :cve_nist:`2013-4592`, :cve_nist:`2013-5634`, :cve_nist:`2013-6282`, :cve_nist:`2013-6367`, :cve_nist:`2013-6368`, :cve_nist:`2013-6376`, :cve_nist:`2013-6378`, :cve_nist:`2013-6380`, :cve_nist:`2013-6381`, :cve_nist:`2013-6382`, :cve_nist:`2013-6383`, :cve_nist:`2013-6431`, :cve_nist:`2013-6432`, :cve_nist:`2013-6885`, :cve_nist:`2013-7026`, :cve_nist:`2013-7027`, :cve_nist:`2013-7263`, :cve_nist:`2013-7264`, :cve_nist:`2013-7265`, :cve_nist:`2013-7266`, :cve_nist:`2013-7267`, :cve_nist:`2013-7268`, :cve_nist:`2013-7269`, :cve_nist:`2013-7270`, :cve_nist:`2013-7271`, :cve_nist:`2013-7281`, :cve_nist:`2013-7339`, :cve_nist:`2013-7348`, :cve_nist:`2013-7421`, :cve_nist:`2013-7446`, :cve_nist:`2013-7470`, :cve_nist:`2014-0038`, :cve_nist:`2014-0049`, :cve_nist:`2014-0055`, :cve_nist:`2014-0069`, :cve_nist:`2014-0077`, :cve_nist:`2014-0100`, :cve_nist:`2014-0101`, :cve_nist:`2014-0102`, :cve_nist:`2014-0131`, :cve_nist:`2014-0155`, :cve_nist:`2014-0181`, :cve_nist:`2014-0196`, :cve_nist:`2014-0203`, :cve_nist:`2014-0205`, :cve_nist:`2014-0206`, :cve_nist:`2014-1438`, :cve_nist:`2014-1444`, :cve_nist:`2014-1445`, :cve_nist:`2014-1446`, :cve_nist:`2014-1690`, :cve_nist:`2014-1737`, :cve_nist:`2014-1738`, :cve_nist:`2014-1739`, :cve_nist:`2014-1874`, :cve_nist:`2014-2038`, :cve_nist:`2014-2039`, :cve_nist:`2014-2309`, :cve_nist:`2014-2523`, :cve_nist:`2014-2568`, :cve_nist:`2014-2580`, :cve_nist:`2014-2672`, :cve_nist:`2014-2673`, :cve_nist:`2014-2678`, :cve_nist:`2014-2706`, :cve_nist:`2014-2739`, :cve_nist:`2014-2851`, :cve_nist:`2014-2889`, :cve_nist:`2014-3122`, :cve_nist:`2014-3144`, :cve_nist:`2014-3145`, :cve_nist:`2014-3153`, :cve_nist:`2014-3180`, :cve_nist:`2014-3181`, :cve_nist:`2014-3182`, :cve_nist:`2014-3183`, :cve_nist:`2014-3184`, :cve_nist:`2014-3185`, :cve_nist:`2014-3186`, :cve_nist:`2014-3534`, :cve_nist:`2014-3535`, :cve_nist:`2014-3601`, :cve_nist:`2014-3610`, :cve_nist:`2014-3611`, :cve_nist:`2014-3631`, :cve_nist:`2014-3645`, :cve_nist:`2014-3646`, :cve_nist:`2014-3647`, :cve_nist:`2014-3673`, :cve_nist:`2014-3687`, :cve_nist:`2014-3688`, :cve_nist:`2014-3690`, :cve_nist:`2014-3917`, :cve_nist:`2014-3940`, :cve_nist:`2014-4014`, :cve_nist:`2014-4027`, :cve_nist:`2014-4157`, :cve_nist:`2014-4171`, :cve_nist:`2014-4508`, :cve_nist:`2014-4608`, :cve_nist:`2014-4611`, :cve_nist:`2014-4652`, :cve_nist:`2014-4653`, :cve_nist:`2014-4654`, :cve_nist:`2014-4655`, :cve_nist:`2014-4656`, :cve_nist:`2014-4667`, :cve_nist:`2014-4699`, :cve_nist:`2014-4943`, :cve_nist:`2014-5045`, :cve_nist:`2014-5077`, :cve_nist:`2014-5206`, :cve_nist:`2014-5207`, :cve_nist:`2014-5471`, :cve_nist:`2014-5472`, :cve_nist:`2014-6410`, :cve_nist:`2014-6416`, :cve_nist:`2014-6417`, :cve_nist:`2014-6418`, :cve_nist:`2014-7145`, :cve_nist:`2014-7283`, :cve_nist:`2014-7284`, :cve_nist:`2014-7822`, :cve_nist:`2014-7825`, :cve_nist:`2014-7826`, :cve_nist:`2014-7841`, :cve_nist:`2014-7842`, :cve_nist:`2014-7843`, :cve_nist:`2014-7970`, :cve_nist:`2014-7975`, :cve_nist:`2014-8086`, :cve_nist:`2014-8133`, :cve_nist:`2014-8134`, :cve_nist:`2014-8159`, :cve_nist:`2014-8160`, :cve_nist:`2014-8171`, :cve_nist:`2014-8172`, :cve_nist:`2014-8173`, :cve_nist:`2014-8369`, :cve_nist:`2014-8480`, :cve_nist:`2014-8481`, :cve_nist:`2014-8559`, :cve_nist:`2014-8709`, :cve_nist:`2014-8884`, :cve_nist:`2014-8989`, :cve_nist:`2014-9090`, :cve_nist:`2014-9322`, :cve_nist:`2014-9419`, :cve_nist:`2014-9420`, :cve_nist:`2014-9428`, :cve_nist:`2014-9529`, :cve_nist:`2014-9584`, :cve_nist:`2014-9585`, :cve_nist:`2014-9644`, :cve_nist:`2014-9683`, :cve_nist:`2014-9710`, :cve_nist:`2014-9715`, :cve_nist:`2014-9717`, :cve_nist:`2014-9728`, :cve_nist:`2014-9729`, :cve_nist:`2014-9730`, :cve_nist:`2014-9731`, :cve_nist:`2014-9803`, :cve_nist:`2014-9870`, :cve_nist:`2014-9888`, :cve_nist:`2014-9895`, :cve_nist:`2014-9903`, :cve_nist:`2014-9904`, :cve_nist:`2014-9914`, :cve_nist:`2014-9922`, :cve_nist:`2014-9940`, :cve_nist:`2015-0239`, :cve_nist:`2015-0274`, :cve_nist:`2015-0275`, :cve_nist:`2015-1333`, :cve_nist:`2015-1339`, :cve_nist:`2015-1350`, :cve_nist:`2015-1420`, :cve_nist:`2015-1421`, :cve_nist:`2015-1465`, :cve_nist:`2015-1573`, :cve_nist:`2015-1593`, :cve_nist:`2015-1805`, :cve_nist:`2015-2041`, :cve_nist:`2015-2042`, :cve_nist:`2015-2150`, :cve_nist:`2015-2666`, :cve_nist:`2015-2672`, :cve_nist:`2015-2686`, :cve_nist:`2015-2830`, :cve_nist:`2015-2922`, :cve_nist:`2015-2925`, :cve_nist:`2015-3212`, :cve_nist:`2015-3214`, :cve_nist:`2015-3288`, :cve_nist:`2015-3290`, :cve_nist:`2015-3291`, :cve_nist:`2015-3331`, :cve_nist:`2015-3339`, :cve_nist:`2015-3636`, :cve_nist:`2015-4001`, :cve_nist:`2015-4002`, :cve_nist:`2015-4003`, :cve_nist:`2015-4004`, :cve_nist:`2015-4036`, :cve_nist:`2015-4167`, :cve_nist:`2015-4170`, :cve_nist:`2015-4176`, :cve_nist:`2015-4177`, :cve_nist:`2015-4178`, :cve_nist:`2015-4692`, :cve_nist:`2015-4700`, :cve_nist:`2015-5156`, :cve_nist:`2015-5157`, :cve_nist:`2015-5257`, :cve_nist:`2015-5283`, :cve_nist:`2015-5307`, :cve_nist:`2015-5327`, :cve_nist:`2015-5364`, :cve_nist:`2015-5366`, :cve_nist:`2015-5697`, :cve_nist:`2015-5706`, :cve_nist:`2015-5707`, :cve_nist:`2015-6252`, :cve_nist:`2015-6526`, :cve_nist:`2015-6937`, :cve_nist:`2015-7509`, :cve_nist:`2015-7513`, :cve_nist:`2015-7515`, :cve_nist:`2015-7550`, :cve_nist:`2015-7566`, :cve_nist:`2015-7613`, :cve_nist:`2015-7799`, :cve_nist:`2015-7833`, :cve_nist:`2015-7872`, :cve_nist:`2015-7884`, :cve_nist:`2015-7885`, :cve_nist:`2015-7990`, :cve_nist:`2015-8104`, :cve_nist:`2015-8215`, :cve_nist:`2015-8324`, :cve_nist:`2015-8374`, :cve_nist:`2015-8539`, :cve_nist:`2015-8543`, :cve_nist:`2015-8550`, :cve_nist:`2015-8551`, :cve_nist:`2015-8552`, :cve_nist:`2015-8553`, :cve_nist:`2015-8569`, :cve_nist:`2015-8575`, :cve_nist:`2015-8660`, :cve_nist:`2015-8709`, :cve_nist:`2015-8746`, :cve_nist:`2015-8767`, :cve_nist:`2015-8785`, :cve_nist:`2015-8787`, :cve_nist:`2015-8812`, :cve_nist:`2015-8816`, :cve_nist:`2015-8830`, :cve_nist:`2015-8839`, :cve_nist:`2015-8844`, :cve_nist:`2015-8845`, :cve_nist:`2015-8950`, :cve_nist:`2015-8952`, :cve_nist:`2015-8953`, :cve_nist:`2015-8955`, :cve_nist:`2015-8956`, :cve_nist:`2015-8961`, :cve_nist:`2015-8962`, :cve_nist:`2015-8963`, :cve_nist:`2015-8964`, :cve_nist:`2015-8966`, :cve_nist:`2015-8967`, :cve_nist:`2015-8970`, :cve_nist:`2015-9004`, :cve_nist:`2015-9016`, :cve_nist:`2015-9289`, :cve_nist:`2016-0617`, :cve_nist:`2016-0723`, :cve_nist:`2016-0728`, :cve_nist:`2016-0758`, :cve_nist:`2016-0821`, :cve_nist:`2016-0823`, :cve_nist:`2016-10044`, :cve_nist:`2016-10088`, :cve_nist:`2016-10147`, :cve_nist:`2016-10150`, :cve_nist:`2016-10153`, :cve_nist:`2016-10154`, :cve_nist:`2016-10200`, :cve_nist:`2016-10208`, :cve_nist:`2016-10229`, :cve_nist:`2016-10318`, :cve_nist:`2016-10723`, :cve_nist:`2016-10741`, :cve_nist:`2016-10764`, :cve_nist:`2016-10905`, :cve_nist:`2016-10906`, :cve_nist:`2016-10907`, :cve_nist:`2016-1237`, :cve_nist:`2016-1575`, :cve_nist:`2016-1576`, :cve_nist:`2016-1583`, :cve_nist:`2016-2053`, :cve_nist:`2016-2069`, :cve_nist:`2016-2070`, :cve_nist:`2016-2085`, :cve_nist:`2016-2117`, :cve_nist:`2016-2143`, :cve_nist:`2016-2184`, :cve_nist:`2016-2185`, :cve_nist:`2016-2186`, :cve_nist:`2016-2187`, :cve_nist:`2016-2188`, :cve_nist:`2016-2383`, :cve_nist:`2016-2384`, :cve_nist:`2016-2543`, :cve_nist:`2016-2544`, :cve_nist:`2016-2545`, :cve_nist:`2016-2546`, :cve_nist:`2016-2547`, :cve_nist:`2016-2548`, :cve_nist:`2016-2549`, :cve_nist:`2016-2550`, :cve_nist:`2016-2782`, :cve_nist:`2016-2847`, :cve_nist:`2016-3044`, :cve_nist:`2016-3070`, :cve_nist:`2016-3134`, :cve_nist:`2016-3135`, :cve_nist:`2016-3136`, :cve_nist:`2016-3137`, :cve_nist:`2016-3138`, :cve_nist:`2016-3139`, :cve_nist:`2016-3140`, :cve_nist:`2016-3156`, :cve_nist:`2016-3157`, :cve_nist:`2016-3672`, :cve_nist:`2016-3689`, :cve_nist:`2016-3713`, :cve_nist:`2016-3841`, :cve_nist:`2016-3857`, :cve_nist:`2016-3951`, :cve_nist:`2016-3955`, :cve_nist:`2016-3961`, :cve_nist:`2016-4440`, :cve_nist:`2016-4470`, :cve_nist:`2016-4482`, :cve_nist:`2016-4485`, :cve_nist:`2016-4486`, :cve_nist:`2016-4557`, :cve_nist:`2016-4558`, :cve_nist:`2016-4565`, :cve_nist:`2016-4568`, :cve_nist:`2016-4569`, :cve_nist:`2016-4578`, :cve_nist:`2016-4580`, :cve_nist:`2016-4581`, :cve_nist:`2016-4794`, :cve_nist:`2016-4805`, :cve_nist:`2016-4913`, :cve_nist:`2016-4951`, :cve_nist:`2016-4997`, :cve_nist:`2016-4998`, :cve_nist:`2016-5195`, :cve_nist:`2016-5243`, :cve_nist:`2016-5244`, :cve_nist:`2016-5400`, :cve_nist:`2016-5412`, :cve_nist:`2016-5696`, :cve_nist:`2016-5728`, :cve_nist:`2016-5828`, :cve_nist:`2016-5829`, :cve_nist:`2016-6130`, :cve_nist:`2016-6136`, :cve_nist:`2016-6156`, :cve_nist:`2016-6162`, :cve_nist:`2016-6187`, :cve_nist:`2016-6197`, :cve_nist:`2016-6198`, :cve_nist:`2016-6213`, :cve_nist:`2016-6327`, :cve_nist:`2016-6480`, :cve_nist:`2016-6516`, :cve_nist:`2016-6786`, :cve_nist:`2016-6787`, :cve_nist:`2016-6828`, :cve_nist:`2016-7039`, :cve_nist:`2016-7042`, :cve_nist:`2016-7097`, :cve_nist:`2016-7117`, :cve_nist:`2016-7425`, :cve_nist:`2016-7910`, :cve_nist:`2016-7911`, :cve_nist:`2016-7912`, :cve_nist:`2016-7913`, :cve_nist:`2016-7914`, :cve_nist:`2016-7915`, :cve_nist:`2016-7916`, :cve_nist:`2016-7917`, :cve_nist:`2016-8399`, :cve_nist:`2016-8405`, :cve_nist:`2016-8630`, :cve_nist:`2016-8632`, :cve_nist:`2016-8633`, :cve_nist:`2016-8636`, :cve_nist:`2016-8645`, :cve_nist:`2016-8646`, :cve_nist:`2016-8650`, :cve_nist:`2016-8655`, :cve_nist:`2016-8658`, :cve_nist:`2016-8666`, :cve_nist:`2016-9083`, :cve_nist:`2016-9084`, :cve_nist:`2016-9120`, :cve_nist:`2016-9178`, :cve_nist:`2016-9191`, :cve_nist:`2016-9313`, :cve_nist:`2016-9555`, :cve_nist:`2016-9576`, :cve_nist:`2016-9588`, :cve_nist:`2016-9604`, :cve_nist:`2016-9685`, :cve_nist:`2016-9754`, :cve_nist:`2016-9755`, :cve_nist:`2016-9756`, :cve_nist:`2016-9777`, :cve_nist:`2016-9793`, :cve_nist:`2016-9794`, :cve_nist:`2016-9806`, :cve_nist:`2016-9919`, :cve_nist:`2017-0605`, :cve_nist:`2017-0627`, :cve_nist:`2017-0750`, :cve_nist:`2017-0786`, :cve_nist:`2017-0861`, :cve_nist:`2017-1000`, :cve_nist:`2017-1000111`, :cve_nist:`2017-1000112`, :cve_nist:`2017-1000251`, :cve_nist:`2017-1000252`, :cve_nist:`2017-1000253`, :cve_nist:`2017-1000255`, :cve_nist:`2017-1000363`, :cve_nist:`2017-1000364`, :cve_nist:`2017-1000365`, :cve_nist:`2017-1000370`, :cve_nist:`2017-1000371`, :cve_nist:`2017-1000379`, :cve_nist:`2017-1000380`, :cve_nist:`2017-1000405`, :cve_nist:`2017-1000407`, :cve_nist:`2017-1000410`, :cve_nist:`2017-10661`, :cve_nist:`2017-10662`, :cve_nist:`2017-10663`, :cve_nist:`2017-10810`, :cve_nist:`2017-10911`, :cve_nist:`2017-11089`, :cve_nist:`2017-11176`, :cve_nist:`2017-11472`, :cve_nist:`2017-11473`, :cve_nist:`2017-11600`, :cve_nist:`2017-12134`, :cve_nist:`2017-12146`, :cve_nist:`2017-12153`, :cve_nist:`2017-12154`, :cve_nist:`2017-12168`, :cve_nist:`2017-12188`, :cve_nist:`2017-12190`, :cve_nist:`2017-12192`, :cve_nist:`2017-12193`, :cve_nist:`2017-12762`, :cve_nist:`2017-13080`, :cve_nist:`2017-13166`, :cve_nist:`2017-13167`, :cve_nist:`2017-13168`, :cve_nist:`2017-13215`, :cve_nist:`2017-13216`, :cve_nist:`2017-13220`, :cve_nist:`2017-13305`, :cve_nist:`2017-13686`, :cve_nist:`2017-13695`, :cve_nist:`2017-13715`, :cve_nist:`2017-14051`, :cve_nist:`2017-14106`, :cve_nist:`2017-14140`, :cve_nist:`2017-14156`, :cve_nist:`2017-14340`, :cve_nist:`2017-14489`, :cve_nist:`2017-14497`, :cve_nist:`2017-14954`, :cve_nist:`2017-14991`, :cve_nist:`2017-15102`, :cve_nist:`2017-15115`, :cve_nist:`2017-15116`, :cve_nist:`2017-15121`, :cve_nist:`2017-15126`, :cve_nist:`2017-15127`, :cve_nist:`2017-15128`, :cve_nist:`2017-15129`, :cve_nist:`2017-15265`, :cve_nist:`2017-15274`, :cve_nist:`2017-15299`, :cve_nist:`2017-15306`, :cve_nist:`2017-15537`, :cve_nist:`2017-15649`, :cve_nist:`2017-15868`, :cve_nist:`2017-15951`, :cve_nist:`2017-16525`, :cve_nist:`2017-16526`, :cve_nist:`2017-16527`, :cve_nist:`2017-16528`, :cve_nist:`2017-16529`, :cve_nist:`2017-16530`, :cve_nist:`2017-16531`, :cve_nist:`2017-16532`, :cve_nist:`2017-16533`, :cve_nist:`2017-16534`, :cve_nist:`2017-16535`, :cve_nist:`2017-16536`, :cve_nist:`2017-16537`, :cve_nist:`2017-16538`, :cve_nist:`2017-16643`, :cve_nist:`2017-16644`, :cve_nist:`2017-16645`, :cve_nist:`2017-16646`, :cve_nist:`2017-16647`, :cve_nist:`2017-16648`, :cve_nist:`2017-16649`, :cve_nist:`2017-16650`, :cve_nist:`2017-16911`, :cve_nist:`2017-16912`, :cve_nist:`2017-16913`, :cve_nist:`2017-16914`, :cve_nist:`2017-16939`, :cve_nist:`2017-16994`, :cve_nist:`2017-16995`, :cve_nist:`2017-16996`, :cve_nist:`2017-17052`, :cve_nist:`2017-17053`, :cve_nist:`2017-17448`, :cve_nist:`2017-17449`, :cve_nist:`2017-17450`, :cve_nist:`2017-17558`, :cve_nist:`2017-17712`, :cve_nist:`2017-17741`, :cve_nist:`2017-17805`, :cve_nist:`2017-17806`, :cve_nist:`2017-17807`, :cve_nist:`2017-17852`, :cve_nist:`2017-17853`, :cve_nist:`2017-17854`, :cve_nist:`2017-17855`, :cve_nist:`2017-17856`, :cve_nist:`2017-17857`, :cve_nist:`2017-17862`, :cve_nist:`2017-17863`, :cve_nist:`2017-17864`, :cve_nist:`2017-17975`, :cve_nist:`2017-18017`, :cve_nist:`2017-18075`, :cve_nist:`2017-18079`, :cve_nist:`2017-18174`, :cve_nist:`2017-18193`, :cve_nist:`2017-18200`, :cve_nist:`2017-18202`, :cve_nist:`2017-18203`, :cve_nist:`2017-18204`, :cve_nist:`2017-18208`, :cve_nist:`2017-18216`, :cve_nist:`2017-18218`, :cve_nist:`2017-18221`, :cve_nist:`2017-18222`, :cve_nist:`2017-18224`, :cve_nist:`2017-18232`, :cve_nist:`2017-18241`, :cve_nist:`2017-18249`, :cve_nist:`2017-18255`, :cve_nist:`2017-18257`, :cve_nist:`2017-18261`, :cve_nist:`2017-18270`, :cve_nist:`2017-18344`, :cve_nist:`2017-18360`, :cve_nist:`2017-18379`, :cve_nist:`2017-18509`, :cve_nist:`2017-18549`, :cve_nist:`2017-18550`, :cve_nist:`2017-18551`, :cve_nist:`2017-18552`, :cve_nist:`2017-18595`, :cve_nist:`2017-2583`, :cve_nist:`2017-2584`, :cve_nist:`2017-2596`, :cve_nist:`2017-2618`, :cve_nist:`2017-2634`, :cve_nist:`2017-2636`, :cve_nist:`2017-2647`, :cve_nist:`2017-2671`, :cve_nist:`2017-5123`, :cve_nist:`2017-5546`, :cve_nist:`2017-5547`, :cve_nist:`2017-5548`, :cve_nist:`2017-5549`, :cve_nist:`2017-5550`, :cve_nist:`2017-5551`, :cve_nist:`2017-5576`, :cve_nist:`2017-5577`, :cve_nist:`2017-5669`, :cve_nist:`2017-5715`, :cve_nist:`2017-5753`, :cve_nist:`2017-5754`, :cve_nist:`2017-5897`, :cve_nist:`2017-5967`, :cve_nist:`2017-5970`, :cve_nist:`2017-5972`, :cve_nist:`2017-5986`, :cve_nist:`2017-6001`, :cve_nist:`2017-6074`, :cve_nist:`2017-6214`, :cve_nist:`2017-6345`, :cve_nist:`2017-6346`, :cve_nist:`2017-6347`, :cve_nist:`2017-6348`, :cve_nist:`2017-6353`, :cve_nist:`2017-6874`, :cve_nist:`2017-6951`, :cve_nist:`2017-7184`, :cve_nist:`2017-7187`, :cve_nist:`2017-7261`, :cve_nist:`2017-7273`, :cve_nist:`2017-7277`, :cve_nist:`2017-7294`, :cve_nist:`2017-7308`, :cve_nist:`2017-7346`, :cve_nist:`2017-7374`, :cve_nist:`2017-7472`, :cve_nist:`2017-7477`, :cve_nist:`2017-7482`, :cve_nist:`2017-7487`, :cve_nist:`2017-7495`, :cve_nist:`2017-7518`, :cve_nist:`2017-7533`, :cve_nist:`2017-7541`, :cve_nist:`2017-7542`, :cve_nist:`2017-7558`, :cve_nist:`2017-7616`, :cve_nist:`2017-7618`, :cve_nist:`2017-7645`, :cve_nist:`2017-7889`, :cve_nist:`2017-7895`, :cve_nist:`2017-7979`, :cve_nist:`2017-8061`, :cve_nist:`2017-8062`, :cve_nist:`2017-8063`, :cve_nist:`2017-8064`, :cve_nist:`2017-8065`, :cve_nist:`2017-8066`, :cve_nist:`2017-8067`, :cve_nist:`2017-8068`, :cve_nist:`2017-8069`, :cve_nist:`2017-8070`, :cve_nist:`2017-8071`, :cve_nist:`2017-8072`, :cve_nist:`2017-8106`, :cve_nist:`2017-8240`, :cve_nist:`2017-8797`, :cve_nist:`2017-8824`, :cve_nist:`2017-8831`, :cve_nist:`2017-8890`, :cve_nist:`2017-8924`, :cve_nist:`2017-8925`, :cve_nist:`2017-9059`, :cve_nist:`2017-9074`, :cve_nist:`2017-9075`, :cve_nist:`2017-9076`, :cve_nist:`2017-9077`, :cve_nist:`2017-9150`, :cve_nist:`2017-9211`, :cve_nist:`2017-9242`, :cve_nist:`2017-9605`, :cve_nist:`2017-9725`, :cve_nist:`2017-9984`, :cve_nist:`2017-9985`, :cve_nist:`2017-9986`, :cve_nist:`2018-1000004`, :cve_nist:`2018-1000026`, :cve_nist:`2018-1000028`, :cve_nist:`2018-1000199`, :cve_nist:`2018-1000200`, :cve_nist:`2018-1000204`, :cve_nist:`2018-10021`, :cve_nist:`2018-10074`, :cve_nist:`2018-10087`, :cve_nist:`2018-10124`, :cve_nist:`2018-10322`, :cve_nist:`2018-10323`, :cve_nist:`2018-1065`, :cve_nist:`2018-1066`, :cve_nist:`2018-10675`, :cve_nist:`2018-1068`, :cve_nist:`2018-10840`, :cve_nist:`2018-10853`, :cve_nist:`2018-1087`, :cve_nist:`2018-10876`, :cve_nist:`2018-10877`, :cve_nist:`2018-10878`, :cve_nist:`2018-10879`, :cve_nist:`2018-10880`, :cve_nist:`2018-10881`, :cve_nist:`2018-10882`, :cve_nist:`2018-10883`, :cve_nist:`2018-10901`, :cve_nist:`2018-10902`, :cve_nist:`2018-1091`, :cve_nist:`2018-1092`, :cve_nist:`2018-1093`, :cve_nist:`2018-10938`, :cve_nist:`2018-1094`, :cve_nist:`2018-10940`, :cve_nist:`2018-1095`, :cve_nist:`2018-1108`, :cve_nist:`2018-1118`, :cve_nist:`2018-1120`, :cve_nist:`2018-11232`, :cve_nist:`2018-1128`, :cve_nist:`2018-1129`, :cve_nist:`2018-1130`, :cve_nist:`2018-11412`, :cve_nist:`2018-11506`, :cve_nist:`2018-11508`, :cve_nist:`2018-12126`, :cve_nist:`2018-12127`, :cve_nist:`2018-12130`, :cve_nist:`2018-12207`, :cve_nist:`2018-12232`, :cve_nist:`2018-12233`, :cve_nist:`2018-12633`, :cve_nist:`2018-12714`, :cve_nist:`2018-12896`, :cve_nist:`2018-12904`, :cve_nist:`2018-13053`, :cve_nist:`2018-13093`, :cve_nist:`2018-13094`, :cve_nist:`2018-13095`, :cve_nist:`2018-13096`, :cve_nist:`2018-13097`, :cve_nist:`2018-13098`, :cve_nist:`2018-13099`, :cve_nist:`2018-13100`, :cve_nist:`2018-13405`, :cve_nist:`2018-13406`, :cve_nist:`2018-14609`, :cve_nist:`2018-14610`, :cve_nist:`2018-14611`, :cve_nist:`2018-14612`, :cve_nist:`2018-14613`, :cve_nist:`2018-14614`, :cve_nist:`2018-14615`, :cve_nist:`2018-14616`, :cve_nist:`2018-14617`, :cve_nist:`2018-14619`, :cve_nist:`2018-14625`, :cve_nist:`2018-14633`, :cve_nist:`2018-14634`, :cve_nist:`2018-14641`, :cve_nist:`2018-14646`, :cve_nist:`2018-14656`, :cve_nist:`2018-14678`, :cve_nist:`2018-14734`, :cve_nist:`2018-15471`, :cve_nist:`2018-15572`, :cve_nist:`2018-15594`, :cve_nist:`2018-16276`, :cve_nist:`2018-16597`, :cve_nist:`2018-16658`, :cve_nist:`2018-16862`, :cve_nist:`2018-16871`, :cve_nist:`2018-16880`, :cve_nist:`2018-16882`, :cve_nist:`2018-16884`, :cve_nist:`2018-17182`, :cve_nist:`2018-17972`, :cve_nist:`2018-18021`, :cve_nist:`2018-18281`, :cve_nist:`2018-18386`, :cve_nist:`2018-18397`, :cve_nist:`2018-18445`, :cve_nist:`2018-18559`, :cve_nist:`2018-18690`, :cve_nist:`2018-18710`, :cve_nist:`2018-18955`, :cve_nist:`2018-19406`, :cve_nist:`2018-19407`, :cve_nist:`2018-19824`, :cve_nist:`2018-19854`, :cve_nist:`2018-19985`, :cve_nist:`2018-20169`, :cve_nist:`2018-20449`, :cve_nist:`2018-20509`, :cve_nist:`2018-20510`, :cve_nist:`2018-20511`, :cve_nist:`2018-20669`, :cve_nist:`2018-20784`, :cve_nist:`2018-20836`, :cve_nist:`2018-20854`, :cve_nist:`2018-20855`, :cve_nist:`2018-20856`, :cve_nist:`2018-20961`, :cve_nist:`2018-20976`, :cve_nist:`2018-21008`, :cve_nist:`2018-25015`, :cve_nist:`2018-25020`, :cve_nist:`2018-3620`, :cve_nist:`2018-3639`, :cve_nist:`2018-3646`, :cve_nist:`2018-3665`, :cve_nist:`2018-3693`, :cve_nist:`2018-5332`, :cve_nist:`2018-5333`, :cve_nist:`2018-5344`, :cve_nist:`2018-5390`, :cve_nist:`2018-5391`, :cve_nist:`2018-5703`, :cve_nist:`2018-5750`, :cve_nist:`2018-5803`, :cve_nist:`2018-5814`, :cve_nist:`2018-5848`, :cve_nist:`2018-5873`, :cve_nist:`2018-5953`, :cve_nist:`2018-5995`, :cve_nist:`2018-6412`, :cve_nist:`2018-6554`, :cve_nist:`2018-6555`, :cve_nist:`2018-6927`, :cve_nist:`2018-7191`, :cve_nist:`2018-7273`, :cve_nist:`2018-7480`, :cve_nist:`2018-7492`, :cve_nist:`2018-7566`, :cve_nist:`2018-7740`, :cve_nist:`2018-7754`, :cve_nist:`2018-7755`, :cve_nist:`2018-7757`, :cve_nist:`2018-7995`, :cve_nist:`2018-8043`, :cve_mitre:`2018-8087`, :cve_mitre:`2018-8781`, :cve_mitre:`2018-8822`, :cve_mitre:`2018-8897`, :cve_mitre:`2018-9363`, :cve_mitre:`2018-9385`, :cve_mitre:`2018-9415`, :cve_mitre:`2018-9422`, :cve_mitre:`2018-9465`, :cve_mitre:`2018-9516`, :cve_mitre:`2018-9517`, :cve_mitre:`2018-9518` and :cve_mitre:`2018-9568`
30- linux-yocto/6.1 (Continued): Ignore :cve:`2019-0136`, :cve:`2019-0145`, :cve:`2019-0146`, :cve:`2019-0147`, :cve:`2019-0148`, :cve:`2019-0149`, :cve:`2019-0154`, :cve:`2019-0155`, :cve:`2019-10124`, :cve:`2019-10125`, :cve:`2019-10126`, :cve:`2019-10142`, :cve:`2019-10207`, :cve:`2019-10220`, :cve:`2019-10638`, :cve:`2019-10639`, :cve:`2019-11085`, :cve:`2019-11091`, :cve:`2019-11135`, :cve:`2019-11190`, :cve:`2019-11191`, :cve:`2019-1125`, :cve:`2019-11477`, :cve:`2019-11478`, :cve:`2019-11479`, :cve:`2019-11486`, :cve:`2019-11487`, :cve:`2019-11599`, :cve:`2019-11683`, :cve:`2019-11810`, :cve:`2019-11811`, :cve:`2019-11815`, :cve:`2019-11833`, :cve:`2019-11884`, :cve:`2019-12378`, :cve:`2019-12379`, :cve:`2019-12380`, :cve:`2019-12381`, :cve:`2019-12382`, :cve:`2019-12454`, :cve:`2019-12455`, :cve:`2019-12614`, :cve:`2019-12615`, :cve:`2019-12817`, :cve:`2019-12818`, :cve:`2019-12819`, :cve:`2019-12881`, :cve:`2019-12984`, :cve:`2019-13233`, :cve:`2019-13272`, :cve:`2019-13631`, :cve:`2019-13648`, :cve:`2019-14283`, :cve:`2019-14284`, :cve:`2019-14615`, :cve:`2019-14763`, :cve:`2019-14814`, :cve:`2019-14815`, :cve:`2019-14816`, :cve:`2019-14821`, :cve:`2019-14835`, :cve:`2019-14895`, :cve:`2019-14896`, :cve:`2019-14897`, :cve:`2019-14901`, :cve:`2019-15030`, :cve:`2019-15031`, :cve:`2019-15090`, :cve:`2019-15098`, :cve:`2019-15099`, :cve:`2019-15117`, :cve:`2019-15118`, :cve:`2019-15211`, :cve:`2019-15212`, :cve:`2019-15213`, :cve:`2019-15214`, :cve:`2019-15215`, :cve:`2019-15216`, :cve:`2019-15217`, :cve:`2019-15218`, :cve:`2019-15219`, :cve:`2019-15220`, :cve:`2019-15221`, :cve:`2019-15222`, :cve:`2019-15223`, :cve:`2019-15291`, :cve:`2019-15292`, :cve:`2019-15504`, :cve:`2019-15505`, :cve:`2019-15538`, :cve:`2019-15666`, :cve:`2019-15794`, :cve:`2019-15807`, :cve:`2019-15916`, :cve:`2019-15917`, :cve:`2019-15918`, :cve:`2019-15919`, :cve:`2019-15920`, :cve:`2019-15921`, :cve:`2019-15922`, :cve:`2019-15923`, :cve:`2019-15924`, :cve:`2019-15925`, :cve:`2019-15926`, :cve:`2019-15927`, :cve:`2019-16229`, :cve:`2019-16230`, :cve:`2019-16231`, :cve:`2019-16232`, :cve:`2019-16233`, :cve:`2019-16234`, :cve:`2019-16413`, :cve:`2019-16714`, :cve:`2019-16746`, :cve:`2019-16921`, :cve:`2019-16994`, :cve:`2019-16995`, :cve:`2019-17052`, :cve:`2019-17053`, :cve:`2019-17054`, :cve:`2019-17055`, :cve:`2019-17056`, :cve:`2019-17075`, :cve:`2019-17133`, :cve:`2019-17351`, :cve:`2019-17666`, :cve:`2019-18198`, :cve:`2019-18282`, :cve:`2019-18660`, :cve:`2019-18675`, :cve:`2019-18683`, :cve:`2019-18786`, :cve:`2019-18805`, :cve:`2019-18806`, :cve:`2019-18807`, :cve:`2019-18808`, :cve:`2019-18809`, :cve:`2019-18810`, :cve:`2019-18811`, :cve:`2019-18812`, :cve:`2019-18813`, :cve:`2019-18814`, :cve:`2019-18885`, :cve:`2019-19036`, :cve:`2019-19037`, :cve:`2019-19039`, :cve:`2019-19043`, :cve:`2019-19044`, :cve:`2019-19045`, :cve:`2019-19046`, :cve:`2019-19047`, :cve:`2019-19048`, :cve:`2019-19049`, :cve:`2019-19050`, :cve:`2019-19051`, :cve:`2019-19052`, :cve:`2019-19053`, :cve:`2019-19054`, :cve:`2019-19055`, :cve:`2019-19056`, :cve:`2019-19057`, :cve:`2019-19058`, :cve:`2019-19059`, :cve:`2019-19060`, :cve:`2019-19061`, :cve:`2019-19062`, :cve:`2019-19063`, :cve:`2019-19064`, :cve:`2019-19065`, :cve:`2019-19066`, :cve:`2019-19067`, :cve:`2019-19068`, :cve:`2019-19069`, :cve:`2019-19070`, :cve:`2019-19071`, :cve:`2019-19072`, :cve:`2019-19073`, :cve:`2019-19074`, :cve:`2019-19075`, :cve:`2019-19076`, :cve:`2019-19077`, :cve:`2019-19078`, :cve:`2019-19079`, :cve:`2019-19080`, :cve:`2019-19081`, :cve:`2019-19082`, :cve:`2019-19083`, :cve:`2019-19227`, :cve:`2019-19241`, :cve:`2019-19252`, :cve:`2019-19318`, :cve:`2019-19319`, :cve:`2019-19332`, :cve:`2019-19338`, :cve:`2019-19377`, :cve:`2019-19447`, :cve:`2019-19448`, :cve:`2019-19449`, :cve:`2019-19462`, :cve:`2019-19523`, :cve:`2019-19524`, :cve:`2019-19525`, :cve:`2019-19526`, :cve:`2019-19527`, :cve:`2019-19528`, :cve:`2019-19529`, :cve:`2019-19530`, :cve:`2019-19531`, :cve:`2019-19532`, :cve:`2019-19533`, :cve:`2019-19534`, :cve:`2019-19535`, :cve:`2019-19536`, :cve:`2019-19537`, :cve:`2019-19543`, :cve:`2019-19602`, :cve:`2019-19767`, :cve:`2019-19768`, :cve:`2019-19769`, :cve:`2019-19770`, :cve:`2019-19807`, :cve:`2019-19813`, :cve:`2019-19815`, :cve:`2019-19816`, :cve:`2019-19922`, :cve:`2019-19927`, :cve:`2019-19947`, :cve:`2019-19965`, :cve:`2019-19966`, :cve:`2019-1999`, :cve:`2019-20054`, :cve:`2019-20095`, :cve:`2019-20096`, :cve:`2019-2024`, :cve:`2019-2025`, :cve:`2019-20422`, :cve:`2019-2054`, :cve:`2019-20636`, :cve:`2019-20806`, :cve:`2019-20810`, :cve:`2019-20811`, :cve:`2019-20812`, :cve:`2019-20908`, :cve:`2019-20934`, :cve:`2019-2101`, :cve:`2019-2181`, :cve:`2019-2182`, :cve:`2019-2213`, :cve:`2019-2214`, :cve:`2019-2215`, :cve:`2019-25044`, :cve:`2019-25045`, :cve:`2019-3016`, :cve:`2019-3459`, :cve:`2019-3460`, :cve:`2019-3701`, :cve:`2019-3819`, :cve:`2019-3837`, :cve:`2019-3846`, :cve:`2019-3874`, :cve:`2019-3882`, :cve:`2019-3887`, :cve:`2019-3892`, :cve:`2019-3896`, :cve:`2019-3900`, :cve:`2019-3901`, :cve:`2019-5108`, :cve:`2019-6133`, :cve:`2019-6974`, :cve:`2019-7221`, :cve:`2019-7222`, :cve:`2019-7308`, :cve:`2019-8912`, :cve:`2019-8956`, :cve:`2019-8980`, :cve:`2019-9003`, :cve:`2019-9162`, :cve:`2019-9213`, :cve:`2019-9245`, :cve:`2019-9444`, :cve:`2019-9445`, :cve:`2019-9453`, :cve:`2019-9454`, :cve:`2019-9455`, :cve:`2019-9456`, :cve:`2019-9457`, :cve:`2019-9458`, :cve:`2019-9466`, :cve:`2019-9500`, :cve:`2019-9503`, :cve:`2019-9506`, :cve:`2019-9857`, :cve:`2020-0009`, :cve:`2020-0030`, :cve:`2020-0041`, :cve:`2020-0066`, :cve:`2020-0067`, :cve:`2020-0110`, :cve:`2020-0255`, :cve:`2020-0305`, :cve:`2020-0404`, :cve:`2020-0423`, :cve:`2020-0427`, :cve:`2020-0429`, :cve:`2020-0430`, :cve:`2020-0431`, :cve:`2020-0432`, :cve:`2020-0433`, :cve:`2020-0435`, :cve:`2020-0444`, :cve:`2020-0465`, :cve:`2020-0466`, :cve:`2020-0543`, :cve:`2020-10135`, :cve:`2020-10690`, :cve:`2020-10711`, :cve:`2020-10720`, :cve:`2020-10732`, :cve:`2020-10742`, :cve:`2020-10751`, :cve:`2020-10757`, :cve:`2020-10766`, :cve:`2020-10767`, :cve:`2020-10768`, :cve:`2020-10769`, :cve:`2020-10773`, :cve:`2020-10781`, :cve:`2020-10942`, :cve:`2020-11494`, :cve:`2020-11565`, :cve:`2020-11608`, :cve:`2020-11609`, :cve:`2020-11668`, :cve:`2020-11669`, :cve:`2020-11884`, :cve:`2020-12114`, :cve:`2020-12351`, :cve:`2020-12352`, :cve:`2020-12362`, :cve:`2020-12363`, :cve:`2020-12364`, :cve:`2020-12464`, :cve:`2020-12465`, :cve:`2020-12652`, :cve:`2020-12653`, :cve:`2020-12654`, :cve:`2020-12655`, :cve:`2020-12656`, :cve:`2020-12657`, :cve:`2020-12659`, :cve:`2020-12768`, :cve:`2020-12769`, :cve:`2020-12770`, :cve:`2020-12771`, :cve:`2020-12826`, :cve:`2020-12888`, :cve:`2020-12912`, :cve:`2020-13143`, :cve:`2020-13974`, :cve:`2020-14305`, :cve:`2020-14314`, :cve:`2020-14331`, :cve:`2020-14351`, :cve:`2020-14353`, :cve:`2020-14356`, :cve:`2020-14381`, :cve:`2020-14385`, :cve:`2020-14386`, :cve:`2020-14390`, :cve:`2020-14416`, :cve:`2020-15393`, :cve:`2020-15436`, :cve:`2020-15437`, :cve:`2020-15780`, :cve:`2020-15852`, :cve:`2020-16119`, :cve:`2020-16120`, :cve:`2020-16166`, :cve:`2020-1749`, :cve:`2020-24394`, :cve:`2020-24490`, :cve:`2020-24504`, :cve:`2020-24586`, :cve:`2020-24587`, :cve:`2020-24588`, :cve:`2020-25211`, :cve:`2020-25212`, :cve:`2020-25221`, :cve:`2020-25284`, :cve:`2020-25285`, :cve:`2020-25639`, :cve:`2020-25641`, :cve:`2020-25643`, :cve:`2020-25645`, :cve:`2020-25656`, :cve:`2020-25668`, :cve:`2020-25669`, :cve:`2020-25670`, :cve:`2020-25671`, :cve:`2020-25672`, :cve:`2020-25673`, :cve:`2020-25704`, :cve:`2020-25705`, :cve:`2020-26088`, :cve:`2020-26139`, :cve:`2020-26141`, :cve:`2020-26145`, :cve:`2020-26147`, :cve:`2020-26541`, :cve:`2020-26555`, :cve:`2020-26558`, :cve:`2020-27066`, :cve:`2020-27067`, :cve:`2020-27068`, :cve:`2020-27152`, :cve:`2020-27170`, :cve:`2020-27171`, :cve:`2020-27194`, :cve:`2020-2732`, :cve:`2020-27673`, :cve:`2020-27675`, :cve:`2020-27777`, :cve:`2020-27784`, :cve:`2020-27786`, :cve:`2020-27815`, :cve:`2020-27820`, :cve:`2020-27825`, :cve:`2020-27830`, :cve:`2020-27835`, :cve:`2020-28097`, :cve:`2020-28374`, :cve:`2020-28588`, :cve:`2020-28915`, :cve:`2020-28941`, :cve:`2020-28974`, :cve:`2020-29368`, :cve:`2020-29369`, :cve:`2020-29370`, :cve:`2020-29371`, :cve:`2020-29372`, :cve:`2020-29373`, :cve:`2020-29374`, :cve:`2020-29534`, :cve:`2020-29568`, :cve:`2020-29569`, :cve:`2020-29660`, :cve:`2020-29661`, :cve:`2020-35499`, :cve:`2020-35508`, :cve:`2020-35513`, :cve:`2020-35519`, :cve:`2020-36158`, :cve:`2020-36310`, :cve:`2020-36311`, :cve:`2020-36312`, :cve:`2020-36313`, :cve:`2020-36322`, :cve:`2020-36385`, :cve:`2020-36386`, :cve:`2020-36387`, :cve:`2020-36516`, :cve:`2020-36557`, :cve:`2020-36558`, :cve:`2020-36691`, :cve:`2020-36694`, :cve:`2020-36766`, :cve:`2020-3702`, :cve:`2020-4788`, :cve:`2020-7053`, :cve:`2020-8428`, :cve:`2020-8647`, :cve:`2020-8648`, :cve:`2020-8649`, :cve:`2020-8694`, :cve:`2020-8834`, :cve:`2020-8835`, :cve:`2020-8992`, :cve:`2020-9383`, :cve:`2020-9391`, :cve:`2021-0129`, :cve:`2021-0342`, :cve_mitre:`2021-0447`, :cve_mitre:`2021-0448`, :cve:`2021-0512`, :cve:`2021-0605`, :cve:`2021-0707`, :cve:`2021-0920`, :cve:`2021-0929`, :cve:`2021-0935`, :cve_mitre:`2021-0937`, :cve:`2021-0938`, :cve:`2021-0941`, :cve:`2021-1048`, :cve:`2021-20177`, :cve:`2021-20194`, :cve:`2021-20226`, :cve:`2021-20239`, :cve:`2021-20261`, :cve:`2021-20265`, :cve:`2021-20268`, :cve:`2021-20292`, :cve:`2021-20317`, :cve:`2021-20320`, :cve:`2021-20321`, :cve:`2021-20322`, :cve:`2021-21781`, :cve:`2021-22543`, :cve:`2021-22555`, :cve:`2021-22600`, :cve:`2021-23133`, :cve:`2021-23134`, :cve:`2021-26401`, :cve:`2021-26708`, :cve:`2021-26930`, :cve:`2021-26931`, :cve:`2021-26932`, :cve:`2021-27363`, :cve:`2021-27364`, :cve:`2021-27365`, :cve:`2021-28038`, :cve:`2021-28039`, :cve:`2021-28375`, :cve:`2021-28660`, :cve:`2021-28688`, :cve:`2021-28691`, :cve:`2021-28711`, :cve:`2021-28712`, :cve:`2021-28713`, :cve:`2021-28714`, :cve:`2021-28715`, :cve:`2021-28950`, :cve:`2021-28951`, :cve:`2021-28952`, :cve:`2021-28964`, :cve:`2021-28971`, :cve:`2021-28972`, :cve:`2021-29154`, :cve:`2021-29155`, :cve:`2021-29264`, :cve:`2021-29265`, :cve:`2021-29266`, :cve:`2021-29646`, :cve:`2021-29647`, :cve:`2021-29648`, :cve:`2021-29649`, :cve:`2021-29650`, :cve:`2021-29657`, :cve:`2021-30002`, :cve:`2021-30178`, :cve:`2021-31440`, :cve:`2021-3178`, :cve:`2021-31829`, :cve:`2021-31916`, :cve:`2021-32078`, :cve:`2021-32399`, :cve:`2021-32606`, :cve:`2021-33033`, :cve:`2021-33034`, :cve:`2021-33061`, :cve:`2021-33098`, :cve:`2021-33135`, :cve:`2021-33200`, :cve:`2021-3347`, :cve:`2021-3348`, :cve:`2021-33624`, :cve:`2021-33655`, :cve:`2021-33656`, :cve:`2021-33909`, :cve:`2021-3411`, :cve:`2021-3428`, :cve:`2021-3444`, :cve:`2021-34556`, :cve:`2021-34693`, :cve:`2021-3483`, :cve:`2021-34866`, :cve:`2021-3489`, :cve:`2021-3490`, :cve:`2021-3491`, :cve:`2021-3493`, :cve_mitre:`2021-34981`, :cve:`2021-3501`, :cve:`2021-35039`, :cve:`2021-3506`, :cve:`2021-3543`, :cve:`2021-35477`, :cve:`2021-3564`, :cve:`2021-3573`, :cve:`2021-3587`, :cve_mitre:`2021-3600`, :cve:`2021-3609`, :cve:`2021-3612`, :cve:`2021-3635`, :cve:`2021-3640`, :cve:`2021-3653`, :cve:`2021-3655`, :cve:`2021-3656`, :cve:`2021-3659`, :cve:`2021-3669`, :cve:`2021-3679`, :cve:`2021-3715`, :cve:`2021-37159`, :cve:`2021-3732`, :cve:`2021-3736`, :cve:`2021-3739`, :cve:`2021-3743`, :cve:`2021-3744`, :cve:`2021-3752`, :cve:`2021-3753`, :cve:`2021-37576`, :cve:`2021-3759`, :cve:`2021-3760`, :cve:`2021-3764`, :cve:`2021-3772`, :cve:`2021-38160`, :cve:`2021-38166`, :cve:`2021-38198`, :cve:`2021-38199`, :cve:`2021-38200`, :cve:`2021-38201`, :cve:`2021-38202`, :cve:`2021-38203`, :cve:`2021-38204`, :cve:`2021-38205`, :cve:`2021-38206`, :cve:`2021-38207`, :cve:`2021-38208`, :cve:`2021-38209`, :cve:`2021-38300`, :cve:`2021-3894`, :cve:`2021-3896`, :cve:`2021-3923`, :cve:`2021-39633`, :cve:`2021-39634`, :cve:`2021-39636`, :cve:`2021-39648`, :cve:`2021-39656`, :cve:`2021-39657`, :cve:`2021-39685`, :cve:`2021-39686`, :cve:`2021-39698`, :cve:`2021-39711`, :cve:`2021-39713`, :cve:`2021-39714`, :cve:`2021-4001`, :cve:`2021-4002`, :cve:`2021-4023`, :cve:`2021-4028`, :cve:`2021-4032`, :cve:`2021-4037`, :cve:`2021-40490`, :cve:`2021-4083`, :cve:`2021-4090`, :cve:`2021-4093`, :cve:`2021-4095`, :cve:`2021-41073`, :cve:`2021-4135`, :cve:`2021-4148`, :cve:`2021-4149`, :cve:`2021-4150`, :cve:`2021-4154`, :cve:`2021-4155`, :cve:`2021-4157`, :cve:`2021-4159`, :cve:`2021-41864`, :cve:`2021-4197`, :cve:`2021-42008`, :cve:`2021-4202`, :cve:`2021-4203`, :cve:`2021-4204`, :cve:`2021-4218`, :cve:`2021-42252`, :cve:`2021-42327`, :cve:`2021-42739`, :cve:`2021-43056`, :cve:`2021-43057`, :cve:`2021-43267`, :cve:`2021-43389`, :cve:`2021-43975`, :cve:`2021-43976`, :cve:`2021-44733`, :cve:`2021-44879`, :cve:`2021-45095`, :cve:`2021-45100`, :cve:`2021-45402`, :cve:`2021-45469`, :cve:`2021-45480`, :cve:`2021-45485`, :cve:`2021-45486`, :cve:`2021-45868`, :cve:`2021-46283`, :cve:`2022-0001`, :cve:`2022-0002`, :cve:`2022-0168`, :cve:`2022-0171`, :cve:`2022-0185`, :cve:`2022-0264`, :cve:`2022-0286`, :cve:`2022-0322`, :cve:`2022-0330`, :cve:`2022-0382`, :cve:`2022-0433`, :cve:`2022-0435`, :cve:`2022-0480`, :cve:`2022-0487`, :cve:`2022-0492`, :cve:`2022-0494`, :cve:`2022-0500`, :cve:`2022-0516`, :cve:`2022-0617`, :cve:`2022-0644`, :cve:`2022-0646`, :cve:`2022-0742`, :cve:`2022-0812`, :cve:`2022-0847`, :cve:`2022-0850`, :cve:`2022-0854`, :cve:`2022-0995`, :cve:`2022-0998`, :cve:`2022-1011`, :cve:`2022-1012`, :cve:`2022-1015`, :cve:`2022-1016`, :cve:`2022-1043`, :cve:`2022-1048`, :cve:`2022-1055`, :cve:`2022-1158`, :cve:`2022-1184`, :cve:`2022-1195`, :cve:`2022-1198`, :cve:`2022-1199`, :cve:`2022-1204`, :cve:`2022-1205`, :cve:`2022-1263`, :cve:`2022-1280`, :cve:`2022-1353`, :cve:`2022-1419`, :cve:`2022-1462`, :cve:`2022-1508`, :cve:`2022-1516`, :cve:`2022-1651`, :cve:`2022-1652`, :cve:`2022-1671`, :cve:`2022-1678`, :cve:`2022-1679`, :cve:`2022-1729`, :cve:`2022-1734`, :cve:`2022-1786`, :cve:`2022-1789`, :cve:`2022-1836`, :cve:`2022-1852`, :cve:`2022-1882`, :cve:`2022-1943`, :cve:`2022-1966`, :cve:`2022-1972`, :cve:`2022-1973`, :cve:`2022-1974`, :cve:`2022-1975`, :cve:`2022-1976`, :cve:`2022-1998`, :cve:`2022-20008`, :cve:`2022-20132`, :cve:`2022-20141`, :cve:`2022-20148`, :cve:`2022-20153`, :cve:`2022-20154`, :cve:`2022-20158`, :cve:`2022-20166`, :cve:`2022-20368`, :cve:`2022-20369`, :cve:`2022-20409`, :cve:`2022-20421`, :cve:`2022-20422`, :cve:`2022-20423`, :cve:`2022-20424`, :cve_mitre:`2022-20565`, :cve:`2022-20566`, :cve:`2022-20567`, :cve:`2022-20568`, :cve:`2022-20572`, :cve:`2022-2078`, :cve:`2022-21123`, :cve:`2022-21125`, :cve:`2022-21166`, :cve:`2022-21385`, :cve:`2022-21499`, :cve_mitre:`2022-21505`, :cve:`2022-2153`, :cve:`2022-2196`, :cve_mitre:`2022-22942`, :cve:`2022-23036`, :cve:`2022-23037`, :cve:`2022-23038`, :cve:`2022-23039`, :cve:`2022-23040`, :cve:`2022-23041`, :cve:`2022-23042`, :cve:`2022-2308`, :cve:`2022-2318`, :cve:`2022-23222`, :cve:`2022-2327`, :cve:`2022-2380`, :cve:`2022-23816`, :cve:`2022-23960`, :cve:`2022-24122`, :cve:`2022-24448`, :cve:`2022-24958`, :cve:`2022-24959`, :cve:`2022-2503`, :cve:`2022-25258`, :cve:`2022-25375`, :cve:`2022-25636`, :cve_mitre:`2022-2585`, :cve_mitre:`2022-2586`, :cve_mitre:`2022-2588`, :cve:`2022-2590`, :cve_mitre:`2022-2602`, :cve:`2022-26365`, :cve:`2022-26373`, :cve:`2022-2639`, :cve:`2022-26490`, :cve:`2022-2663`, :cve:`2022-26966`, :cve:`2022-27223`, :cve:`2022-27666`, :cve:`2022-27672`, :cve:`2022-2785`, :cve:`2022-27950`, :cve:`2022-28356`, :cve:`2022-28388`, :cve:`2022-28389`, :cve:`2022-28390`, :cve:`2022-2873`, :cve:`2022-28796`, :cve:`2022-28893`, :cve:`2022-2905`, :cve:`2022-29156`, :cve:`2022-2938`, :cve:`2022-29581`, :cve:`2022-29582`, :cve:`2022-2959`, :cve:`2022-2964`, :cve:`2022-2977`, :cve:`2022-2978`, :cve:`2022-29900`, :cve:`2022-29901`, :cve:`2022-2991`, :cve:`2022-29968`, :cve:`2022-3028`, :cve:`2022-30594`, :cve:`2022-3061`, :cve:`2022-3077`, :cve:`2022-3078`, :cve:`2022-3103`, :cve:`2022-3104`, :cve:`2022-3105`, :cve:`2022-3106`, :cve:`2022-3107`, :cve:`2022-3108`, :cve:`2022-3110`, :cve:`2022-3111`, :cve:`2022-3112`, :cve:`2022-3113`, :cve:`2022-3114`, :cve:`2022-3115`, :cve:`2022-3169`, :cve:`2022-3170`, :cve:`2022-3176`, :cve:`2022-3202`, :cve:`2022-32250`, :cve:`2022-32296`, :cve:`2022-3239`, :cve:`2022-32981`, :cve:`2022-3303`, :cve:`2022-3344`, :cve:`2022-33740`, :cve:`2022-33741`, :cve:`2022-33742`, :cve:`2022-33743`, :cve:`2022-33744`, :cve:`2022-33981`, :cve:`2022-3424`, :cve:`2022-3435`, :cve:`2022-34494`, :cve:`2022-34495`, :cve:`2022-34918`, :cve:`2022-3521`, :cve:`2022-3522`, :cve:`2022-3524`, :cve:`2022-3526`, :cve:`2022-3531`, :cve:`2022-3532`, :cve:`2022-3534`, :cve:`2022-3535`, :cve:`2022-3541`, :cve:`2022-3542`, :cve:`2022-3543`, :cve:`2022-3545`, :cve:`2022-3564`, :cve:`2022-3565`, :cve:`2022-3577`, :cve:`2022-3586`, :cve:`2022-3594`, :cve:`2022-3595`, :cve:`2022-36123`, :cve:`2022-3619`, :cve:`2022-3621`, :cve:`2022-3623`, :cve:`2022-3624`, :cve:`2022-3625`, :cve:`2022-3628`, :cve:`2022-36280`, :cve:`2022-3629`, :cve:`2022-3630`, :cve:`2022-3633`, :cve:`2022-3635`, :cve:`2022-3636`, :cve:`2022-3640`, :cve:`2022-3643`, :cve:`2022-3646`, :cve:`2022-3649`, :cve:`2022-36879`, :cve:`2022-36946`, :cve:`2022-3707`, :cve:`2022-38457`, :cve:`2022-3903`, :cve:`2022-3910`, :cve:`2022-39188`, :cve:`2022-39189`, :cve:`2022-39190`, :cve:`2022-3977`, :cve:`2022-39842`, :cve:`2022-40133`, :cve:`2022-40307`, :cve:`2022-40476`, :cve:`2022-40768`, :cve:`2022-4095`, :cve:`2022-40982`, :cve:`2022-41218`, :cve:`2022-41222`, :cve:`2022-4127`, :cve:`2022-4128`, :cve:`2022-4129`, :cve:`2022-4139`, :cve:`2022-41674`, :cve:`2022-41849`, :cve:`2022-41850`, :cve:`2022-41858`, :cve:`2022-42328`, :cve:`2022-42329`, :cve:`2022-42432`, :cve:`2022-4269`, :cve:`2022-42703`, :cve:`2022-42719`, :cve:`2022-42720`, :cve:`2022-42721`, :cve:`2022-42722`, :cve:`2022-42895`, :cve:`2022-42896`, :cve:`2022-43750`, :cve:`2022-4378`, :cve:`2022-4379`, :cve:`2022-4382`, :cve:`2022-43945`, :cve:`2022-45869`, :cve:`2022-45886`, :cve:`2022-45887`, :cve:`2022-45919`, :cve:`2022-45934`, :cve:`2022-4662`, :cve:`2022-4696`, :cve:`2022-4744`, :cve:`2022-47518`, :cve:`2022-47519`, :cve:`2022-47520`, :cve:`2022-47521`, :cve:`2022-47929`, :cve:`2022-47938`, :cve:`2022-47939`, :cve:`2022-47940`, :cve:`2022-47941`, :cve:`2022-47942`, :cve:`2022-47943`, :cve:`2022-47946`, :cve:`2022-4842`, :cve:`2022-48423`, :cve:`2022-48424`, :cve:`2022-48425`, :cve:`2022-48502`, :cve:`2023-0030`, :cve:`2023-0045`, :cve:`2023-0047`, :cve:`2023-0122`, :cve:`2023-0160`, :cve:`2023-0179`, :cve:`2023-0210`, :cve:`2023-0240`, :cve:`2023-0266`, :cve:`2023-0386`, :cve:`2023-0394`, :cve:`2023-0458`, :cve:`2023-0459`, :cve:`2023-0461`, :cve:`2023-0468`, :cve:`2023-0469`, :cve:`2023-0590`, :cve:`2023-0615`, :cve_mitre:`2023-1032`, :cve:`2023-1073`, :cve:`2023-1074`, :cve:`2023-1076`, :cve:`2023-1077`, :cve:`2023-1078`, :cve:`2023-1079`, :cve:`2023-1095`, :cve:`2023-1118`, :cve:`2023-1192`, :cve:`2023-1194`, :cve:`2023-1195`, :cve:`2023-1206`, :cve:`2023-1249`, :cve:`2023-1252`, :cve:`2023-1281`, :cve:`2023-1295`, :cve:`2023-1380`, :cve:`2023-1382`, :cve:`2023-1390`, :cve:`2023-1513`, :cve:`2023-1582`, :cve:`2023-1583`, :cve:`2023-1611`, :cve:`2023-1637`, :cve:`2023-1652`, :cve:`2023-1670`, :cve:`2023-1829`, :cve:`2023-1838`, :cve:`2023-1855`, :cve:`2023-1859`, :cve:`2023-1872`, :cve:`2023-1989`, :cve:`2023-1990`, :cve:`2023-1998`, :cve:`2023-2002`, :cve:`2023-2006`, :cve:`2023-2007`, :cve:`2023-2008`, :cve:`2023-2019`, :cve:`2023-20569`, :cve:`2023-20588`, :cve:`2023-20593`, :cve:`2023-20928`, :cve:`2023-20938`, :cve:`2023-21102`, :cve:`2023-21106`, :cve:`2023-2124`, :cve:`2023-21255`, :cve:`2023-2156`, :cve:`2023-2162`, :cve:`2023-2163`, :cve:`2023-2166`, :cve:`2023-2177`, :cve:`2023-2194`, :cve:`2023-2235`, :cve:`2023-2236`, :cve:`2023-2248`, :cve:`2023-2269`, :cve:`2023-22995`, :cve:`2023-22996`, :cve:`2023-22997`, :cve:`2023-22998`, :cve:`2023-22999`, :cve:`2023-23000`, :cve:`2023-23001`, :cve:`2023-23002`, :cve:`2023-23003`, :cve:`2023-23004`, :cve:`2023-23006`, :cve:`2023-23454`, :cve:`2023-23455`, :cve:`2023-23559`, :cve:`2023-23586`, :cve:`2023-2430`, :cve:`2023-2483`, :cve:`2023-25012`, :cve:`2023-2513`, :cve:`2023-25775`, :cve:`2023-2598`, :cve:`2023-26544`, :cve:`2023-26545`, :cve:`2023-26605`, :cve:`2023-26606`, :cve:`2023-26607`, :cve:`2023-28327`, :cve:`2023-28328`, :cve:`2023-28410`, :cve:`2023-28464`, :cve:`2023-28466`, :cve:`2023-2860`, :cve:`2023-28772`, :cve:`2023-28866`, :cve:`2023-2898`, :cve:`2023-2985`, :cve:`2023-3006`, :cve:`2023-30456`, :cve:`2023-30772`, :cve:`2023-3090`, :cve:`2023-3106`, :cve:`2023-3111`, :cve:`2023-3117`, :cve:`2023-31248`, :cve:`2023-3141`, :cve:`2023-31436`, :cve:`2023-3159`, :cve:`2023-3161`, :cve:`2023-3212`, :cve:`2023-3220`, :cve:`2023-32233`, :cve:`2023-32247`, :cve:`2023-32248`, :cve:`2023-32250`, :cve:`2023-32252`, :cve:`2023-32254`, :cve:`2023-32257`, :cve:`2023-32258`, :cve:`2023-32269`, :cve:`2023-3268`, :cve:`2023-3269`, :cve:`2023-3312`, :cve:`2023-3317`, :cve:`2023-33203`, :cve:`2023-33250`, :cve:`2023-33288`, :cve:`2023-3338`, :cve:`2023-3355`, :cve:`2023-3357`, :cve:`2023-3358`, :cve:`2023-3359`, :cve:`2023-3389`, :cve:`2023-3390`, :cve:`2023-33951`, :cve:`2023-33952`, :cve:`2023-34255`, :cve:`2023-34256`, :cve:`2023-34319`, :cve:`2023-3439`, :cve:`2023-35001`, :cve:`2023-3567`, :cve:`2023-35788`, :cve:`2023-35823`, :cve:`2023-35824`, :cve:`2023-35826`, :cve:`2023-35828`, :cve:`2023-35829`, :cve:`2023-3609`, :cve:`2023-3610`, :cve:`2023-3611`, :cve:`2023-37453`, :cve:`2023-3772`, :cve:`2023-3773`, :cve:`2023-3776`, :cve:`2023-3777`, :cve:`2023-3812`, :cve:`2023-38409`, :cve:`2023-38426`, :cve:`2023-38427`, :cve:`2023-38428`, :cve:`2023-38429`, :cve:`2023-38430`, :cve:`2023-38431`, :cve:`2023-38432`, :cve:`2023-3863`, :cve_mitre:`2023-3865`, :cve_mitre:`2023-3866`, :cve_mitre:`2023-3867`, :cve:`2023-4004`, :cve:`2023-4015`, :cve:`2023-40283`, :cve:`2023-4128`, :cve:`2023-4132`, :cve:`2023-4147`, :cve:`2023-4155`, :cve:`2023-4194`, :cve:`2023-4206`, :cve:`2023-4207`, :cve:`2023-4208`, :cve:`2023-4273`, :cve:`2023-42752`, :cve:`2023-42753`, :cve:`2023-4385`, :cve:`2023-4387`, :cve:`2023-4389`, :cve:`2023-4394`, :cve:`2023-4459`, :cve:`2023-4569`, :cve:`2023-4611` and :cve:`2023-4623` 30- linux-yocto/6.1 (Continued): Ignore :cve_nist:`2019-0136`, :cve_nist:`2019-0145`, :cve_nist:`2019-0146`, :cve_nist:`2019-0147`, :cve_nist:`2019-0148`, :cve_nist:`2019-0149`, :cve_nist:`2019-0154`, :cve_nist:`2019-0155`, :cve_nist:`2019-10124`, :cve_nist:`2019-10125`, :cve_nist:`2019-10126`, :cve_nist:`2019-10142`, :cve_nist:`2019-10207`, :cve_nist:`2019-10220`, :cve_nist:`2019-10638`, :cve_nist:`2019-10639`, :cve_nist:`2019-11085`, :cve_nist:`2019-11091`, :cve_nist:`2019-11135`, :cve_nist:`2019-11190`, :cve_nist:`2019-11191`, :cve_nist:`2019-1125`, :cve_nist:`2019-11477`, :cve_nist:`2019-11478`, :cve_nist:`2019-11479`, :cve_nist:`2019-11486`, :cve_nist:`2019-11487`, :cve_nist:`2019-11599`, :cve_nist:`2019-11683`, :cve_nist:`2019-11810`, :cve_nist:`2019-11811`, :cve_nist:`2019-11815`, :cve_nist:`2019-11833`, :cve_nist:`2019-11884`, :cve_nist:`2019-12378`, :cve_nist:`2019-12379`, :cve_nist:`2019-12380`, :cve_nist:`2019-12381`, :cve_nist:`2019-12382`, :cve_nist:`2019-12454`, :cve_nist:`2019-12455`, :cve_nist:`2019-12614`, :cve_nist:`2019-12615`, :cve_nist:`2019-12817`, :cve_nist:`2019-12818`, :cve_nist:`2019-12819`, :cve_nist:`2019-12881`, :cve_nist:`2019-12984`, :cve_nist:`2019-13233`, :cve_nist:`2019-13272`, :cve_nist:`2019-13631`, :cve_nist:`2019-13648`, :cve_nist:`2019-14283`, :cve_nist:`2019-14284`, :cve_nist:`2019-14615`, :cve_nist:`2019-14763`, :cve_nist:`2019-14814`, :cve_nist:`2019-14815`, :cve_nist:`2019-14816`, :cve_nist:`2019-14821`, :cve_nist:`2019-14835`, :cve_nist:`2019-14895`, :cve_nist:`2019-14896`, :cve_nist:`2019-14897`, :cve_nist:`2019-14901`, :cve_nist:`2019-15030`, :cve_nist:`2019-15031`, :cve_nist:`2019-15090`, :cve_nist:`2019-15098`, :cve_nist:`2019-15099`, :cve_nist:`2019-15117`, :cve_nist:`2019-15118`, :cve_nist:`2019-15211`, :cve_nist:`2019-15212`, :cve_nist:`2019-15213`, :cve_nist:`2019-15214`, :cve_nist:`2019-15215`, :cve_nist:`2019-15216`, :cve_nist:`2019-15217`, :cve_nist:`2019-15218`, :cve_nist:`2019-15219`, :cve_nist:`2019-15220`, :cve_nist:`2019-15221`, :cve_nist:`2019-15222`, :cve_nist:`2019-15223`, :cve_nist:`2019-15291`, :cve_nist:`2019-15292`, :cve_nist:`2019-15504`, :cve_nist:`2019-15505`, :cve_nist:`2019-15538`, :cve_nist:`2019-15666`, :cve_nist:`2019-15794`, :cve_nist:`2019-15807`, :cve_nist:`2019-15916`, :cve_nist:`2019-15917`, :cve_nist:`2019-15918`, :cve_nist:`2019-15919`, :cve_nist:`2019-15920`, :cve_nist:`2019-15921`, :cve_nist:`2019-15922`, :cve_nist:`2019-15923`, :cve_nist:`2019-15924`, :cve_nist:`2019-15925`, :cve_nist:`2019-15926`, :cve_nist:`2019-15927`, :cve_nist:`2019-16229`, :cve_nist:`2019-16230`, :cve_nist:`2019-16231`, :cve_nist:`2019-16232`, :cve_nist:`2019-16233`, :cve_nist:`2019-16234`, :cve_nist:`2019-16413`, :cve_nist:`2019-16714`, :cve_nist:`2019-16746`, :cve_nist:`2019-16921`, :cve_nist:`2019-16994`, :cve_nist:`2019-16995`, :cve_nist:`2019-17052`, :cve_nist:`2019-17053`, :cve_nist:`2019-17054`, :cve_nist:`2019-17055`, :cve_nist:`2019-17056`, :cve_nist:`2019-17075`, :cve_nist:`2019-17133`, :cve_nist:`2019-17351`, :cve_nist:`2019-17666`, :cve_nist:`2019-18198`, :cve_nist:`2019-18282`, :cve_nist:`2019-18660`, :cve_nist:`2019-18675`, :cve_nist:`2019-18683`, :cve_nist:`2019-18786`, :cve_nist:`2019-18805`, :cve_nist:`2019-18806`, :cve_nist:`2019-18807`, :cve_nist:`2019-18808`, :cve_nist:`2019-18809`, :cve_nist:`2019-18810`, :cve_nist:`2019-18811`, :cve_nist:`2019-18812`, :cve_nist:`2019-18813`, :cve_nist:`2019-18814`, :cve_nist:`2019-18885`, :cve_nist:`2019-19036`, :cve_nist:`2019-19037`, :cve_nist:`2019-19039`, :cve_nist:`2019-19043`, :cve_nist:`2019-19044`, :cve_nist:`2019-19045`, :cve_nist:`2019-19046`, :cve_nist:`2019-19047`, :cve_nist:`2019-19048`, :cve_nist:`2019-19049`, :cve_nist:`2019-19050`, :cve_nist:`2019-19051`, :cve_nist:`2019-19052`, :cve_nist:`2019-19053`, :cve_nist:`2019-19054`, :cve_nist:`2019-19055`, :cve_nist:`2019-19056`, :cve_nist:`2019-19057`, :cve_nist:`2019-19058`, :cve_nist:`2019-19059`, :cve_nist:`2019-19060`, :cve_nist:`2019-19061`, :cve_nist:`2019-19062`, :cve_nist:`2019-19063`, :cve_nist:`2019-19064`, :cve_nist:`2019-19065`, :cve_nist:`2019-19066`, :cve_nist:`2019-19067`, :cve_nist:`2019-19068`, :cve_nist:`2019-19069`, :cve_nist:`2019-19070`, :cve_nist:`2019-19071`, :cve_nist:`2019-19072`, :cve_nist:`2019-19073`, :cve_nist:`2019-19074`, :cve_nist:`2019-19075`, :cve_nist:`2019-19076`, :cve_nist:`2019-19077`, :cve_nist:`2019-19078`, :cve_nist:`2019-19079`, :cve_nist:`2019-19080`, :cve_nist:`2019-19081`, :cve_nist:`2019-19082`, :cve_nist:`2019-19083`, :cve_nist:`2019-19227`, :cve_nist:`2019-19241`, :cve_nist:`2019-19252`, :cve_nist:`2019-19318`, :cve_nist:`2019-19319`, :cve_nist:`2019-19332`, :cve_nist:`2019-19338`, :cve_nist:`2019-19377`, :cve_nist:`2019-19447`, :cve_nist:`2019-19448`, :cve_nist:`2019-19449`, :cve_nist:`2019-19462`, :cve_nist:`2019-19523`, :cve_nist:`2019-19524`, :cve_nist:`2019-19525`, :cve_nist:`2019-19526`, :cve_nist:`2019-19527`, :cve_nist:`2019-19528`, :cve_nist:`2019-19529`, :cve_nist:`2019-19530`, :cve_nist:`2019-19531`, :cve_nist:`2019-19532`, :cve_nist:`2019-19533`, :cve_nist:`2019-19534`, :cve_nist:`2019-19535`, :cve_nist:`2019-19536`, :cve_nist:`2019-19537`, :cve_nist:`2019-19543`, :cve_nist:`2019-19602`, :cve_nist:`2019-19767`, :cve_nist:`2019-19768`, :cve_nist:`2019-19769`, :cve_nist:`2019-19770`, :cve_nist:`2019-19807`, :cve_nist:`2019-19813`, :cve_nist:`2019-19815`, :cve_nist:`2019-19816`, :cve_nist:`2019-19922`, :cve_nist:`2019-19927`, :cve_nist:`2019-19947`, :cve_nist:`2019-19965`, :cve_nist:`2019-19966`, :cve_nist:`2019-1999`, :cve_nist:`2019-20054`, :cve_nist:`2019-20095`, :cve_nist:`2019-20096`, :cve_nist:`2019-2024`, :cve_nist:`2019-2025`, :cve_nist:`2019-20422`, :cve_nist:`2019-2054`, :cve_nist:`2019-20636`, :cve_nist:`2019-20806`, :cve_nist:`2019-20810`, :cve_nist:`2019-20811`, :cve_nist:`2019-20812`, :cve_nist:`2019-20908`, :cve_nist:`2019-20934`, :cve_nist:`2019-2101`, :cve_nist:`2019-2181`, :cve_nist:`2019-2182`, :cve_nist:`2019-2213`, :cve_nist:`2019-2214`, :cve_nist:`2019-2215`, :cve_nist:`2019-25044`, :cve_nist:`2019-25045`, :cve_nist:`2019-3016`, :cve_nist:`2019-3459`, :cve_nist:`2019-3460`, :cve_nist:`2019-3701`, :cve_nist:`2019-3819`, :cve_nist:`2019-3837`, :cve_nist:`2019-3846`, :cve_nist:`2019-3874`, :cve_nist:`2019-3882`, :cve_nist:`2019-3887`, :cve_nist:`2019-3892`, :cve_nist:`2019-3896`, :cve_nist:`2019-3900`, :cve_nist:`2019-3901`, :cve_nist:`2019-5108`, :cve_nist:`2019-6133`, :cve_nist:`2019-6974`, :cve_nist:`2019-7221`, :cve_nist:`2019-7222`, :cve_nist:`2019-7308`, :cve_nist:`2019-8912`, :cve_nist:`2019-8956`, :cve_nist:`2019-8980`, :cve_nist:`2019-9003`, :cve_nist:`2019-9162`, :cve_nist:`2019-9213`, :cve_nist:`2019-9245`, :cve_nist:`2019-9444`, :cve_nist:`2019-9445`, :cve_nist:`2019-9453`, :cve_nist:`2019-9454`, :cve_nist:`2019-9455`, :cve_nist:`2019-9456`, :cve_nist:`2019-9457`, :cve_nist:`2019-9458`, :cve_nist:`2019-9466`, :cve_nist:`2019-9500`, :cve_nist:`2019-9503`, :cve_nist:`2019-9506`, :cve_nist:`2019-9857`, :cve_nist:`2020-0009`, :cve_nist:`2020-0030`, :cve_nist:`2020-0041`, :cve_nist:`2020-0066`, :cve_nist:`2020-0067`, :cve_nist:`2020-0110`, :cve_nist:`2020-0255`, :cve_nist:`2020-0305`, :cve_nist:`2020-0404`, :cve_nist:`2020-0423`, :cve_nist:`2020-0427`, :cve_nist:`2020-0429`, :cve_nist:`2020-0430`, :cve_nist:`2020-0431`, :cve_nist:`2020-0432`, :cve_nist:`2020-0433`, :cve_nist:`2020-0435`, :cve_nist:`2020-0444`, :cve_nist:`2020-0465`, :cve_nist:`2020-0466`, :cve_nist:`2020-0543`, :cve_nist:`2020-10135`, :cve_nist:`2020-10690`, :cve_nist:`2020-10711`, :cve_nist:`2020-10720`, :cve_nist:`2020-10732`, :cve_nist:`2020-10742`, :cve_nist:`2020-10751`, :cve_nist:`2020-10757`, :cve_nist:`2020-10766`, :cve_nist:`2020-10767`, :cve_nist:`2020-10768`, :cve_nist:`2020-10769`, :cve_nist:`2020-10773`, :cve_nist:`2020-10781`, :cve_nist:`2020-10942`, :cve_nist:`2020-11494`, :cve_nist:`2020-11565`, :cve_nist:`2020-11608`, :cve_nist:`2020-11609`, :cve_nist:`2020-11668`, :cve_nist:`2020-11669`, :cve_nist:`2020-11884`, :cve_nist:`2020-12114`, :cve_nist:`2020-12351`, :cve_nist:`2020-12352`, :cve_nist:`2020-12362`, :cve_nist:`2020-12363`, :cve_nist:`2020-12364`, :cve_nist:`2020-12464`, :cve_nist:`2020-12465`, :cve_nist:`2020-12652`, :cve_nist:`2020-12653`, :cve_nist:`2020-12654`, :cve_nist:`2020-12655`, :cve_nist:`2020-12656`, :cve_nist:`2020-12657`, :cve_nist:`2020-12659`, :cve_nist:`2020-12768`, :cve_nist:`2020-12769`, :cve_nist:`2020-12770`, :cve_nist:`2020-12771`, :cve_nist:`2020-12826`, :cve_nist:`2020-12888`, :cve_nist:`2020-12912`, :cve_nist:`2020-13143`, :cve_nist:`2020-13974`, :cve_nist:`2020-14305`, :cve_nist:`2020-14314`, :cve_nist:`2020-14331`, :cve_nist:`2020-14351`, :cve_nist:`2020-14353`, :cve_nist:`2020-14356`, :cve_nist:`2020-14381`, :cve_nist:`2020-14385`, :cve_nist:`2020-14386`, :cve_nist:`2020-14390`, :cve_nist:`2020-14416`, :cve_nist:`2020-15393`, :cve_nist:`2020-15436`, :cve_nist:`2020-15437`, :cve_nist:`2020-15780`, :cve_nist:`2020-15852`, :cve_nist:`2020-16119`, :cve_nist:`2020-16120`, :cve_nist:`2020-16166`, :cve_nist:`2020-1749`, :cve_nist:`2020-24394`, :cve_nist:`2020-24490`, :cve_nist:`2020-24504`, :cve_nist:`2020-24586`, :cve_nist:`2020-24587`, :cve_nist:`2020-24588`, :cve_nist:`2020-25211`, :cve_nist:`2020-25212`, :cve_nist:`2020-25221`, :cve_nist:`2020-25284`, :cve_nist:`2020-25285`, :cve_nist:`2020-25639`, :cve_nist:`2020-25641`, :cve_nist:`2020-25643`, :cve_nist:`2020-25645`, :cve_nist:`2020-25656`, :cve_nist:`2020-25668`, :cve_nist:`2020-25669`, :cve_nist:`2020-25670`, :cve_nist:`2020-25671`, :cve_nist:`2020-25672`, :cve_nist:`2020-25673`, :cve_nist:`2020-25704`, :cve_nist:`2020-25705`, :cve_nist:`2020-26088`, :cve_nist:`2020-26139`, :cve_nist:`2020-26141`, :cve_nist:`2020-26145`, :cve_nist:`2020-26147`, :cve_nist:`2020-26541`, :cve_nist:`2020-26555`, :cve_nist:`2020-26558`, :cve_nist:`2020-27066`, :cve_nist:`2020-27067`, :cve_nist:`2020-27068`, :cve_nist:`2020-27152`, :cve_nist:`2020-27170`, :cve_nist:`2020-27171`, :cve_nist:`2020-27194`, :cve_nist:`2020-2732`, :cve_nist:`2020-27673`, :cve_nist:`2020-27675`, :cve_nist:`2020-27777`, :cve_nist:`2020-27784`, :cve_nist:`2020-27786`, :cve_nist:`2020-27815`, :cve_nist:`2020-27820`, :cve_nist:`2020-27825`, :cve_nist:`2020-27830`, :cve_nist:`2020-27835`, :cve_nist:`2020-28097`, :cve_nist:`2020-28374`, :cve_nist:`2020-28588`, :cve_nist:`2020-28915`, :cve_nist:`2020-28941`, :cve_nist:`2020-28974`, :cve_nist:`2020-29368`, :cve_nist:`2020-29369`, :cve_nist:`2020-29370`, :cve_nist:`2020-29371`, :cve_nist:`2020-29372`, :cve_nist:`2020-29373`, :cve_nist:`2020-29374`, :cve_nist:`2020-29534`, :cve_nist:`2020-29568`, :cve_nist:`2020-29569`, :cve_nist:`2020-29660`, :cve_nist:`2020-29661`, :cve_nist:`2020-35499`, :cve_nist:`2020-35508`, :cve_nist:`2020-35513`, :cve_nist:`2020-35519`, :cve_nist:`2020-36158`, :cve_nist:`2020-36310`, :cve_nist:`2020-36311`, :cve_nist:`2020-36312`, :cve_nist:`2020-36313`, :cve_nist:`2020-36322`, :cve_nist:`2020-36385`, :cve_nist:`2020-36386`, :cve_nist:`2020-36387`, :cve_nist:`2020-36516`, :cve_nist:`2020-36557`, :cve_nist:`2020-36558`, :cve_nist:`2020-36691`, :cve_nist:`2020-36694`, :cve_nist:`2020-36766`, :cve_nist:`2020-3702`, :cve_nist:`2020-4788`, :cve_nist:`2020-7053`, :cve_nist:`2020-8428`, :cve_nist:`2020-8647`, :cve_nist:`2020-8648`, :cve_nist:`2020-8649`, :cve_nist:`2020-8694`, :cve_nist:`2020-8834`, :cve_nist:`2020-8835`, :cve_nist:`2020-8992`, :cve_nist:`2020-9383`, :cve_nist:`2020-9391`, :cve_nist:`2021-0129`, :cve_nist:`2021-0342`, :cve_mitre:`2021-0447`, :cve_mitre:`2021-0448`, :cve_nist:`2021-0512`, :cve_nist:`2021-0605`, :cve_nist:`2021-0707`, :cve_nist:`2021-0920`, :cve_nist:`2021-0929`, :cve_nist:`2021-0935`, :cve_mitre:`2021-0937`, :cve_nist:`2021-0938`, :cve_nist:`2021-0941`, :cve_nist:`2021-1048`, :cve_nist:`2021-20177`, :cve_nist:`2021-20194`, :cve_nist:`2021-20226`, :cve_nist:`2021-20239`, :cve_nist:`2021-20261`, :cve_nist:`2021-20265`, :cve_nist:`2021-20268`, :cve_nist:`2021-20292`, :cve_nist:`2021-20317`, :cve_nist:`2021-20320`, :cve_nist:`2021-20321`, :cve_nist:`2021-20322`, :cve_nist:`2021-21781`, :cve_nist:`2021-22543`, :cve_nist:`2021-22555`, :cve_nist:`2021-22600`, :cve_nist:`2021-23133`, :cve_nist:`2021-23134`, :cve_nist:`2021-26401`, :cve_nist:`2021-26708`, :cve_nist:`2021-26930`, :cve_nist:`2021-26931`, :cve_nist:`2021-26932`, :cve_nist:`2021-27363`, :cve_nist:`2021-27364`, :cve_nist:`2021-27365`, :cve_nist:`2021-28038`, :cve_nist:`2021-28039`, :cve_nist:`2021-28375`, :cve_nist:`2021-28660`, :cve_nist:`2021-28688`, :cve_nist:`2021-28691`, :cve_nist:`2021-28711`, :cve_nist:`2021-28712`, :cve_nist:`2021-28713`, :cve_nist:`2021-28714`, :cve_nist:`2021-28715`, :cve_nist:`2021-28950`, :cve_nist:`2021-28951`, :cve_nist:`2021-28952`, :cve_nist:`2021-28964`, :cve_nist:`2021-28971`, :cve_nist:`2021-28972`, :cve_nist:`2021-29154`, :cve_nist:`2021-29155`, :cve_nist:`2021-29264`, :cve_nist:`2021-29265`, :cve_nist:`2021-29266`, :cve_nist:`2021-29646`, :cve_nist:`2021-29647`, :cve_nist:`2021-29648`, :cve_nist:`2021-29649`, :cve_nist:`2021-29650`, :cve_nist:`2021-29657`, :cve_nist:`2021-30002`, :cve_nist:`2021-30178`, :cve_nist:`2021-31440`, :cve_nist:`2021-3178`, :cve_nist:`2021-31829`, :cve_nist:`2021-31916`, :cve_nist:`2021-32078`, :cve_nist:`2021-32399`, :cve_nist:`2021-32606`, :cve_nist:`2021-33033`, :cve_nist:`2021-33034`, :cve_nist:`2021-33061`, :cve_nist:`2021-33098`, :cve_nist:`2021-33135`, :cve_nist:`2021-33200`, :cve_nist:`2021-3347`, :cve_nist:`2021-3348`, :cve_nist:`2021-33624`, :cve_nist:`2021-33655`, :cve_nist:`2021-33656`, :cve_nist:`2021-33909`, :cve_nist:`2021-3411`, :cve_nist:`2021-3428`, :cve_nist:`2021-3444`, :cve_nist:`2021-34556`, :cve_nist:`2021-34693`, :cve_nist:`2021-3483`, :cve_nist:`2021-34866`, :cve_nist:`2021-3489`, :cve_nist:`2021-3490`, :cve_nist:`2021-3491`, :cve_nist:`2021-3493`, :cve_mitre:`2021-34981`, :cve_nist:`2021-3501`, :cve_nist:`2021-35039`, :cve_nist:`2021-3506`, :cve_nist:`2021-3543`, :cve_nist:`2021-35477`, :cve_nist:`2021-3564`, :cve_nist:`2021-3573`, :cve_nist:`2021-3587`, :cve_mitre:`2021-3600`, :cve_nist:`2021-3609`, :cve_nist:`2021-3612`, :cve_nist:`2021-3635`, :cve_nist:`2021-3640`, :cve_nist:`2021-3653`, :cve_nist:`2021-3655`, :cve_nist:`2021-3656`, :cve_nist:`2021-3659`, :cve_nist:`2021-3669`, :cve_nist:`2021-3679`, :cve_nist:`2021-3715`, :cve_nist:`2021-37159`, :cve_nist:`2021-3732`, :cve_nist:`2021-3736`, :cve_nist:`2021-3739`, :cve_nist:`2021-3743`, :cve_nist:`2021-3744`, :cve_nist:`2021-3752`, :cve_nist:`2021-3753`, :cve_nist:`2021-37576`, :cve_nist:`2021-3759`, :cve_nist:`2021-3760`, :cve_nist:`2021-3764`, :cve_nist:`2021-3772`, :cve_nist:`2021-38160`, :cve_nist:`2021-38166`, :cve_nist:`2021-38198`, :cve_nist:`2021-38199`, :cve_nist:`2021-38200`, :cve_nist:`2021-38201`, :cve_nist:`2021-38202`, :cve_nist:`2021-38203`, :cve_nist:`2021-38204`, :cve_nist:`2021-38205`, :cve_nist:`2021-38206`, :cve_nist:`2021-38207`, :cve_nist:`2021-38208`, :cve_nist:`2021-38209`, :cve_nist:`2021-38300`, :cve_nist:`2021-3894`, :cve_nist:`2021-3896`, :cve_nist:`2021-3923`, :cve_nist:`2021-39633`, :cve_nist:`2021-39634`, :cve_nist:`2021-39636`, :cve_nist:`2021-39648`, :cve_nist:`2021-39656`, :cve_nist:`2021-39657`, :cve_nist:`2021-39685`, :cve_nist:`2021-39686`, :cve_nist:`2021-39698`, :cve_nist:`2021-39711`, :cve_nist:`2021-39713`, :cve_nist:`2021-39714`, :cve_nist:`2021-4001`, :cve_nist:`2021-4002`, :cve_nist:`2021-4023`, :cve_nist:`2021-4028`, :cve_nist:`2021-4032`, :cve_nist:`2021-4037`, :cve_nist:`2021-40490`, :cve_nist:`2021-4083`, :cve_nist:`2021-4090`, :cve_nist:`2021-4093`, :cve_nist:`2021-4095`, :cve_nist:`2021-41073`, :cve_nist:`2021-4135`, :cve_nist:`2021-4148`, :cve_nist:`2021-4149`, :cve_nist:`2021-4150`, :cve_nist:`2021-4154`, :cve_nist:`2021-4155`, :cve_nist:`2021-4157`, :cve_nist:`2021-4159`, :cve_nist:`2021-41864`, :cve_nist:`2021-4197`, :cve_nist:`2021-42008`, :cve_nist:`2021-4202`, :cve_nist:`2021-4203`, :cve_nist:`2021-4204`, :cve_nist:`2021-4218`, :cve_nist:`2021-42252`, :cve_nist:`2021-42327`, :cve_nist:`2021-42739`, :cve_nist:`2021-43056`, :cve_nist:`2021-43057`, :cve_nist:`2021-43267`, :cve_nist:`2021-43389`, :cve_nist:`2021-43975`, :cve_nist:`2021-43976`, :cve_nist:`2021-44733`, :cve_nist:`2021-44879`, :cve_nist:`2021-45095`, :cve_nist:`2021-45100`, :cve_nist:`2021-45402`, :cve_nist:`2021-45469`, :cve_nist:`2021-45480`, :cve_nist:`2021-45485`, :cve_nist:`2021-45486`, :cve_nist:`2021-45868`, :cve_nist:`2021-46283`, :cve_nist:`2022-0001`, :cve_nist:`2022-0002`, :cve_nist:`2022-0168`, :cve_nist:`2022-0171`, :cve_nist:`2022-0185`, :cve_nist:`2022-0264`, :cve_nist:`2022-0286`, :cve_nist:`2022-0322`, :cve_nist:`2022-0330`, :cve_nist:`2022-0382`, :cve_nist:`2022-0433`, :cve_nist:`2022-0435`, :cve_nist:`2022-0480`, :cve_nist:`2022-0487`, :cve_nist:`2022-0492`, :cve_nist:`2022-0494`, :cve_nist:`2022-0500`, :cve_nist:`2022-0516`, :cve_nist:`2022-0617`, :cve_nist:`2022-0644`, :cve_nist:`2022-0646`, :cve_nist:`2022-0742`, :cve_nist:`2022-0812`, :cve_nist:`2022-0847`, :cve_nist:`2022-0850`, :cve_nist:`2022-0854`, :cve_nist:`2022-0995`, :cve_nist:`2022-0998`, :cve_nist:`2022-1011`, :cve_nist:`2022-1012`, :cve_nist:`2022-1015`, :cve_nist:`2022-1016`, :cve_nist:`2022-1043`, :cve_nist:`2022-1048`, :cve_nist:`2022-1055`, :cve_nist:`2022-1158`, :cve_nist:`2022-1184`, :cve_nist:`2022-1195`, :cve_nist:`2022-1198`, :cve_nist:`2022-1199`, :cve_nist:`2022-1204`, :cve_nist:`2022-1205`, :cve_nist:`2022-1263`, :cve_nist:`2022-1280`, :cve_nist:`2022-1353`, :cve_nist:`2022-1419`, :cve_nist:`2022-1462`, :cve_nist:`2022-1508`, :cve_nist:`2022-1516`, :cve_nist:`2022-1651`, :cve_nist:`2022-1652`, :cve_nist:`2022-1671`, :cve_nist:`2022-1678`, :cve_nist:`2022-1679`, :cve_nist:`2022-1729`, :cve_nist:`2022-1734`, :cve_nist:`2022-1786`, :cve_nist:`2022-1789`, :cve_nist:`2022-1836`, :cve_nist:`2022-1852`, :cve_nist:`2022-1882`, :cve_nist:`2022-1943`, :cve_nist:`2022-1966`, :cve_nist:`2022-1972`, :cve_nist:`2022-1973`, :cve_nist:`2022-1974`, :cve_nist:`2022-1975`, :cve_nist:`2022-1976`, :cve_nist:`2022-1998`, :cve_nist:`2022-20008`, :cve_nist:`2022-20132`, :cve_nist:`2022-20141`, :cve_nist:`2022-20148`, :cve_nist:`2022-20153`, :cve_nist:`2022-20154`, :cve_nist:`2022-20158`, :cve_nist:`2022-20166`, :cve_nist:`2022-20368`, :cve_nist:`2022-20369`, :cve_nist:`2022-20409`, :cve_nist:`2022-20421`, :cve_nist:`2022-20422`, :cve_nist:`2022-20423`, :cve_nist:`2022-20424`, :cve_mitre:`2022-20565`, :cve_nist:`2022-20566`, :cve_nist:`2022-20567`, :cve_nist:`2022-20568`, :cve_nist:`2022-20572`, :cve_nist:`2022-2078`, :cve_nist:`2022-21123`, :cve_nist:`2022-21125`, :cve_nist:`2022-21166`, :cve_nist:`2022-21385`, :cve_nist:`2022-21499`, :cve_mitre:`2022-21505`, :cve_nist:`2022-2153`, :cve_nist:`2022-2196`, :cve_mitre:`2022-22942`, :cve_nist:`2022-23036`, :cve_nist:`2022-23037`, :cve_nist:`2022-23038`, :cve_nist:`2022-23039`, :cve_nist:`2022-23040`, :cve_nist:`2022-23041`, :cve_nist:`2022-23042`, :cve_nist:`2022-2308`, :cve_nist:`2022-2318`, :cve_nist:`2022-23222`, :cve_nist:`2022-2327`, :cve_nist:`2022-2380`, :cve_nist:`2022-23816`, :cve_nist:`2022-23960`, :cve_nist:`2022-24122`, :cve_nist:`2022-24448`, :cve_nist:`2022-24958`, :cve_nist:`2022-24959`, :cve_nist:`2022-2503`, :cve_nist:`2022-25258`, :cve_nist:`2022-25375`, :cve_nist:`2022-25636`, :cve_mitre:`2022-2585`, :cve_mitre:`2022-2586`, :cve_mitre:`2022-2588`, :cve_nist:`2022-2590`, :cve_mitre:`2022-2602`, :cve_nist:`2022-26365`, :cve_nist:`2022-26373`, :cve_nist:`2022-2639`, :cve_nist:`2022-26490`, :cve_nist:`2022-2663`, :cve_nist:`2022-26966`, :cve_nist:`2022-27223`, :cve_nist:`2022-27666`, :cve_nist:`2022-27672`, :cve_nist:`2022-2785`, :cve_nist:`2022-27950`, :cve_nist:`2022-28356`, :cve_nist:`2022-28388`, :cve_nist:`2022-28389`, :cve_nist:`2022-28390`, :cve_nist:`2022-2873`, :cve_nist:`2022-28796`, :cve_nist:`2022-28893`, :cve_nist:`2022-2905`, :cve_nist:`2022-29156`, :cve_nist:`2022-2938`, :cve_nist:`2022-29581`, :cve_nist:`2022-29582`, :cve_nist:`2022-2959`, :cve_nist:`2022-2964`, :cve_nist:`2022-2977`, :cve_nist:`2022-2978`, :cve_nist:`2022-29900`, :cve_nist:`2022-29901`, :cve_nist:`2022-2991`, :cve_nist:`2022-29968`, :cve_nist:`2022-3028`, :cve_nist:`2022-30594`, :cve_nist:`2022-3061`, :cve_nist:`2022-3077`, :cve_nist:`2022-3078`, :cve_nist:`2022-3103`, :cve_nist:`2022-3104`, :cve_nist:`2022-3105`, :cve_nist:`2022-3106`, :cve_nist:`2022-3107`, :cve_nist:`2022-3108`, :cve_nist:`2022-3110`, :cve_nist:`2022-3111`, :cve_nist:`2022-3112`, :cve_nist:`2022-3113`, :cve_nist:`2022-3114`, :cve_nist:`2022-3115`, :cve_nist:`2022-3169`, :cve_nist:`2022-3170`, :cve_nist:`2022-3176`, :cve_nist:`2022-3202`, :cve_nist:`2022-32250`, :cve_nist:`2022-32296`, :cve_nist:`2022-3239`, :cve_nist:`2022-32981`, :cve_nist:`2022-3303`, :cve_nist:`2022-3344`, :cve_nist:`2022-33740`, :cve_nist:`2022-33741`, :cve_nist:`2022-33742`, :cve_nist:`2022-33743`, :cve_nist:`2022-33744`, :cve_nist:`2022-33981`, :cve_nist:`2022-3424`, :cve_nist:`2022-3435`, :cve_nist:`2022-34494`, :cve_nist:`2022-34495`, :cve_nist:`2022-34918`, :cve_nist:`2022-3521`, :cve_nist:`2022-3522`, :cve_nist:`2022-3524`, :cve_nist:`2022-3526`, :cve_nist:`2022-3531`, :cve_nist:`2022-3532`, :cve_nist:`2022-3534`, :cve_nist:`2022-3535`, :cve_nist:`2022-3541`, :cve_nist:`2022-3542`, :cve_nist:`2022-3543`, :cve_nist:`2022-3545`, :cve_nist:`2022-3564`, :cve_nist:`2022-3565`, :cve_nist:`2022-3577`, :cve_nist:`2022-3586`, :cve_nist:`2022-3594`, :cve_nist:`2022-3595`, :cve_nist:`2022-36123`, :cve_nist:`2022-3619`, :cve_nist:`2022-3621`, :cve_nist:`2022-3623`, :cve_nist:`2022-3624`, :cve_nist:`2022-3625`, :cve_nist:`2022-3628`, :cve_nist:`2022-36280`, :cve_nist:`2022-3629`, :cve_nist:`2022-3630`, :cve_nist:`2022-3633`, :cve_nist:`2022-3635`, :cve_nist:`2022-3636`, :cve_nist:`2022-3640`, :cve_nist:`2022-3643`, :cve_nist:`2022-3646`, :cve_nist:`2022-3649`, :cve_nist:`2022-36879`, :cve_nist:`2022-36946`, :cve_nist:`2022-3707`, :cve_nist:`2022-38457`, :cve_nist:`2022-3903`, :cve_nist:`2022-3910`, :cve_nist:`2022-39188`, :cve_nist:`2022-39189`, :cve_nist:`2022-39190`, :cve_nist:`2022-3977`, :cve_nist:`2022-39842`, :cve_nist:`2022-40133`, :cve_nist:`2022-40307`, :cve_nist:`2022-40476`, :cve_nist:`2022-40768`, :cve_nist:`2022-4095`, :cve_nist:`2022-40982`, :cve_nist:`2022-41218`, :cve_nist:`2022-41222`, :cve_nist:`2022-4127`, :cve_nist:`2022-4128`, :cve_nist:`2022-4129`, :cve_nist:`2022-4139`, :cve_nist:`2022-41674`, :cve_nist:`2022-41849`, :cve_nist:`2022-41850`, :cve_nist:`2022-41858`, :cve_nist:`2022-42328`, :cve_nist:`2022-42329`, :cve_nist:`2022-42432`, :cve_nist:`2022-4269`, :cve_nist:`2022-42703`, :cve_nist:`2022-42719`, :cve_nist:`2022-42720`, :cve_nist:`2022-42721`, :cve_nist:`2022-42722`, :cve_nist:`2022-42895`, :cve_nist:`2022-42896`, :cve_nist:`2022-43750`, :cve_nist:`2022-4378`, :cve_nist:`2022-4379`, :cve_nist:`2022-4382`, :cve_nist:`2022-43945`, :cve_nist:`2022-45869`, :cve_nist:`2022-45886`, :cve_nist:`2022-45887`, :cve_nist:`2022-45919`, :cve_nist:`2022-45934`, :cve_nist:`2022-4662`, :cve_nist:`2022-4696`, :cve_nist:`2022-4744`, :cve_nist:`2022-47518`, :cve_nist:`2022-47519`, :cve_nist:`2022-47520`, :cve_nist:`2022-47521`, :cve_nist:`2022-47929`, :cve_nist:`2022-47938`, :cve_nist:`2022-47939`, :cve_nist:`2022-47940`, :cve_nist:`2022-47941`, :cve_nist:`2022-47942`, :cve_nist:`2022-47943`, :cve_nist:`2022-47946`, :cve_nist:`2022-4842`, :cve_nist:`2022-48423`, :cve_nist:`2022-48424`, :cve_nist:`2022-48425`, :cve_nist:`2022-48502`, :cve_nist:`2023-0030`, :cve_nist:`2023-0045`, :cve_nist:`2023-0047`, :cve_nist:`2023-0122`, :cve_nist:`2023-0160`, :cve_nist:`2023-0179`, :cve_nist:`2023-0210`, :cve_nist:`2023-0240`, :cve_nist:`2023-0266`, :cve_nist:`2023-0386`, :cve_nist:`2023-0394`, :cve_nist:`2023-0458`, :cve_nist:`2023-0459`, :cve_nist:`2023-0461`, :cve_nist:`2023-0468`, :cve_nist:`2023-0469`, :cve_nist:`2023-0590`, :cve_nist:`2023-0615`, :cve_mitre:`2023-1032`, :cve_nist:`2023-1073`, :cve_nist:`2023-1074`, :cve_nist:`2023-1076`, :cve_nist:`2023-1077`, :cve_nist:`2023-1078`, :cve_nist:`2023-1079`, :cve_nist:`2023-1095`, :cve_nist:`2023-1118`, :cve_nist:`2023-1192`, :cve_nist:`2023-1194`, :cve_nist:`2023-1195`, :cve_nist:`2023-1206`, :cve_nist:`2023-1249`, :cve_nist:`2023-1252`, :cve_nist:`2023-1281`, :cve_nist:`2023-1295`, :cve_nist:`2023-1380`, :cve_nist:`2023-1382`, :cve_nist:`2023-1390`, :cve_nist:`2023-1513`, :cve_nist:`2023-1582`, :cve_nist:`2023-1583`, :cve_nist:`2023-1611`, :cve_nist:`2023-1637`, :cve_nist:`2023-1652`, :cve_nist:`2023-1670`, :cve_nist:`2023-1829`, :cve_nist:`2023-1838`, :cve_nist:`2023-1855`, :cve_nist:`2023-1859`, :cve_nist:`2023-1872`, :cve_nist:`2023-1989`, :cve_nist:`2023-1990`, :cve_nist:`2023-1998`, :cve_nist:`2023-2002`, :cve_nist:`2023-2006`, :cve_nist:`2023-2007`, :cve_nist:`2023-2008`, :cve_nist:`2023-2019`, :cve_nist:`2023-20569`, :cve_nist:`2023-20588`, :cve_nist:`2023-20593`, :cve_nist:`2023-20928`, :cve_nist:`2023-20938`, :cve_nist:`2023-21102`, :cve_nist:`2023-21106`, :cve_nist:`2023-2124`, :cve_nist:`2023-21255`, :cve_nist:`2023-2156`, :cve_nist:`2023-2162`, :cve_nist:`2023-2163`, :cve_nist:`2023-2166`, :cve_nist:`2023-2177`, :cve_nist:`2023-2194`, :cve_nist:`2023-2235`, :cve_nist:`2023-2236`, :cve_nist:`2023-2248`, :cve_nist:`2023-2269`, :cve_nist:`2023-22995`, :cve_nist:`2023-22996`, :cve_nist:`2023-22997`, :cve_nist:`2023-22998`, :cve_nist:`2023-22999`, :cve_nist:`2023-23000`, :cve_nist:`2023-23001`, :cve_nist:`2023-23002`, :cve_nist:`2023-23003`, :cve_nist:`2023-23004`, :cve_nist:`2023-23006`, :cve_nist:`2023-23454`, :cve_nist:`2023-23455`, :cve_nist:`2023-23559`, :cve_nist:`2023-23586`, :cve_nist:`2023-2430`, :cve_nist:`2023-2483`, :cve_nist:`2023-25012`, :cve_nist:`2023-2513`, :cve_nist:`2023-25775`, :cve_nist:`2023-2598`, :cve_nist:`2023-26544`, :cve_nist:`2023-26545`, :cve_nist:`2023-26605`, :cve_nist:`2023-26606`, :cve_nist:`2023-26607`, :cve_nist:`2023-28327`, :cve_nist:`2023-28328`, :cve_nist:`2023-28410`, :cve_nist:`2023-28464`, :cve_nist:`2023-28466`, :cve_nist:`2023-2860`, :cve_nist:`2023-28772`, :cve_nist:`2023-28866`, :cve_nist:`2023-2898`, :cve_nist:`2023-2985`, :cve_nist:`2023-3006`, :cve_nist:`2023-30456`, :cve_nist:`2023-30772`, :cve_nist:`2023-3090`, :cve_nist:`2023-3106`, :cve_nist:`2023-3111`, :cve_nist:`2023-3117`, :cve_nist:`2023-31248`, :cve_nist:`2023-3141`, :cve_nist:`2023-31436`, :cve_nist:`2023-3159`, :cve_nist:`2023-3161`, :cve_nist:`2023-3212`, :cve_nist:`2023-3220`, :cve_nist:`2023-32233`, :cve_nist:`2023-32247`, :cve_nist:`2023-32248`, :cve_nist:`2023-32250`, :cve_nist:`2023-32252`, :cve_nist:`2023-32254`, :cve_nist:`2023-32257`, :cve_nist:`2023-32258`, :cve_nist:`2023-32269`, :cve_nist:`2023-3268`, :cve_nist:`2023-3269`, :cve_nist:`2023-3312`, :cve_nist:`2023-3317`, :cve_nist:`2023-33203`, :cve_nist:`2023-33250`, :cve_nist:`2023-33288`, :cve_nist:`2023-3338`, :cve_nist:`2023-3355`, :cve_nist:`2023-3357`, :cve_nist:`2023-3358`, :cve_nist:`2023-3359`, :cve_nist:`2023-3389`, :cve_nist:`2023-3390`, :cve_nist:`2023-33951`, :cve_nist:`2023-33952`, :cve_nist:`2023-34255`, :cve_nist:`2023-34256`, :cve_nist:`2023-34319`, :cve_nist:`2023-3439`, :cve_nist:`2023-35001`, :cve_nist:`2023-3567`, :cve_nist:`2023-35788`, :cve_nist:`2023-35823`, :cve_nist:`2023-35824`, :cve_nist:`2023-35826`, :cve_nist:`2023-35828`, :cve_nist:`2023-35829`, :cve_nist:`2023-3609`, :cve_nist:`2023-3610`, :cve_nist:`2023-3611`, :cve_nist:`2023-37453`, :cve_nist:`2023-3772`, :cve_nist:`2023-3773`, :cve_nist:`2023-3776`, :cve_nist:`2023-3777`, :cve_nist:`2023-3812`, :cve_nist:`2023-38409`, :cve_nist:`2023-38426`, :cve_nist:`2023-38427`, :cve_nist:`2023-38428`, :cve_nist:`2023-38429`, :cve_nist:`2023-38430`, :cve_nist:`2023-38431`, :cve_nist:`2023-38432`, :cve_nist:`2023-3863`, :cve_mitre:`2023-3865`, :cve_mitre:`2023-3866`, :cve_mitre:`2023-3867`, :cve_nist:`2023-4004`, :cve_nist:`2023-4015`, :cve_nist:`2023-40283`, :cve_nist:`2023-4128`, :cve_nist:`2023-4132`, :cve_nist:`2023-4147`, :cve_nist:`2023-4155`, :cve_nist:`2023-4194`, :cve_nist:`2023-4206`, :cve_nist:`2023-4207`, :cve_nist:`2023-4208`, :cve_nist:`2023-4273`, :cve_nist:`2023-42752`, :cve_nist:`2023-42753`, :cve_nist:`2023-4385`, :cve_nist:`2023-4387`, :cve_nist:`2023-4389`, :cve_nist:`2023-4394`, :cve_nist:`2023-4459`, :cve_nist:`2023-4569`, :cve_nist:`2023-4611` and :cve_nist:`2023-4623`
31- nghttp2: Fix :cve:`2023-35945` 31- nghttp2: Fix :cve_nist:`2023-35945`
32- openssl: Fix :cve:`2023-2975`, :cve:`2023-3446`, :cve:`2023-3817`, :cve:`2023-4807` and :cve:`2023-5363` 32- openssl: Fix :cve_nist:`2023-2975`, :cve_nist:`2023-3446`, :cve_nist:`2023-3817`, :cve_nist:`2023-4807` and :cve_nist:`2023-5363`
33- pixman: Ignore :cve:`2023-37769` 33- pixman: Ignore :cve_nist:`2023-37769`
34- procps: Fix :cve:`2023-4016` 34- procps: Fix :cve_nist:`2023-4016`
35- python3-git: Fix :cve:`2023-40267`, :cve:`2023-40590` and :cve:`2023-41040` 35- python3-git: Fix :cve_nist:`2023-40267`, :cve_nist:`2023-40590` and :cve_nist:`2023-41040`
36- python3-pygments: Fix :cve:`2022-40896` 36- python3-pygments: Fix :cve_nist:`2022-40896`
37- python3-urllib3: Fix :cve:`2023-43804` and :cve:`2023-45803` 37- python3-urllib3: Fix :cve_nist:`2023-43804` and :cve_nist:`2023-45803`
38- python3: Fix :cve:`2023-24329` and :cve:`2023-40217` 38- python3: Fix :cve_nist:`2023-24329` and :cve_nist:`2023-40217`
39- qemu: Fix :cve:`2023-3180`, :cve:`2023-3354` and :cve:`2023-42467` 39- qemu: Fix :cve_nist:`2023-3180`, :cve_nist:`2023-3354` and :cve_nist:`2023-42467`
40- qemu: Ignore :cve:`2023-2680` 40- qemu: Ignore :cve_nist:`2023-2680`
41- screen: Fix :cve:`2023-24626` 41- screen: Fix :cve_nist:`2023-24626`
42- shadow: Fix :cve_mitre:`2023-4641` 42- shadow: Fix :cve_mitre:`2023-4641`
43- tiff: Fix :cve:`2023-40745` and :cve:`2023-41175` 43- tiff: Fix :cve_nist:`2023-40745` and :cve_nist:`2023-41175`
44- vim: Fix :cve:`2023-3896`, :cve:`2023-4733`, :cve:`2023-4734`, :cve:`2023-4735`, :cve:`2023-4736`, :cve:`2023-4738`, :cve:`2023-4750`, :cve:`2023-4752`, :cve:`2023-4781`, :cve:`2023-5441` and :cve:`2023-5535` 44- vim: Fix :cve_nist:`2023-3896`, :cve_nist:`2023-4733`, :cve_nist:`2023-4734`, :cve_nist:`2023-4735`, :cve_nist:`2023-4736`, :cve_nist:`2023-4738`, :cve_nist:`2023-4750`, :cve_nist:`2023-4752`, :cve_nist:`2023-4781`, :cve_nist:`2023-5441` and :cve_nist:`2023-5535`
45- webkitgtk: Fix :cve:`2023-32435` and :cve:`2023-32439` 45- webkitgtk: Fix :cve_nist:`2023-32435` and :cve_nist:`2023-32439`
46- xserver-xorg: Fix :cve:`2023-5367` and :cve:`2023-5380` 46- xserver-xorg: Fix :cve_nist:`2023-5367` and :cve_nist:`2023-5380`
47 47
48 48
49Fixes in Yocto-4.2.4 49Fixes in Yocto-4.2.4
diff --git a/documentation/migration-guides/release-notes-4.2.rst b/documentation/migration-guides/release-notes-4.2.rst
index 30049b89f6..81a052b413 100644
--- a/documentation/migration-guides/release-notes-4.2.rst
+++ b/documentation/migration-guides/release-notes-4.2.rst
@@ -348,39 +348,39 @@ The following corrections have been made to the :term:`LICENSE` values set by re
348Security Fixes in 4.2 348Security Fixes in 4.2
349~~~~~~~~~~~~~~~~~~~~~ 349~~~~~~~~~~~~~~~~~~~~~
350 350
351- binutils: :cve:`2022-4285`, :cve_mitre:`2023-25586` 351- binutils: :cve_nist:`2022-4285`, :cve_mitre:`2023-25586`
352- curl: :cve:`2022-32221`, :cve:`2022-35260`, :cve:`2022-42915`, :cve:`2022-42916` 352- curl: :cve_nist:`2022-32221`, :cve_nist:`2022-35260`, :cve_nist:`2022-42915`, :cve_nist:`2022-42916`
353- epiphany: :cve:`2023-26081` 353- epiphany: :cve_nist:`2023-26081`
354- expat: :cve:`2022-43680` 354- expat: :cve_nist:`2022-43680`
355- ffmpeg: :cve:`2022-3964`, :cve:`2022-3965` 355- ffmpeg: :cve_nist:`2022-3964`, :cve_nist:`2022-3965`
356- git: :cve:`2022-39260`, :cve:`2022-41903`, :cve:`2022-23521`, :cve:`2022-41953` (ignored) 356- git: :cve_nist:`2022-39260`, :cve_nist:`2022-41903`, :cve_nist:`2022-23521`, :cve_nist:`2022-41953` (ignored)
357- glibc: :cve:`2023-25139` (ignored) 357- glibc: :cve_nist:`2023-25139` (ignored)
358- go: :cve:`2023-24532`, :cve:`2023-24537` 358- go: :cve_nist:`2023-24532`, :cve_nist:`2023-24537`
359- grub2: :cve:`2022-2601`, :cve:`2022-3775`, :cve_mitre:`2022-28736` 359- grub2: :cve_nist:`2022-2601`, :cve_nist:`2022-3775`, :cve_mitre:`2022-28736`
360- inetutils: :cve:`2019-0053` 360- inetutils: :cve_nist:`2019-0053`
361- less: :cve:`2022-46663` 361- less: :cve_nist:`2022-46663`
362- libarchive: :cve:`2022-36227` 362- libarchive: :cve_nist:`2022-36227`
363- libinput: :cve:`2022-1215` 363- libinput: :cve_nist:`2022-1215`
364- libpam: :cve:`2022-28321` 364- libpam: :cve_nist:`2022-28321`
365- libpng: :cve:`2019-6129` 365- libpng: :cve_nist:`2019-6129`
366- libx11: :cve:`2022-3554` 366- libx11: :cve_nist:`2022-3554`
367- openssh: :cve:`2023-28531` 367- openssh: :cve_nist:`2023-28531`
368- openssl: :cve:`2022-3358`, :cve:`2022-3786`, :cve:`2022-3602`, :cve:`2022-3996`, :cve:`2023-0286`, :cve:`2022-4304`, :cve:`2022-4203`, :cve:`2023-0215`, :cve:`2022-4450`, :cve:`2023-0216`, :cve:`2023-0217`, :cve:`2023-0401`, :cve:`2023-0464` 368- openssl: :cve_nist:`2022-3358`, :cve_nist:`2022-3786`, :cve_nist:`2022-3602`, :cve_nist:`2022-3996`, :cve_nist:`2023-0286`, :cve_nist:`2022-4304`, :cve_nist:`2022-4203`, :cve_nist:`2023-0215`, :cve_nist:`2022-4450`, :cve_nist:`2023-0216`, :cve_nist:`2023-0217`, :cve_nist:`2023-0401`, :cve_nist:`2023-0464`
369- ppp: :cve:`2022-4603` 369- ppp: :cve_nist:`2022-4603`
370- python3-cryptography{-vectors}: :cve:`2022-3602`, :cve:`2022-3786`, :cve:`2023-23931` 370- python3-cryptography{-vectors}: :cve_nist:`2022-3602`, :cve_nist:`2022-3786`, :cve_nist:`2023-23931`
371- python3: :cve_mitre:`2022-37460` 371- python3: :cve_mitre:`2022-37460`
372- qemu: :cve:`2022-3165` 372- qemu: :cve_nist:`2022-3165`
373- rust: :cve:`2022-46176` 373- rust: :cve_nist:`2022-46176`
374- rxvt-unicode: :cve:`2022-4170` 374- rxvt-unicode: :cve_nist:`2022-4170`
375- screen: :cve:`2023-24626` 375- screen: :cve_nist:`2023-24626`
376- shadow: :cve:`2023-29383`, :cve:`2016-15024` (ignored) 376- shadow: :cve_nist:`2023-29383`, :cve_nist:`2016-15024` (ignored)
377- sudo: :cve:`2022-43995` 377- sudo: :cve_nist:`2022-43995`
378- systemd: :cve:`2022-4415` (ignored) 378- systemd: :cve_nist:`2022-4415` (ignored)
379- tar: :cve:`2022-48303` 379- tar: :cve_nist:`2022-48303`
380- tiff: :cve:`2022-3599`, :cve:`2022-3597`, :cve:`2022-3626`, :cve:`2022-3627`, :cve:`2022-3570`, :cve:`2022-3598`, :cve:`2022-3970`, :cve:`2022-48281` 380- tiff: :cve_nist:`2022-3599`, :cve_nist:`2022-3597`, :cve_nist:`2022-3626`, :cve_nist:`2022-3627`, :cve_nist:`2022-3570`, :cve_nist:`2022-3598`, :cve_nist:`2022-3970`, :cve_nist:`2022-48281`
381- vim: :cve:`2022-3352`, :cve:`2022-4141`, :cve:`2023-0049`, :cve:`2023-0051`, :cve:`2023-0054`, :cve:`2023-0288`, :cve:`2023-1127`, :cve:`2023-1170`, :cve:`2023-1175`, :cve:`2023-1127`, :cve:`2023-1170`, :cve:`2023-1175`, :cve:`2023-1264`, :cve:`2023-1355`, :cve:`2023-0433`, :cve:`2022-47024`, :cve:`2022-3705` 381- vim: :cve_nist:`2022-3352`, :cve_nist:`2022-4141`, :cve_nist:`2023-0049`, :cve_nist:`2023-0051`, :cve_nist:`2023-0054`, :cve_nist:`2023-0288`, :cve_nist:`2023-1127`, :cve_nist:`2023-1170`, :cve_nist:`2023-1175`, :cve_nist:`2023-1127`, :cve_nist:`2023-1170`, :cve_nist:`2023-1175`, :cve_nist:`2023-1264`, :cve_nist:`2023-1355`, :cve_nist:`2023-0433`, :cve_nist:`2022-47024`, :cve_nist:`2022-3705`
382- xdg-utils: :cve:`2022-4055` 382- xdg-utils: :cve_nist:`2022-4055`
383- xserver-xorg: :cve:`2022-3550`, :cve:`2022-3551`, :cve:`2023-1393`, :cve:`2023-0494`, :cve:`2022-3553` (ignored) 383- xserver-xorg: :cve_nist:`2022-3550`, :cve_nist:`2022-3551`, :cve_nist:`2023-1393`, :cve_nist:`2023-0494`, :cve_nist:`2022-3553` (ignored)
384 384
385Recipe Upgrades in 4.2 385Recipe Upgrades in 4.2
386~~~~~~~~~~~~~~~~~~~~~~ 386~~~~~~~~~~~~~~~~~~~~~~
diff --git a/documentation/migration-guides/release-notes-4.3.1.rst b/documentation/migration-guides/release-notes-4.3.1.rst
index cea9c538a2..afde1e7942 100644
--- a/documentation/migration-guides/release-notes-4.3.1.rst
+++ b/documentation/migration-guides/release-notes-4.3.1.rst
@@ -6,14 +6,14 @@ Release notes for Yocto-4.3.1 (Nanbield)
6Security Fixes in Yocto-4.3.1 6Security Fixes in Yocto-4.3.1
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- libsndfile1: Fix :cve:`2022-33065` 9- libsndfile1: Fix :cve_nist:`2022-33065`
10- libxml2: Ignore :cve:`2023-45322` 10- libxml2: Ignore :cve_nist:`2023-45322`
11- linux-yocto/6.1: Ignore :cve:`2020-27418`, :cve:`2023-31085`, :cve_mitre:`2023-34324`, :cve:`2023-39189`, :cve:`2023-39192`, :cve:`2023-39193`, :cve:`2023-39194`, :cve:`2023-4244`, :cve:`2023-42754`, :cve:`2023-42756`, :cve:`2023-44466`, :cve:`2023-4563`, :cve:`2023-45862`, :cve:`2023-45863`, :cve:`2023-45871`, :cve:`2023-45898`, :cve:`2023-4732`, :cve:`2023-5158`, :cve:`2023-5197` and :cve:`2023-5345` 11- linux-yocto/6.1: Ignore :cve_nist:`2020-27418`, :cve_nist:`2023-31085`, :cve_mitre:`2023-34324`, :cve_nist:`2023-39189`, :cve_nist:`2023-39192`, :cve_nist:`2023-39193`, :cve_nist:`2023-39194`, :cve_nist:`2023-4244`, :cve_nist:`2023-42754`, :cve_nist:`2023-42756`, :cve_nist:`2023-44466`, :cve_nist:`2023-4563`, :cve_nist:`2023-45862`, :cve_nist:`2023-45863`, :cve_nist:`2023-45871`, :cve_nist:`2023-45898`, :cve_nist:`2023-4732`, :cve_nist:`2023-5158`, :cve_nist:`2023-5197` and :cve_nist:`2023-5345`
12- linux-yocto/6.5: Ignore :cve:`2020-27418`, :cve:`2023-1193`, :cve:`2023-39191`, :cve:`2023-39194`, :cve:`2023-40791`, :cve:`2023-44466`, :cve:`2023-45862`, :cve:`2023-45863`, :cve:`2023-4610` and :cve:`2023-4732` 12- linux-yocto/6.5: Ignore :cve_nist:`2020-27418`, :cve_nist:`2023-1193`, :cve_nist:`2023-39191`, :cve_nist:`2023-39194`, :cve_nist:`2023-40791`, :cve_nist:`2023-44466`, :cve_nist:`2023-45862`, :cve_nist:`2023-45863`, :cve_nist:`2023-4610` and :cve_nist:`2023-4732`
13- openssl: Fix :cve:`2023-5363` 13- openssl: Fix :cve_nist:`2023-5363`
14- pixman: Ignore :cve:`2023-37769` 14- pixman: Ignore :cve_nist:`2023-37769`
15- vim: Fix :cve:`2023-46246` 15- vim: Fix :cve_nist:`2023-46246`
16- zlib: Ignore :cve:`2023-45853` 16- zlib: Ignore :cve_nist:`2023-45853`
17 17
18 18
19Fixes in Yocto-4.3.1 19Fixes in Yocto-4.3.1
diff --git a/documentation/migration-guides/release-notes-4.3.2.rst b/documentation/migration-guides/release-notes-4.3.2.rst
index 3a40d83bc2..c32cd83b2a 100644
--- a/documentation/migration-guides/release-notes-4.3.2.rst
+++ b/documentation/migration-guides/release-notes-4.3.2.rst
@@ -6,19 +6,19 @@ Release notes for Yocto-4.3.2 (Nanbield)
6Security Fixes in Yocto-4.3.2 6Security Fixes in Yocto-4.3.2
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- avahi: Fix :cve:`2023-1981`, :cve:`2023-38469`, :cve:`2023-38470`, :cve:`2023-38471`, :cve:`2023-38472` and :cve:`2023-38473` 9- avahi: Fix :cve_nist:`2023-1981`, :cve_nist:`2023-38469`, :cve_nist:`2023-38470`, :cve_nist:`2023-38471`, :cve_nist:`2023-38472` and :cve_nist:`2023-38473`
10- curl: Fix :cve:`2023-46218` 10- curl: Fix :cve_nist:`2023-46218`
11- ghostscript: Fix :cve:`2023-46751` 11- ghostscript: Fix :cve_nist:`2023-46751`
12- grub: fix :cve:`2023-4692` and :cve:`2023-4693` 12- grub: fix :cve_nist:`2023-4692` and :cve_nist:`2023-4693`
13- gstreamer1.0: Fix :cve_mitre:`2023-44446` 13- gstreamer1.0: Fix :cve_mitre:`2023-44446`
14- linux-yocto/6.1: Ignore :cve_mitre:`2023-39197`, :cve:`2023-39198`, :cve:`2023-5090`, :cve:`2023-5633`, :cve:`2023-6111`, :cve:`2023-6121` and :cve:`2023-6176` 14- linux-yocto/6.1: Ignore :cve_mitre:`2023-39197`, :cve_nist:`2023-39198`, :cve_nist:`2023-5090`, :cve_nist:`2023-5633`, :cve_nist:`2023-6111`, :cve_nist:`2023-6121` and :cve_nist:`2023-6176`
15- linux-yocto/6.5: Ignore :cve:`2022-44034`, :cve_mitre:`2023-39197`, :cve:`2023-39198`, :cve:`2023-5972`, :cve:`2023-6039`, :cve:`2023-6111` and :cve:`2023-6176` 15- linux-yocto/6.5: Ignore :cve_nist:`2022-44034`, :cve_mitre:`2023-39197`, :cve_nist:`2023-39198`, :cve_nist:`2023-5972`, :cve_nist:`2023-6039`, :cve_nist:`2023-6111` and :cve_nist:`2023-6176`
16- perl: fix :cve:`2023-47100` 16- perl: fix :cve_nist:`2023-47100`
17- python3-urllib3: Fix :cve:`2023-45803` 17- python3-urllib3: Fix :cve_nist:`2023-45803`
18- rust: Fix :cve:`2023-40030` 18- rust: Fix :cve_nist:`2023-40030`
19- vim: Fix :cve:`2023-48231`, :cve:`2023-48232`, :cve:`2023-48233`, :cve:`2023-48234`, :cve:`2023-48235`, :cve:`2023-48236` and :cve:`2023-48237` 19- vim: Fix :cve_nist:`2023-48231`, :cve_nist:`2023-48232`, :cve_nist:`2023-48233`, :cve_nist:`2023-48234`, :cve_nist:`2023-48235`, :cve_nist:`2023-48236` and :cve_nist:`2023-48237`
20- xserver-xorg: Fix :cve:`2023-5367` and :cve:`2023-5380` 20- xserver-xorg: Fix :cve_nist:`2023-5367` and :cve_nist:`2023-5380`
21- xwayland: Fix :cve:`2023-5367` 21- xwayland: Fix :cve_nist:`2023-5367`
22 22
23 23
24Fixes in Yocto-4.3.2 24Fixes in Yocto-4.3.2
diff --git a/documentation/migration-guides/release-notes-4.3.3.rst b/documentation/migration-guides/release-notes-4.3.3.rst
index 2a0658a9c9..d30f4f5c2d 100644
--- a/documentation/migration-guides/release-notes-4.3.3.rst
+++ b/documentation/migration-guides/release-notes-4.3.3.rst
@@ -6,17 +6,17 @@ Release notes for Yocto-4.3.3 (Nanbield)
6Security Fixes in Yocto-4.3.3 6Security Fixes in Yocto-4.3.3
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- curl: Fix :cve:`2023-46219` 9- curl: Fix :cve_nist:`2023-46219`
10- glibc: Ignore fixed :cve:`2023-0687` and :cve:`2023-5156` 10- glibc: Ignore fixed :cve_nist:`2023-0687` and :cve_nist:`2023-5156`
11- linux-yocto/6.1: Ignore :cve:`2022-48619`, :cve:`2023-4610`, :cve:`2023-5178`, :cve:`2023-5972`, :cve:`2023-6040`, :cve:`2023-6531`, :cve:`2023-6546`, :cve:`2023-6622`, :cve:`2023-6679`, :cve:`2023-6817`, :cve:`2023-6931`, :cve:`2023-6932`, :cve:`2023-7192`, :cve:`2024-0193` and :cve:`2024-0443` 11- linux-yocto/6.1: Ignore :cve_nist:`2022-48619`, :cve_nist:`2023-4610`, :cve_nist:`2023-5178`, :cve_nist:`2023-5972`, :cve_nist:`2023-6040`, :cve_nist:`2023-6531`, :cve_nist:`2023-6546`, :cve_nist:`2023-6622`, :cve_nist:`2023-6679`, :cve_nist:`2023-6817`, :cve_nist:`2023-6931`, :cve_nist:`2023-6932`, :cve_nist:`2023-7192`, :cve_nist:`2024-0193` and :cve_nist:`2024-0443`
12- linux-yocto/6.1: Fix :cve:`2023-1193`, :cve_mitre:`2023-51779`, :cve:`2023-51780`, :cve:`2023-51781`, :cve:`2023-51782` and :cve:`2023-6606` 12- linux-yocto/6.1: Fix :cve_nist:`2023-1193`, :cve_mitre:`2023-51779`, :cve_nist:`2023-51780`, :cve_nist:`2023-51781`, :cve_nist:`2023-51782` and :cve_nist:`2023-6606`
13- qemu: Fix :cve:`2023-3019` 13- qemu: Fix :cve_nist:`2023-3019`
14- shadow: Fix :cve:`2023-4641` 14- shadow: Fix :cve_nist:`2023-4641`
15- sqlite3: Fix :cve:`2024-0232` 15- sqlite3: Fix :cve_nist:`2024-0232`
16- sqlite3: drop obsolete CVE ignore :cve:`2023-36191` 16- sqlite3: drop obsolete CVE ignore :cve_nist:`2023-36191`
17- sudo: Fix :cve:`2023-42456` and :cve:`2023-42465` 17- sudo: Fix :cve_nist:`2023-42456` and :cve_nist:`2023-42465`
18- tiff: Fix :cve:`2023-6277` 18- tiff: Fix :cve_nist:`2023-6277`
19- xwayland: Fix :cve:`2023-6377` and :cve:`2023-6478` 19- xwayland: Fix :cve_nist:`2023-6377` and :cve_nist:`2023-6478`
20 20
21 21
22Fixes in Yocto-4.3.3 22Fixes in Yocto-4.3.3
diff --git a/documentation/migration-guides/release-notes-4.3.4.rst b/documentation/migration-guides/release-notes-4.3.4.rst
index 4c9e67f2cb..b725ace369 100644
--- a/documentation/migration-guides/release-notes-4.3.4.rst
+++ b/documentation/migration-guides/release-notes-4.3.4.rst
@@ -6,23 +6,23 @@ Release notes for Yocto-4.3.4 (Nanbield)
6Security Fixes in Yocto-4.3.4 6Security Fixes in Yocto-4.3.4
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bind: Fix :cve:`2023-4408`, :cve:`2023-5517`, :cve:`2023-5679` and :cve:`2023-50387` 9- bind: Fix :cve_nist:`2023-4408`, :cve_nist:`2023-5517`, :cve_nist:`2023-5679` and :cve_nist:`2023-50387`
10- gcc: Update :term:`CVE_STATUS` for :cve:`2023-4039` as fixed 10- gcc: Update :term:`CVE_STATUS` for :cve_nist:`2023-4039` as fixed
11- glibc: Fix :cve:`2023-6246`, :cve:`2023-6779` and :cve:`2023-6780` 11- glibc: Fix :cve_nist:`2023-6246`, :cve_nist:`2023-6779` and :cve_nist:`2023-6780`
12- gnutls: Fix :cve:`2024-0553` and :cve:`2024-0567` 12- gnutls: Fix :cve_nist:`2024-0553` and :cve_nist:`2024-0567`
13- gstreamer: Fix :cve_mitre:`2024-0444` 13- gstreamer: Fix :cve_mitre:`2024-0444`
14- libssh2: fix :cve:`2023-48795` 14- libssh2: fix :cve_nist:`2023-48795`
15- libxml2: Fix :cve:`2024-25062` 15- libxml2: Fix :cve_nist:`2024-25062`
16- linux-yocto/6.1: Fix :cve:`2023-6610`, :cve:`2023-6915`, :cve:`2023-46838`, :cve:`2023-50431`, :cve:`2024-1085`, :cve:`2024-1086` and :cve:`2024-23849` 16- linux-yocto/6.1: Fix :cve_nist:`2023-6610`, :cve_nist:`2023-6915`, :cve_nist:`2023-46838`, :cve_nist:`2023-50431`, :cve_nist:`2024-1085`, :cve_nist:`2024-1086` and :cve_nist:`2024-23849`
17- linux-yocto/6.1: Ignore :cve:`2021-33630`, :cve:`2021-33631`, :cve:`2022-36402`, :cve:`2023-5717`, :cve:`2023-6200`, :cve:`2023-35827`, :cve:`2023-40791`, :cve:`2023-46343`, :cve:`2023-46813`, :cve:`2023-46862`, :cve:`2023-51042`, :cve:`2023-51043`, :cve_mitre:`2023-52340`, :cve:`2024-0562`, :cve:`2024-0565`, :cve:`2024-0582`, :cve:`2024-0584`, :cve:`2024-0607`, :cve:`2024-0639`, :cve:`2024-0641`, :cve:`2024-0646`, :cve:`2024-0775` and :cve:`2024-22705` 17- linux-yocto/6.1: Ignore :cve_nist:`2021-33630`, :cve_nist:`2021-33631`, :cve_nist:`2022-36402`, :cve_nist:`2023-5717`, :cve_nist:`2023-6200`, :cve_nist:`2023-35827`, :cve_nist:`2023-40791`, :cve_nist:`2023-46343`, :cve_nist:`2023-46813`, :cve_nist:`2023-46862`, :cve_nist:`2023-51042`, :cve_nist:`2023-51043`, :cve_mitre:`2023-52340`, :cve_nist:`2024-0562`, :cve_nist:`2024-0565`, :cve_nist:`2024-0582`, :cve_nist:`2024-0584`, :cve_nist:`2024-0607`, :cve_nist:`2024-0639`, :cve_nist:`2024-0641`, :cve_nist:`2024-0646`, :cve_nist:`2024-0775` and :cve_nist:`2024-22705`
18- openssl: fix :cve:`2024-0727` 18- openssl: fix :cve_nist:`2024-0727`
19- python3-jinja2: Fix :cve:`2024-22195` 19- python3-jinja2: Fix :cve_nist:`2024-22195`
20- tiff: Fix :cve:`2023-6228`, :cve:`2023-52355` and :cve:`2023-52356` 20- tiff: Fix :cve_nist:`2023-6228`, :cve_nist:`2023-52355` and :cve_nist:`2023-52356`
21- vim: Fix :cve:`2024-22667` 21- vim: Fix :cve_nist:`2024-22667`
22- wpa-supplicant: Fix :cve:`2023-52160` 22- wpa-supplicant: Fix :cve_nist:`2023-52160`
23- xserver-xorg: Fix :cve:`2023-6377`, :cve:`2023-6478`, :cve:`2023-6816`, :cve:`2024-0229`, :cve:`2024-0408`, :cve:`2024-0409`, :cve:`2024-21885` and :cve:`2024-21886` 23- xserver-xorg: Fix :cve_nist:`2023-6377`, :cve_nist:`2023-6478`, :cve_nist:`2023-6816`, :cve_nist:`2024-0229`, :cve_nist:`2024-0408`, :cve_nist:`2024-0409`, :cve_nist:`2024-21885` and :cve_nist:`2024-21886`
24- xwayland: Fix :cve:`2023-6816`, :cve:`2024-0408` and :cve:`2024-0409` 24- xwayland: Fix :cve_nist:`2023-6816`, :cve_nist:`2024-0408` and :cve_nist:`2024-0409`
25- zlib: Ignore :cve:`2023-6992` 25- zlib: Ignore :cve_nist:`2023-6992`
26 26
27 27
28Fixes in Yocto-4.3.4 28Fixes in Yocto-4.3.4
@@ -59,7 +59,7 @@ Fixes in Yocto-4.3.4
59- docs: use "manual page(s)" 59- docs: use "manual page(s)"
60- docs: Makefile: remove releases.rst in "make clean" 60- docs: Makefile: remove releases.rst in "make clean"
61- externalsrc: fix task dependency for do_populate_lic 61- externalsrc: fix task dependency for do_populate_lic
62- glibc: Remove duplicate :term:`CVE_STATUS` for :cve:`2023-4527` 62- glibc: Remove duplicate :term:`CVE_STATUS` for :cve_nist:`2023-4527`
63- glibc: stable 2.38 branch updates (2.38+gitd37c2b20a4) 63- glibc: stable 2.38 branch updates (2.38+gitd37c2b20a4)
64- gnutls: Upgrade to 3.8.3 64- gnutls: Upgrade to 3.8.3
65- gstreamer1.0: skip a test that is known to be flaky 65- gstreamer1.0: skip a test that is known to be flaky
diff --git a/documentation/migration-guides/release-notes-4.3.rst b/documentation/migration-guides/release-notes-4.3.rst
index 0e175067da..0103ac985e 100644
--- a/documentation/migration-guides/release-notes-4.3.rst
+++ b/documentation/migration-guides/release-notes-4.3.rst
@@ -295,7 +295,7 @@ New Features / Enhancements in 4.3
295 - Generation of :term:`SPDX` manifests is now enabled by default. 295 - Generation of :term:`SPDX` manifests is now enabled by default.
296 296
297 - Git based recipes in OE-Core which used the ``git`` protocol have been 297 - Git based recipes in OE-Core which used the ``git`` protocol have been
298 changed to use `https`` where possible, as it is typically faster and 298 changed to use ``https`` where possible, as it is typically faster and
299 more reliable. 299 more reliable.
300 300
301 - The ``os-release`` recipe added a ``CPE_NAME`` to the fields provided, with the 301 - The ``os-release`` recipe added a ``CPE_NAME`` to the fields provided, with the
@@ -337,47 +337,47 @@ The following corrections have been made to the :term:`LICENSE` values set by re
337Security Fixes in 4.3 337Security Fixes in 4.3
338~~~~~~~~~~~~~~~~~~~~~ 338~~~~~~~~~~~~~~~~~~~~~
339 339
340- bind: :cve:`2023-2911`, :cve:`2023-2828`, :cve:`2023-3341`, :cve:`2023-4236` 340- bind: :cve_nist:`2023-2911`, :cve_nist:`2023-2828`, :cve_nist:`2023-3341`, :cve_nist:`2023-4236`
341- binutils: :cve:`2023-1972` 341- binutils: :cve_nist:`2023-1972`
342- connman: :cve:`2023-28488` 342- connman: :cve_nist:`2023-28488`
343- cups: :cve:`2023-32324`, :cve:`2023-34241`, :cve:`2023-4504` 343- cups: :cve_nist:`2023-32324`, :cve_nist:`2023-34241`, :cve_nist:`2023-4504`
344- dbus: :cve:`2023-34969` 344- dbus: :cve_nist:`2023-34969`
345- dmidecode: :cve:`2023-30630` 345- dmidecode: :cve_nist:`2023-30630`
346- dropbear: :cve:`2023-36328` 346- dropbear: :cve_nist:`2023-36328`
347- erofs-utils: :cve:`2023-33551`, :cve:`2023-33552` 347- erofs-utils: :cve_nist:`2023-33551`, :cve_nist:`2023-33552`
348- gcc: :cve:`2023-4039` 348- gcc: :cve_nist:`2023-4039`
349- ghostscript: :cve:`2023-28879`, :cve:`2023-36664`, :cve:`2023-38559;` ignore :cve:`2023-38560` 349- ghostscript: :cve_nist:`2023-28879`, :cve_nist:`2023-36664`, :cve_nist:`2023-38559;` ignore :cve_nist:`2023-38560`
350- git: :cve:`2023-25652`, :cve:`2023-29007` 350- git: :cve_nist:`2023-25652`, :cve_nist:`2023-29007`
351- glibc: :cve:`2023-4527`, :cve:`2023-4806` 351- glibc: :cve_nist:`2023-4527`, :cve_nist:`2023-4806`
352- go: :cve:`2023-24537`, :cve:`2023-39325` 352- go: :cve_nist:`2023-24537`, :cve_nist:`2023-39325`
353- gstreamer: :cve:`2023-40475`, :cve:`2023-40476` 353- gstreamer: :cve_nist:`2023-40475`, :cve_nist:`2023-40476`
354- inetutils: :cve:`2023-40303` 354- inetutils: :cve_nist:`2023-40303`
355- libarchive: ignore :cve:`2023-30571` 355- libarchive: ignore :cve_nist:`2023-30571`
356- librsvg: :cve:`2023-38633` 356- librsvg: :cve_nist:`2023-38633`
357- libwebp: :cve:`2023-1999`, :cve:`2023-4863` 357- libwebp: :cve_nist:`2023-1999`, :cve_nist:`2023-4863`
358- libx11: :cve:`2023-3138`, :cve:`2023-43785`, :cve:`2023-43786`, :cve:`2023-43787` 358- libx11: :cve_nist:`2023-3138`, :cve_nist:`2023-43785`, :cve_nist:`2023-43786`, :cve_nist:`2023-43787`
359- libxml2: :cve:`2023-28484`, :cve:`2023-29469;` ignore disputed :cve:`2023-45322` 359- libxml2: :cve_nist:`2023-28484`, :cve_nist:`2023-29469;` ignore disputed :cve_nist:`2023-45322`
360- libxpm: :cve:`2023-43788`, :cve:`2023-43789`, :cve:`2022-44617` 360- libxpm: :cve_nist:`2023-43788`, :cve_nist:`2023-43789`, :cve_nist:`2022-44617`
361- linux: update CVE exclusions 361- linux: update CVE exclusions
362- ncurses: :cve:`2023-29491` 362- ncurses: :cve_nist:`2023-29491`
363- nghttp2: :cve:`2023-44487` 363- nghttp2: :cve_nist:`2023-44487`
364- ninja: ignore :cve:`2021-4336`, wrong ninja 364- ninja: ignore :cve_nist:`2021-4336`, wrong ninja
365- openssh: :cve:`2023-38408` 365- openssh: :cve_nist:`2023-38408`
366- openssl: :cve:`2023-2650`, :cve:`2023-1255`, :cve:`2023-0466`, :cve:`2023-0465`, :cve:`2023-0464`, :cve:`2023-3817`, :cve:`2023-3446`, :cve:`2023-2975`, :cve:`2023-4807` 366- openssl: :cve_nist:`2023-2650`, :cve_nist:`2023-1255`, :cve_nist:`2023-0466`, :cve_nist:`2023-0465`, :cve_nist:`2023-0464`, :cve_nist:`2023-3817`, :cve_nist:`2023-3446`, :cve_nist:`2023-2975`, :cve_nist:`2023-4807`
367- perl: :cve:`2023-31484`, :cve:`2023-31486` 367- perl: :cve_nist:`2023-31484`, :cve_nist:`2023-31486`
368- pixman: ignore :cve:`2023-37769` 368- pixman: ignore :cve_nist:`2023-37769`
369- procps: :cve:`2023-4016` 369- procps: :cve_nist:`2023-4016`
370- python3-git: :cve:`2023-41040` 370- python3-git: :cve_nist:`2023-41040`
371- python3: ignore :cve:`2023-36632` 371- python3: ignore :cve_nist:`2023-36632`
372- python3-urllib3: :cve:`2023-43804` 372- python3-urllib3: :cve_nist:`2023-43804`
373- qemu: :cve:`2023-40360`, :cve:`2023-42467;` ignore :cve:`2023-0664` (Windows-specific), ignore :cve:`2023-2680` (RHEL specific) 373- qemu: :cve_nist:`2023-40360`, :cve_nist:`2023-42467;` ignore :cve_nist:`2023-0664` (Windows-specific), ignore :cve_nist:`2023-2680` (RHEL specific)
374- screen: :cve:`2023-24626` 374- screen: :cve_nist:`2023-24626`
375- shadow: :cve:`2023-29383` 375- shadow: :cve_nist:`2023-29383`
376- sqlite3: ignore :cve:`2023-36191` 376- sqlite3: ignore :cve_nist:`2023-36191`
377- sysstat: :cve:`2023-33204` 377- sysstat: :cve_nist:`2023-33204`
378- tiff: :cve:`2022-4645`, :cve:`2023-2731`, :cve:`2023-26965`, :cve:`2023-40745`, :cve:`2023-41175` 378- tiff: :cve_nist:`2022-4645`, :cve_nist:`2023-2731`, :cve_nist:`2023-26965`, :cve_nist:`2023-40745`, :cve_nist:`2023-41175`
379- vim: :cve:`2023-2426`, :cve:`2023-2609`, :cve:`2023-2610`, :cve:`2023-3896`, :cve:`2023-5441`, :cve:`2023-5535` 379- vim: :cve_nist:`2023-2426`, :cve_nist:`2023-2609`, :cve_nist:`2023-2610`, :cve_nist:`2023-3896`, :cve_nist:`2023-5441`, :cve_nist:`2023-5535`
380- zlib: ignore :cve:`2023-45853` 380- zlib: ignore :cve_nist:`2023-45853`
381 381
382 382
383Recipe Upgrades in 4.3 383Recipe Upgrades in 4.3
diff --git a/documentation/migration-guides/release-notes-5.0.10.rst b/documentation/migration-guides/release-notes-5.0.10.rst
new file mode 100644
index 0000000000..e9845aa315
--- /dev/null
+++ b/documentation/migration-guides/release-notes-5.0.10.rst
@@ -0,0 +1,208 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-5.0.10 (Scarthgap)
4------------------------------------------
5
6Security Fixes in Yocto-5.0.10
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- binutils: Fix :cve_nist:`2025-1153`, :cve_nist:`2025-1179`, :cve_nist:`2025-1180` and
10 :cve_nist:`2025-1182`
11- connman: Fix :cve_nist:`2025-32366` and :cve_nist:`2025-32743`
12- curl: Fix :cve_nist:`2024-11053` and :cve_nist:`2025-0167`
13- elfutils: Fix :cve_nist:`2025-1371`
14- ffmpeg: Fix :cve_nist:`2024-7055`, :cve_nist:`2024-32230`, :cve_nist:`2024-35366`,
15 :cve_nist:`2024-36613`, :cve_nist:`2024-36616`, :cve_nist:`2024-36617` and :cve_nist:`2024-36619`
16- git: Fix :cve_nist:`2024-50349` and :cve_nist:`2024-52006`
17- glib-2.0: fix :cve_nist:`2025-3360` and :cve_nist:`2025-4373`
18- iputils: Fix :cve_nist:`2025-47268`
19- libpam: Fix :cve_nist:`2024-10041`
20- libsoup-2.4: Fix :cve_nist:`2024-52530`, :cve_nist:`2024-52531`, :cve_nist:`2024-52532`,
21 :cve_nist:`2025-32906`, :cve_nist:`2025-32909`, :cve_nist:`2025-32910`, :cve_nist:`2025-32911`,
22 :cve_nist:`2025-32912`, :cve_nist:`2025-32913`, :cve_nist:`2025-32914` and :cve_nist:`2025-46420`
23- libsoup: Fix :cve_nist:`2025-4476`, :cve_nist:`2025-32906`, :cve_nist:`2025-32909`,
24 :cve_nist:`2025-32910`, :cve_nist:`2025-32911`, :cve_nist:`2025-32912`, :cve_nist:`2025-32913`,
25 :cve_nist:`2025-32914` and :cve_nist:`2025-46420`
26- libxml2: Fix :cve_nist:`2025-32414` and :cve_nist:`2025-32415`
27- openssh: Fix :cve_nist:`2025-32728`
28- perl: Fix :cve_nist:`2024-56406`
29- ppp: Fix :cve_nist:`2024-58250`
30- python3-jinja2: Fix :cve_nist:`2024-56201`, :cve_nist:`2024-56326` and :cve_nist:`2025-27516`
31- ruby: Fix :cve_nist:`2025-27221`
32- sqlite3: Fix :cve_nist:`2025-3277`, :cve_nist:`2025-29087` and :cve_nist:`2025-29088`
33
34
35Fixes in Yocto-5.0.10
36~~~~~~~~~~~~~~~~~~~~~
37
38- binutils: stable 2.42 branch updates
39- bluez5: add missing tools to noinst-tools package
40- bluez5: backport a patch to fix btmgmt -i
41- bluez5: make media control a :term:`PACKAGECONFIG` option
42- build-appliance-image: Update to scarthgap head revision
43- buildtools-tarball: Make buildtools respects host CA certificates
44- buildtools-tarball: add envvars into :term:`BB_ENV_PASSTHROUGH_ADDITIONS`
45- buildtools-tarball: move setting of envvars to respective envfile
46- contributor-guide/submit-changes: encourage patch version changelogs
47- cve-check.bbclass: Fix symlink handling also for text files
48- cve-update-nvd2-native: Revert "cve-update-nvd2-native: Tweak to work better with NFS DL_DIR"
49- dev-manual/sbom.rst: fix wrong build outputs
50- docs: Fix dead links that use the :term:`DISTRO` macro
51- docs: conf.py: tweak SearchEnglish to be hyphen-friendly
52- docs:conf.py: define a manpage url
53- ffmpeg: upgrade to 6.1.2
54- git: upgrade to 2.44.3
55- glibc-y2038-tests: remove glibc-y2038-tests_2.39.bb recipe
56- glibc: Add single-threaded fast path to rand()
57- glibc: stable 2.39 branch updates
58- initscripts: add function log_success_msg/log_failure_msg/log_warning_msg
59- libatomic-ops: Update :term:`GITHUB_BASE_URI`
60- manuals: remove repeated word
61- migration-guides: add release notes for 4.0.26, 5.0.8, 5.0.9
62- module.bbclass: add KBUILD_EXTRA_SYMBOLS to install
63- perl: upgrade to 5.38.4
64- perlcross: upgrade to 1.6.2
65- poky.conf: bump version for 5.0.10
66- poky.yaml: introduce DISTRO_LATEST_TAG
67- python3-jinja2: upgrade to 3.1.6
68- ref-manual/release-process: update releases.svg
69- ref-manual/variables.rst: HOST_CC_ARCH: fix wrong SDK reference
70- ref-manual/variables.rst: WATCHDOG_TIMEOUT: fix recipe name
71- ref-manual/variables.rst: add manpage links for toolchain variables
72- ref-manual/variables.rst: add missing documentation for BUILD_* variables
73- ref-manual/variables.rst: document HOST_*_ARCH variables
74- ref-manual/variables.rst: document :term:`INHIBIT_DEFAULT_RUST_DEPS`
75- ref-manual/variables.rst: document :term:`INHIBIT_UPDATERCD_BBCLASS`
76- ref-manual/variables.rst: document :term:`SSTATE_SKIP_CREATION`
77- ref-manual/variables.rst: document :term:`WIC_CREATE_EXTRA_ARGS`
78- ref-manual/variables.rst: document autotools class related variables
79- ref-manual/variables.rst: document missing SDK_*_ARCH variables
80- ref-manual/variables.rst: document the :term:`IMAGE_ROOTFS_MAXSIZE` variable
81- ref-manual/variables.rst: document the :term:`INITRAMFS_MAXSIZE` variable
82- ref-manual/variables.rst: improve the :term:`PKGV` documentation
83- ref-manual/variables.rst: update :term:`ROOT_HOME` documentation
84- ref-manual: kernel-fitimage.bbclass does not use :term:`SPL_SIGN_KEYNAME`
85- scripts/install-buildtools: Update to 5.0.9
86- sphinx-lint: missing space after literal
87- sphinx-lint: trailing whitespace
88- sphinx-lint: unbalanced inline literal markup
89- systemd: Password agents shouldn't be optional
90- systemd: upgrade to 255.18
91- test-manual/intro: remove Buildbot version used
92- tzdata/tzcode-native: upgrade 2025a -> 2025b
93- u-boot: ensure keys are generated before assembling U-Boot FIT image
94- util-linux: Add fix to isolate test fstab entries using CUSTOM_FSTAB
95- wic: bootimg-efi: Support + symbol in filenames
96
97
98Known Issues in Yocto-5.0.10
99~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100
101- There is an issue where the target libsoup-2.4 build may fail if apachectl is present on the build
102 host. The issue only affects test binaries which aren't actually used. The issue can be fixed by
103 disabling the tests or updating to more recent changes on the scarthgap branch which fix this.
104
105
106Contributors to Yocto-5.0.10
107~~~~~~~~~~~~~~~~~~~~~~~~~~~~
108
109Thanks to the following people who contributed to this release:
110
111- Adrian Freihofer
112- Aleksandar Nikolic
113- Alexander Kanavin
114- Alon Bar-Lev
115- Alper Ak
116- Andrew Kreimer
117- Antonin Godard
118- Archana Polampalli
119- Ashish Sharma
120- Changqing Li
121- Christos Gavros
122- Deepesh Varatharajan
123- Divya Chellam
124- Divyanshu Rathore
125- Enrico Jörns
126- Etienne Cordonnier
127- Guðni Már Gilbert
128- Haixiao Yan
129- Harish Sadineni
130- Igor Opaniuk
131- Jeroen Hofstee
132- Lee Chee Yang
133- Nguyen Dat Tho
134- Niko Mauno
135- Peter Marko
136- Praveen Kumar
137- Priyal Doshi
138- Rogerio Guerra Borin
139- Shubham Kulkarni
140- Soumya Sambu
141- Steve Sakoman
142- Sunil Dora
143- Trevor Woerner
144- Vijay Anusuri
145- Virendra Thakur
146- Vyacheslav Yurkov
147- Yi Zhao
148- Yogita Urade
149- rajmohan r
150
151Repositories / Downloads for Yocto-5.0.10
152~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153
154poky
155
156- Repository Location: :yocto_git:`/poky`
157- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
158- Tag: :yocto_git:`yocto-5.0.10 </poky/log/?h=yocto-5.0.10>`
159- Git Revision: :yocto_git:`ac257900c33754957b2696529682029d997a8f28 </poky/commit/?id=ac257900c33754957b2696529682029d997a8f28>`
160- Release Artefact: poky-ac257900c33754957b2696529682029d997a8f28
161- sha: ddca7e54b331e78214bea65b346320d4fbcddf4b51103bfbbd9fc3960f32cdc7
162- Download Locations:
163 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.10/poky-ac257900c33754957b2696529682029d997a8f28.tar.bz2
164 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.10/poky-ac257900c33754957b2696529682029d997a8f28.tar.bz2
165
166openembedded-core
167
168- Repository Location: :oe_git:`/openembedded-core`
169- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
170- Tag: :oe_git:`yocto-5.0.10 </openembedded-core/log/?h=yocto-5.0.10>`
171- Git Revision: :oe_git:`d5342ffc570d47a723b18297d75bd2f63c2088db </openembedded-core/commit/?id=d5342ffc570d47a723b18297d75bd2f63c2088db>`
172- Release Artefact: oecore-d5342ffc570d47a723b18297d75bd2f63c2088db
173- sha: daa62094f2327f4b3fbcc485e8964d1b86a4722f58fb37e0d8e8e9885094a262
174- Download Locations:
175 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.10/oecore-d5342ffc570d47a723b18297d75bd2f63c2088db.tar.bz2
176 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.10/oecore-d5342ffc570d47a723b18297d75bd2f63c2088db.tar.bz2
177
178meta-mingw
179
180- Repository Location: :yocto_git:`/meta-mingw`
181- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
182- Tag: :yocto_git:`yocto-5.0.10 </meta-mingw/log/?h=yocto-5.0.10>`
183- Git Revision: :yocto_git:`bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f </meta-mingw/commit/?id=bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f>`
184- Release Artefact: meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f
185- sha: ab073def6487f237ac125d239b3739bf02415270959546b6b287778664f0ae65
186- Download Locations:
187 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.10/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
188 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.10/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
189
190bitbake
191
192- Repository Location: :oe_git:`/bitbake`
193- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
194- Tag: :oe_git:`yocto-5.0.10 </bitbake/log/?h=yocto-5.0.10>`
195- Git Revision: :oe_git:`696c2c1ef095f8b11c7d2eff36fae50f58c62e5e </bitbake/commit/?id=696c2c1ef095f8b11c7d2eff36fae50f58c62e5e>`
196- Release Artefact: bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e
197- sha: fc83f879cd6dd14b9b7eba0161fec23ecc191fed0fb00556ba729dceef6c145f
198- Download Locations:
199 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.10/bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e.tar.bz2
200 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.10/bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e.tar.bz2
201
202yocto-docs
203
204- Repository Location: :yocto_git:`/yocto-docs`
205- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
206- Tag: :yocto_git:`yocto-5.0.10 </yocto-docs/log/?h=yocto-5.0.10>`
207- Git Revision: :yocto_git:`3996388e337377bedc113d072a51fe9d68dd40c6 </yocto-docs/commit/?id=3996388e337377bedc113d072a51fe9d68dd40c6>`
208
diff --git a/documentation/migration-guides/release-notes-5.0.2.rst b/documentation/migration-guides/release-notes-5.0.2.rst
index 820e33189e..b60fd73190 100644
--- a/documentation/migration-guides/release-notes-5.0.2.rst
+++ b/documentation/migration-guides/release-notes-5.0.2.rst
@@ -6,17 +6,17 @@ Release notes for Yocto-5.0.2 (Scarthgap)
6Security Fixes in Yocto-5.0.2 6Security Fixes in Yocto-5.0.2
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- cups: Fix :cve:`2024-35235` 9- cups: Fix :cve_nist:`2024-35235`
10- gcc: Fix :cve:`2024-0151` 10- gcc: Fix :cve_nist:`2024-0151`
11- gdk-pixbuf: Fix :cve:`2022-48622` 11- gdk-pixbuf: Fix :cve_nist:`2022-48622`
12- ghostscript: fix :cve_mitre:`2024-29510`, :cve_mitre:`2024-33869`, :cve_mitre:`2024-33870` and :cve_mitre:`2024-33871` 12- ghostscript: fix :cve_mitre:`2024-29510`, :cve_mitre:`2024-33869`, :cve_mitre:`2024-33870` and :cve_mitre:`2024-33871`
13- git: Fix :cve:`2024-32002`, :cve:`2024-32004`, :cve:`2024-32020`, :cve:`2024-32021` and :cve:`2024-32465` 13- git: Fix :cve_nist:`2024-32002`, :cve_nist:`2024-32004`, :cve_nist:`2024-32020`, :cve_nist:`2024-32021` and :cve_nist:`2024-32465`
14- glib-2.0: Fix :cve:`2024-34397` 14- glib-2.0: Fix :cve_nist:`2024-34397`
15- glibc: Fix :cve:`2024-2961`, :cve:`2024-33599`, :cve:`2024-33600`, :cve:`2024-33601` and :cve:`2024-33602` 15- glibc: Fix :cve_nist:`2024-2961`, :cve_nist:`2024-33599`, :cve_nist:`2024-33600`, :cve_nist:`2024-33601` and :cve_nist:`2024-33602`
16- ncurses: Fix :cve:`2023-45918` and :cve:`2023-50495` 16- ncurses: Fix :cve_nist:`2023-45918` and :cve_nist:`2023-50495`
17- openssl: Fix :cve:`2024-4603` and :cve_mitre:`2024-4741` 17- openssl: Fix :cve_nist:`2024-4603` and :cve_mitre:`2024-4741`
18- util-linux: Fix :cve:`2024-28085` 18- util-linux: Fix :cve_nist:`2024-28085`
19- xserver-xorg: Fix :cve:`2024-31080`, :cve:`2024-31081`, :cve:`2024-31082` and :cve:`2024-31083` 19- xserver-xorg: Fix :cve_nist:`2024-31080`, :cve_nist:`2024-31081`, :cve_nist:`2024-31082` and :cve_nist:`2024-31083`
20 20
21 21
22Fixes in Yocto-5.0.2 22Fixes in Yocto-5.0.2
@@ -44,7 +44,7 @@ Fixes in Yocto-5.0.2
44- bitbake: tests/fetch: Tweak test to match upstream repo url change 44- bitbake: tests/fetch: Tweak test to match upstream repo url change
45- bitbake: tests/fetch: Tweak to work on Fedora40 45- bitbake: tests/fetch: Tweak to work on Fedora40
46- build-appliance-image: Update to scarthgap head revision 46- build-appliance-image: Update to scarthgap head revision
47- busybox: update :cve:`2022-28391` patches upstream status 47- busybox: update :cve_nist:`2022-28391` patches upstream status
48- cdrtools-native: Fix build with GCC 14 48- cdrtools-native: Fix build with GCC 14
49- classes: image_types: apply EXTRA_IMAGECMD:squashfs* in oe_mksquashfs() 49- classes: image_types: apply EXTRA_IMAGECMD:squashfs* in oe_mksquashfs()
50- classes: image_types: quote variable assignment needed by dash 50- classes: image_types: quote variable assignment needed by dash
diff --git a/documentation/migration-guides/release-notes-5.0.3.rst b/documentation/migration-guides/release-notes-5.0.3.rst
index 5ed660c9ec..caf33c7c3f 100644
--- a/documentation/migration-guides/release-notes-5.0.3.rst
+++ b/documentation/migration-guides/release-notes-5.0.3.rst
@@ -6,30 +6,30 @@ Release notes for Yocto-5.0.3 (Scarthgap)
6Security Fixes in Yocto-5.0.3 6Security Fixes in Yocto-5.0.3
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8 8
9- bind: Fix :cve:`2024-0760`, :cve:`2024-1737`, :cve:`2024-1975` and :cve:`2024-4076` 9- bind: Fix :cve_nist:`2024-0760`, :cve_nist:`2024-1737`, :cve_nist:`2024-1975` and :cve_nist:`2024-4076`
10- busybox: Fix :cve:`2023-42366`, :cve:`2023-42364`, :cve:`2023-42365`, :cve:`2021-42380` and :cve:`2023-42363` 10- busybox: Fix :cve_nist:`2023-42366`, :cve_nist:`2023-42364`, :cve_nist:`2023-42365`, :cve_nist:`2021-42380` and :cve_nist:`2023-42363`
11- cpio: Ignore :cve:`2023-7216` 11- cpio: Ignore :cve_nist:`2023-7216`
12- curl: Fix :cve:`2024-6197` 12- curl: Fix :cve_nist:`2024-6197`
13- ffmpeg: Fix :cve:`2023-49502`, :cve:`2024-31578` and :cve:`2024-31582` 13- ffmpeg: Fix :cve_nist:`2023-49502`, :cve_nist:`2024-31578` and :cve_nist:`2024-31582`
14- ghostscript: Fix :cve:`2023-52722` 14- ghostscript: Fix :cve_nist:`2023-52722`
15- go: Fix :cve:`2024-24790` 15- go: Fix :cve_nist:`2024-24790`
16- gstreamer1.0-plugins-base: Fix :cve:`2024-4453` 16- gstreamer1.0-plugins-base: Fix :cve_nist:`2024-4453`
17- less: Fix :cve:`2024-32487` 17- less: Fix :cve_nist:`2024-32487`
18- libxml2: Fix :cve:`2024-34459` 18- libxml2: Fix :cve_nist:`2024-34459`
19- libyaml: Ignore :cve:`2024-35328` 19- libyaml: Ignore :cve_nist:`2024-35328`
20- linux-yocto/6.6: Fix :cve:`2024-23307`, :cve:`2024-24861`, :cve:`2024-26642`, :cve:`2024-26643`, :cve:`2024-26654`, :cve:`2024-26656` and :cve:`2023-47233` 20- linux-yocto/6.6: Fix :cve_nist:`2024-23307`, :cve_nist:`2024-24861`, :cve_nist:`2024-26642`, :cve_nist:`2024-26643`, :cve_nist:`2024-26654`, :cve_nist:`2024-26656` and :cve_nist:`2023-47233`
21- linux-yocto/6.6: Ignore :cve:`2019-25160`, :cve:`2019-25162`, :cve:`2020-36775`, :cve:`2020-36776`, :cve:`2020-36777`, :cve:`2020-36778`, :cve:`2020-36779`, :cve:`2020-36780`, :cve:`2020-36781`, :cve:`2020-36782`, :cve:`2020-36783`, :cve:`2020-36784`, :cve:`2020-36785`, :cve:`2020-36786`, :cve:`2020-36787`, :cve:`2021-46904`, :cve:`2021-46905`, :cve:`2021-46906`, :cve:`2021-46908`, :cve:`2021-46909`, :cve:`2021-46910`, :cve:`2021-46911`, :cve:`2021-46912`, :cve:`2021-46913`, :cve:`2021-46914`, :cve:`2021-46915`, :cve:`2021-46916`, :cve:`2021-46917`, :cve:`2021-46918`, :cve:`2021-46919`, :cve:`2021-46920`, :cve:`2021-46921`, :cve:`2021-46922`, :cve:`2021-46923`, :cve:`2021-46924`, :cve:`2021-46925`, :cve:`2021-46926`, :cve:`2021-46927`, :cve:`2021-46928`, :cve:`2021-46929`, :cve:`2021-46930`, :cve:`2021-46931`, :cve:`2021-46932`, :cve:`2021-46933`, :cve:`2021-46934`, :cve:`2021-46935`, :cve:`2021-46936`, :cve:`2021-46937`, :cve:`2021-46938`, :cve:`2021-46939`, :cve:`2021-46940`, :cve:`2021-46941`, :cve:`2021-46942`, :cve:`2021-46943`, :cve:`2021-46944`, :cve:`2021-46945`, :cve:`2021-46947`, :cve:`2021-46948`, :cve:`2021-46949`, :cve:`2021-46950`, :cve:`2021-46951`, :cve:`2021-46952`, :cve:`2021-46953`, :cve:`2021-46954`, :cve:`2021-46955`, :cve:`2021-46956`, :cve:`2021-46957`, :cve:`2021-46958`, :cve:`2021-46959`, :cve:`2021-46960`, :cve:`2021-46961`, :cve:`2021-46962`, :cve:`2021-46963`, :cve:`2021-46964`, :cve:`2021-46965`, :cve:`2021-46966`, :cve:`2021-46967`, :cve:`2021-46968`, :cve:`2021-46969`, :cve:`2021-46970`, :cve:`2021-46971`, :cve:`2021-46972`, :cve:`2021-46973`, :cve:`2021-46974`, :cve:`2021-46976`, :cve:`2021-46977`, :cve:`2021-46978`, :cve:`2021-46979`, :cve:`2021-46980`, :cve:`2021-46981`, :cve:`2021-46982`, :cve:`2021-46983`, :cve:`2021-46984`, :cve:`2021-46985`, :cve:`2021-46986`, :cve:`2021-46987`, :cve:`2021-46988`, :cve:`2021-46989`, :cve:`2021-46990`, :cve:`2021-46991`, :cve:`2021-46992`, :cve:`2021-46993`, :cve:`2021-46994`, :cve:`2021-46995`, :cve:`2021-46996`, :cve:`2021-46997`, :cve:`2021-46998`, :cve:`2021-46999`, :cve:`2021-47000`, :cve:`2021-47001`, :cve:`2021-47002`, :cve:`2021-47003`, :cve:`2021-47004`, :cve:`2021-47005`, :cve:`2021-47006`, :cve:`2021-47007`, :cve:`2021-47008`, :cve:`2021-47009`, :cve:`2021-47010`, :cve:`2021-47011`, :cve:`2021-47012`, :cve:`2021-47013`, :cve:`2021-47014`, :cve:`2021-47015`, :cve:`2021-47016`, :cve:`2021-47017`, :cve:`2021-47018`, :cve:`2021-47019`, :cve:`2021-47020`, :cve:`2021-47021`, :cve:`2021-47022`, :cve:`2021-47023`, :cve:`2021-47024`, :cve:`2021-47025`, :cve:`2021-47026`, :cve:`2021-47027`, :cve:`2021-47028`, :cve:`2021-47029`, :cve:`2021-47030`, :cve:`2021-47031`, :cve:`2021-47032`, :cve:`2021-47033`, :cve:`2021-47034`, :cve:`2021-47035`, :cve:`2021-47036`, :cve:`2021-47037`, :cve:`2021-47038`, :cve:`2021-47039`, :cve:`2021-47040`, :cve:`2021-47041`, :cve:`2021-47042`, :cve:`2021-47043`, :cve:`2021-47044`, :cve:`2021-47045`, :cve:`2021-47046`, :cve:`2021-47047`, :cve:`2021-47048`, :cve:`2021-47049`, :cve:`2021-47050`, :cve:`2021-47051`, :cve:`2021-47052`, :cve:`2021-47053`, :cve:`2021-47054`, :cve:`2021-47055`, :cve:`2021-47056`, :cve:`2021-47057`, :cve:`2021-47058`, :cve:`2021-47059`, :cve:`2021-47060`, :cve:`2021-47061`, :cve:`2021-47062`, :cve:`2021-47063`, :cve:`2021-47064`, :cve:`2021-47065`, :cve:`2021-47066`, :cve:`2021-47067`, :cve:`2021-47068`, :cve:`2021-47069`, :cve:`2021-47070`, :cve:`2021-47071`, :cve:`2021-47072`, :cve:`2021-47073`, :cve:`2021-47074`, :cve:`2021-47075`, :cve:`2021-47076`, :cve:`2021-47077`, :cve:`2021-47078`, :cve:`2021-47079`, :cve:`2021-47080`, :cve:`2021-47081`, :cve:`2021-47082`, :cve:`2021-47083`, :cve:`2021-47086`, :cve:`2021-47087`, :cve:`2021-47088`, :cve:`2021-47089`, :cve:`2021-47090`, :cve:`2021-47091`, :cve:`2021-47092`, :cve:`2021-47093`, :cve:`2021-47094`, :cve:`2021-47095`, :cve:`2021-47096`, :cve:`2021-47097`, :cve:`2021-47098`, :cve:`2021-47099`, :cve:`2021-47100`, :cve:`2021-47101`, :cve:`2021-47102`, :cve:`2021-47103`, :cve:`2021-47104`, :cve:`2021-47105`, :cve:`2021-47106`, :cve:`2021-47107`, :cve:`2021-47108`, :cve:`2021-47109`, :cve:`2021-47110`, :cve:`2021-47111`, :cve:`2021-47112`, :cve:`2021-47113`, :cve:`2021-47114`, :cve:`2021-47116`, :cve:`2021-47117`, :cve:`2021-47118`, :cve:`2021-47119`, :cve:`2021-47120`, :cve:`2021-47121`, :cve:`2021-47122`, :cve:`2021-47123`, :cve:`2021-47124`, :cve:`2021-47125`, :cve:`2021-47126`, :cve:`2021-47127`, :cve:`2021-47128`, :cve:`2021-47129`, :cve:`2021-47130`, :cve:`2021-47131`, :cve:`2021-47132`, :cve:`2021-47133`, :cve:`2021-47134`, :cve:`2021-47135`, :cve:`2021-47136`, :cve:`2021-47137`, :cve:`2021-47138`, :cve:`2021-47139`, :cve:`2021-47140`, :cve:`2021-47141`, :cve:`2021-47142`, :cve:`2021-47143`, :cve:`2021-47144`, :cve:`2021-47145`, :cve:`2021-47146`, :cve:`2021-47147`, :cve:`2021-47148`, :cve:`2021-47149`, :cve:`2021-47150`, :cve:`2021-47151`, :cve:`2021-47152`, :cve:`2021-47153`, :cve:`2021-47158`, :cve:`2021-47159`, :cve:`2021-47160`, :cve:`2021-47161`, :cve:`2021-47162`, :cve:`2021-47163`, :cve:`2021-47164`, :cve:`2021-47165`, :cve:`2021-47166`, :cve:`2021-47167`, :cve:`2021-47168`, :cve:`2021-47169`, :cve:`2021-47170`, :cve:`2021-47171`, :cve:`2021-47172`, :cve:`2021-47173`, :cve:`2021-47174`, :cve:`2021-47175`, :cve:`2021-47176`, :cve:`2021-47177`, :cve:`2021-47178`, :cve:`2021-47179`, :cve:`2021-47180`, :cve:`2022-48626`, :cve:`2022-48627`, :cve:`2022-48628`, :cve:`2022-48629` and :cve:`2022-48630` 21- linux-yocto/6.6: Ignore :cve_nist:`2019-25160`, :cve_nist:`2019-25162`, :cve_nist:`2020-36775`, :cve_nist:`2020-36776`, :cve_nist:`2020-36777`, :cve_nist:`2020-36778`, :cve_nist:`2020-36779`, :cve_nist:`2020-36780`, :cve_nist:`2020-36781`, :cve_nist:`2020-36782`, :cve_nist:`2020-36783`, :cve_nist:`2020-36784`, :cve_nist:`2020-36785`, :cve_nist:`2020-36786`, :cve_nist:`2020-36787`, :cve_nist:`2021-46904`, :cve_nist:`2021-46905`, :cve_nist:`2021-46906`, :cve_nist:`2021-46908`, :cve_nist:`2021-46909`, :cve_nist:`2021-46910`, :cve_nist:`2021-46911`, :cve_nist:`2021-46912`, :cve_nist:`2021-46913`, :cve_nist:`2021-46914`, :cve_nist:`2021-46915`, :cve_nist:`2021-46916`, :cve_nist:`2021-46917`, :cve_nist:`2021-46918`, :cve_nist:`2021-46919`, :cve_nist:`2021-46920`, :cve_nist:`2021-46921`, :cve_nist:`2021-46922`, :cve_nist:`2021-46923`, :cve_nist:`2021-46924`, :cve_nist:`2021-46925`, :cve_nist:`2021-46926`, :cve_nist:`2021-46927`, :cve_nist:`2021-46928`, :cve_nist:`2021-46929`, :cve_nist:`2021-46930`, :cve_nist:`2021-46931`, :cve_nist:`2021-46932`, :cve_nist:`2021-46933`, :cve_nist:`2021-46934`, :cve_nist:`2021-46935`, :cve_nist:`2021-46936`, :cve_nist:`2021-46937`, :cve_nist:`2021-46938`, :cve_nist:`2021-46939`, :cve_nist:`2021-46940`, :cve_nist:`2021-46941`, :cve_nist:`2021-46942`, :cve_nist:`2021-46943`, :cve_nist:`2021-46944`, :cve_nist:`2021-46945`, :cve_nist:`2021-46947`, :cve_nist:`2021-46948`, :cve_nist:`2021-46949`, :cve_nist:`2021-46950`, :cve_nist:`2021-46951`, :cve_nist:`2021-46952`, :cve_nist:`2021-46953`, :cve_nist:`2021-46954`, :cve_nist:`2021-46955`, :cve_nist:`2021-46956`, :cve_nist:`2021-46957`, :cve_nist:`2021-46958`, :cve_nist:`2021-46959`, :cve_nist:`2021-46960`, :cve_nist:`2021-46961`, :cve_nist:`2021-46962`, :cve_nist:`2021-46963`, :cve_nist:`2021-46964`, :cve_nist:`2021-46965`, :cve_nist:`2021-46966`, :cve_nist:`2021-46967`, :cve_nist:`2021-46968`, :cve_nist:`2021-46969`, :cve_nist:`2021-46970`, :cve_nist:`2021-46971`, :cve_nist:`2021-46972`, :cve_nist:`2021-46973`, :cve_nist:`2021-46974`, :cve_nist:`2021-46976`, :cve_nist:`2021-46977`, :cve_nist:`2021-46978`, :cve_nist:`2021-46979`, :cve_nist:`2021-46980`, :cve_nist:`2021-46981`, :cve_nist:`2021-46982`, :cve_nist:`2021-46983`, :cve_nist:`2021-46984`, :cve_nist:`2021-46985`, :cve_nist:`2021-46986`, :cve_nist:`2021-46987`, :cve_nist:`2021-46988`, :cve_nist:`2021-46989`, :cve_nist:`2021-46990`, :cve_nist:`2021-46991`, :cve_nist:`2021-46992`, :cve_nist:`2021-46993`, :cve_nist:`2021-46994`, :cve_nist:`2021-46995`, :cve_nist:`2021-46996`, :cve_nist:`2021-46997`, :cve_nist:`2021-46998`, :cve_nist:`2021-46999`, :cve_nist:`2021-47000`, :cve_nist:`2021-47001`, :cve_nist:`2021-47002`, :cve_nist:`2021-47003`, :cve_nist:`2021-47004`, :cve_nist:`2021-47005`, :cve_nist:`2021-47006`, :cve_nist:`2021-47007`, :cve_nist:`2021-47008`, :cve_nist:`2021-47009`, :cve_nist:`2021-47010`, :cve_nist:`2021-47011`, :cve_nist:`2021-47012`, :cve_nist:`2021-47013`, :cve_nist:`2021-47014`, :cve_nist:`2021-47015`, :cve_nist:`2021-47016`, :cve_nist:`2021-47017`, :cve_nist:`2021-47018`, :cve_nist:`2021-47019`, :cve_nist:`2021-47020`, :cve_nist:`2021-47021`, :cve_nist:`2021-47022`, :cve_nist:`2021-47023`, :cve_nist:`2021-47024`, :cve_nist:`2021-47025`, :cve_nist:`2021-47026`, :cve_nist:`2021-47027`, :cve_nist:`2021-47028`, :cve_nist:`2021-47029`, :cve_nist:`2021-47030`, :cve_nist:`2021-47031`, :cve_nist:`2021-47032`, :cve_nist:`2021-47033`, :cve_nist:`2021-47034`, :cve_nist:`2021-47035`, :cve_nist:`2021-47036`, :cve_nist:`2021-47037`, :cve_nist:`2021-47038`, :cve_nist:`2021-47039`, :cve_nist:`2021-47040`, :cve_nist:`2021-47041`, :cve_nist:`2021-47042`, :cve_nist:`2021-47043`, :cve_nist:`2021-47044`, :cve_nist:`2021-47045`, :cve_nist:`2021-47046`, :cve_nist:`2021-47047`, :cve_nist:`2021-47048`, :cve_nist:`2021-47049`, :cve_nist:`2021-47050`, :cve_nist:`2021-47051`, :cve_nist:`2021-47052`, :cve_nist:`2021-47053`, :cve_nist:`2021-47054`, :cve_nist:`2021-47055`, :cve_nist:`2021-47056`, :cve_nist:`2021-47057`, :cve_nist:`2021-47058`, :cve_nist:`2021-47059`, :cve_nist:`2021-47060`, :cve_nist:`2021-47061`, :cve_nist:`2021-47062`, :cve_nist:`2021-47063`, :cve_nist:`2021-47064`, :cve_nist:`2021-47065`, :cve_nist:`2021-47066`, :cve_nist:`2021-47067`, :cve_nist:`2021-47068`, :cve_nist:`2021-47069`, :cve_nist:`2021-47070`, :cve_nist:`2021-47071`, :cve_nist:`2021-47072`, :cve_nist:`2021-47073`, :cve_nist:`2021-47074`, :cve_nist:`2021-47075`, :cve_nist:`2021-47076`, :cve_nist:`2021-47077`, :cve_nist:`2021-47078`, :cve_nist:`2021-47079`, :cve_nist:`2021-47080`, :cve_nist:`2021-47081`, :cve_nist:`2021-47082`, :cve_nist:`2021-47083`, :cve_nist:`2021-47086`, :cve_nist:`2021-47087`, :cve_nist:`2021-47088`, :cve_nist:`2021-47089`, :cve_nist:`2021-47090`, :cve_nist:`2021-47091`, :cve_nist:`2021-47092`, :cve_nist:`2021-47093`, :cve_nist:`2021-47094`, :cve_nist:`2021-47095`, :cve_nist:`2021-47096`, :cve_nist:`2021-47097`, :cve_nist:`2021-47098`, :cve_nist:`2021-47099`, :cve_nist:`2021-47100`, :cve_nist:`2021-47101`, :cve_nist:`2021-47102`, :cve_nist:`2021-47103`, :cve_nist:`2021-47104`, :cve_nist:`2021-47105`, :cve_nist:`2021-47106`, :cve_nist:`2021-47107`, :cve_nist:`2021-47108`, :cve_nist:`2021-47109`, :cve_nist:`2021-47110`, :cve_nist:`2021-47111`, :cve_nist:`2021-47112`, :cve_nist:`2021-47113`, :cve_nist:`2021-47114`, :cve_nist:`2021-47116`, :cve_nist:`2021-47117`, :cve_nist:`2021-47118`, :cve_nist:`2021-47119`, :cve_nist:`2021-47120`, :cve_nist:`2021-47121`, :cve_nist:`2021-47122`, :cve_nist:`2021-47123`, :cve_nist:`2021-47124`, :cve_nist:`2021-47125`, :cve_nist:`2021-47126`, :cve_nist:`2021-47127`, :cve_nist:`2021-47128`, :cve_nist:`2021-47129`, :cve_nist:`2021-47130`, :cve_nist:`2021-47131`, :cve_nist:`2021-47132`, :cve_nist:`2021-47133`, :cve_nist:`2021-47134`, :cve_nist:`2021-47135`, :cve_nist:`2021-47136`, :cve_nist:`2021-47137`, :cve_nist:`2021-47138`, :cve_nist:`2021-47139`, :cve_nist:`2021-47140`, :cve_nist:`2021-47141`, :cve_nist:`2021-47142`, :cve_nist:`2021-47143`, :cve_nist:`2021-47144`, :cve_nist:`2021-47145`, :cve_nist:`2021-47146`, :cve_nist:`2021-47147`, :cve_nist:`2021-47148`, :cve_nist:`2021-47149`, :cve_nist:`2021-47150`, :cve_nist:`2021-47151`, :cve_nist:`2021-47152`, :cve_nist:`2021-47153`, :cve_nist:`2021-47158`, :cve_nist:`2021-47159`, :cve_nist:`2021-47160`, :cve_nist:`2021-47161`, :cve_nist:`2021-47162`, :cve_nist:`2021-47163`, :cve_nist:`2021-47164`, :cve_nist:`2021-47165`, :cve_nist:`2021-47166`, :cve_nist:`2021-47167`, :cve_nist:`2021-47168`, :cve_nist:`2021-47169`, :cve_nist:`2021-47170`, :cve_nist:`2021-47171`, :cve_nist:`2021-47172`, :cve_nist:`2021-47173`, :cve_nist:`2021-47174`, :cve_nist:`2021-47175`, :cve_nist:`2021-47176`, :cve_nist:`2021-47177`, :cve_nist:`2021-47178`, :cve_nist:`2021-47179`, :cve_nist:`2021-47180`, :cve_nist:`2022-48626`, :cve_nist:`2022-48627`, :cve_nist:`2022-48628`, :cve_nist:`2022-48629` and :cve_nist:`2022-48630`
22- linux-yocto/6.6 (cont.): Ignore :cve:`2023-6270`, :cve:`2023-6356`, :cve:`2023-6536`, :cve:`2023-7042`, :cve:`2023-28746`, :cve:`2023-52465`, :cve:`2023-52467`, :cve:`2023-52468`, :cve:`2023-52469`, :cve:`2023-52470`, :cve:`2023-52471`, :cve:`2023-52472`, :cve:`2023-52473`, :cve:`2023-52474`, :cve:`2023-52475`, :cve:`2023-52476`, :cve:`2023-52477`, :cve:`2023-52478`, :cve:`2023-52479`, :cve:`2023-52480`, :cve:`2023-52481`, :cve:`2023-52482`, :cve:`2023-52483`, :cve:`2023-52484`, :cve:`2023-52486`, :cve:`2023-52487`, :cve:`2023-52488`, :cve:`2023-52489`, :cve:`2023-52490`, :cve:`2023-52491`, :cve:`2023-52492`, :cve:`2023-52493`, :cve:`2023-52494`, :cve:`2023-52495`, :cve:`2023-52497`, :cve:`2023-52498`, :cve:`2023-52499`, :cve:`2023-52500`, :cve:`2023-52501`, :cve:`2023-52502`, :cve:`2023-52503`, :cve:`2023-52504`, :cve:`2023-52505`, :cve:`2023-52506`, :cve:`2023-52507`, :cve:`2023-52508`, :cve:`2023-52509`, :cve:`2023-52510`, :cve:`2023-52511`, :cve:`2023-52512`, :cve:`2023-52513`, :cve:`2023-52515`, :cve:`2023-52516`, :cve:`2023-52517`, :cve:`2023-52518`, :cve:`2023-52519`, :cve:`2023-52520`, :cve:`2023-52522`, :cve:`2023-52523`, :cve:`2023-52524`, :cve:`2023-52525`, :cve:`2023-52526`, :cve:`2023-52527`, :cve:`2023-52528`, :cve:`2023-52529`, :cve:`2023-52530`, :cve:`2023-52531`, :cve:`2023-52532`, :cve:`2023-52559`, :cve:`2023-52560`, :cve:`2023-52561`, :cve:`2023-52562`, :cve:`2023-52563`, :cve:`2023-52564`, :cve:`2023-52565`, :cve:`2023-52566`, :cve:`2023-52567`, :cve:`2023-52568`, :cve:`2023-52569`, :cve:`2023-52570`, :cve:`2023-52571`, :cve:`2023-52572`, :cve:`2023-52573`, :cve:`2023-52574`, :cve:`2023-52575`, :cve:`2023-52576`, :cve:`2023-52577`, :cve:`2023-52578`, :cve:`2023-52580`, :cve:`2023-52581`, :cve:`2023-52582`, :cve:`2023-52583`, :cve:`2023-52584`, :cve:`2023-52587`, :cve:`2023-52588`, :cve:`2023-52589`, :cve:`2023-52591`, :cve:`2023-52593`, :cve:`2023-52594`, :cve:`2023-52595`, :cve:`2023-52596`, :cve:`2023-52597`, :cve:`2023-52598`, :cve:`2023-52599`, :cve:`2023-52600`, :cve:`2023-52601`, :cve:`2023-52602`, :cve:`2023-52603`, :cve:`2023-52604`, :cve:`2023-52606`, :cve:`2023-52607`, :cve:`2023-52608`, :cve:`2023-52609`, :cve:`2023-52610`, :cve:`2023-52611`, :cve:`2023-52612`, :cve:`2023-52613`, :cve:`2023-52614`, :cve:`2023-52615`, :cve:`2023-52616`, :cve:`2023-52617`, :cve:`2023-52618`, :cve:`2023-52619`, :cve:`2023-52620`, :cve:`2023-52621`, :cve:`2023-52622`, :cve:`2023-52623`, :cve:`2023-52626`, :cve:`2023-52627`, :cve:`2023-52628`, :cve:`2023-52629`, :cve:`2023-52630`, :cve:`2023-52631`, :cve:`2023-52632`, :cve:`2023-52633`, :cve:`2023-52635`, :cve:`2023-52636`, :cve:`2023-52637`, :cve:`2023-52638`, :cve:`2023-52639`, :cve:`2023-52640`, :cve:`2023-52641`, :cve:`2024-0841`, :cve:`2024-22099`, :cve:`2024-23196`, :cve:`2024-26600`, :cve:`2024-26601`, :cve:`2024-26602`, :cve:`2024-26603`, :cve:`2024-26604`, :cve:`2024-26605`, :cve:`2024-26606`, :cve:`2024-26607`, :cve:`2024-26608`, :cve:`2024-26610`, :cve:`2024-26611`, :cve:`2024-26612`, :cve:`2024-26614`, :cve:`2024-26615`, :cve:`2024-26616`, :cve:`2024-26617`, :cve:`2024-26618`, :cve:`2024-26619`, :cve:`2024-26620`, :cve:`2024-26621`, :cve:`2024-26622`, :cve:`2024-26623`, :cve:`2024-26625`, :cve:`2024-26626`, :cve:`2024-26627`, :cve:`2024-26629`, :cve:`2024-26630`, :cve:`2024-26631`, :cve:`2024-26632`, :cve:`2024-26633`, :cve:`2024-26634`, :cve:`2024-26635`, :cve:`2024-26636`, :cve:`2024-26637`, :cve:`2024-26638`, :cve:`2024-26639`, :cve:`2024-26640`, :cve:`2024-26641`, :cve:`2024-26644`, :cve:`2024-26645`, :cve:`2024-26646`, :cve:`2024-26647`, :cve:`2024-26648`, :cve:`2024-26649`, :cve:`2024-26650`, :cve:`2024-26651`, :cve:`2024-26652`, :cve:`2024-26653`, :cve:`2024-26657`, :cve:`2024-26659`, :cve:`2024-26660`, :cve:`2024-26661`, :cve:`2024-26662`, :cve:`2024-26663`, :cve:`2024-26664`, :cve:`2024-26665`, :cve:`2024-26666`, :cve:`2024-26667`, :cve:`2024-26668`, :cve:`2024-26669`, :cve:`2024-26670`, :cve:`2024-26671`, :cve:`2024-26673`, :cve:`2024-26674`, :cve:`2024-26675`, :cve:`2024-26676`, :cve:`2024-26677`, :cve:`2024-26678`, :cve:`2024-26679`, :cve:`2024-26680`, :cve:`2024-26681`, :cve:`2024-26682`, :cve:`2024-26683`, :cve:`2024-26684`, :cve:`2024-26685`, :cve:`2024-26687`, :cve:`2024-26688`, :cve:`2024-26689`, :cve:`2024-26690`, :cve:`2024-26691`, :cve:`2024-26692`, :cve:`2024-26693`, :cve:`2024-26694`, :cve:`2024-26695`, :cve:`2024-26696`, :cve:`2024-26697`, :cve:`2024-26698`, :cve:`2024-26700`, :cve:`2024-26702`, :cve:`2024-26703`, :cve:`2024-26704`, :cve:`2024-26705`, :cve:`2024-26706`, :cve:`2024-26707`, :cve:`2024-26708`, :cve:`2024-26709`, :cve:`2024-26710`, :cve:`2024-26711`, :cve:`2024-26712`, :cve:`2024-26713`, :cve:`2024-26714`, :cve:`2024-26715`, :cve:`2024-26716`, :cve:`2024-26717`, :cve:`2024-26718`, :cve:`2024-26719`, :cve:`2024-26720`, :cve:`2024-26721`, :cve:`2024-26722`, :cve:`2024-26723`, :cve:`2024-26724`, :cve:`2024-26725`, :cve:`2024-26726`, :cve:`2024-26727`, :cve:`2024-26728`, :cve:`2024-26729`, :cve:`2024-26730`, :cve:`2024-26731`, :cve:`2024-26732`, :cve:`2024-26733`, :cve:`2024-26734`, :cve:`2024-26735`, :cve:`2024-26736`, :cve:`2024-26737`, :cve:`2024-26738`, :cve:`2024-26739`, :cve:`2024-26740`, :cve:`2024-26741`, :cve:`2024-26742`, :cve:`2024-26743`, :cve:`2024-26744`, :cve:`2024-26745`, :cve:`2024-26746`, :cve:`2024-26747`, :cve:`2024-26748`, :cve:`2024-26749`, :cve:`2024-26750`, :cve:`2024-26751`, :cve:`2024-26752`, :cve:`2024-26753`, :cve:`2024-26754`, :cve:`2024-26755`, :cve:`2024-26759`, :cve:`2024-26760`, :cve:`2024-26761`, :cve:`2024-26762`, :cve:`2024-26763`, :cve:`2024-26764`, :cve:`2024-26765`, :cve:`2024-26766`, :cve:`2024-26767`, :cve:`2024-26768`, :cve:`2024-26769`, :cve:`2024-26770`, :cve:`2024-26771`, :cve:`2024-26772`, :cve:`2024-26773`, :cve:`2024-26774`, :cve:`2024-26775`, :cve:`2024-26776`, :cve:`2024-26777`, :cve:`2024-26778`, :cve:`2024-26779`, :cve:`2024-26780`, :cve:`2024-26781`, :cve:`2024-26782`, :cve:`2024-26783`, :cve:`2024-26786`, :cve:`2024-26787`, :cve:`2024-26788`, :cve:`2024-26789`, :cve:`2024-26790`, :cve:`2024-26791`, :cve:`2024-26792`, :cve:`2024-26793`, :cve:`2024-26794`, :cve:`2024-26795`, :cve:`2024-26796`, :cve:`2024-26798`, :cve:`2024-26799`, :cve:`2024-26800`, :cve:`2024-26801`, :cve:`2024-26802`, :cve:`2024-26803`, :cve:`2024-26804`, :cve:`2024-26805`, :cve:`2024-26807`, :cve:`2024-26808` and :cve:`2024-26809` 22- linux-yocto/6.6 (cont.): Ignore :cve_nist:`2023-6270`, :cve_nist:`2023-6356`, :cve_nist:`2023-6536`, :cve_nist:`2023-7042`, :cve_nist:`2023-28746`, :cve_nist:`2023-52465`, :cve_nist:`2023-52467`, :cve_nist:`2023-52468`, :cve_nist:`2023-52469`, :cve_nist:`2023-52470`, :cve_nist:`2023-52471`, :cve_nist:`2023-52472`, :cve_nist:`2023-52473`, :cve_nist:`2023-52474`, :cve_nist:`2023-52475`, :cve_nist:`2023-52476`, :cve_nist:`2023-52477`, :cve_nist:`2023-52478`, :cve_nist:`2023-52479`, :cve_nist:`2023-52480`, :cve_nist:`2023-52481`, :cve_nist:`2023-52482`, :cve_nist:`2023-52483`, :cve_nist:`2023-52484`, :cve_nist:`2023-52486`, :cve_nist:`2023-52487`, :cve_nist:`2023-52488`, :cve_nist:`2023-52489`, :cve_nist:`2023-52490`, :cve_nist:`2023-52491`, :cve_nist:`2023-52492`, :cve_nist:`2023-52493`, :cve_nist:`2023-52494`, :cve_nist:`2023-52495`, :cve_nist:`2023-52497`, :cve_nist:`2023-52498`, :cve_nist:`2023-52499`, :cve_nist:`2023-52500`, :cve_nist:`2023-52501`, :cve_nist:`2023-52502`, :cve_nist:`2023-52503`, :cve_nist:`2023-52504`, :cve_nist:`2023-52505`, :cve_nist:`2023-52506`, :cve_nist:`2023-52507`, :cve_nist:`2023-52508`, :cve_nist:`2023-52509`, :cve_nist:`2023-52510`, :cve_nist:`2023-52511`, :cve_nist:`2023-52512`, :cve_nist:`2023-52513`, :cve_nist:`2023-52515`, :cve_nist:`2023-52516`, :cve_nist:`2023-52517`, :cve_nist:`2023-52518`, :cve_nist:`2023-52519`, :cve_nist:`2023-52520`, :cve_nist:`2023-52522`, :cve_nist:`2023-52523`, :cve_nist:`2023-52524`, :cve_nist:`2023-52525`, :cve_nist:`2023-52526`, :cve_nist:`2023-52527`, :cve_nist:`2023-52528`, :cve_nist:`2023-52529`, :cve_nist:`2023-52530`, :cve_nist:`2023-52531`, :cve_nist:`2023-52532`, :cve_nist:`2023-52559`, :cve_nist:`2023-52560`, :cve_nist:`2023-52561`, :cve_nist:`2023-52562`, :cve_nist:`2023-52563`, :cve_nist:`2023-52564`, :cve_nist:`2023-52565`, :cve_nist:`2023-52566`, :cve_nist:`2023-52567`, :cve_nist:`2023-52568`, :cve_nist:`2023-52569`, :cve_nist:`2023-52570`, :cve_nist:`2023-52571`, :cve_nist:`2023-52572`, :cve_nist:`2023-52573`, :cve_nist:`2023-52574`, :cve_nist:`2023-52575`, :cve_nist:`2023-52576`, :cve_nist:`2023-52577`, :cve_nist:`2023-52578`, :cve_nist:`2023-52580`, :cve_nist:`2023-52581`, :cve_nist:`2023-52582`, :cve_nist:`2023-52583`, :cve_nist:`2023-52584`, :cve_nist:`2023-52587`, :cve_nist:`2023-52588`, :cve_nist:`2023-52589`, :cve_nist:`2023-52591`, :cve_nist:`2023-52593`, :cve_nist:`2023-52594`, :cve_nist:`2023-52595`, :cve_nist:`2023-52596`, :cve_nist:`2023-52597`, :cve_nist:`2023-52598`, :cve_nist:`2023-52599`, :cve_nist:`2023-52600`, :cve_nist:`2023-52601`, :cve_nist:`2023-52602`, :cve_nist:`2023-52603`, :cve_nist:`2023-52604`, :cve_nist:`2023-52606`, :cve_nist:`2023-52607`, :cve_nist:`2023-52608`, :cve_nist:`2023-52609`, :cve_nist:`2023-52610`, :cve_nist:`2023-52611`, :cve_nist:`2023-52612`, :cve_nist:`2023-52613`, :cve_nist:`2023-52614`, :cve_nist:`2023-52615`, :cve_nist:`2023-52616`, :cve_nist:`2023-52617`, :cve_nist:`2023-52618`, :cve_nist:`2023-52619`, :cve_nist:`2023-52620`, :cve_nist:`2023-52621`, :cve_nist:`2023-52622`, :cve_nist:`2023-52623`, :cve_nist:`2023-52626`, :cve_nist:`2023-52627`, :cve_nist:`2023-52628`, :cve_nist:`2023-52629`, :cve_nist:`2023-52630`, :cve_nist:`2023-52631`, :cve_nist:`2023-52632`, :cve_nist:`2023-52633`, :cve_nist:`2023-52635`, :cve_nist:`2023-52636`, :cve_nist:`2023-52637`, :cve_nist:`2023-52638`, :cve_nist:`2023-52639`, :cve_nist:`2023-52640`, :cve_nist:`2023-52641`, :cve_nist:`2024-0841`, :cve_nist:`2024-22099`, :cve_nist:`2024-23196`, :cve_nist:`2024-26600`, :cve_nist:`2024-26601`, :cve_nist:`2024-26602`, :cve_nist:`2024-26603`, :cve_nist:`2024-26604`, :cve_nist:`2024-26605`, :cve_nist:`2024-26606`, :cve_nist:`2024-26607`, :cve_nist:`2024-26608`, :cve_nist:`2024-26610`, :cve_nist:`2024-26611`, :cve_nist:`2024-26612`, :cve_nist:`2024-26614`, :cve_nist:`2024-26615`, :cve_nist:`2024-26616`, :cve_nist:`2024-26617`, :cve_nist:`2024-26618`, :cve_nist:`2024-26619`, :cve_nist:`2024-26620`, :cve_nist:`2024-26621`, :cve_nist:`2024-26622`, :cve_nist:`2024-26623`, :cve_nist:`2024-26625`, :cve_nist:`2024-26626`, :cve_nist:`2024-26627`, :cve_nist:`2024-26629`, :cve_nist:`2024-26630`, :cve_nist:`2024-26631`, :cve_nist:`2024-26632`, :cve_nist:`2024-26633`, :cve_nist:`2024-26634`, :cve_nist:`2024-26635`, :cve_nist:`2024-26636`, :cve_nist:`2024-26637`, :cve_nist:`2024-26638`, :cve_nist:`2024-26639`, :cve_nist:`2024-26640`, :cve_nist:`2024-26641`, :cve_nist:`2024-26644`, :cve_nist:`2024-26645`, :cve_nist:`2024-26646`, :cve_nist:`2024-26647`, :cve_nist:`2024-26648`, :cve_nist:`2024-26649`, :cve_nist:`2024-26650`, :cve_nist:`2024-26651`, :cve_nist:`2024-26652`, :cve_nist:`2024-26653`, :cve_nist:`2024-26657`, :cve_nist:`2024-26659`, :cve_nist:`2024-26660`, :cve_nist:`2024-26661`, :cve_nist:`2024-26662`, :cve_nist:`2024-26663`, :cve_nist:`2024-26664`, :cve_nist:`2024-26665`, :cve_nist:`2024-26666`, :cve_nist:`2024-26667`, :cve_nist:`2024-26668`, :cve_nist:`2024-26669`, :cve_nist:`2024-26670`, :cve_nist:`2024-26671`, :cve_nist:`2024-26673`, :cve_nist:`2024-26674`, :cve_nist:`2024-26675`, :cve_nist:`2024-26676`, :cve_nist:`2024-26677`, :cve_nist:`2024-26678`, :cve_nist:`2024-26679`, :cve_nist:`2024-26680`, :cve_nist:`2024-26681`, :cve_nist:`2024-26682`, :cve_nist:`2024-26683`, :cve_nist:`2024-26684`, :cve_nist:`2024-26685`, :cve_nist:`2024-26687`, :cve_nist:`2024-26688`, :cve_nist:`2024-26689`, :cve_nist:`2024-26690`, :cve_nist:`2024-26691`, :cve_nist:`2024-26692`, :cve_nist:`2024-26693`, :cve_nist:`2024-26694`, :cve_nist:`2024-26695`, :cve_nist:`2024-26696`, :cve_nist:`2024-26697`, :cve_nist:`2024-26698`, :cve_nist:`2024-26700`, :cve_nist:`2024-26702`, :cve_nist:`2024-26703`, :cve_nist:`2024-26704`, :cve_nist:`2024-26705`, :cve_nist:`2024-26706`, :cve_nist:`2024-26707`, :cve_nist:`2024-26708`, :cve_nist:`2024-26709`, :cve_nist:`2024-26710`, :cve_nist:`2024-26711`, :cve_nist:`2024-26712`, :cve_nist:`2024-26713`, :cve_nist:`2024-26714`, :cve_nist:`2024-26715`, :cve_nist:`2024-26716`, :cve_nist:`2024-26717`, :cve_nist:`2024-26718`, :cve_nist:`2024-26719`, :cve_nist:`2024-26720`, :cve_nist:`2024-26721`, :cve_nist:`2024-26722`, :cve_nist:`2024-26723`, :cve_nist:`2024-26724`, :cve_nist:`2024-26725`, :cve_nist:`2024-26726`, :cve_nist:`2024-26727`, :cve_nist:`2024-26728`, :cve_nist:`2024-26729`, :cve_nist:`2024-26730`, :cve_nist:`2024-26731`, :cve_nist:`2024-26732`, :cve_nist:`2024-26733`, :cve_nist:`2024-26734`, :cve_nist:`2024-26735`, :cve_nist:`2024-26736`, :cve_nist:`2024-26737`, :cve_nist:`2024-26738`, :cve_nist:`2024-26739`, :cve_nist:`2024-26740`, :cve_nist:`2024-26741`, :cve_nist:`2024-26742`, :cve_nist:`2024-26743`, :cve_nist:`2024-26744`, :cve_nist:`2024-26745`, :cve_nist:`2024-26746`, :cve_nist:`2024-26747`, :cve_nist:`2024-26748`, :cve_nist:`2024-26749`, :cve_nist:`2024-26750`, :cve_nist:`2024-26751`, :cve_nist:`2024-26752`, :cve_nist:`2024-26753`, :cve_nist:`2024-26754`, :cve_nist:`2024-26755`, :cve_nist:`2024-26759`, :cve_nist:`2024-26760`, :cve_nist:`2024-26761`, :cve_nist:`2024-26762`, :cve_nist:`2024-26763`, :cve_nist:`2024-26764`, :cve_nist:`2024-26765`, :cve_nist:`2024-26766`, :cve_nist:`2024-26767`, :cve_nist:`2024-26768`, :cve_nist:`2024-26769`, :cve_nist:`2024-26770`, :cve_nist:`2024-26771`, :cve_nist:`2024-26772`, :cve_nist:`2024-26773`, :cve_nist:`2024-26774`, :cve_nist:`2024-26775`, :cve_nist:`2024-26776`, :cve_nist:`2024-26777`, :cve_nist:`2024-26778`, :cve_nist:`2024-26779`, :cve_nist:`2024-26780`, :cve_nist:`2024-26781`, :cve_nist:`2024-26782`, :cve_nist:`2024-26783`, :cve_nist:`2024-26786`, :cve_nist:`2024-26787`, :cve_nist:`2024-26788`, :cve_nist:`2024-26789`, :cve_nist:`2024-26790`, :cve_nist:`2024-26791`, :cve_nist:`2024-26792`, :cve_nist:`2024-26793`, :cve_nist:`2024-26794`, :cve_nist:`2024-26795`, :cve_nist:`2024-26796`, :cve_nist:`2024-26798`, :cve_nist:`2024-26799`, :cve_nist:`2024-26800`, :cve_nist:`2024-26801`, :cve_nist:`2024-26802`, :cve_nist:`2024-26803`, :cve_nist:`2024-26804`, :cve_nist:`2024-26805`, :cve_nist:`2024-26807`, :cve_nist:`2024-26808` and :cve_nist:`2024-26809`
23- llvm: Fix :cve:`2024-0151` 23- llvm: Fix :cve_nist:`2024-0151`
24- ofono: Fix :cve:`2023-2794` 24- ofono: Fix :cve_nist:`2023-2794`
25- openssh: Fix :cve:`2024-6387` and :cve:`2024-39894` 25- openssh: Fix :cve_nist:`2024-6387` and :cve_nist:`2024-39894`
26- openssl: Fix :cve:`2024-5535` 26- openssl: Fix :cve_nist:`2024-5535`
27- pam: Fix :cve:`2024-22365` 27- pam: Fix :cve_nist:`2024-22365`
28- python3-idna: Fix :cve:`2024-3651` 28- python3-idna: Fix :cve_nist:`2024-3651`
29- qemu: Fix :cve:`2023-6683`, :cve:`2024-3446`, :cve_mitre:`2024-3447`, :cve:`2024-3567`, :cve:`2024-26327` and :cve:`2024-26328` 29- qemu: Fix :cve_nist:`2023-6683`, :cve_nist:`2024-3446`, :cve_mitre:`2024-3447`, :cve_nist:`2024-3567`, :cve_nist:`2024-26327` and :cve_nist:`2024-26328`
30- ruby: Fix :cve:`2023-36617` and :cve:`2024-27281` 30- ruby: Fix :cve_nist:`2023-36617` and :cve_nist:`2024-27281`
31- vte: Fix :cve:`2024-37535` 31- vte: Fix :cve_nist:`2024-37535`
32- wget: Fix for :cve:`2024-38428` 32- wget: Fix for :cve_nist:`2024-38428`
33 33
34 34
35Fixes in Yocto-5.0.3 35Fixes in Yocto-5.0.3
diff --git a/documentation/migration-guides/release-notes-5.0.4.rst b/documentation/migration-guides/release-notes-5.0.4.rst
new file mode 100644
index 0000000000..14fbe3f6f8
--- /dev/null
+++ b/documentation/migration-guides/release-notes-5.0.4.rst
@@ -0,0 +1,212 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-5.0.4 (Scarthgap)
4-----------------------------------------
5
6Security Fixes in Yocto-5.0.4
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- apr: Fix :cve_nist:`2023-49582`
10- curl: Ignore :cve_nist:`2024-32928`
11- curl: Fix :cve_nist:`2024-7264`
12- expat: Fix :cve_nist:`2024-45490`, :cve_nist:`2024-45491` and :cve_nist:`2024-45492`
13- ffmpeg: Fix :cve_nist:`2023-50008` and :cve_nist:`2024-32230`
14- libpcap: Fix :cve_nist:`2023-7256` and :cve_nist:`2024-8006`
15- libyaml: Ignore :cve_nist:`2024-35325` and :cve_nist:`2024-35326`
16- openssl: Fix :cve_nist:`2024-5535` and :cve_nist:`2024-6119`
17- python3-certifi: Fix :cve_nist:`2024-39689`
18- python3-setuptools: Fix :cve_nist:`2024-6345`
19- python3: Fix :cve_nist:`2024-6232`, :cve_nist:`2024-7592`, :cve_nist:`2024-8088` and :cve_nist:`2024-27034`
20- qemu: Fix :cve_nist:`2024-4467` and :cve_nist:`2024-7409`
21- ruby: Fix :cve_nist:`2024-27282`
22- tiff: Fix :cve_nist:`2024-7006`
23- vim: Fix :cve_nist:`2024-41957`, :cve_nist:`2024-41965`, :cve_nist:`2024-43374`, :cve_nist:`2024-43790` and :cve_nist:`2024-43802`
24
25
26Fixes in Yocto-5.0.4
27~~~~~~~~~~~~~~~~~~~~
28
29- apr: drop 0007-explicitly-link-libapr-against-phtread-to-make-gold-.patch
30- apr: upgrade to 1.7.5
31- bind: Fix build with the `httpstats` package config enabled
32- bitbake: data_smart: Improve performance for VariableHistory
33- bluez5: remove redundant patch for MAX_INPUT
34- build-appliance-image: Update to scarthgap head revision
35- buildhistory: Fix intermittent package file list creation
36- buildhistory: Restoring files from preserve list
37- buildhistory: Simplify intercept call sites and drop SSTATEPOSTINSTFUNC usage
38- busybox: Fix cut with "-s" flag
39- create-sdpx-2.2.bbclass: Switch from exists to isfile checking debugsrc
40- cups: upgrade to 2.4.10
41- dejagnu: Fix :term:`LICENSE` (change to GPL-3.0-only)
42- doc: features: describe distribution feature pni-name
43- doc: features: remove duplicate word in distribution feature ext2
44- expat: upgrade to 2.6.3
45- expect-native: fix do_compile failure with gcc-14
46- gcc: Fix spurious '/' in GLIBC_DYNAMIC_LINKER on microblaze
47- gcr: Fix :term:`LICENSE` (change to LGPL-2.0-only)
48- glibc: fix fortran header file conflict for arm
49- go: upgrade to 1.22.6
50- gstreamer1.0: disable flaky baseparser tests
51- image_types.bbclass: Use --force also with lz4,lzop
52- initramfs-framework: fix typos
53- iw: Fix :term:`LICENSE` (change to ISC)
54- libadwaita: upgrade to 1.5.2
55- libcap-ng: update :term:`SRC_URI`
56- libdnf: upgrade to 0.73.2
57- libedit: Make docs generation deterministic
58- libgfortran.inc: fix nativesdk-libgfortran dependencies
59- librsvg: don't try to run target code at build time
60- linux-firmware: add a package for ath12k firmware
61- llvm: Enable libllvm for native build
62- maintainers.inc: add maintainer for python(-setuptools, -smmap, -subunit, -testtools)
63- mc: fix source URL
64- migration-guide: add release notes for 4.0.20 and 5.0.3
65- oeqa/postactions: fix exception handling
66- oeqa/runtime/ssh: In case of failure, show exit code and handle -15 (SIGTERM)
67- oeqa/runtime/ssh: add retry logic and sleeps to allow for slower systems
68- oeqa/runtime/ssh: check for all errors at the end
69- oeqa/runtime/ssh: increase the number of attempts
70- oeqa/selftest/reproducibile: Explicitly list virtual targets
71- oeqa/utils/postactions: transfer whole archive over ssh instead of doing individual copies
72- openssh: add backported header file include
73- openssl: upgrade to 3.2.3
74- os-release: Fix VERSION_CODENAME in case it is empty
75- poky.conf: bump version for 5.0.4
76- populate_sdk_ext.bclass: make sure OECORE_NATIVE_SYSROOT is exported.
77- python3-maturin: Fix cross compilation issue for armv7l, mips64, ppc
78- python3-pycryptodome(x): use python_setuptools_build_meta build class
79- python3: upgrade to 3.12.6
80- python3: skip readline limited history tests
81- qemu: backport patches to fix riscv64 build failure
82- qemuboot: Trigger write_qemuboot_conf task on changes of kernel image realpath
83- ref-manual: fix typo and move :term:`SYSROOT_DIRS` example
84- ruby: Make docs generation deterministic
85- systemd: Mitigate /var/log type mismatch issue
86- systemd: Mitigate /var/tmp type mismatch issue
87- tiff: Fix :term:`LICENSE` (change to libtiff)
88- u-boot.inc: Refactor do_* steps into functions that can be overridden
89- udev-extraconf: Add collect flag to mount
90- unzip: Fix :term:`LICENSE` (change to Info-ZIP)
91- util-linux: Add :term:`PACKAGECONFIG` option (libmount-mountfd-support) to mitigate rootfs remount error
92- vim: upgrade to 9.1.0698
93- weston-init: fix weston not starting when xwayland is enabled
94- wireless-regdb: upgrade to 2024.07.04
95- wpa-supplicant: upgrade to 2.11
96- xserver-xorg: mark :cve_nist:`2023-5574` as unpatched when xvfb enabled
97- yocto-uninative: Update to 4.6 for glibc 2.40
98- zip: Fix :term:`LICENSE` (change to Info-ZIP)
99
100
101Known Issues in Yocto-5.0.4
102~~~~~~~~~~~~~~~~~~~~~~~~~~~
103
104- N/A
105
106
107Contributors to Yocto-5.0.4
108~~~~~~~~~~~~~~~~~~~~~~~~~~~
109
110- Alban Bedel
111- Alexander Kanavin
112- Alexis Lothoré
113- Archana Polampalli
114- Ashish Sharma
115- Bartosz Golaszewski
116- Benjamin Szőke
117- Changqing Li
118- Chen Qi
119- Colin McAllister
120- Daniel Semkowicz
121- Dmitry Baryshkov
122- Gauthier HADERER
123- Guðni Már Gilbert
124- Jon Mason
125- Jose Quaresma
126- Jörg Sommer
127- Kai Kang
128- Khem Raj
129- Lee Chee Yang
130- Mark Hatle
131- Martin Jansa
132- Matthias Pritschet
133- Michael Halstead
134- Mingli Yu
135- Niko Mauno
136- Pedro Ferreira
137- Peter Marko
138- Quentin Schulz
139- Richard Purdie
140- Robert Yang
141- Ross Burton
142- Ryan Eatmon
143- Siddharth Doshi
144- Simone Weiß
145- Soumya Sambu
146- Steve Sakoman
147- Trevor Gamblin
148- Ulrich Ölmann
149- Vijay Anusuri
150- Wang Mingyu
151- Weisser, Pascal.ext
152- Yogita Urade
153
154
155Repositories / Downloads for Yocto-5.0.4
156~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
157
158poky
159
160- Repository Location: :yocto_git:`/poky`
161- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
162- Tag: :yocto_git:`yocto-5.0.4 </poky/log/?h=yocto-5.0.4>`
163- Git Revision: :yocto_git:`2034fc38eb4e63984d9bd6b260aa1bf95ce562e4 </poky/commit/?id=2034fc38eb4e63984d9bd6b260aa1bf95ce562e4>`
164- Release Artefact: poky-2034fc38eb4e63984d9bd6b260aa1bf95ce562e4
165- sha: 697ed099793d6c86d5ffe590e96f99689bd28dcb2d4451dc4585496fa4a20400
166- Download Locations:
167 http://downloads.yoctoproject.org/releases/yocto/yocto-5.0.4/poky-2034fc38eb4e63984d9bd6b260aa1bf95ce562e4.tar.bz2
168 http://mirrors.kernel.org/yocto/yocto/yocto-5.0.4/poky-2034fc38eb4e63984d9bd6b260aa1bf95ce562e4.tar.bz2
169
170openembedded-core
171
172- Repository Location: :oe_git:`/openembedded-core`
173- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
174- Tag: :oe_git:`yocto-5.0.4 </openembedded-core/log/?h=yocto-5.0.4>`
175- Git Revision: :oe_git:`f888dd911529a828820799a7a1b75dfd3a44847c </openembedded-core/commit/?id=f888dd911529a828820799a7a1b75dfd3a44847c>`
176- Release Artefact: oecore-f888dd911529a828820799a7a1b75dfd3a44847c
177- sha: 93cb4c3c8e0f77edab20814d155847dc3452c6b083e3dd9c7a801e80a7e4d228
178- Download Locations:
179 http://downloads.yoctoproject.org/releases/yocto/yocto-5.0.4/oecore-f888dd911529a828820799a7a1b75dfd3a44847c.tar.bz2
180 http://mirrors.kernel.org/yocto/yocto/yocto-5.0.4/oecore-f888dd911529a828820799a7a1b75dfd3a44847c.tar.bz2
181
182meta-mingw
183
184- Repository Location: :yocto_git:`/meta-mingw`
185- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
186- Tag: :yocto_git:`yocto-5.0.4 </meta-mingw/log/?h=yocto-5.0.4>`
187- Git Revision: :yocto_git:`acbba477893ef87388effc4679b7f40ee49fc852 </meta-mingw/commit/?id=acbba477893ef87388effc4679b7f40ee49fc852>`
188- Release Artefact: meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852
189- sha: 3b7c2f475dad5130bace652b150367f587d44b391218b1364a8bbc430b48c54c
190- Download Locations:
191 http://downloads.yoctoproject.org/releases/yocto/yocto-5.0.4/meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852.tar.bz2
192 http://mirrors.kernel.org/yocto/yocto/yocto-5.0.4/meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852.tar.bz2
193
194bitbake
195
196- Repository Location: :oe_git:`/bitbake`
197- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
198- Tag: :oe_git:`yocto-5.0.4 </bitbake/log/?h=yocto-5.0.4>`
199- Git Revision: :oe_git:`d251668d9a7a8dd25bd8767efb30d6d9ff8b1ad3 </bitbake/commit/?id=d251668d9a7a8dd25bd8767efb30d6d9ff8b1ad3>`
200- Release Artefact: bitbake-d251668d9a7a8dd25bd8767efb30d6d9ff8b1ad3
201- sha: d873f4d3a471d26680dc39200d8f3851a6863f15daa9bed978ba31b930f9a1c1
202- Download Locations:
203 http://downloads.yoctoproject.org/releases/yocto/yocto-5.0.4/bitbake-d251668d9a7a8dd25bd8767efb30d6d9ff8b1ad3.tar.bz2
204 http://mirrors.kernel.org/yocto/yocto/yocto-5.0.4/bitbake-d251668d9a7a8dd25bd8767efb30d6d9ff8b1ad3.tar.bz2
205
206yocto-docs
207
208- Repository Location: :yocto_git:`/yocto-docs`
209- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
210- Tag: :yocto_git:`yocto-5.0.4 </yocto-docs/log/?h=yocto-5.0.4>`
211- Git Revision: :yocto_git:`d71081dd14a9d75ace4d1c62472374f37b4a888d </yocto-docs/commit/?id=d71081dd14a9d75ace4d1c62472374f37b4a888d>`
212
diff --git a/documentation/migration-guides/release-notes-5.0.5.rst b/documentation/migration-guides/release-notes-5.0.5.rst
new file mode 100644
index 0000000000..c8cf9a85d1
--- /dev/null
+++ b/documentation/migration-guides/release-notes-5.0.5.rst
@@ -0,0 +1,227 @@
1Release notes for Yocto-5.0.5 (Scarthgap)
2-----------------------------------------
3
4Security Fixes in Yocto-5.0.5
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
7- ``cups``: Fix :cve_nist:`2024-47175`
8- ``curl``: Fix :cve_nist:`2024-8096`
9- ``gnupg``: Ignore :cve_nist:`2022-3219` (wont-fix)
10- ``libarchive``: Fix :cve_nist:`2024-48957` and :cve_nist:`2024-48958`
11- ``openssh``: Ignore :cve_nist:`2023-51767` (wont-fix)
12- ``openssl``: Fix :cve_nist:`2024-9143`
13- ``ruby``: Fix :cve_nist:`2024-41123` and :cve_mitre:`2024-41496`
14- ``rust-llvm``: Fix :cve_nist:`2024-0151`
15- ``rust``, ``libstd-rs``: Ignore :cve_nist:`2024-43402`
16- ``wpa-supplicant``: Patch SAE H2E and incomplete downgrade protection for group negotiation
17- ``wpa-supplicant``: Fix :cve_nist:`2024-3596`
18- ``wpa-supplicant``: Ignore :cve_nist:`2024-5290`
19
20
21Fixes in Yocto-5.0.5
22~~~~~~~~~~~~~~~~~~~~
23
24- binutils: stable 2.42 branch updates
25- bitbake.conf: Add truncate to :term:`HOSTTOOLS`
26- bitbake: asyncrpc: Use client timeout for websocket open timeout
27- bitbake: bitbake: doc/user-manual: Update the :term:`BB_HASHSERVE_UPSTREAM`
28- bitbake: gitsm: Add call_process_submodules() to remove duplicated code
29- bitbake: gitsm: Remove downloads/tmpdir when failed
30- bitbake: tests/fetch: Use our own mirror of mobile-broadband-provider to decouple from gnome gitlab
31- bitbake: tests/fetch: Use our own mirror of sysprof to decouple from gnome gitlab
32- build-appliance-image: Update to scarthgap head revision
33- cryptodev: upgrade to 1.14
34- cve-check: add support for cvss v4.0
35- cve_check: Use a local copy of the database during builds
36- dev-manual: add bblock documentation
37- documentation: conf.py: rename :cve: role to :cve_nist:
38- documentation: README: add instruction to run Vale on a subset
39- documentation: Makefile: add SPHINXLINTDOCS to specify subset to sphinx-lint
40- e2fsprogs: removed 'sed -u' option
41- ffmpeg: Add "libswresample libavcodec" to :term:`CVE_PRODUCT`
42- glibc: stable 2.39 branch updates.
43- go: upgrade to 1.22.8
44- icu: update patch Upstream-Status
45- image.bbclass: Drop support for ImageQAFailed exceptions in image_qa
46- image_qa: fix error handling
47- install-buildtools: fix "test installation" step
48- install-buildtools: remove md5 checksum validation
49- install-buildtools: update base-url, release and installer version
50- kernel-devsrc: remove 64 bit vdso cmd files
51- kernel-fitimage: fix external dtb check
52- kernel-fitimage: fix intentation
53- lib/oe/package-manager: skip processing installed-pkgs with empty globs
54- liba52: fix do_fetch error
55- libpcre2: Update base uri PhilipHazel -> PCRE2Project
56- libsdl2: Fix non-deterministic configure option for libsamplerate
57- license: Fix directory layout issues
58- linux-firmware: upgrade to 20240909
59- linux-yocto/6.6: fix genericarm64 config warning
60- linux-yocto/6.6: upgrade to v6.6.54
61- lsb-release: fix Distro Codename shell escaping
62- makedevs: Fix issue when rootdir of / is given
63- makedevs: Fix matching uid/gid
64- meta-ide-support: Mark recipe as MACHINE-specific
65- meta-world-pkgdata: Inherit nopackages
66- migration-guide: add release notes for 4.0.21, 4.0.22 and 5.0.4
67- migration-guide: release-notes-4.0: update :term:`BB_HASHSERVE_UPSTREAM` for new infrastructure
68- migration-guide: release-notes-5.0.rst: update NO_OUTPUT -> NO_COLOR
69- orc: upgrade to 0.4.40
70- overview-manual: concepts: add details on package splitting
71- poky.conf: bump version for 5.0.5
72- populate_sdk_base: inherit nopackages
73- ptest-runner: upgrade to 2.4.5
74- pulseaudio: correct freedesktop.org -> www.freedesktop.org :term:`SRC_URI`
75- desktop-file-utils: correct freedesktop.org -> www.freedesktop.org :term:`SRC_URI`
76- python3-lxml: upgrade to v5.0.2
77- python3-setuptools: Add "python:setuptools" to :term:`CVE_PRODUCT`
78- recipes-bsp: usbutils: Fix usb-devices command using busybox
79- ref-manual: add missing CVE_CHECK manifest variables
80- ref-manual: add missing :term:`EXTERNAL_KERNEL_DEVICETREE` variable
81- ref-manual: add missing :term:`OPKGBUILDCMD` variable
82- ref-manual: add missing :term:`TESTIMAGE_FAILED_QA_ARTIFACTS`
83- ref-manual: devtool-reference: document missing commands
84- ref-manual: devtool-reference: refresh example outputs
85- ref-manual: faq: add q&a on class appends
86- ref-manual: introduce :term:`CVE_CHECK_REPORT_PATCHED` variable
87- ref-manual: merge patch-status-* to patch-status
88- ref-manual: release-process: add a reference to the doc's release
89- ref-manual: release-process: refresh the current LTS releases
90- ref-manual: release-process: update releases.svg
91- ref-manual: release-process: update releases.svg with month after "Current"
92- ref-manual: structure.rst: document missing tmp/ dirs
93- ref-manual: variables: add SIGGEN_LOCKEDSIGS* variables
94- rootfs-postcommands.bbclass: make opkg status reproducible
95- rpm: fix expansion of %_libdir in macros
96- ruby: upgrade to 3.3.5
97- runqemu: Fix detection of -serial parameter
98- runqemu: keep generating tap devices
99- scripts/install-buildtools: Update to 5.0.3
100- sqlite3: upgrade to 3.45.3
101- styles: vocabularies: Yocto: add sstate
102- systemtap: fix systemtap-native build error on Fedora 40
103- sysvinit: take release tarballs from github
104- testexport: fallback for empty :term:`IMAGE_LINK_NAME`
105- testimage: fallback for empty :term:`IMAGE_LINK_NAME`
106- uboot-sign: fix counters in do_uboot_assemble_fitimage
107- vim: upgrade to 9.1.0764
108- virglrenderer: Add patch to fix -int-conversion build issue
109- webkitgtk: upgrade to 2.44.3
110- weston: backport patch to allow neatvnc < v0.9.0
111- wpa-supplicant: Patch security advisory 2024-2
112- xserver-xorg: upgrade to 21.1.14
113
114
115Known Issues in Yocto-5.0.5
116~~~~~~~~~~~~~~~~~~~~~~~~~~~
117
118- ``oeqa/runtime``: the ``beaglebone-yocto`` target fails the parselogs runtime test due to unexpected kernel error messages in the log (see :yocto_bugs:`bug 15624 </show_bug.cgi?id=15624>` on Bugzilla).
119
120
121Contributors to Yocto-5.0.5
122~~~~~~~~~~~~~~~~~~~~~~~~~~~
123
124- Aditya Tayade
125- Adrian Freihofer
126- Aleksandar Nikolic
127- Alexander Kanavin
128- Antonin Godard
129- Anuj Mittal
130- Bruce Ashfield
131- Claus Stovgaard
132- Deepesh Varatharajan
133- Deepthi Hemraj
134- Hiago De Franco
135- Hitendra Prajapati
136- Jaeyoon Jung
137- Jiaying Song
138- Jonas Gorski
139- Jose Quaresma
140- Joshua Watt
141- Julien Stephan
142- Jörg Sommer
143- Khem Raj
144- Konrad Weihmann
145- Lee Chee Yang
146- Louis Rannou
147- Macpaul Lin
148- Martin Jansa
149- Paul Barker
150- Paul Gerber
151- Peter Kjellerstedt
152- Peter Marko
153- Purushottam Choudhary
154- Richard Purdie
155- Robert Yang
156- Rohini Sangam
157- Ross Burton
158- Sergei Zhmylev
159- Shunsuke Tokumoto
160- Steve Sakoman
161- Teresa Remmet
162- Victor Kamensky
163- Vijay Anusuri
164- Wang Mingyu
165- Yi Zhao
166- Yogita Urade
167- Zahir Hussain
168
169
170Repositories / Downloads for Yocto-5.0.5
171~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
172
173poky
174
175- Repository Location: :yocto_git:`/poky`
176- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
177- Tag: :yocto_git:`yocto-5.0.5 </poky/log/?h=yocto-5.0.5>`
178- Git Revision: :yocto_git:`dce4163d42f7036ea216b52b9135968d51bec4c1 </poky/commit/?id=dce4163d42f7036ea216b52b9135968d51bec4c1>`
179- Release Artefact: poky-dce4163d42f7036ea216b52b9135968d51bec4c1
180- sha: ad35a965a284490a962f6854ace536b8795f96514e14bf5c79f91f6d76ac25d3
181- Download Locations:
182 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.5/poky-dce4163d42f7036ea216b52b9135968d51bec4c1.tar.bz2
183 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.5/poky-dce4163d42f7036ea216b52b9135968d51bec4c1.tar.bz2
184
185openembedded-core
186
187- Repository Location: :oe_git:`/openembedded-core`
188- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
189- Tag: :oe_git:`yocto-5.0.5 </openembedded-core/log/?h=yocto-5.0.5>`
190- Git Revision: :oe_git:`a051a066da2874b95680d0353dfa18c1d56b2670 </openembedded-core/commit/?id=a051a066da2874b95680d0353dfa18c1d56b2670>`
191- Release Artefact: oecore-a051a066da2874b95680d0353dfa18c1d56b2670
192- sha: 16d252aade00161ade2692f41b2da3effeb1f41816a66db843bb1c5495125e93
193- Download Locations:
194 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.5/oecore-a051a066da2874b95680d0353dfa18c1d56b2670.tar.bz2
195 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.5/oecore-a051a066da2874b95680d0353dfa18c1d56b2670.tar.bz2
196
197meta-mingw
198
199- Repository Location: :yocto_git:`/meta-mingw`
200- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
201- Tag: :yocto_git:`yocto-5.0.5 </meta-mingw/log/?h=yocto-5.0.5>`
202- Git Revision: :yocto_git:`acbba477893ef87388effc4679b7f40ee49fc852 </meta-mingw/commit/?id=acbba477893ef87388effc4679b7f40ee49fc852>`
203- Release Artefact: meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852
204- sha: 3b7c2f475dad5130bace652b150367f587d44b391218b1364a8bbc430b48c54c
205- Download Locations:
206 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.5/meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852.tar.bz2
207 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.5/meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852.tar.bz2
208
209bitbake
210
211- Repository Location: :bitbake_git:`/`
212- Branch: :bitbake_git:`2.8 </log/?h=2.8>`
213- Tag: :bitbake_git:`yocto-5.0.5 </log/?h=yocto-5.0.5>`
214- Git Revision: :bitbake_git:`377eba2361850adfb8ce7e761ef9c76be287f88c </commit/?id=377eba2361850adfb8ce7e761ef9c76be287f88c>`
215- Release Artefact: bitbake-377eba2361850adfb8ce7e761ef9c76be287f88c
216- sha: 4a5a35098eec719bbb879706d50e552a2b709295db4055c8050ae7dda1eb2994
217- Download Locations:
218 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.5/bitbake-377eba2361850adfb8ce7e761ef9c76be287f88c.tar.bz2
219 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.5/bitbake-377eba2361850adfb8ce7e761ef9c76be287f88c.tar.bz2
220
221yocto-docs
222
223- Repository Location: :yocto_git:`/yocto-docs`
224- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
225- Tag: :yocto_git:`yocto-5.0.5 </yocto-docs/log/?h=yocto-5.0.5>`
226- Git Revision: :yocto_git:`e882cb3e5816d081eb05cb83488f286cca70e0c6 </yocto-docs/commit/?id=e882cb3e5816d081eb05cb83488f286cca70e0c6>`
227
diff --git a/documentation/migration-guides/release-notes-5.0.6.rst b/documentation/migration-guides/release-notes-5.0.6.rst
new file mode 100644
index 0000000000..b6f42198a1
--- /dev/null
+++ b/documentation/migration-guides/release-notes-5.0.6.rst
@@ -0,0 +1,223 @@
1Release notes for Yocto-5.0.6 (Scarthgap)
2-----------------------------------------
3
4Security Fixes in Yocto-5.0.6
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
7- acpica: Fix :cve_nist:`2024-24856`
8- curl: Fix :cve_nist:`2024-9681`
9- dropbear: Fix :cve_nist:`2023-48795`
10- expat: Fix :cve_nist:`2024-50602`
11- ffmpeg: Fix :cve_nist:`2023-49501`, :cve_nist:`2023-49528`, :cve_nist:`2023-50007`,
12 :cve_nist:`2024-7055` and :cve_mitre:`2024-28661`
13- glib-2.0: Fix :cve_nist:`2024-52533`
14- ghostscript: Fix :cve_nist:`2024-46951`, :cve_nist:`2024-46952`, :cve_nist:`2024-46953`,
15 :cve_nist:`2024-46954`, :cve_nist:`2024-46955` and :cve_nist:`2024-46956`
16- gstreamer1.0: Ignore :cve_nist:`2024-0444`
17- libpam: Fix :cve_nist:`2024-10041`
18- libsndfile: Fix :cve_nist:`2024-50612`
19- libsoup: Fix :cve_nist:`2024-52530`, :cve_nist:`2024-52531` and :cve_nist:`2024-52532`
20- ovmf: Fix :cve_nist:`2024-1298` and :cve_nist:`2024-38796`
21- python3-zipp: Fix :cve_nist:`2024-5569`
22- qemu: Fix :cve_nist:`2024-4693`, :cve_nist:`2024-6505` and :cve_nist:`2024-7730`
23- qemu: Ignore :cve_nist:`2024-6505`
24
25
26Fixes in Yocto-5.0.6
27~~~~~~~~~~~~~~~~~~~~
28
29- binutils: Add missing perl modules to :term:`RDEPENDS` for nativesdk variant
30- binutils: stable 2.42 branch update
31- bitbake: Remove custom exception backtrace formatting
32- bitbake: fetch2/git: Use quote from shlex, not pipes
33- bitbake: fetch2: use persist_data context managers
34- bitbake: fetch/wget: Increase timeout to 100s from 30s
35- bitbake: persist_data: close connection in SQLTable __exit__
36- bitbake: runqueue: Fix performance of multiconfigs with large overlap
37- bitbake: runqueue: Fix scenetask processing performance issue
38- bitbake: runqueue: Optimise setscene loop processing
39- build-appliance-image: Update to scarthgap head revision
40- builder: set :term:`CVE_PRODUCT`
41- cmake: Fix sporadic issues when determining compiler internals
42- cml1: do_diffconfig: Don't override .config with .config.orig
43- contributor-guide: Remove duplicated words
44- dev-manual: bblock: use warning block instead of attention
45- dev-manual: document how to provide confs from layer.conf
46- dnf: drop python3-iniparse from :term:`DEPENDS` and :term:`RDEPENDS`
47- do_package/sstate/sstatesig: Change timestamp clamping to hash output only
48- doc: Makefile: add support for xelatex
49- doc: Makefile: publish pdf and epub versions too
50- doc: Makefile: remove inkscape, replace by rsvg-convert
51- doc: add a download page for epub and pdf
52- doc: conf.py: add a bitbake_git extlink
53- doc: standards.md: add a section on admonitions
54- doc: sphinx-static: switchers.js.in: do not refer to URL_ROOT anymore
55- dropbear: backport fix for concurrent channel open/close
56- enchant2: fix do_fetch error
57- expat: upgrade to 2.6.4
58- gcc: backport patch to fix an issue with tzdata 2024b
59- ghostscript: upgrade to 10.04.0
60- glibc: stable 2.39 branch updates
61- groff: fix rare build race in hdtbl
62- libgcrypt: Fix building error with '-O2' in sysroot path
63- libpam: drop cracklib from :term:`DEPENDS`
64- libxml-parser-perl: fix do_fetch error
65- llvm: reduce size of -dbg package
66- lttng-ust: backport patch to fix cmake-multiple-shared-libraries build error
67- migration-guides: add release notes for 4.0.23 and 5.0.5
68- ninja: fix build with python 3.13
69- oeqa/runtime/ssh: Fix incorrect timeout fix
70- oeqa/runtime/ssh: Rework ssh timeout
71- oeqa/utils/gitarchive: Return tag name and improve exclude handling
72- package_rpm: Check if file exists before open()
73- package_rpm: restrict rpm to 4 threads
74- package_rpm: use zstd's default compression level
75- poky.conf: bump version for 5.0.6
76- pseudo: Fix envp bug and add posix_spawn wrapper
77- python3-poetry-core: drop python3-six from :term:`RDEPENDS`
78- python3-requests: upgrade to 2.32.2
79- python3-urllib3: upgrade to 2.2.2
80- qemu: upgrade to 8.2.7
81- qemurunner: Clean up serial_lock handling
82- ref-manual: classes: fix bin_package description
83- resulttool: Add --logfile-archive option to store mode
84- resulttool: Allow store to filter to specific revisions
85- resulttool: Clean up repoducible build logs
86- resulttool: Fix passthrough of --all files in store mode
87- resulttool: Handle ltp rawlogs as well as ptest
88- resulttool: Improve repo layout for oeselftest results
89- resulttool: Trim the precision of duration information
90- resulttool: Use single space indentation in json output
91- rootfs: Ensure run-postinsts is not uninstalled for read-only-rootfs-delayed-postinsts
92- rxvt-unicode.inc: disable the terminfo installation by setting TIC to :
93- sanity: check for working user namespaces
94- scripts/install-buildtools: Update to 5.0.5
95- selftest/reproducible: Clean up pathnames
96- selftest/reproducible: Drop rawlogs
97- shared-mime-info: drop itstool-native from :term:`DEPENDS`
98- strace: download release tarballs from GitHub
99- systemd-boot: drop intltool-native from :term:`DEPENDS`
100- systemd: drop intltool-native from :term:`DEPENDS`
101- systemd: upgrade to 255.13
102- sysvinit: backport patch for fixing one issue of pidof
103- tcl: skip io-13.6 test case
104- toolchain-shar-extract.sh: exit when post-relocate-setup.sh fails
105- tune-cortexa32: set tune feature as armv8a
106- tzcode-native: upgrade to 2024b
107- tzdata: upgrade to 2024b
108- uboot-sign: fix concat_dtb arguments
109- udev-extraconf: fix network.sh script did not configure hotplugged interfaces
110- webkitgtk: fix erroneous use of unsuported DEBUG_LEVELFLAG variable
111- wireless-regdb: upgrade to 2024.10.07
112
113
114Known Issues in Yocto-5.0.6
115~~~~~~~~~~~~~~~~~~~~~~~~~~~
116
117- N/A
118
119
120Contributors to Yocto-5.0.6
121~~~~~~~~~~~~~~~~~~~~~~~~~~~
122
123Thanks to the following people who contributed to this release:
124
125- Aleksandar Nikolic
126- Alexander Kanavin
127- Antonin Godard
128- Archana Polampalli
129- Bin Lan
130- Changqing Li
131- Chen Qi
132- Chris Laplante
133- Clayton Casciato
134- Deepthi Hemraj
135- Divya Chellam
136- Florian Kreutzer
137- Gassner, Tobias.ext
138- Guðni Már Gilbert
139- Harish Sadineni
140- Hitendra Prajapati
141- Hongxu Jia
142- Jagadeesh Krishnanjanappa
143- Jiaying Song
144- Jinfeng Wang
145- Joshua Watt
146- Lee Chee Yang
147- Markus Volk
148- Michael Opdenacker
149- Pavel Zhukov
150- Peter Marko
151- Philip Lorenz
152- Randy MacLeod
153- Regis Dargent
154- Richard Purdie
155- Robert Yang
156- Ross Burton
157- Soumya Sambu
158- Steve Sakoman
159- Talel BELHAJSALEM
160- Trevor Gamblin
161- Vijay Anusuri
162- Wang Mingyu
163- Yogita Urade
164
165
166Repositories / Downloads for Yocto-5.0.6
167~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
168
169poky
170
171- Repository Location: :yocto_git:`/poky`
172- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
173- Tag: :yocto_git:`yocto-5.0.6 </poky/log/?h=yocto-5.0.6>`
174- Git Revision: :yocto_git:`2541a8171f91812a4b16e7dc4da0d77d2318a256 </poky/commit/?id=2541a8171f91812a4b16e7dc4da0d77d2318a256>`
175- Release Artefact: poky-2541a8171f91812a4b16e7dc4da0d77d2318a256
176- sha: b77157596ae75d163387a08a317397a57ab8fa6cf4725f28e344fae3f69cca4d
177- Download Locations:
178 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.6/poky-2541a8171f91812a4b16e7dc4da0d77d2318a256.tar.bz2
179 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.6/poky-2541a8171f91812a4b16e7dc4da0d77d2318a256.tar.bz2
180
181openembedded-core
182
183- Repository Location: :oe_git:`/openembedded-core`
184- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
185- Tag: :oe_git:`yocto-5.0.6 </openembedded-core/log/?h=yocto-5.0.6>`
186- Git Revision: :oe_git:`336eec6808710f260a5336ca8ca98139a80ccb14 </openembedded-core/commit/?id=336eec6808710f260a5336ca8ca98139a80ccb14>`
187- Release Artefact: oecore-336eec6808710f260a5336ca8ca98139a80ccb14
188- sha: 38c4fa7e7e88c28361c012dd5baabe373e2ec3c8aba6194146768b146192cceb
189- Download Locations:
190 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.6/oecore-336eec6808710f260a5336ca8ca98139a80ccb14.tar.bz2
191 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.6/oecore-336eec6808710f260a5336ca8ca98139a80ccb14.tar.bz2
192
193meta-mingw
194
195- Repository Location: :yocto_git:`/meta-mingw`
196- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
197- Tag: :yocto_git:`yocto-5.0.6 </meta-mingw/log/?h=yocto-5.0.6>`
198- Git Revision: :yocto_git:`acbba477893ef87388effc4679b7f40ee49fc852 </meta-mingw/commit/?id=acbba477893ef87388effc4679b7f40ee49fc852>`
199- Release Artefact: meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852
200- sha: 3b7c2f475dad5130bace652b150367f587d44b391218b1364a8bbc430b48c54c
201- Download Locations:
202 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.6/meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852.tar.bz2
203 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.6/meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852.tar.bz2
204
205bitbake
206
207- Repository Location: :oe_git:`/bitbake`
208- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
209- Tag: :oe_git:`yocto-5.0.6 </bitbake/log/?h=yocto-5.0.6>`
210- Git Revision: :oe_git:`f40a3a477d5241b697bf2fb030dd804c1ff5839f </bitbake/commit/?id=f40a3a477d5241b697bf2fb030dd804c1ff5839f>`
211- Release Artefact: bitbake-f40a3a477d5241b697bf2fb030dd804c1ff5839f
212- sha: dbfc056c7408a5547f624799621ab1261a05685112e0922a88007723b1edbc87
213- Download Locations:
214 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.6/bitbake-f40a3a477d5241b697bf2fb030dd804c1ff5839f.tar.bz2
215 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.6/bitbake-f40a3a477d5241b697bf2fb030dd804c1ff5839f.tar.bz2
216
217yocto-docs
218
219- Repository Location: :yocto_git:`/yocto-docs`
220- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
221- Tag: :yocto_git:`yocto-5.0.6 </yocto-docs/log/?h=yocto-5.0.6>`
222- Git Revision: :yocto_git:`TBD </yocto-docs/commit/?id=TBD>`
223
diff --git a/documentation/migration-guides/release-notes-5.0.7.rst b/documentation/migration-guides/release-notes-5.0.7.rst
new file mode 100644
index 0000000000..1c8a4809a9
--- /dev/null
+++ b/documentation/migration-guides/release-notes-5.0.7.rst
@@ -0,0 +1,331 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-5.0.7 (Scarthgap)
4-----------------------------------------
5
6Security Fixes in Yocto-5.0.7
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- avahi: Fix :cve_nist:`2024-52616`
10- binutils: Fix :cve_nist:`2024-53589`
11- ffmpeg: Fix :cve_nist:`2024-35366`, :cve_nist:`2024-35367` and :cve_nist:`2024-35368`
12- gstreamer1.0-plugins-base: Fix :cve_nist:`2024-47538`, :cve_nist:`2024-47541`,
13 :cve_nist:`2024-47542`, :cve_nist:`2024-47600`, :cve_nist:`2024-47607`, :cve_nist:`2024-47615`
14 and :cve_nist:`2024-47835`
15- gstreamer1.0-plugins-good: Fix :cve_nist:`2024-47537`, :cve_nist:`2024-47539`,
16 :cve_nist:`2024-47540`, :cve_nist:`2024-47543`, :cve_nist:`2024-47544`, :cve_nist:`2024-47545`,
17 :cve_nist:`2024-47546`, :cve_nist:`2024-47596`, :cve_nist:`2024-47597`, :cve_nist:`2024-47598`,
18 :cve_nist:`2024-47599`, :cve_nist:`2024-47601`, :cve_nist:`2024-47602`, :cve_nist:`2024-47603`,
19 :cve_nist:`2024-47606`, :cve_nist:`2024-47613`, :cve_nist:`2024-47774`, :cve_nist:`2024-47775`,
20 :cve_nist:`2024-47776`, :cve_nist:`2024-47777`, :cve_nist:`2024-47778` and :cve_nist:`2024-47834`
21- gstreamer1.0: Ignore :cve_nist:`2024-47537`, :cve_nist:`2024-47539`, :cve_nist:`2024-47540`,
22 :cve_nist:`2024-47543`, :cve_nist:`2024-47544`, :cve_nist:`2024-47545`, :cve_nist:`2024-47538`,
23 :cve_nist:`2024-47541`, :cve_nist:`2024-47542`, :cve_nist:`2024-47600`, :cve_nist:`2024-47607`,
24 :cve_nist:`2024-47615`, :cve_nist:`2024-47835`, :cve_nist:`2024-47546`, :cve_nist:`2024-47596`,
25 :cve_nist:`2024-47597`, :cve_nist:`2024-47598`, :cve_nist:`2024-47599`, :cve_nist:`2024-47601`,
26 :cve_nist:`2024-47602`, :cve_nist:`2024-47603`, :cve_nist:`2024-47613`, :cve_nist:`2024-47774`,
27 :cve_nist:`2024-47775`, :cve_nist:`2024-47776`, :cve_nist:`2024-47777`, :cve_nist:`2024-47778`
28 and :cve_nist:`2024-47834`
29- libarchive: Fix :cve_nist:`2024-20696`
30- libxml2: Fix :cve_nist:`2024-40896`
31- linux-yocto/6.6: Fix :cve_nist:`2024-27059`, :cve_nist:`2024-43098`, :cve_nist:`2024-45828`,
32 :cve_nist:`2024-47141`, :cve_nist:`2024-47143`, :cve_nist:`2024-47704`, :cve_nist:`2024-47809`,
33 :cve_nist:`2024-48873`, :cve_nist:`2024-48875`, :cve_nist:`2024-48881`, :cve_nist:`2024-49863`,
34 :cve_nist:`2024-49864`, :cve_nist:`2024-49866`, :cve_nist:`2024-49867`, :cve_nist:`2024-49868`,
35 :cve_nist:`2024-49870`, :cve_nist:`2024-49871`, :cve_nist:`2024-49874`, :cve_nist:`2024-49875`,
36 :cve_nist:`2024-49877`, :cve_nist:`2024-49878`, :cve_nist:`2024-49879`, :cve_nist:`2024-49881`,
37 :cve_nist:`2024-49882`, :cve_nist:`2024-49883`, :cve_nist:`2024-49884`, :cve_nist:`2024-49886`,
38 :cve_nist:`2024-49889`, :cve_nist:`2024-49890`, :cve_nist:`2024-49892`, :cve_nist:`2024-49894`,
39 :cve_nist:`2024-49895`, :cve_nist:`2024-49896`, :cve_nist:`2024-49900`, :cve_nist:`2024-49901`,
40 :cve_nist:`2024-49902`, :cve_nist:`2024-49903`, :cve_nist:`2024-49905`, :cve_nist:`2024-49907`,
41 :cve_nist:`2024-49912`, :cve_nist:`2024-49913`, :cve_nist:`2024-49924`, :cve_nist:`2024-49925`,
42 :cve_nist:`2024-49927`, :cve_nist:`2024-49929`, :cve_nist:`2024-49930`, :cve_nist:`2024-49931`,
43 :cve_nist:`2024-49933`, :cve_nist:`2024-49935`, :cve_nist:`2024-49936`, :cve_nist:`2024-49937`,
44 :cve_nist:`2024-49938`, :cve_nist:`2024-49939`, :cve_nist:`2024-49944`, :cve_nist:`2024-49946`,
45 :cve_nist:`2024-49947`, :cve_nist:`2024-49948`, :cve_nist:`2024-49949`, :cve_nist:`2024-49950`,
46 :cve_nist:`2024-49951`, :cve_nist:`2024-49952`, :cve_nist:`2024-49953`, :cve_nist:`2024-49954`,
47 :cve_nist:`2024-49955`, :cve_nist:`2024-49957`, :cve_nist:`2024-49958`, :cve_nist:`2024-49959`,
48 :cve_nist:`2024-49960`, :cve_nist:`2024-49961`, :cve_nist:`2024-49962`, :cve_nist:`2024-49963`,
49 :cve_nist:`2024-49965`, :cve_nist:`2024-49966`, :cve_nist:`2024-49969`, :cve_nist:`2024-49973`,
50 :cve_nist:`2024-49975`, :cve_nist:`2024-49976`, :cve_nist:`2024-49977`, :cve_nist:`2024-49978`,
51 :cve_nist:`2024-49980`, :cve_nist:`2024-49981`, :cve_nist:`2024-49982`, :cve_nist:`2024-49983`,
52 :cve_nist:`2024-49985`, :cve_nist:`2024-49986`, :cve_nist:`2024-49987`, :cve_nist:`2024-49988`,
53 :cve_nist:`2024-49989`, :cve_nist:`2024-49991`, :cve_nist:`2024-49992`, :cve_nist:`2024-49995`,
54 :cve_nist:`2024-49996`, :cve_nist:`2024-49997`, :cve_nist:`2024-50000`, :cve_nist:`2024-50001`,
55 :cve_nist:`2024-50002`, :cve_nist:`2024-50003`, :cve_nist:`2024-50005`, :cve_nist:`2024-50006`,
56 :cve_nist:`2024-50007`, :cve_nist:`2024-50008`, :cve_nist:`2024-50012`, :cve_nist:`2024-50013`,
57 :cve_nist:`2024-50015`, :cve_nist:`2024-50016`, :cve_nist:`2024-50019`, :cve_nist:`2024-50022`,
58 :cve_nist:`2024-50023`, :cve_nist:`2024-50024`, :cve_nist:`2024-50026`, :cve_nist:`2024-50029`,
59 :cve_nist:`2024-50031`, :cve_nist:`2024-50032`, :cve_nist:`2024-50033`, :cve_nist:`2024-50035`,
60 :cve_nist:`2024-50036`, :cve_nist:`2024-50038`, :cve_nist:`2024-50039`, :cve_nist:`2024-50040`,
61 :cve_nist:`2024-50041`, :cve_nist:`2024-50044`, :cve_nist:`2024-50045`, :cve_nist:`2024-50046`,
62 :cve_nist:`2024-50047`, :cve_nist:`2024-50048`, :cve_nist:`2024-50049`, :cve_nist:`2024-50051`,
63 :cve_nist:`2024-50055`, :cve_nist:`2024-50057`, :cve_nist:`2024-50058`, :cve_nist:`2024-50059`,
64 :cve_nist:`2024-50060`, :cve_nist:`2024-50061`, :cve_nist:`2024-50062`, :cve_nist:`2024-50063`,
65 :cve_nist:`2024-50064`, :cve_nist:`2024-50065`, :cve_nist:`2024-50066`, :cve_nist:`2024-50069`,
66 :cve_nist:`2024-50070`, :cve_nist:`2024-50072`, :cve_nist:`2024-50073`, :cve_nist:`2024-50074`,
67 :cve_nist:`2024-50075`, :cve_nist:`2024-50076`, :cve_nist:`2024-50077`, :cve_nist:`2024-50078`,
68 :cve_nist:`2024-50080`, :cve_nist:`2024-50082`, :cve_nist:`2024-50083`, :cve_nist:`2024-50084`,
69 :cve_nist:`2024-50085`, :cve_nist:`2024-50086`, :cve_nist:`2024-50087`, :cve_nist:`2024-50088`,
70 :cve_nist:`2024-50093`, :cve_nist:`2024-50095`, :cve_nist:`2024-50096`, :cve_nist:`2024-50098`,
71 :cve_nist:`2024-50099`, :cve_nist:`2024-50101`, :cve_nist:`2024-50103`, :cve_nist:`2024-50108`,
72 :cve_nist:`2024-50110`, :cve_nist:`2024-50111`, :cve_nist:`2024-50112`, :cve_nist:`2024-50115`,
73 :cve_nist:`2024-50116`, :cve_nist:`2024-50117`, :cve_nist:`2024-50120`, :cve_nist:`2024-50121`,
74 :cve_nist:`2024-50124`, :cve_nist:`2024-50125`, :cve_nist:`2024-50126`, :cve_nist:`2024-50127`,
75 :cve_nist:`2024-50128`, :cve_nist:`2024-50130`, :cve_nist:`2024-50131`, :cve_nist:`2024-50133`,
76 :cve_nist:`2024-50134`, :cve_nist:`2024-50135`, :cve_nist:`2024-50136`, :cve_nist:`2024-50139`,
77 :cve_nist:`2024-50140`, :cve_nist:`2024-50141`, :cve_nist:`2024-50142`, :cve_nist:`2024-50143`,
78 :cve_nist:`2024-50145`, :cve_nist:`2024-50147`, :cve_nist:`2024-50148`, :cve_nist:`2024-50150`,
79 :cve_nist:`2024-50151`, :cve_nist:`2024-50152`, :cve_nist:`2024-50153`, :cve_nist:`2024-50154`,
80 :cve_nist:`2024-50155`, :cve_nist:`2024-50156`, :cve_nist:`2024-50158`, :cve_nist:`2024-50159`,
81 :cve_nist:`2024-50160`, :cve_nist:`2024-50162`, :cve_nist:`2024-50163`, :cve_nist:`2024-50164`,
82 :cve_nist:`2024-50166`, :cve_nist:`2024-50167`, :cve_nist:`2024-50168`, :cve_nist:`2024-50169`,
83 :cve_nist:`2024-50170`, :cve_nist:`2024-50171`, :cve_nist:`2024-50172`, :cve_nist:`2024-50175`,
84 :cve_nist:`2024-50176`, :cve_nist:`2024-50179`, :cve_nist:`2024-50180`, :cve_nist:`2024-50181`,
85 :cve_nist:`2024-50182`, :cve_nist:`2024-50183`, :cve_nist:`2024-50184`, :cve_nist:`2024-50185`,
86 :cve_nist:`2024-50186`, :cve_nist:`2024-50187`, :cve_nist:`2024-50188`, :cve_nist:`2024-50189`,
87 :cve_nist:`2024-50191`, :cve_nist:`2024-50192`, :cve_nist:`2024-50193`, :cve_nist:`2024-50194`,
88 :cve_nist:`2024-50195`, :cve_nist:`2024-50196`, :cve_nist:`2024-50198`, :cve_nist:`2024-50201`,
89 :cve_nist:`2024-50202`, :cve_nist:`2024-50205`, :cve_nist:`2024-50208`, :cve_nist:`2024-50209`,
90 :cve_nist:`2024-50211`, :cve_nist:`2024-50215`, :cve_nist:`2024-50222`, :cve_nist:`2024-50223`,
91 :cve_nist:`2024-50224`, :cve_nist:`2024-50226`, :cve_nist:`2024-50229`, :cve_nist:`2024-50230`,
92 :cve_nist:`2024-50231`, :cve_nist:`2024-50232`, :cve_nist:`2024-50233`, :cve_nist:`2024-50234`,
93 :cve_nist:`2024-50235`, :cve_nist:`2024-50236`, :cve_nist:`2024-50237`, :cve_nist:`2024-50239`,
94 :cve_nist:`2024-50240`, :cve_nist:`2024-50242`, :cve_nist:`2024-50243`, :cve_nist:`2024-50244`,
95 :cve_nist:`2024-50245`, :cve_nist:`2024-50246`, :cve_nist:`2024-50247`, :cve_nist:`2024-50248`,
96 :cve_nist:`2024-50249`, :cve_nist:`2024-50250`, :cve_nist:`2024-50251`, :cve_nist:`2024-50252`,
97 :cve_nist:`2024-50255`, :cve_nist:`2024-50256`, :cve_nist:`2024-50257`, :cve_nist:`2024-50258`,
98 :cve_nist:`2024-50259`, :cve_nist:`2024-50261`, :cve_nist:`2024-50262`, :cve_nist:`2024-50264`,
99 :cve_nist:`2024-50265`, :cve_nist:`2024-50267`, :cve_nist:`2024-50268`, :cve_nist:`2024-50269`,
100 :cve_nist:`2024-50271`, :cve_nist:`2024-50272`, :cve_nist:`2024-50273`, :cve_nist:`2024-50275`,
101 :cve_nist:`2024-50276`, :cve_nist:`2024-50278`, :cve_nist:`2024-50279`, :cve_nist:`2024-50282`,
102 :cve_nist:`2024-50283`, :cve_nist:`2024-50284`, :cve_nist:`2024-50285`, :cve_nist:`2024-50286`,
103 :cve_nist:`2024-50287`, :cve_nist:`2024-50292`, :cve_nist:`2024-50296`, :cve_nist:`2024-50298`,
104 :cve_nist:`2024-50299`, :cve_nist:`2024-50300`, :cve_nist:`2024-50301`, :cve_nist:`2024-50302`,
105 :cve_nist:`2024-53042`, :cve_nist:`2024-53043`, :cve_nist:`2024-53046`, :cve_nist:`2024-53047`,
106 :cve_nist:`2024-53052`, :cve_nist:`2024-53055`, :cve_nist:`2024-53057`, :cve_nist:`2024-53058`,
107 :cve_nist:`2024-53059`, :cve_nist:`2024-53060`, :cve_nist:`2024-53061`, :cve_nist:`2024-53063`,
108 :cve_nist:`2024-53066`, :cve_nist:`2024-53068`, :cve_nist:`2024-53072`, :cve_nist:`2024-53076`,
109 :cve_nist:`2024-53079`, :cve_nist:`2024-53081`, :cve_nist:`2024-53082`, :cve_nist:`2024-53083`,
110 :cve_nist:`2024-53088`, :cve_nist:`2024-53091`, :cve_nist:`2024-53093`, :cve_nist:`2024-53094`,
111 :cve_nist:`2024-53096`, :cve_nist:`2024-53099`, :cve_nist:`2024-53100`, :cve_nist:`2024-53101`,
112 :cve_nist:`2024-53103`, :cve_nist:`2024-53108`, :cve_nist:`2024-53109`, :cve_nist:`2024-53110`,
113 :cve_nist:`2024-53112`, :cve_nist:`2024-53113`, :cve_nist:`2024-53119`, :cve_nist:`2024-53120`,
114 :cve_nist:`2024-53121`, :cve_nist:`2024-53122`, :cve_nist:`2024-53123`, :cve_nist:`2024-53126`,
115 :cve_nist:`2024-53127`, :cve_nist:`2024-53129`, :cve_nist:`2024-53130`, :cve_nist:`2024-53131`,
116 :cve_nist:`2024-53134`, :cve_nist:`2024-53135`, :cve_nist:`2024-53138`, :cve_nist:`2024-53139`,
117 :cve_nist:`2024-53140`, :cve_nist:`2024-53141`, :cve_nist:`2024-53142`, :cve_nist:`2024-53145`,
118 :cve_nist:`2024-53146`, :cve_nist:`2024-53150`, :cve_nist:`2024-53151`, :cve_nist:`2024-53154`,
119 :cve_nist:`2024-53155`, :cve_nist:`2024-53156`, :cve_nist:`2024-53157`, :cve_nist:`2024-53161`,
120 :cve_nist:`2024-53165`, :cve_nist:`2024-53166`, :cve_nist:`2024-53168`, :cve_nist:`2024-53171`,
121 :cve_nist:`2024-53173`, :cve_nist:`2024-53175`, :cve_nist:`2024-53180`, :cve_nist:`2024-53188`,
122 :cve_nist:`2024-53191`, :cve_nist:`2024-53200`, :cve_nist:`2024-53202`, :cve_nist:`2024-53208`,
123 :cve_nist:`2024-53210`, :cve_nist:`2024-53213`, :cve_nist:`2024-53215`, :cve_nist:`2024-53217`,
124 :cve_nist:`2024-53224`, :cve_nist:`2024-53226`, :cve_nist:`2024-53227`, :cve_nist:`2024-53230`,
125 :cve_nist:`2024-53231`, :cve_nist:`2024-53237`, :cve_nist:`2024-53239`, :cve_nist:`2024-54683`,
126 :cve_nist:`2024-55916`, :cve_nist:`2024-56369`, :cve_nist:`2024-56538`, :cve_nist:`2024-56551`,
127 :cve_nist:`2024-56567`, :cve_nist:`2024-56568`, :cve_nist:`2024-56569`, :cve_nist:`2024-56572`,
128 :cve_nist:`2024-56574`, :cve_nist:`2024-56575`, :cve_nist:`2024-56577`, :cve_nist:`2024-56578`,
129 :cve_nist:`2024-56579`, :cve_nist:`2024-56581`, :cve_nist:`2024-56587`, :cve_nist:`2024-56593`,
130 :cve_nist:`2024-56595`, :cve_nist:`2024-56596`, :cve_nist:`2024-56598`, :cve_nist:`2024-56600`,
131 :cve_nist:`2024-56601`, :cve_nist:`2024-56602`, :cve_nist:`2024-56603`, :cve_nist:`2024-56604`,
132 :cve_nist:`2024-56605`, :cve_nist:`2024-56606`, :cve_nist:`2024-56611`, :cve_nist:`2024-56613`,
133 :cve_nist:`2024-56614`, :cve_nist:`2024-56615`, :cve_nist:`2024-56617`, :cve_nist:`2024-56622`,
134 :cve_nist:`2024-56623`, :cve_nist:`2024-56626`, :cve_nist:`2024-56627`, :cve_nist:`2024-56629`,
135 :cve_nist:`2024-56631`, :cve_nist:`2024-56634`, :cve_nist:`2024-56635`, :cve_nist:`2024-56640`,
136 :cve_nist:`2024-56642`, :cve_nist:`2024-56643`, :cve_nist:`2024-56648`, :cve_nist:`2024-56649`,
137 :cve_nist:`2024-56650`, :cve_nist:`2024-56651`, :cve_nist:`2024-56653`, :cve_nist:`2024-56654`,
138 :cve_nist:`2024-56657`, :cve_nist:`2024-56658`, :cve_nist:`2024-56659`, :cve_nist:`2024-56660`,
139 :cve_nist:`2024-56662`, :cve_nist:`2024-56663`, :cve_nist:`2024-56664`, :cve_nist:`2024-56667`,
140 :cve_nist:`2024-56670`, :cve_nist:`2024-56672`, :cve_nist:`2024-56675`, :cve_nist:`2024-56687`,
141 :cve_nist:`2024-56688`, :cve_nist:`2024-56689`, :cve_nist:`2024-56692`, :cve_nist:`2024-56694`,
142 :cve_nist:`2024-56698`, :cve_nist:`2024-56704`, :cve_nist:`2024-56708`, :cve_nist:`2024-56710`,
143 :cve_nist:`2024-56715`, :cve_nist:`2024-56716`, :cve_nist:`2024-56717`, :cve_nist:`2024-56718`,
144 :cve_nist:`2024-56720`, :cve_nist:`2024-56722`, :cve_nist:`2024-56723`, :cve_nist:`2024-56724`,
145 :cve_nist:`2024-56725`, :cve_nist:`2024-56726`, :cve_nist:`2024-56727`, :cve_nist:`2024-56728`,
146 :cve_nist:`2024-56729`, :cve_nist:`2024-56739`, :cve_nist:`2024-56741`, :cve_nist:`2024-56744`,
147 :cve_nist:`2024-56745`, :cve_nist:`2024-56746`, :cve_nist:`2024-56747`, :cve_nist:`2024-56748`,
148 :cve_nist:`2024-56751`, :cve_nist:`2024-56752`, :cve_nist:`2024-56754`, :cve_nist:`2024-56755`,
149 :cve_nist:`2024-56756`, :cve_nist:`2024-56760`, :cve_nist:`2024-56763`, :cve_nist:`2024-56765`,
150 :cve_nist:`2024-56767`, :cve_nist:`2024-56769`, :cve_nist:`2024-56770`, :cve_nist:`2024-56774`,
151 :cve_nist:`2024-56776`, :cve_nist:`2024-56777`, :cve_nist:`2024-56778`, :cve_nist:`2024-56779`,
152 :cve_nist:`2024-56780`, :cve_nist:`2024-56781`, :cve_nist:`2024-56783`, :cve_nist:`2024-56785`,
153 :cve_nist:`2024-56786`, :cve_nist:`2024-56787`, :cve_nist:`2024-57798`, :cve_nist:`2024-57807`
154 and :cve_nist:`2024-57874`
155- ofono: Fix :cve_nist:`2023-4232`, :cve_nist:`2023-4235`, :cve_nist:`2024-7539`,
156 :cve_nist:`2024-7540`, :cve_nist:`2024-7541`, :cve_nist:`2024-7542`, :cve_nist:`2024-7543`,
157 :cve_nist:`2024-7544`, :cve_nist:`2024-7545`, :cve_nist:`2024-7546` and :cve_nist:`2024-7547`
158- rsync: Fix :cve_nist:`2024-12084`, :cve_nist:`2024-12085`, :cve_nist:`2024-12086`,
159 :cve_nist:`2024-12087`, :cve_nist:`2024-12088` and :cve_nist:`2024-12747`
160- socat: Fix :cve_nist:`2024-54661`
161- subversion: Fix :cve_nist:`2024-46901`
162- wget: Fix :cve_nist:`2024-10524`
163
164
165Fixes in Yocto-5.0.7
166~~~~~~~~~~~~~~~~~~~~
167
168- bitbake: cooker: Make cooker 'skiplist' per-multiconfig/mc
169- bitbake: tests/fetch: Fix git shallow test failure with git >= 2.48
170- bitbake: ui/knotty: print log paths for failed tasks in summary
171- bitbake: ui/knotty: respect NO_COLOR & check for tty; rename print_hyperlink => format_hyperlink
172- bluez5: Revert "bluez5: remove configuration files from install task"
173- bluez5: backport patch to fix address type when loading keys
174- boost: fix do_fetch error
175- build-appliance-image: Update to scarthgap head revision
176- classes/nativesdk: also override :term:`TUNE_PKGARCH`
177- classes/qemu: use tune to select QEMU_EXTRAOPTIONS, not package architecture
178- contributor-guide/submit-changes.rst: suggest to remove the git signature
179- cve-update-nvd2-native: Handle :term:`BB_NO_NETWORK` and missing db
180- cve-update-nvd2-native: Tweak to work better with NFS :term:`DL_DIR`
181- dev-manual/bmaptool.rst: correct command for bmaptool-native
182- dev-manual/bmaptool.rst: simplify and fix instructions
183- dev-manual: fix styling of references to bmaptool
184- docs: Gather dependencies in poky.yaml.in
185- docs: Update autobuilder URLs to valkyrie
186- docs: Update the documentation for :term:`SRCPV`
187- gcc: Fix c++: tweak for Wrange-loop-construct
188- groff: Fix race issues for parallel build
189- libgfortran: fix buildpath QA issue
190- libxml2: Upgrade to 2.12.9
191- linux-yocto/6.6: bsp/genericarm64: disable ARM64_SME
192- linux-yocto/6.6: genericarm64.cfg: enable CONFIG_DMA_CMA
193- linux-yocto/6.6: update to v6.6.69
194- lttng-modules: fix sched_stat_runtime changed in Linux 6.6.66
195- migration-guides: add release notes for 5.0.6
196- oeqa/ssh: allow to retrieve raw, unformatted ouput
197- ovmf-native: remove .pyc files from install
198- poky.conf: add new tested distros
199- poky.conf: bump version for 5.0.7
200- poky.yaml.in: add missing locales dependency
201- poky.yaml.in: replace inkscape dependency by librsvg2-bin
202- populate_sdk_ext: write_local_conf add shutil import
203- pulseaudio: fix webrtc audio depdency
204- python3-requests: upgrade to 2.32.3
205- python3: Drop empty patch
206- python3: add dependency on -compression to -core
207- python3: upgrade to 3.12.7
208- ref-manual: move runtime-testing section to the test-manual
209- ref-manual: use standardized method accross both ubuntu and debian for locale install
210- ref-manual: SSTATE_MIRRORS/SOURCE_MIRROR_URL: add instructions for mirror authentication
211- reproducible-builds.rst: show how to build a single package
212- rust-target-config: Fix TARGET_C_INT_WIDTH with correct size
213- rust: Revert "rust: Add new varaible RUST_ENABLE_EXTRA_TOOLS"
214- rust: add reproducibility patch to eliminate host leakage
215- rust: build the default set of tools
216- rust: correctly link rust-snapshot into build/stage0
217- rust: use rust-snapshot binaries only in rust-native
218- sanity.bbclass: skip check_userns for non-local uid
219- scripts/install-buildtools: Update to 5.0.6
220- system-requirements.rst: add dependencies for pdf builds
221- system-requirements: add fedora 39 to supported distros
222- system-requirements: update list of supported distros
223- systemd: enable create-log-dirs
224- test-manual/reproducible-builds: fix reproducible links
225
226
227Known Issues in Yocto-5.0.7
228~~~~~~~~~~~~~~~~~~~~~~~~~~~
229
230- N/A
231
232Contributors to Yocto-5.0.7
233~~~~~~~~~~~~~~~~~~~~~~~~~~~
234
235Thanks to the following people who contributed to this release:
236
237- Aleksandar Nikolic
238- Alexander Kanavin
239- Alexis Lothoré
240- Antonin Godard
241- Archana Polampalli
242- Bruce Ashfield
243- Catalin Popescu
244- Changqing Li
245- Chen Qi
246- Chris Laplante
247- Divya Chellam
248- Esben Haabendal
249- Guénaël Muller
250- Guðni Már Gilbert
251- Harish Sadineni
252- Hiago De Franco
253- Hitendra Prajapati
254- Jiaying Song
255- Khem Raj
256- Lee Chee Yang
257- Mark Hatle
258- Michael Opdenacker
259- Mikko Rapeli
260- Peter Marko
261- Richard Purdie
262- Robert Yang
263- Ross Burton
264- Soumya Sambu
265- Steve Sakoman
266- Sunil Dora
267- Trevor Gamblin
268- Xiangyu Chen
269- Yash Shinde
270- Zhang Peng
271- Zahir Hussain
272
273
274Repositories / Downloads for Yocto-5.0.7
275~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
276
277poky
278
279- Repository Location: :yocto_git:`/poky`
280- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
281- Tag: :yocto_git:`yocto-5.0.7 </poky/log/?h=yocto-5.0.7>`
282- Git Revision: :yocto_git:`7dad83c7e5e9637c0ff5d5712409611fd4a14946 </poky/commit/?id=7dad83c7e5e9637c0ff5d5712409611fd4a14946>`
283- Release Artefact: poky-7dad83c7e5e9637c0ff5d5712409611fd4a14946
284- sha: ae688031b19b88582bb4a76d0525e3704b981ad1d21eb38a0873cd01dd9a4652
285- Download Locations:
286 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.7/poky-7dad83c7e5e9637c0ff5d5712409611fd4a14946.tar.bz2
287 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.7/poky-7dad83c7e5e9637c0ff5d5712409611fd4a14946.tar.bz2
288
289openembedded-core
290
291- Repository Location: :oe_git:`/openembedded-core`
292- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
293- Tag: :oe_git:`yocto-5.0.7 </openembedded-core/log/?h=yocto-5.0.7>`
294- Git Revision: :oe_git:`62cb12967391db709315820d48853ffa4c6b4740 </openembedded-core/commit/?id=62cb12967391db709315820d48853ffa4c6b4740>`
295- Release Artefact: oecore-62cb12967391db709315820d48853ffa4c6b4740
296- sha: bc45429df1805445b678f1b0ed6ce017edfac38c7226dce92ce393b3ef311f95
297- Download Locations:
298 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.7/oecore-62cb12967391db709315820d48853ffa4c6b4740.tar.bz2
299 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.7/oecore-62cb12967391db709315820d48853ffa4c6b4740.tar.bz2
300
301meta-mingw
302
303- Repository Location: :yocto_git:`/meta-mingw`
304- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
305- Tag: :yocto_git:`yocto-5.0.7 </meta-mingw/log/?h=yocto-5.0.7>`
306- Git Revision: :yocto_git:`acbba477893ef87388effc4679b7f40ee49fc852 </meta-mingw/commit/?id=acbba477893ef87388effc4679b7f40ee49fc852>`
307- Release Artefact: meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852
308- sha: 3b7c2f475dad5130bace652b150367f587d44b391218b1364a8bbc430b48c54c
309- Download Locations:
310 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.7/meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852.tar.bz2
311 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.7/meta-mingw-acbba477893ef87388effc4679b7f40ee49fc852.tar.bz2
312
313bitbake
314
315- Repository Location: :oe_git:`/bitbake`
316- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
317- Tag: :oe_git:`yocto-5.0.7 </bitbake/log/?h=yocto-5.0.7>`
318- Git Revision: :oe_git:`aa0e540fc31a1c26839efd2c7785a751ce24ebfb </bitbake/commit/?id=aa0e540fc31a1c26839efd2c7785a751ce24ebfb>`
319- Release Artefact: bitbake-aa0e540fc31a1c26839efd2c7785a751ce24ebfb
320- sha: 169b68ed7d5e55015b1c35a82d35efaa25c87cba4722c85e66514a15d31e1d28
321- Download Locations:
322 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.7/bitbake-aa0e540fc31a1c26839efd2c7785a751ce24ebfb.tar.bz2
323 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.7/bitbake-aa0e540fc31a1c26839efd2c7785a751ce24ebfb.tar.bz2
324
325yocto-docs
326
327- Repository Location: :yocto_git:`/yocto-docs`
328- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
329- Tag: :yocto_git:`yocto-5.0.7 </yocto-docs/log/?h=yocto-5.0.7>`
330- Git Revision: :yocto_git:`bb9e018adcc10c642f87d0b95432783b5eb8057b </yocto-docs/commit/?id=bb9e018adcc10c642f87d0b95432783b5eb8057b>`
331
diff --git a/documentation/migration-guides/release-notes-5.0.8.rst b/documentation/migration-guides/release-notes-5.0.8.rst
new file mode 100644
index 0000000000..5cb8b30246
--- /dev/null
+++ b/documentation/migration-guides/release-notes-5.0.8.rst
@@ -0,0 +1,226 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-5.0.8 (Scarthgap)
4-----------------------------------------
5
6Security Fixes in Yocto-5.0.8
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- binutils: Fix :cve_nist:`2025-0840`
10- curl: Ignore :cve_nist:`2025-0725`
11- elfutils: Fix :cve_nist:`2025-1352`, :cve_nist:`2025-1365` and :cve_nist:`2025-1372`
12- ffmpeg: Fix :cve_nist:`2024-35365`, :cve_nist:`2024-35369`, :cve_nist:`2024-36613`,
13 :cve_nist:`2024-36616`, :cve_nist:`2024-36617`, :cve_nist:`2024-36618`, :cve_nist:`2024-36619`,
14 :cve_nist:`2025-0518`, :cve_nist:`2025-22919`, :cve_nist:`2025-22921` and :cve_nist:`2025-25473`
15- glibc: Fix :cve_nist:`2025-0395`
16- gnutls: Fix :cve_nist:`2024-12243`
17- go: Fix :cve_nist:`2024-45336`, :cve_nist:`2024-45341` and :cve_nist:`2025-22866`
18- gstreamer1.0-rtsp-server: Fix :cve_nist:`2024-44331`
19- libcap: Fix :cve_nist:`2025-1390`
20- libtasn1: Fix :cve_nist:`2024-12133`
21- libxml2: Fix :cve_nist:`2024-56171` and :cve_nist:`2025-24928`
22- linux-yocto/6.6: Fix :cve_nist:`2024-36476`, :cve_nist:`2024-53179`, :cve_nist:`2024-56582`,
23 :cve_nist:`2024-56703`, :cve_nist:`2024-57801`, :cve_nist:`2024-57802`, :cve_nist:`2024-57841`,
24 :cve_nist:`2024-57882`, :cve_nist:`2024-57887`, :cve_nist:`2024-57890`, :cve_nist:`2024-57892`,
25 :cve_nist:`2024-57895`, :cve_nist:`2024-57896`, :cve_nist:`2024-57900`, :cve_nist:`2024-57901`,
26 :cve_nist:`2024-57902`, :cve_nist:`2024-57906`, :cve_nist:`2024-57907`, :cve_nist:`2024-57908`,
27 :cve_nist:`2024-57910`, :cve_nist:`2024-57911`, :cve_nist:`2024-57912`, :cve_nist:`2024-57913`,
28 :cve_nist:`2024-57916`, :cve_nist:`2024-57922`, :cve_nist:`2024-57925`, :cve_nist:`2024-57926`,
29 :cve_nist:`2024-57933`, :cve_nist:`2024-57938`, :cve_nist:`2024-57939`, :cve_nist:`2024-57940`,
30 :cve_nist:`2024-57949`, :cve_nist:`2024-57951`, :cve_nist:`2025-21631`, :cve_nist:`2025-21636`,
31 :cve_nist:`2025-21637`, :cve_nist:`2025-21638`, :cve_nist:`2025-21639`, :cve_nist:`2025-21640`,
32 :cve_nist:`2025-21642`, :cve_nist:`2025-21652`, :cve_nist:`2025-21658`, :cve_nist:`2025-21665`,
33 :cve_nist:`2025-21666`, :cve_nist:`2025-21667`, :cve_nist:`2025-21669`, :cve_nist:`2025-21670`,
34 :cve_nist:`2025-21671`, :cve_nist:`2025-21673`, :cve_nist:`2025-21674`, :cve_nist:`2025-21675`,
35 :cve_nist:`2025-21676`, :cve_nist:`2025-21680`, :cve_nist:`2025-21681`, :cve_nist:`2025-21683`,
36 :cve_nist:`2025-21684`, :cve_nist:`2025-21687`, :cve_nist:`2025-21689`, :cve_nist:`2025-21690`,
37 :cve_nist:`2025-21692`, :cve_nist:`2025-21694`, :cve_nist:`2025-21697` and :cve_nist:`2025-21699`
38- openssh: Fix :cve_nist:`2025-26466`
39- openssl: Fix :cve_nist:`2024-9143`, :cve_nist:`2024-12797` and :cve_nist:`2024-13176`
40- pyhton3: Fix :cve_nist:`2024-12254` and :cve_nist:`2025-0938`
41- subversion: Ignore :cve_nist:`2024-45720`
42- u-boot: Fix :cve_nist:`2024-57254`, :cve_nist:`2024-57255`, :cve_nist:`2024-57256`,
43 :cve_nist:`2024-57257`, :cve_nist:`2024-57258` and :cve_nist:`2024-57259`
44- vim: Fix :cve_nist:`2025-22134` and :cve_nist:`2025-24014`
45- xwayland: Fix :cve_nist:`2024-9632`, :cve_nist:`2025-26594`, :cve_nist:`2025-26595`,
46 :cve_nist:`2025-26596`, :cve_nist:`2025-26597`, :cve_nist:`2025-26598`, :cve_nist:`2025-26599`,
47 :cve_nist:`2025-26600` and :cve_nist:`2025-26601`
48
49
50Fixes in Yocto-5.0.8
51~~~~~~~~~~~~~~~~~~~~
52
53- base-files: Drop /bin/sh dependency
54- bind: upgrade to 9.18.33
55- binutils: File name too long causing failure to open temporary head file in dlltool
56- binutils: stable 2.42 branch update
57- bitbake: bblayers/query: Fix using "removeprefix" string method
58- bitbake: bitbake-diffsigs: fix handling when finding only a single sigfile
59- bitbake: data_smart.py: clear expand_cache in _setvar_update_overridevars
60- bitbake: data_smart.py: remove unnecessary ? from __expand_var_regexp__
61- bitbake: data_smart.py: simple clean up
62- build-appliance-image: Update to scarthgap head revision
63- ccache.conf: Add include_file_ctime to sloppiness
64- cmake: apply parallel build settings to ptest tasks
65- contributor-guide/submit-changes: add policy on AI generated code
66- dev-manual/building: document the initramfs-framework recipe
67- devtool: ide-sdk recommend :term:`DEBUG_BUILD`
68- devtool: ide-sdk remove the plugin from eSDK installer
69- devtool: ide-sdk sort cmake preset
70- devtool: modify support debug-builds
71- docs: Add favicon for the documentation html
72- docs: Fix typo in standards.md
73- docs: Remove all mention of core-image-lsb
74- docs: vulnerabilities/classes: remove references to cve-check text format
75- files: Amend overlayfs unit descriptions with path information
76- files: overlayfs-create-dirs: Improve mount unit dependency
77- glibc: stable 2.39 branch updates
78- gnupg: upgrade to 2.4.5
79- go: upgrade 1.22.12
80- icu: remove host references in nativesdk to fix reproducibility
81- libtasn1: upgrade to 4.20.0
82- libxml2: upgrade to 2.12.10
83- linux-yocto/6.6: upgrade to v6.6.75
84- meta: Enable '-o pipefail' for the SDK installer
85- migration-guides: add release notes for 4.0.24, 4.0.25 and 5.0.7
86- oe-selftest: devtool ide-sdk use modify debug-build
87- oeqa/sdk/context: fix for gtk3 test failure during do_testsdk
88- oeqa/selftest/rust: skip on all MIPS platforms
89- openssl: upgrade to 3.2.4
90- pkg-config-native: pick additional search paths from $EXTRA_NATIVE_PKGCONFIG_PATH
91- poky.conf: add ubuntu2404 to :term:`SANITY_TESTED_DISTROS`
92- poky.conf: bump version for 5.0.8
93- ppp: Revert lock path to /var/lock
94- python3-setuptools-scm: respect GIT_CEILING_DIRECTORIES
95- python3: upgrade to 3.12.9
96- qemu: Do not define sched_attr with glibc >= 2.41
97- ref-manual/faq: add q&a on systemd as default
98- ref-manual: Add missing variable :term:`IMAGE_ROOTFS_MAXSIZE`
99- ref-manual: don't refer to poky-lsb
100- ref-manual: remove OE_IMPORTS
101- rust-common.bbclass: soft assignment for RUSTLIB path
102- rust: fix for rust multilib sdk configuration
103- rust: remove redundant cargo config file
104- scripts/install-buildtools: Update to 5.0.7
105- sdk-manual: extensible.rst: devtool ide-sdk improve
106- sdk-manual: extensible.rst: update devtool ide-sdk
107- selftest/rust: correctly form the PATH environment variable
108- systemd: add libpcre2 as :term:`RRECOMMENDS` if pcre2 is enabled
109- systemd: upgrade to 255.17
110- test-manual/ptest: link to common framework ptest classes
111- tzcode-native: Fix compiler setting from 2023d version
112- tzdata/tzcode-native: upgrade to 2025a
113- u-boot: kernel-fitimage: Fix dependency loop if :term:`UBOOT_SIGN_ENABLE` and UBOOT_ENV enabled
114- u-boot: kernel-fitimage: Restore FIT_SIGN_INDIVIDUAL="1" behavior
115- uboot-config: fix devtool modify with kernel-fitimage
116- vim: upgrade to 9.1.1043
117
118
119Known Issues in Yocto-5.0.8
120~~~~~~~~~~~~~~~~~~~~~~~~~~~
121
122- N/A
123
124Contributors to Yocto-5.0.8
125~~~~~~~~~~~~~~~~~~~~~~~~~~~
126
127Thanks to the following people who contributed to this release:
128
129- Adrian Freihofer
130- Aleksandar Nikolic
131- Alessio Cascone
132- Alexander Kanavin
133- Alexis Cellier
134- Antonin Godard
135- Archana Polampalli
136- Bruce Ashfield
137- Chen Qi
138- Deepesh Varatharajan
139- Divya Chellam
140- Enrico Jörns
141- Esben Haabendal
142- Etienne Cordonnier
143- Fabio Berton
144- Guðni Már Gilbert
145- Harish Sadineni
146- Hitendra Prajapati
147- Hongxu Jia
148- Jiaying Song
149- Joerg Schmidt
150- Johannes Schneider
151- Khem Raj
152- Lee Chee Yang
153- Marek Vasut
154- Marta Rybczynska
155- Moritz Haase
156- Oleksandr Hnatiuk
157- Pedro Ferreira
158- Peter Marko
159- Poonam Jadhav
160- Priyal Doshi
161- Ross Burton
162- Simon A. Eugster
163- Steve Sakoman
164- Vijay Anusuri
165- Wang Mingyu
166- Weisser, Pascal
167
168
169Repositories / Downloads for Yocto-5.0.8
170~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
171
172poky
173
174- Repository Location: :yocto_git:`/poky`
175- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
176- Tag: :yocto_git:`yocto-5.0.8 </poky/log/?h=yocto-5.0.8>`
177- Git Revision: :yocto_git:`dc4827b3660bc1a03a2bc3b0672615b50e9137ff </poky/commit/?id=dc4827b3660bc1a03a2bc3b0672615b50e9137ff>`
178- Release Artefact: poky-dc4827b3660bc1a03a2bc3b0672615b50e9137ff
179- sha: ace7264e16e18ed02ef0ad2935fa10b5fad2c4de38b2356f4192b38ef2184504
180- Download Locations:
181 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.8/poky-dc4827b3660bc1a03a2bc3b0672615b50e9137ff.tar.bz2
182 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.8/poky-dc4827b3660bc1a03a2bc3b0672615b50e9137ff.tar.bz2
183
184openembedded-core
185
186- Repository Location: :oe_git:`/openembedded-core`
187- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
188- Tag: :oe_git:`yocto-5.0.8 </openembedded-core/log/?h=yocto-5.0.8>`
189- Git Revision: :oe_git:`cd2b6080a4c0f2ed2c9939ec0b87763aef595048 </openembedded-core/commit/?id=cd2b6080a4c0f2ed2c9939ec0b87763aef595048>`
190- Release Artefact: oecore-cd2b6080a4c0f2ed2c9939ec0b87763aef595048
191- sha: 14c7cd5c62a96ceb9c2141164ea0f087fdbaed99ca3e9a722977a3f12d6381f6
192- Download Locations:
193 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.8/oecore-cd2b6080a4c0f2ed2c9939ec0b87763aef595048.tar.bz2
194 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.8/oecore-cd2b6080a4c0f2ed2c9939ec0b87763aef595048.tar.bz2
195
196meta-mingw
197
198- Repository Location: :yocto_git:`/meta-mingw`
199- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
200- Tag: :yocto_git:`yocto-5.0.8 </meta-mingw/log/?h=yocto-5.0.8>`
201- Git Revision: :yocto_git:`bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f </meta-mingw/commit/?id=bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f>`
202- Release Artefact: meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f
203- sha: ab073def6487f237ac125d239b3739bf02415270959546b6b287778664f0ae65
204- Download Locations:
205 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.8/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
206 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.8/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
207
208bitbake
209
210- Repository Location: :oe_git:`/bitbake`
211- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
212- Tag: :oe_git:`yocto-5.0.8 </bitbake/log/?h=yocto-5.0.8>`
213- Git Revision: :oe_git:`7375d32e8c1af20c51abec4eb3b072b4ca58b239 </bitbake/commit/?id=7375d32e8c1af20c51abec4eb3b072b4ca58b239>`
214- Release Artefact: bitbake-7375d32e8c1af20c51abec4eb3b072b4ca58b239
215- sha: 13dffbc162c5b6e2c95fa72936a430b9a542d52d81d502a5d0afc592fbf4a16b
216- Download Locations:
217 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.8/bitbake-7375d32e8c1af20c51abec4eb3b072b4ca58b239.tar.bz2
218 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.8/bitbake-7375d32e8c1af20c51abec4eb3b072b4ca58b239.tar.bz2
219
220yocto-docs
221
222- Repository Location: :yocto_git:`/yocto-docs`
223- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
224- Tag: :yocto_git:`yocto-5.0.8 </yocto-docs/log/?h=yocto-5.0.8>`
225- Git Revision: :yocto_git:`7d3cce5b962ca9f73b29affceb7ebc6710627739 </yocto-docs/commit/?id=7d3cce5b962ca9f73b29affceb7ebc6710627739>`
226
diff --git a/documentation/migration-guides/release-notes-5.0.9.rst b/documentation/migration-guides/release-notes-5.0.9.rst
new file mode 100644
index 0000000000..81b853cf31
--- /dev/null
+++ b/documentation/migration-guides/release-notes-5.0.9.rst
@@ -0,0 +1,206 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Release notes for Yocto-5.0.9 (Scarthgap)
4-----------------------------------------
5
6Security Fixes in Yocto-5.0.9
7~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
9- binutils: Fix :cve_nist:`2024-57360`, :cve_nist:`2025-1176`, :cve_nist:`2025-1178` and
10 :cve_nist:`2025-1181`
11- expat: Fix :cve_nist:`2024-8176`
12- freetype: Fix :cve_nist:`2025-27363`
13- ghostscript: Fix :cve_nist:`2025-27830`, :cve_nist:`2025-27831`, :cve_nist:`2025-27832`,
14 :cve_nist:`2025-27833`, :cve_nist:`2025-27833`, :cve_nist:`2025-27834`, :cve_nist:`2025-27835`
15 and :cve_nist:`2025-27836`
16- go: fix :cve_nist:`2025-22870` and :cve_nist:`2025-22871`
17- grub: Fix :cve_nist:`2024-45781`, :cve_nist:`2024-45774`, :cve_nist:`2024-45775`,
18 :cve_nist:`2024-45776`, :cve_nist:`2024-45777`, :cve_nist:`2024-45778`, :cve_nist:`2024-45779`,
19 :cve_nist:`2024-45780`, :cve_nist:`2024-45782`, :cve_nist:`2024-45783`, :cve_nist:`2024-56737`,
20 :cve_nist:`2025-0622`, :cve_nist:`2025-0624`, :cve_nist:`2025-0677`, :cve_nist:`2025-0678`,
21 :cve_nist:`2025-0684`, :cve_nist:`2025-0685`, :cve_nist:`2025-0686`, :cve_nist:`2025-0689`,
22 :cve_nist:`2025-0690`, :cve_nist:`2025-1118` and :cve_nist:`2025-1125`
23- libarchive: Fix :cve_nist:`2024-20696`, :cve_nist:`2024-48957`, :cve_nist:`2024-48958`,
24 :cve_nist:`2025-1632` and :cve_nist:`2025-25724`
25- libxslt: Fix :cve_nist:`2024-24855` and :cve_nist:`2024-55549`
26- linux-yocto/6.6: Fix :cve_nist:`2024-54458`, :cve_nist:`2024-57834`, :cve_nist:`2024-57973`,
27 :cve_nist:`2024-57978`, :cve_nist:`2024-57979`, :cve_nist:`2024-57980`, :cve_nist:`2024-57981`,
28 :cve_nist:`2024-57984`, :cve_nist:`2024-57996`, :cve_nist:`2024-57997`, :cve_nist:`2024-58002`,
29 :cve_nist:`2024-58005`, :cve_nist:`2024-58007`, :cve_nist:`2024-58010`, :cve_nist:`2024-58011`,
30 :cve_nist:`2024-58013`, :cve_nist:`2024-58017`, :cve_nist:`2024-58020`, :cve_nist:`2024-58034`,
31 :cve_nist:`2024-58052`, :cve_nist:`2024-58055`, :cve_nist:`2024-58058`, :cve_nist:`2024-58063`,
32 :cve_nist:`2024-58068`, :cve_nist:`2024-58069`, :cve_nist:`2024-58070`, :cve_nist:`2024-58071`,
33 :cve_nist:`2024-58076`, :cve_nist:`2024-58080`, :cve_nist:`2024-58083`, :cve_nist:`2024-58088`,
34 :cve_nist:`2025-21700`, :cve_nist:`2025-21703`, :cve_nist:`2025-21707`, :cve_nist:`2025-21711`,
35 :cve_nist:`2025-21715`, :cve_nist:`2025-21716`, :cve_nist:`2025-21718`, :cve_nist:`2025-21726`,
36 :cve_nist:`2025-21727`, :cve_nist:`2025-21731`, :cve_nist:`2025-21735`, :cve_nist:`2025-21736`,
37 :cve_nist:`2025-21741`, :cve_nist:`2025-21742`, :cve_nist:`2025-21743`, :cve_nist:`2025-21744`,
38 :cve_nist:`2025-21745`, :cve_nist:`2025-21748`, :cve_nist:`2025-21749`, :cve_nist:`2025-21753`,
39 :cve_nist:`2025-21756`, :cve_nist:`2025-21759`, :cve_nist:`2025-21760`, :cve_nist:`2025-21761`,
40 :cve_nist:`2025-21762`, :cve_nist:`2025-21763`, :cve_nist:`2025-21764`, :cve_nist:`2025-21773`,
41 :cve_nist:`2025-21775`, :cve_nist:`2025-21776`, :cve_nist:`2025-21779`, :cve_nist:`2025-21780`,
42 :cve_nist:`2025-21782`, :cve_nist:`2025-21783`, :cve_nist:`2025-21785`, :cve_nist:`2025-21787`,
43 :cve_nist:`2025-21789`, :cve_nist:`2025-21790`, :cve_nist:`2025-21791`, :cve_nist:`2025-21792`,
44 :cve_nist:`2025-21793`, :cve_nist:`2025-21796`, :cve_nist:`2025-21811`, :cve_nist:`2025-21812`,
45 :cve_nist:`2025-21814`, :cve_nist:`2025-21820`, :cve_nist:`2025-21844`, :cve_nist:`2025-21846`,
46 :cve_nist:`2025-21847`, :cve_nist:`2025-21848`, :cve_nist:`2025-21853`, :cve_nist:`2025-21854`,
47 :cve_nist:`2025-21855`, :cve_nist:`2025-21856`, :cve_nist:`2025-21857`, :cve_nist:`2025-21858`,
48 :cve_nist:`2025-21859`, :cve_nist:`2025-21862`, :cve_nist:`2025-21863`, :cve_nist:`2025-21864`,
49 :cve_nist:`2025-21865`, :cve_nist:`2025-21866`, :cve_nist:`2025-21867`, :cve_nist:`2025-21887`,
50 :cve_nist:`2025-21891`, :cve_nist:`2025-21898`, :cve_nist:`2025-21904`, :cve_nist:`2025-21905`,
51 :cve_nist:`2025-21908`, :cve_nist:`2025-21912`, :cve_nist:`2025-21915`, :cve_nist:`2025-21917`,
52 :cve_nist:`2025-21918`, :cve_nist:`2025-21919`, :cve_nist:`2025-21920`, :cve_nist:`2025-21922`,
53 :cve_nist:`2025-21928`, :cve_nist:`2025-21934`, :cve_nist:`2025-21936`, :cve_nist:`2025-21937`,
54 :cve_nist:`2025-21941`, :cve_nist:`2025-21943`, :cve_nist:`2025-21945`, :cve_nist:`2025-21947`,
55 :cve_nist:`2025-21948`, :cve_nist:`2025-21951`, :cve_nist:`2025-21957`, :cve_nist:`2025-21959`,
56 :cve_nist:`2025-21962`, :cve_nist:`2025-21963`, :cve_nist:`2025-21964`, :cve_nist:`2025-21966`,
57 :cve_nist:`2025-21967`, :cve_nist:`2025-21968`, :cve_nist:`2025-21969`, :cve_nist:`2025-21979`,
58 :cve_nist:`2025-21980`, :cve_nist:`2025-21981`, :cve_nist:`2025-21991` and :cve_nist:`2025-21993`
59- mpg123: Fix :cve_nist:`2024-10573`
60- ofono: Fix :cve_nist:`2024-7537`
61- openssh: Fix :cve_nist:`2025-26465`
62- puzzles: Ignore :cve_nist:`2024-13769`, :cve_nist:`2024-13770` and :cve_nist:`2025-0837`
63- qemu: Ignore :cve_nist:`2023-1386`
64- ruby: Fix :cve_nist:`2025-27219` and :cve_nist:`2025-27220`
65- rust-cross-canadian: Ignore :cve_nist:`2024-43402`
66- vim: Fix :cve_nist:`2025-1215`, :cve_nist:`2025-26603`, :cve_nist:`2025-27423` and
67 :cve_nist:`2025-29768`
68- xserver-xorg: Fix :cve_nist:`2025-26594`, :cve_nist:`2025-26595`, :cve_nist:`2025-26596`,
69 :cve_nist:`2025-26597`, :cve_nist:`2025-26598`, :cve_nist:`2025-26599`, :cve_nist:`2025-26600`
70 and :cve_nist:`2025-26601`
71- xz: Fix :cve_nist:`2025-31115`
72
73
74Fixes in Yocto-5.0.9
75~~~~~~~~~~~~~~~~~~~~
76
77- babeltrace2: extend to nativesdk
78- babeltrace: extend to nativesdk
79- bitbake: event/utils: Avoid deadlock from lock_timeout() and recursive events
80- bitbake: utils: Add signal blocking for lock_timeout
81- bitbake: utils: Print information about lock issue before exiting
82- bitbake: utils: Tweak lock_timeout logic
83- build-appliance-image: Update to scarthgap head revision
84- cve-check.bbclass: Mitigate symlink related error
85- cve-update-nvd2-native: add workaround for json5 style list
86- cve-update-nvd2-native: handle missing vulnStatus
87- gcc: remove paths to sysroot from configargs.h and checksum-options for gcc-cross-canadian
88- gcc: unify cleanup of include-fixed, apply to cross-canadian
89- ghostscript: upgrade to 10.05.0
90- grub: backport strlcpy function
91- grub: drop obsolete CVE statuses
92- icu: Adjust ICU_DATA_DIR path on big endian targets
93- kernel-arch: add macro-prefix-map in KERNEL_CC
94- libarchive: upgrade to 3.7.9
95- libxslt: upgrade to 1.1.43
96- linux-yocto/6.6: update to v6.6.84
97- mc: set ac_cv_path_ZIP to avoid buildpaths QA issues
98- mpg123: upgrade to 1.32.10
99- nativesdk-libtool: sanitize the script, remove buildpaths
100- openssl: rewrite ptest installation
101- overview-manual/concepts: remove :term:`PR` from the build dir list
102- patch.py: set commituser and commitemail for addNote
103- poky.conf: bump version for 5.0.9
104- vim: Upgrade to 9.1.1198
105- xserver-xf86-config: add a configuration fragment to disable screen blanking
106- xserver-xf86-config: remove obsolete configuration files
107- xserver-xorg: upgrade to 21.1.16
108- xz: upgrade to 5.4.7
109- yocto-uninative: Update to 4.7 for glibc 2.41
110
111
112Known Issues in Yocto-5.0.9
113~~~~~~~~~~~~~~~~~~~~~~~~~~~
114
115- N/A
116
117Contributors to Yocto-5.0.9
118~~~~~~~~~~~~~~~~~~~~~~~~~~~
119
120Thanks to the following people who contributed to this release:
121
122- Antonin Godard
123- Archana Polampalli
124- Ashish Sharma
125- Bruce Ashfield
126- Changqing Li
127- Denys Dmytriyenko
128- Divya Chellam
129- Hitendra Prajapati
130- Madhu Marri
131- Makarios Christakis
132- Martin Jansa
133- Michael Halstead
134- Niko Mauno
135- Oleksandr Hnatiuk
136- Peter Marko
137- Richard Purdie
138- Ross Burton
139- Sana Kazi
140- Stefan Mueller-Klieser
141- Steve Sakoman
142- Vijay Anusuri
143- Virendra Thakur
144- Vishwas Udupa
145- Wang Mingyu
146- Zhang Peng
147
148
149Repositories / Downloads for Yocto-5.0.9
150~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
151
152poky
153
154- Repository Location: :yocto_git:`/poky`
155- Branch: :yocto_git:`scarthgap </poky/log/?h=scarthgap>`
156- Tag: :yocto_git:`yocto-5.0.9 </poky/log/?h=yocto-5.0.9>`
157- Git Revision: :yocto_git:`bab0f9f62af9af580744948dd3240f648a99879a </poky/commit/?id=bab0f9f62af9af580744948dd3240f648a99879a>`
158- Release Artefact: poky-bab0f9f62af9af580744948dd3240f648a99879a
159- sha: ee6811d9fb6c4913e19d6e3569f1edc8ccd793779b237520596506446a6b4531
160- Download Locations:
161 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.9/poky-bab0f9f62af9af580744948dd3240f648a99879a.tar.bz2
162 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.9/poky-bab0f9f62af9af580744948dd3240f648a99879a.tar.bz2
163
164openembedded-core
165
166- Repository Location: :oe_git:`/openembedded-core`
167- Branch: :oe_git:`scarthgap </openembedded-core/log/?h=scarthgap>`
168- Tag: :oe_git:`yocto-5.0.9 </openembedded-core/log/?h=yocto-5.0.9>`
169- Git Revision: :oe_git:`04038ecd1edd6592b826665a2b787387bb7074fa </openembedded-core/commit/?id=04038ecd1edd6592b826665a2b787387bb7074fa>`
170- Release Artefact: oecore-04038ecd1edd6592b826665a2b787387bb7074fa
171- sha: 6e201a4b486dfbdfcb7e96d83b962a205ec4764db6ad0e34bd623db18910eddb
172- Download Locations:
173 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.9/oecore-04038ecd1edd6592b826665a2b787387bb7074fa.tar.bz2
174 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.9/oecore-04038ecd1edd6592b826665a2b787387bb7074fa.tar.bz2
175
176meta-mingw
177
178- Repository Location: :yocto_git:`/meta-mingw`
179- Branch: :yocto_git:`scarthgap </meta-mingw/log/?h=scarthgap>`
180- Tag: :yocto_git:`yocto-5.0.9 </meta-mingw/log/?h=yocto-5.0.9>`
181- Git Revision: :yocto_git:`bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f </meta-mingw/commit/?id=bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f>`
182- Release Artefact: meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f
183- sha: ab073def6487f237ac125d239b3739bf02415270959546b6b287778664f0ae65
184- Download Locations:
185 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.9/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
186 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.9/meta-mingw-bd9fef71ec005be3c3a6d7f8b99d8116daf70c4f.tar.bz2
187
188bitbake
189
190- Repository Location: :oe_git:`/bitbake`
191- Branch: :oe_git:`2.8 </bitbake/log/?h=2.8>`
192- Tag: :oe_git:`yocto-5.0.9 </bitbake/log/?h=yocto-5.0.9>`
193- Git Revision: :oe_git:`696c2c1ef095f8b11c7d2eff36fae50f58c62e5e </bitbake/commit/?id=696c2c1ef095f8b11c7d2eff36fae50f58c62e5e>`
194- Release Artefact: bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e
195- sha: fc83f879cd6dd14b9b7eba0161fec23ecc191fed0fb00556ba729dceef6c145f
196- Download Locations:
197 https://downloads.yoctoproject.org/releases/yocto/yocto-5.0.9/bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e.tar.bz2
198 https://mirrors.kernel.org/yocto/yocto/yocto-5.0.9/bitbake-696c2c1ef095f8b11c7d2eff36fae50f58c62e5e.tar.bz2
199
200yocto-docs
201
202- Repository Location: :yocto_git:`/yocto-docs`
203- Branch: :yocto_git:`scarthgap </yocto-docs/log/?h=scarthgap>`
204- Tag: :yocto_git:`yocto-5.0.9 </yocto-docs/log/?h=yocto-5.0.9>`
205- Git Revision: :yocto_git:`56db4fd81f6235428bef9e46a61c11ca0ba89733 </yocto-docs/commit/?id=56db4fd81f6235428bef9e46a61c11ca0ba89733>`
206
diff --git a/documentation/migration-guides/release-notes-5.0.rst b/documentation/migration-guides/release-notes-5.0.rst
index 800ba20a27..de11bd174a 100644
--- a/documentation/migration-guides/release-notes-5.0.rst
+++ b/documentation/migration-guides/release-notes-5.0.rst
@@ -217,7 +217,7 @@ New Features / Enhancements in 5.0
217 state directory (i.e., ``/run``). 217 state directory (i.e., ``/run``).
218 218
219 - Allow to disable colored text output through the 219 - Allow to disable colored text output through the
220 `NO_OUTPUT <https://no-color.org/>`__ environment variable. 220 `NO_COLOR <https://no-color.org/>`__ environment variable.
221 221
222 - ``git-make-shallow`` script: add support for Git's ``safe.bareRepository=explicit`` 222 - ``git-make-shallow`` script: add support for Git's ``safe.bareRepository=explicit``
223 configuration setting. 223 configuration setting.
@@ -362,39 +362,39 @@ The following corrections have been made to the :term:`LICENSE` values set by re
362Security Fixes in 5.0 362Security Fixes in 5.0
363~~~~~~~~~~~~~~~~~~~~~ 363~~~~~~~~~~~~~~~~~~~~~
364 364
365- avahi: :cve:`2023-1981`, :cve:`2023-38469`, :cve:`2023-38470`, :cve:`2023-38471`, :cve:`2023-38469`, :cve:`2023-38470`, :cve:`2023-38471`, :cve:`2023-38472`, :cve:`2023-38473` 365- avahi: :cve_nist:`2023-1981`, :cve_nist:`2023-38469`, :cve_nist:`2023-38470`, :cve_nist:`2023-38471`, :cve_nist:`2023-38469`, :cve_nist:`2023-38470`, :cve_nist:`2023-38471`, :cve_nist:`2023-38472`, :cve_nist:`2023-38473`
366- bind: :cve:`2023-4408`, :cve:`2023-5517`, :cve:`2023-5679`, :cve:`2023-50387` 366- bind: :cve_nist:`2023-4408`, :cve_nist:`2023-5517`, :cve_nist:`2023-5679`, :cve_nist:`2023-50387`
367- bluez5: :cve:`2023-45866` 367- bluez5: :cve_nist:`2023-45866`
368- coreutils: :cve:`2024-0684` 368- coreutils: :cve_nist:`2024-0684`
369- cups: :cve:`2023-4504` 369- cups: :cve_nist:`2023-4504`
370- curl: :cve:`2023-46218` 370- curl: :cve_nist:`2023-46218`
371- expat: :cve:`2024-28757` 371- expat: :cve_nist:`2024-28757`
372- gcc: :cve:`2023-4039` 372- gcc: :cve_nist:`2023-4039`
373- glibc: :cve:`2023-5156`, :cve:`2023-0687` 373- glibc: :cve_nist:`2023-5156`, :cve_nist:`2023-0687`
374- gnutls: :cve:`2024-0553`, :cve:`2024-0567`, :cve:`2024-28834`, :cve:`2024-28835` 374- gnutls: :cve_nist:`2024-0553`, :cve_nist:`2024-0567`, :cve_nist:`2024-28834`, :cve_nist:`2024-28835`
375- go: :cve:`2023-45288` 375- go: :cve_nist:`2023-45288`
376- grub: :cve:`2023-4692`, :cve:`2023-4693` 376- grub: :cve_nist:`2023-4692`, :cve_nist:`2023-4693`
377- grub2: :cve:`2023-4001` (ignored), :cve:`2024-1048` (ignored) 377- grub2: :cve_nist:`2023-4001` (ignored), :cve_nist:`2024-1048` (ignored)
378- libgit2: :cve:`2024-24575`, :cve:`2024-24577` 378- libgit2: :cve_nist:`2024-24575`, :cve_nist:`2024-24577`
379- libsndfile1: :cve:`2022-33065` 379- libsndfile1: :cve_nist:`2022-33065`
380- libssh2: :cve:`2023-48795` 380- libssh2: :cve_nist:`2023-48795`
381- libuv: :cve:`2024-24806` 381- libuv: :cve_nist:`2024-24806`
382- libxml2: :cve:`2023-45322` (ignored) 382- libxml2: :cve_nist:`2023-45322` (ignored)
383- linux-yocto/6.6: :cve:`2020-16119` 383- linux-yocto/6.6: :cve_nist:`2020-16119`
384- openssh: :cve:`2023-48795`, :cve:`2023-51384`, :cve:`2023-51385` 384- openssh: :cve_nist:`2023-48795`, :cve_nist:`2023-51384`, :cve_nist:`2023-51385`
385- openssl: :cve:`2023-5363`, :cve:`2023-5678`, :cve:`2023-6129`, :cve_mitre:`2023-6237`, :cve:`2024-0727`, :cve:`2024-2511` 385- openssl: :cve_nist:`2023-5363`, :cve_nist:`2023-5678`, :cve_nist:`2023-6129`, :cve_mitre:`2023-6237`, :cve_nist:`2024-0727`, :cve_nist:`2024-2511`
386- perl: :cve:`2023-47100` 386- perl: :cve_nist:`2023-47100`
387- pixman: :cve:`2023-37769` (ignored) 387- pixman: :cve_nist:`2023-37769` (ignored)
388- python3-cryptography{-vectors}: :cve:`2023-49083`, :cve:`2024-26130` 388- python3-cryptography{-vectors}: :cve_nist:`2023-49083`, :cve_nist:`2024-26130`
389- python3-urllib3: :cve:`2023-45803` 389- python3-urllib3: :cve_nist:`2023-45803`
390- shadow: :cve:`2023-4641` 390- shadow: :cve_nist:`2023-4641`
391- sudo: :cve:`2023-42456` 391- sudo: :cve_nist:`2023-42456`
392- tiff: :cve:`2023-6228`, :cve:`2023-6277`, :cve:`2023-52355`, :cve:`2023-52356` 392- tiff: :cve_nist:`2023-6228`, :cve_nist:`2023-6277`, :cve_nist:`2023-52355`, :cve_nist:`2023-52356`
393- vim: :cve:`2023-46246`, :cve:`2023-48231`, :cve:`2023-48232`, :cve:`2023-48233`, :cve:`2023-48234`, :cve:`2023-48235`, :cve:`2023-48236`, :cve:`2023-48237`, :cve:`2024-22667` 393- vim: :cve_nist:`2023-46246`, :cve_nist:`2023-48231`, :cve_nist:`2023-48232`, :cve_nist:`2023-48233`, :cve_nist:`2023-48234`, :cve_nist:`2023-48235`, :cve_nist:`2023-48236`, :cve_nist:`2023-48237`, :cve_nist:`2024-22667`
394- wpa-supplicant: :cve:`2023-52160` 394- wpa-supplicant: :cve_nist:`2023-52160`
395- xserver-xorg: :cve:`2023-5574`, :cve:`2023-6816`, :cve:`2024-0229`, :cve:`2024-0408`, :cve:`2024-0409`, :cve:`2024-21885`, :cve:`2024-21886` 395- xserver-xorg: :cve_nist:`2023-5574`, :cve_nist:`2023-6816`, :cve_nist:`2024-0229`, :cve_nist:`2024-0408`, :cve_nist:`2024-0409`, :cve_nist:`2024-21885`, :cve_nist:`2024-21886`
396- xwayland: :cve:`2023-5367`, :cve:`2024-0408`, :cve:`2024-0409`, :cve:`2023-6816`, :cve:`2024-0229`, :cve:`2024-21885`, :cve:`2024-21886` 396- xwayland: :cve_nist:`2023-5367`, :cve_nist:`2024-0408`, :cve_nist:`2024-0409`, :cve_nist:`2023-6816`, :cve_nist:`2024-0229`, :cve_nist:`2024-21885`, :cve_nist:`2024-21886`
397- zlib: :cve:`2023-45853` (ignored), :cve:`2023-6992` (ignored) 397- zlib: :cve_nist:`2023-45853` (ignored), :cve_nist:`2023-6992` (ignored)
398 398
399 399
400Recipe Upgrades in 5.0 400Recipe Upgrades in 5.0
diff --git a/documentation/overview-manual/concepts.rst b/documentation/overview-manual/concepts.rst
index 62f2327a7e..56dd3b3b55 100644
--- a/documentation/overview-manual/concepts.rst
+++ b/documentation/overview-manual/concepts.rst
@@ -98,7 +98,7 @@ files, and how to package the compiled output.
98 98
99The term "package" is sometimes used to refer to recipes. However, since 99The term "package" is sometimes used to refer to recipes. However, since
100the word "package" is used for the packaged output from the OpenEmbedded 100the word "package" is used for the packaged output from the OpenEmbedded
101build system (i.e. ``.ipk`` or ``.deb`` files), this document avoids 101build system (i.e. ``.ipk``, ``.deb`` or ``.rpm`` files), this document avoids
102using the term "package" when referring to recipes. 102using the term "package" when referring to recipes.
103 103
104Classes 104Classes
@@ -256,7 +256,7 @@ development environment.
256.. note:: 256.. note::
257 257
258 The 258 The
259 scripts/oe-setup-builddir 259 ``scripts/oe-setup-builddir``
260 script uses the 260 script uses the
261 ``$TEMPLATECONF`` 261 ``$TEMPLATECONF``
262 variable to determine which sample configuration files to locate. 262 variable to determine which sample configuration files to locate.
@@ -352,7 +352,7 @@ layers the build system uses to further control the build. These layers
352provide Metadata for the software, machine, and policies. 352provide Metadata for the software, machine, and policies.
353 353
354In general, there are three types of layer input. You can see them below 354In general, there are three types of layer input. You can see them below
355the "User Configuration" box in the `general workflow 355the "User Configuration" box in the :ref:`general workflow
356figure <overview-manual/concepts:openembedded build system concepts>`: 356figure <overview-manual/concepts:openembedded build system concepts>`:
357 357
358- *Metadata (.bb + Patches):* Software layers containing 358- *Metadata (.bb + Patches):* Software layers containing
@@ -420,14 +420,14 @@ build.
420Distro Layer 420Distro Layer
421~~~~~~~~~~~~ 421~~~~~~~~~~~~
422 422
423The distribution layer provides policy configurations for your 423A distribution layer provides policy configurations for your
424distribution. Best practices dictate that you isolate these types of 424distribution. Best practices dictate that you isolate these types of
425configurations into their own layer. Settings you provide in 425configurations into their own layer. Settings you provide in
426``conf/distro/distro.conf`` override similar settings that BitBake finds 426``conf/distro/distro.conf`` override similar settings that BitBake finds
427in your ``conf/local.conf`` file in the :term:`Build Directory`. 427in your ``conf/local.conf`` file in the :term:`Build Directory`.
428 428
429The following list provides some explanation and references for what you 429The following list provides some explanation and references for what you
430typically find in the distribution layer: 430typically find in a distribution layer:
431 431
432- *classes:* Class files (``.bbclass``) hold common functionality that 432- *classes:* Class files (``.bbclass``) hold common functionality that
433 can be shared among recipes in the distribution. When your recipes 433 can be shared among recipes in the distribution. When your recipes
@@ -454,7 +454,7 @@ typically find in the distribution layer:
454BSP Layer 454BSP Layer
455~~~~~~~~~ 455~~~~~~~~~
456 456
457The BSP Layer provides machine configurations that target specific 457A BSP layer provides machine configurations that target specific
458hardware. Everything in this layer is specific to the machine for which 458hardware. Everything in this layer is specific to the machine for which
459you are building the image or the SDK. A common structure or form is 459you are building the image or the SDK. A common structure or form is
460defined for BSP layers. You can learn more about this structure in the 460defined for BSP layers. You can learn more about this structure in the
@@ -465,7 +465,7 @@ defined for BSP layers. You can learn more about this structure in the
465 In order for a BSP layer to be considered compliant with the Yocto 465 In order for a BSP layer to be considered compliant with the Yocto
466 Project, it must meet some structural requirements. 466 Project, it must meet some structural requirements.
467 467
468The BSP Layer's configuration directory contains configuration files for 468A BSP layer's configuration directory contains configuration files for
469the machine (``conf/machine/machine.conf``) and, of course, the layer 469the machine (``conf/machine/machine.conf``) and, of course, the layer
470(``conf/layer.conf``). 470(``conf/layer.conf``).
471 471
@@ -477,18 +477,18 @@ formfactors, graphics support systems, and so forth.
477.. note:: 477.. note::
478 478
479 While the figure shows several 479 While the figure shows several
480 recipes-\* 480 ``recipes-*``
481 directories, not all these directories appear in all BSP layers. 481 directories, not all these directories appear in all BSP layers.
482 482
483Software Layer 483Software Layer
484~~~~~~~~~~~~~~ 484~~~~~~~~~~~~~~
485 485
486The software layer provides the Metadata for additional software 486A software layer provides the Metadata for additional software
487packages used during the build. This layer does not include Metadata 487packages used during the build. This layer does not include Metadata
488that is specific to the distribution or the machine, which are found in 488that is specific to the distribution or the machine, which are found in
489their respective layers. 489their respective layers.
490 490
491This layer contains any recipes, append files, and patches, that your 491This layer contains any recipes, append files, and patches that your
492project needs. 492project needs.
493 493
494Sources 494Sources
@@ -560,9 +560,8 @@ source tree used by the group).
560 560
561The canonical method through which to include a local project is to use the 561The canonical method through which to include a local project is to use the
562:ref:`ref-classes-externalsrc` class to include that local project. You use 562:ref:`ref-classes-externalsrc` class to include that local project. You use
563either the ``local.conf`` or a recipe's append file to override or set the 563either ``local.conf`` or a recipe's append file to override or set the
564recipe to point to the local directory on your disk to pull in the whole 564recipe to point to the local directory from which to fetch the source.
565source tree.
566 565
567Source Control Managers (Optional) 566Source Control Managers (Optional)
568~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 567~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -736,9 +735,6 @@ following list describe the :term:`Build Directory`'s hierarchy:
736 - :term:`PV`: The version of the 735 - :term:`PV`: The version of the
737 recipe used to build the package. 736 recipe used to build the package.
738 737
739 - :term:`PR`: The revision of the
740 recipe used to build the package.
741
742- :term:`S`: Contains the unpacked source 738- :term:`S`: Contains the unpacked source
743 files for a given recipe. 739 files for a given recipe.
744 740
@@ -912,11 +908,62 @@ the analysis and package splitting process use several areas:
912 execute on a system and it generates code for yet another machine 908 execute on a system and it generates code for yet another machine
913 (e.g. :ref:`ref-classes-cross-canadian` recipes). 909 (e.g. :ref:`ref-classes-cross-canadian` recipes).
914 910
915The :term:`FILES` variable defines the 911Packages for a recipe are listed in the :term:`PACKAGES` variable. The
916files that go into each package in 912:oe_git:`bitbake.conf </openembedded-core/tree/meta/conf/bitbake.conf>`
917:term:`PACKAGES`. If you want 913configuration file defines the following default list of packages::
918details on how this is accomplished, you can look at 914
919:yocto_git:`package.bbclass </poky/tree/meta/classes-global/package.bbclass>`. 915 PACKAGES = "${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}"
916
917Each of these packages contains a default list of files defined with the
918:term:`FILES` variable. For example, the package ``${PN}-dev`` represents files
919useful to the development of applications depending on ``${PN}``. The default
920list of files for ``${PN}-dev``, also defined in :oe_git:`bitbake.conf
921</openembedded-core/tree/meta/conf/bitbake.conf>`, is defined as follows::
922
923 FILES:${PN}-dev = "${includedir} ${FILES_SOLIBSDEV} ${libdir}/*.la \
924 ${libdir}/*.o ${libdir}/pkgconfig ${datadir}/pkgconfig \
925 ${datadir}/aclocal ${base_libdir}/*.o \
926 ${libdir}/${BPN}/*.la ${base_libdir}/*.la \
927 ${libdir}/cmake ${datadir}/cmake"
928
929The paths in this list must be *absolute* paths from the point of view of the
930root filesystem on the target, and must *not* make a reference to the variable
931:term:`D` or any :term:`WORKDIR` related variable. A correct example would be::
932
933 ${sysconfdir}/foo.conf
934
935.. note::
936
937 The list of files for a package is defined using the override syntax by
938 separating :term:`FILES` and the package name by a semi-colon (``:``).
939
940A given file can only ever be in one package. By iterating from the leftmost to
941rightmost package in :term:`PACKAGES`, each file matching one of the patterns
942defined in the corresponding :term:`FILES` definition is included in the
943package.
944
945.. note::
946
947 To find out which package installs a file, the ``oe-pkgdata-util``
948 command-line utility can be used::
949
950 $ oe-pkgdata-util find-path '/etc/fstab'
951 base-files: /etc/fstab
952
953 For more information on the ``oe-pkgdata-util`` utility, see the section
954 :ref:`dev-manual/debugging:Viewing Package Information with
955 ``oe-pkgdata-util``` of the Yocto Project Development Tasks Manual.
956
957To add a custom package variant of the ``${PN}`` recipe named
958``${PN}-extra`` (name is arbitrary), one can add it to the
959:term:`PACKAGE_BEFORE_PN` variable::
960
961 PACKAGE_BEFORE_PN += "${PN}-extra"
962
963Alternatively, a custom package can be added by adding it to the
964:term:`PACKAGES` variable using the prepend operator (``=+``)::
965
966 PACKAGES =+ "${PN}-extra"
920 967
921Depending on the type of packages being created (RPM, DEB, or IPK), the 968Depending on the type of packages being created (RPM, DEB, or IPK), the
922:ref:`do_package_write_* <ref-tasks-package_write_deb>` 969:ref:`do_package_write_* <ref-tasks-package_write_deb>`
@@ -2153,7 +2200,7 @@ require root privileges, the fact that some earlier steps ran in a fake
2153root environment does not cause problems. 2200root environment does not cause problems.
2154 2201
2155The capability to run tasks in a fake root environment is known as 2202The capability to run tasks in a fake root environment is known as
2156"`fakeroot <http://man.he.net/man1/fakeroot>`__", which is derived from 2203":manpage:`fakeroot <fakeroot(1)>`", which is derived from
2157the BitBake keyword/variable flag that requests a fake root environment 2204the BitBake keyword/variable flag that requests a fake root environment
2158for a task. 2205for a task.
2159 2206
diff --git a/documentation/overview-manual/yp-intro.rst b/documentation/overview-manual/yp-intro.rst
index 4a27e12e01..11e6d99e32 100644
--- a/documentation/overview-manual/yp-intro.rst
+++ b/documentation/overview-manual/yp-intro.rst
@@ -400,7 +400,7 @@ Yocto Project:
400 Autobuilder :doc:`here </test-manual/understand-autobuilder>`. 400 Autobuilder :doc:`here </test-manual/understand-autobuilder>`.
401 401
402- *Pseudo:* Pseudo is the Yocto Project implementation of 402- *Pseudo:* Pseudo is the Yocto Project implementation of
403 `fakeroot <http://man.he.net/man1/fakeroot>`__, which is used to run 403 :manpage:`fakeroot <fakeroot(1)>`, which is used to run
404 commands in an environment that seemingly has root privileges. 404 commands in an environment that seemingly has root privileges.
405 405
406 During a build, it can be necessary to perform operations that 406 During a build, it can be necessary to perform operations that
diff --git a/documentation/poky.yaml.in b/documentation/poky.yaml.in
index 0c04b615ea..9c03e9959b 100644
--- a/documentation/poky.yaml.in
+++ b/documentation/poky.yaml.in
@@ -1,41 +1,27 @@
1#
2# Macros used in the documentation
3#
4
5# The DISTRO variable represents the current docs version. It should be used
6# when referring to the current docs version. See also DISTRO_LATEST_TAG.
1DISTRO : "5.0" 7DISTRO : "5.0"
8# The DISTRO_LATEST_TAG represents the latest tag on the current branch. It
9# should be used in HTTP link referring to the current docs version. In these
10# cases, the DISTRO may point to A.B.999 which does not exist (just used to
11# represent the latest HEAD revision on the branch). DISTRO_LATEST_TAG should
12# always point to an existing tag.
13DISTRO_LATEST_TAG : "5.0"
2DISTRO_NAME_NO_CAP : "scarthgap" 14DISTRO_NAME_NO_CAP : "scarthgap"
3DISTRO_NAME : "Scarthgap" 15DISTRO_NAME : "Scarthgap"
4DISTRO_NAME_NO_CAP_MINUS_ONE : "nanbield" 16DISTRO_NAME_NO_CAP_MINUS_ONE : "nanbield"
5DISTRO_NAME_NO_CAP_LTS : "scarthgap" 17DISTRO_NAME_NO_CAP_LTS : "scarthgap"
6YOCTO_DOC_VERSION : "5.0" 18YOCTO_DOC_VERSION : "5.0"
7DISTRO_REL_TAG : "yocto-5.0" 19DISTRO_REL_TAG : "yocto-$DISTRO;"
20DISTRO_REL_LATEST_TAG : "yocto-&DISTRO_LATEST_TAG;"
8DOCCONF_VERSION : "dev" 21DOCCONF_VERSION : "dev"
9BITBAKE_SERIES : "" 22BITBAKE_SERIES : ""
10YOCTO_DL_URL : "https://downloads.yoctoproject.org" 23YOCTO_DL_URL : "https://downloads.yoctoproject.org"
11YOCTO_AB_URL : "https://autobuilder.yoctoproject.org"
12YOCTO_RELEASE_DL_URL : "&YOCTO_DL_URL;/releases/yocto/yocto-&DISTRO;" 24YOCTO_RELEASE_DL_URL : "&YOCTO_DL_URL;/releases/yocto/yocto-&DISTRO;"
13UBUNTU_HOST_PACKAGES_ESSENTIAL : "gawk wget git diffstat unzip texinfo gcc \
14 build-essential chrpath socat cpio python3 python3-pip python3-pexpect \
15 xz-utils debianutils iputils-ping python3-git python3-jinja2 \
16 python3-subunit zstd liblz4-tool file locales libacl1
17 \n\ $ sudo locale-gen en_US.UTF-8"
18FEDORA_HOST_PACKAGES_ESSENTIAL : "gawk make wget tar bzip2 gzip python3 unzip perl patch \
19 diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath \
20 ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue perl-bignum socat \
21 python3-pexpect findutils which file cpio python python3-pip xz python3-GitPython \
22 python3-jinja2 rpcgen perl-FindBin perl-File-Compare \
23 perl-File-Copy perl-locale zstd lz4 hostname glibc-langpack-en libacl"
24OPENSUSE_HOST_PACKAGES_ESSENTIAL : "python gcc gcc-c++ git chrpath make wget python-xml \
25 diffstat makeinfo python-curses patch socat python3 python3-curses tar python3-pip \
26 python3-pexpect xz which python3-Jinja2 rpcgen \
27 zstd lz4 bzip2 gzip hostname libacl1
28 \n\ $ sudo pip3 install GitPython"
29ALMALINUX_HOST_PACKAGES_ESSENTIAL : "-y epel-release
30 \n\ $ sudo yum install dnf-plugins-core
31 \n\ $ sudo dnf config-manager --set-enabled crb
32 \n\ $ sudo dnf makecache
33 \n\ $ sudo dnf install gawk make wget tar bzip2 gzip python3 unzip perl patch \
34 diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath ccache \
35 socat perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python3-pip \
36 python3-GitPython python3-jinja2 python3-pexpect xz which \
37 rpcgen zstd lz4 cpio glibc-langpack-en libacl"
38PIP3_HOST_PACKAGES_DOC : "$ sudo pip3 install sphinx sphinx_rtd_theme pyyaml"
39MIN_PYTHON_VERSION : "3.8.0" 25MIN_PYTHON_VERSION : "3.8.0"
40MIN_TAR_VERSION : "1.28" 26MIN_TAR_VERSION : "1.28"
41MIN_GIT_VERSION : "1.8.3.1" 27MIN_GIT_VERSION : "1.8.3.1"
@@ -47,3 +33,237 @@ MIN_DISK_SPACE : "90"
47MIN_DISK_SPACE_RM_WORK : "40" 33MIN_DISK_SPACE_RM_WORK : "40"
48# RAM (Gbytes) needed to generate qemux86-64 core-image-sato on Ubuntu 22.04 (x86-64) on a 4 core system 34# RAM (Gbytes) needed to generate qemux86-64 core-image-sato on Ubuntu 22.04 (x86-64) on a 4 core system
49MIN_RAM : "8" 35MIN_RAM : "8"
36
37#
38# Dependencies
39#
40
41# Shared between distros
42PIP3_HOST_PACKAGES_DOC: sphinx sphinx_rtd_theme pyyaml
43
44UBUNTU_DEBIAN_HOST_PACKAGES_ESSENTIAL: >-
45 build-essential
46 chrpath
47 cpio
48 debianutils
49 diffstat
50 file
51 gawk
52 gcc
53 git
54 iputils-ping
55 libacl1
56 liblz4-tool
57 locales
58 python3
59 python3-git
60 python3-jinja2
61 python3-pexpect
62 python3-pip
63 python3-subunit
64 socat
65 texinfo
66 unzip
67 wget
68 xz-utils
69 zstd
70
71UBUNTU_DEBIAN_HOST_PACKAGES_DOC: >-
72 git
73 librsvg2-bin
74 locales
75 make
76 python3-saneyaml
77 python3-sphinx-rtd-theme
78 sphinx
79
80UBUNTU_DEBIAN_HOST_PACKAGES_DOC_PDF: >-
81 fonts-freefont-otf
82 latexmk
83 tex-gyre
84 texlive-fonts-extra
85 texlive-fonts-recommended
86 texlive-lang-all
87 texlive-latex-extra
88 texlive-latex-recommended
89 texlive-xetex
90
91FEDORA_HOST_PACKAGES_ESSENTIAL: >-
92 bzip2
93 ccache
94 chrpath
95 cpio
96 cpp
97 diffstat
98 diffutils
99 file
100 findutils
101 gawk
102 gcc
103 gcc-c++
104 git
105 glibc-devel
106 glibc-langpack-en
107 gzip
108 hostname
109 libacl
110 lz4
111 make
112 patch
113 perl
114 perl-Data-Dumper
115 perl-File-Compare
116 perl-File-Copy
117 perl-FindBin
118 perl-Text-ParseWords
119 perl-Thread-Queue
120 perl-bignum
121 perl-locale
122 python
123 python3
124 python3-GitPython
125 python3-jinja2
126 python3-pexpect
127 python3-pip
128 rpcgen
129 socat
130 tar
131 texinfo
132 unzip
133 wget
134 which
135 xz
136 zstd
137
138FEDORA_HOST_PACKAGES_DOC: >-
139 git
140 glibc-locale-source
141 librsvg2-tools
142 make
143 python3-pip
144 which
145
146FEDORA_HOST_PACKAGES_DOC_PDF: >-
147 'texlive-collection-lang*'
148 latexmk
149 texlive-collection-fontsextra
150 texlive-collection-fontsrecommended
151 texlive-collection-latex
152 texlive-collection-latexextra
153 texlive-collection-latexrecommended
154 texlive-collection-xetex
155 texlive-fncychap
156 texlive-gnu-freefont
157 texlive-tex-gyre
158 texlive-xetex
159
160OPENSUSE_HOST_PACKAGES_ESSENTIAL: >-
161 bzip2
162 chrpath
163 diffstat
164 gcc
165 gcc-c++
166 git
167 gzip
168 hostname
169 libacl1
170 lz4
171 make
172 makeinfo
173 patch
174 python
175 python-curses
176 python-xml
177 python3
178 python3-Jinja2
179 python3-curses
180 python3-pexpect
181 python3-pip
182 rpcgen
183 socat
184 tar
185 wget
186 which
187 xz
188 zstd
189
190OPENSUSE_PIP3_HOST_PACKAGES_ESSENTIAL: GitPython
191
192OPENSUSE_HOST_PACKAGES_DOC: >-
193 git
194 glibc-i18ndata
195 make
196 python3-pip
197 rsvg-convert
198 which
199
200OPENSUSE_HOST_PACKAGES_DOC_PDF: >-
201 'texlive-collection-lang*'
202 texlive-collection-fontsextra
203 texlive-collection-fontsrecommended
204 texlive-collection-latex
205 texlive-collection-latexextra
206 texlive-collection-latexrecommended
207 texlive-collection-xetex
208 texlive-fncychap
209 texlive-gnu-freefont
210 texlive-latexmk
211 texlive-tex-gyre
212 texlive-xetex
213
214ALMALINUX_HOST_PACKAGES_ESSENTIAL: >-
215 bzip2
216 ccache
217 chrpath
218 cpio
219 cpp
220 diffstat
221 diffutils
222 gawk
223 gcc
224 gcc-c++
225 git
226 glibc-devel
227 glibc-langpack-en
228 gzip
229 libacl
230 lz4
231 make
232 patch
233 perl
234 perl-Data-Dumper
235 perl-Text-ParseWords
236 perl-Thread-Queue
237 python3
238 python3-GitPython
239 python3-jinja2
240 python3-pexpect
241 python3-pip
242 rpcgen
243 socat
244 tar
245 texinfo
246 unzip
247 wget
248 which
249 xz
250 zstd
251
252ALMALINUX_HOST_PACKAGES_DOC: >-
253 git
254 glibc-locale-source
255 librsvg2-tools
256 make
257 python3-pip
258 which
259
260ALMALINUX_HOST_PACKAGES_DOC_PDF: >-
261 latexmk
262 texlive-collection-fontsrecommended
263 texlive-collection-latex
264 texlive-collection-latexrecommended
265 texlive-collection-xetex
266 texlive-fncychap
267 texlive-gnu-freefont
268 texlive-tex-gyre
269 texlive-xetex
diff --git a/documentation/ref-manual/classes.rst b/documentation/ref-manual/classes.rst
index 9520d0bf7c..1d76b36d45 100644
--- a/documentation/ref-manual/classes.rst
+++ b/documentation/ref-manual/classes.rst
@@ -159,27 +159,38 @@ software that includes bash-completion data.
159``bin_package`` 159``bin_package``
160=============== 160===============
161 161
162The :ref:`ref-classes-bin-package` class is a helper class for recipes that extract the 162The :ref:`ref-classes-bin-package` class is a helper class for recipes, that
163contents of a binary package (e.g. an RPM) and install those contents 163disables the :ref:`ref-tasks-configure` and :ref:`ref-tasks-compile` tasks and
164rather than building the binary from source. The binary package is 164copies the content of the :term:`S` directory into the :term:`D` directory. This
165extracted and new packages in the configured output package format are 165is useful for installing binary packages (e.g. RPM packages) by passing the
166created. Extraction and installation of proprietary binaries is a good 166package in the :term:`SRC_URI` variable and inheriting this class.
167example use for this class.
168 167
169.. note:: 168For RPMs and other packages that do not contain a subdirectory, you should set
169the :term:`SRC_URI` option ``subdir`` to :term:`BP` so that the contents are
170extracted to the directory expected by the default value of :term:`S`. For
171example::
172
173 SRC_URI = "https://example.com/downloads/somepackage.rpm;subdir=${BP}"
174
175This class can also be used for tarballs. For example::
176
177 SRC_URI = "file://somepackage.tar.xz;subdir=${BP}"
178
179The :ref:`ref-classes-bin-package` class will copy the extracted content of the
180tarball from :term:`S` to :term:`D`.
170 181
171 For RPMs and other packages that do not contain a subdirectory, you 182This class assumes that the content of the package as installed in :term:`S`
172 should specify an appropriate fetcher parameter to point to the 183mirrors the expected layout once installed on the target, which is generally the
173 subdirectory. For example, if BitBake is using the Git fetcher (``git://``), 184case for binary packages. For example, an RPM package for a library would
174 the "subpath" parameter limits the checkout to a specific subpath 185usually contain the ``usr/lib`` directory, and should be extracted to
175 of the tree. Here is an example where ``${BP}`` is used so that the files 186``${S}/usr/lib/<library>.so.<version>`` to be installed in :term:`D` correctly.
176 are extracted into the subdirectory expected by the default value of
177 :term:`S`::
178 187
179 SRC_URI = "git://example.com/downloads/somepackage.rpm;branch=main;subpath=${BP}" 188.. note::
180 189
181 See the ":ref:`bitbake-user-manual/bitbake-user-manual-fetching:fetchers`" section in the BitBake User Manual for 190 The extraction of the package passed in :term:`SRC_URI` is not handled by the
182 more information on supported BitBake Fetchers. 191 :ref:`ref-classes-bin-package` class, but rather by the appropriate
192 :ref:`fetcher <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
193 depending on the file extension.
183 194
184.. _ref-classes-binconfig: 195.. _ref-classes-binconfig:
185 196
@@ -552,7 +563,7 @@ You can also look for vulnerabilities in specific packages by passing
552``-c cve_check`` to BitBake. 563``-c cve_check`` to BitBake.
553 564
554After building the software with Bitbake, CVE check output reports are available in ``tmp/deploy/cve`` 565After building the software with Bitbake, CVE check output reports are available in ``tmp/deploy/cve``
555and image specific summaries in ``tmp/deploy/images/*.cve`` or ``tmp/deploy/images/*.json`` files. 566and image specific summaries in ``tmp/deploy/images/*.json`` files.
556 567
557When building, the CVE checker will emit build time warnings for any detected 568When building, the CVE checker will emit build time warnings for any detected
558issues which are in the state ``Unpatched``, meaning that CVE issue seems to affect the software component 569issues which are in the state ``Unpatched``, meaning that CVE issue seems to affect the software component
@@ -1461,12 +1472,8 @@ The tests you can list with the :term:`WARN_QA` and
1461- ``patch-fuzz:`` Checks for fuzz in patch files that may allow 1472- ``patch-fuzz:`` Checks for fuzz in patch files that may allow
1462 them to apply incorrectly if the underlying code changes. 1473 them to apply incorrectly if the underlying code changes.
1463 1474
1464- ``patch-status-core:`` Checks that the Upstream-Status is specified 1475- ``patch-status:`` Checks that the ``Upstream-Status`` is specified and valid
1465 and valid in the headers of patches for recipes in the OE-Core layer. 1476 in the headers of patches for recipes.
1466
1467- ``patch-status-noncore:`` Checks that the Upstream-Status is specified
1468 and valid in the headers of patches for recipes in layers other than
1469 OE-Core.
1470 1477
1471- ``perllocalpod:`` Checks for ``perllocal.pod`` being erroneously 1478- ``perllocalpod:`` Checks for ``perllocal.pod`` being erroneously
1472 installed and packaged by a recipe. 1479 installed and packaged by a recipe.
@@ -1986,7 +1993,8 @@ a couple different ways:
1986 Not using this naming convention can lead to subtle problems 1993 Not using this naming convention can lead to subtle problems
1987 caused by existing code that depends on that naming convention. 1994 caused by existing code that depends on that naming convention.
1988 1995
1989- Create or modify a target recipe that contains the following:: 1996- Or, create a :ref:`ref-classes-native` variant of any target recipe (e.g.
1997 ``myrecipe.bb``) by adding the following to the recipe::
1990 1998
1991 BBCLASSEXTEND = "native" 1999 BBCLASSEXTEND = "native"
1992 2000
@@ -2017,24 +2025,25 @@ couple different ways:
2017 inherit statement in the recipe after all other inherit statements so 2025 inherit statement in the recipe after all other inherit statements so
2018 that the :ref:`ref-classes-nativesdk` class is inherited last. 2026 that the :ref:`ref-classes-nativesdk` class is inherited last.
2019 2027
2020- Create a :ref:`ref-classes-nativesdk` variant of any recipe by adding the following:: 2028 .. note::
2021 2029
2022 BBCLASSEXTEND = "nativesdk" 2030 When creating a recipe, you must follow this naming convention::
2023 2031
2024 Inside the 2032 nativesdk-myrecipe.bb
2025 recipe, use ``:class-nativesdk`` and ``:class-target`` overrides to
2026 specify any functionality specific to the respective SDK machine or
2027 target case.
2028 2033
2029.. note::
2030 2034
2031 When creating a recipe, you must follow this naming convention:: 2035 Not doing so can lead to subtle problems because there is code that
2036 depends on the naming convention.
2032 2037
2033 nativesdk-myrecipe.bb 2038- Or, create a :ref:`ref-classes-nativesdk` variant of any target recipe (e.g.
2039 ``myrecipe.bb``) by adding the following to the recipe::
2034 2040
2041 BBCLASSEXTEND = "nativesdk"
2035 2042
2036 Not doing so can lead to subtle problems because there is code that 2043 Inside the
2037 depends on the naming convention. 2044 recipe, use ``:class-nativesdk`` and ``:class-target`` overrides to
2045 specify any functionality specific to the respective SDK machine or
2046 target case.
2038 2047
2039Although applied differently, the :ref:`ref-classes-nativesdk` class is used with both 2048Although applied differently, the :ref:`ref-classes-nativesdk` class is used with both
2040methods. The advantage of the second method is that you do not need to 2049methods. The advantage of the second method is that you do not need to
@@ -2608,7 +2617,7 @@ runtime tests for recipes that build software that provides these tests.
2608This class is intended to be inherited by individual recipes. However, 2617This class is intended to be inherited by individual recipes. However,
2609the class' functionality is largely disabled unless "ptest" appears in 2618the class' functionality is largely disabled unless "ptest" appears in
2610:term:`DISTRO_FEATURES`. See the 2619:term:`DISTRO_FEATURES`. See the
2611":ref:`dev-manual/packages:testing packages with ptest`" 2620":ref:`test-manual/ptest:testing packages with ptest`"
2612section in the Yocto Project Development Tasks Manual for more information 2621section in the Yocto Project Development Tasks Manual for more information
2613on ptest. 2622on ptest.
2614 2623
@@ -2632,7 +2641,7 @@ Enables package tests (ptests) specifically for GNOME packages, which
2632have tests intended to be executed with ``gnome-desktop-testing``. 2641have tests intended to be executed with ``gnome-desktop-testing``.
2633 2642
2634For information on setting up and running ptests, see the 2643For information on setting up and running ptests, see the
2635":ref:`dev-manual/packages:testing packages with ptest`" 2644":ref:`test-manual/ptest:testing packages with ptest`"
2636section in the Yocto Project Development Tasks Manual. 2645section in the Yocto Project Development Tasks Manual.
2637 2646
2638.. _ref-classes-python3-dir: 2647.. _ref-classes-python3-dir:
@@ -3205,8 +3214,8 @@ after it is built, you can set :term:`TESTIMAGE_AUTO`::
3205 TESTIMAGE_AUTO = "1" 3214 TESTIMAGE_AUTO = "1"
3206 3215
3207For information on how to enable, run, and create new tests, see the 3216For information on how to enable, run, and create new tests, see the
3208":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 3217":ref:`test-manual/runtime-testing:performing automated runtime testing`"
3209section in the Yocto Project Development Tasks Manual. 3218section in the Yocto Project Test Environment Manual.
3210 3219
3211.. _ref-classes-testsdk: 3220.. _ref-classes-testsdk:
3212 3221
diff --git a/documentation/ref-manual/devtool-reference.rst b/documentation/ref-manual/devtool-reference.rst
index 9319addc3c..2db2adde95 100644
--- a/documentation/ref-manual/devtool-reference.rst
+++ b/documentation/ref-manual/devtool-reference.rst
@@ -24,7 +24,7 @@ The ``devtool`` command line is organized similarly to Git in that it
24has a number of sub-commands for each function. You can run 24has a number of sub-commands for each function. You can run
25``devtool --help`` to see all the commands:: 25``devtool --help`` to see all the commands::
26 26
27 $ devtool -h 27 $ devtool --help
28 NOTE: Starting bitbake server... 28 NOTE: Starting bitbake server...
29 usage: devtool [--basepath BASEPATH] [--bbpath BBPATH] [-d] [-q] [--color COLOR] [-h] <subcommand> ... 29 usage: devtool [--basepath BASEPATH] [--bbpath BBPATH] [-d] [-q] [--color COLOR] [-h] <subcommand> ...
30 30
@@ -50,6 +50,7 @@ has a number of sub-commands for each function. You can run
50 search Search available recipes 50 search Search available recipes
51 Working on a recipe in the workspace: 51 Working on a recipe in the workspace:
52 build Build a recipe 52 build Build a recipe
53 ide-sdk Setup the SDK and configure the IDE
53 rename Rename a recipe file in the workspace 54 rename Rename a recipe file in the workspace
54 edit-recipe Edit a recipe file 55 edit-recipe Edit a recipe file
55 find-recipe Find a recipe file 56 find-recipe Find a recipe file
@@ -63,17 +64,11 @@ has a number of sub-commands for each function. You can run
63 build-image Build image including workspace recipe packages 64 build-image Build image including workspace recipe packages
64 Advanced: 65 Advanced:
65 create-workspace Set up workspace in an alternative location 66 create-workspace Set up workspace in an alternative location
67 import Import exported tar archive into workspace
68 export Export workspace into a tar archive
66 extract Extract the source for an existing recipe 69 extract Extract the source for an existing recipe
67 sync Synchronize the source tree for an existing recipe 70 sync Synchronize the source tree for an existing recipe
68 menuconfig Alter build-time configuration for a recipe 71 menuconfig Alter build-time configuration for a recipe
69 import Import exported tar archive into workspace
70 export Export workspace into a tar archive
71 other:
72 selftest-reverse Reverse value (for selftest)
73 pluginfile Print the filename of this plugin
74 bbdir Print the BBPATH directory of this plugin
75 count How many times have this plugin been registered.
76 multiloaded How many times have this plugin been initialized
77 Use devtool <subcommand> --help to get help on a specific command 72 Use devtool <subcommand> --help to get help on a specific command
78 73
79As directed in the general help output, you can 74As directed in the general help output, you can
@@ -82,8 +77,8 @@ using ``--help``::
82 77
83 $ devtool add --help 78 $ devtool add --help
84 NOTE: Starting bitbake server... 79 NOTE: Starting bitbake server...
85 usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI] [--npm-dev] [--version VERSION] [--no-git] [--srcrev SRCREV | --autorev] [--srcbranch SRCBRANCH] [--binary] [--also-native] [--src-subdir SUBDIR] [--mirrors] 80 usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI] [--npm-dev] [--no-pypi] [--version VERSION] [--no-git] [--srcrev SRCREV | --autorev]
86 [--provides PROVIDES] 81 [--srcbranch SRCBRANCH] [--binary] [--also-native] [--src-subdir SUBDIR] [--mirrors] [--provides PROVIDES]
87 [recipename] [srctree] [fetchuri] 82 [recipename] [srctree] [fetchuri]
88 83
89 Adds a new recipe to the workspace to build a specified source tree. Can optionally fetch a remote URI and unpack it to create the source tree. 84 Adds a new recipe to the workspace to build a specified source tree. Can optionally fetch a remote URI and unpack it to create the source tree.
@@ -99,6 +94,7 @@ using ``--help``::
99 --no-same-dir Force build in a separate build directory 94 --no-same-dir Force build in a separate build directory
100 --fetch URI, -f URI Fetch the specified URI and extract it to create the source tree (deprecated - pass as positional argument instead) 95 --fetch URI, -f URI Fetch the specified URI and extract it to create the source tree (deprecated - pass as positional argument instead)
101 --npm-dev For npm, also fetch devDependencies 96 --npm-dev For npm, also fetch devDependencies
97 --no-pypi Do not inherit pypi class
102 --version VERSION, -V VERSION 98 --version VERSION, -V VERSION
103 Version to use within recipe (PV) 99 Version to use within recipe (PV)
104 --no-git, -g If fetching source, do not set up source tree as a git repository 100 --no-git, -g If fetching source, do not set up source tree as a git repository
@@ -439,7 +435,7 @@ You can read more on the ``devtool upgrade`` workflow in the
439":ref:`sdk-manual/extensible:use \`\`devtool upgrade\`\` to create a version of the recipe that supports a newer version of the software`" 435":ref:`sdk-manual/extensible:use \`\`devtool upgrade\`\` to create a version of the recipe that supports a newer version of the software`"
440section in the Yocto Project Application Development and the Extensible 436section in the Yocto Project Application Development and the Extensible
441Software Development Kit (eSDK) manual. You can also see an example of 437Software Development Kit (eSDK) manual. You can also see an example of
442how to use ``devtool upgrade`` in the ":ref:`dev-manual/upgrading-recipes:using \`\`devtool upgrade\`\``" 438how to use ``devtool upgrade`` in the ":ref:`dev-manual/upgrading-recipes:using ``devtool upgrade```"
443section in the Yocto Project Development Tasks Manual. 439section in the Yocto Project Development Tasks Manual.
444 440
445.. _devtool-resetting-a-recipe: 441.. _devtool-resetting-a-recipe:
@@ -467,6 +463,20 @@ Here is an example that resets the workspace directory that contains the
467 NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/mtr as-is; if you no longer need it then please delete it manually 463 NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/mtr as-is; if you no longer need it then please delete it manually
468 $ 464 $
469 465
466.. _devtool-finish-working-on-a-recipe:
467
468Finish Working on a Recipe
469==========================
470
471Use the ``devtool finish`` command to push any committed changes to the
472specified recipe in the specified layer and remove it from your workspace.
473
474This is roughly equivalent to the ``devtool update-recipe`` command followed by
475the ``devtool reset`` command. The changes must have been committed to the git
476repository created by ``devtool``. Here is an example::
477
478 $ devtool finish recipe /path/to/custom/layer
479
470.. _devtool-building-your-recipe: 480.. _devtool-building-your-recipe:
471 481
472Building Your Recipe 482Building Your Recipe
@@ -543,6 +553,26 @@ the packages are already on the target. Consequently, when a runtime
543call is made in the application for a dependent function (e.g. a library 553call is made in the application for a dependent function (e.g. a library
544call), the function cannot be found. 554call), the function cannot be found.
545 555
556.. warning::
557
558 Runtime dependencies can be explicitly listed in the :term:`RDEPENDS`
559 variable, but may also be the result of a :term:`DEPENDS` assignment in your
560 application's recipe. This is usually the case when your application depends
561 on libraries for compilation: these libraries are listed as build-time
562 dependencies in the :term:`DEPENDS` variable in your application's recipe.
563 However these may also be runtime dependencies if they install shared objects
564 on which your application will dynamically link to at runtime (e.g. shared
565 libraries ending with ``.so``).
566
567 These runtime dependencies are automatically resolved by the
568 :term:`OpenEmbedded Build System` during the packaging phase. Since
569 ``devtool`` ignores packaging dependencies, they will not be installed
570 automatically with ``devtool deploy-target``.
571
572 For more information on how the :term:`OpenEmbedded Build System` handles
573 packaging, see the :ref:`overview-manual/concepts:Automatically Added Runtime
574 Dependencies` section of the Yocto Project Overview and Concepts Manual.
575
546To be sure you have all the dependencies local to the target, you need 576To be sure you have all the dependencies local to the target, you need
547to be sure that the packages are pre-deployed (installed) on the target 577to be sure that the packages are pre-deployed (installed) on the target
548before attempting to run your application. 578before attempting to run your application.
@@ -618,3 +648,43 @@ a match.
618 648
619When you use the ``devtool search`` command, you must supply a keyword. 649When you use the ``devtool search`` command, you must supply a keyword.
620The command uses the keyword when searching for a match. 650The command uses the keyword when searching for a match.
651
652Alternatively, the ``devtool find-recipe`` command can be used to search for
653recipe files instead of recipe names. Likewise, you must supply a keyword.
654
655.. _devtool-get-the-configure-script-help:
656
657Get Information on Recipe Configuration Scripts
658===============================================
659
660Use the ``devtool configure-help`` command to get help on the configuration
661script options for a given recipe. You must supply the recipe name to the
662command. For example, it shows the output of ``./configure --help`` for
663:ref:`autotools <ref-classes-autotools>`-based recipes.
664
665The ``configure-help`` command will also display the configuration options
666currently in use, including the ones passed through the :term:`EXTRA_OECONF`
667variable.
668
669.. _devtool-generate-an-ide-configuration-for-a-recipe:
670
671Generate an IDE Configuration for a Recipe
672==========================================
673
674The ``devtool ide-sdk`` automatically creates an IDE configuration and SDK to
675work on a given recipe. Depending on the ``--mode`` parameter, different types
676of SDKs are generated:
677
678- ``modified`` mode: this creates an SDK and generates an IDE configuration in
679 the workspace directory.
680
681- ``shared`` mode: this creates a cross-compiling toolchain and the
682 corresponding shared sysroot directories of the supplied recipe(s).
683
684The ``--target`` option can be used to specify a ``username@hostname`` string
685and create a remote debugging configuration for the recipe. Similarly to
686``devtool deploy-target``, it requires an SSH server running on the target.
687
688For further details on the ``devtool ide-sdk`` command, see the
689":doc:`/sdk-manual/extensible`" chapter in the Yocto Project Application
690Development and the Extensible Software Development Kit (eSDK) manual.
diff --git a/documentation/ref-manual/faq.rst b/documentation/ref-manual/faq.rst
index bab284bbfd..7dd37c7a5c 100644
--- a/documentation/ref-manual/faq.rst
+++ b/documentation/ref-manual/faq.rst
@@ -45,6 +45,28 @@ See :yocto_wiki:`Products that use the Yocto Project
45Wiki. Don't hesitate to contribute to this page if you know other such 45Wiki. Don't hesitate to contribute to this page if you know other such
46products. 46products.
47 47
48Why isn't systemd the default init system for OpenEmbedded-Core/Yocto Project or in Poky?
49-----------------------------------------------------------------------------------------
50
51`systemd <https://systemd.io/>`__ is a desktop Linux init system with a specific
52focus that is not entirely aligned with a customisable "embedded" build
53system/environment.
54
55It understandably mandates certain layouts and configurations which may
56or may not align with what the objectives and direction :term:`OpenEmbedded-Core
57(OE-Core)` or Yocto Project want to take. It doesn't support all of our targets.
58For example `musl <https://www.musl-libc.org/>`__ support in systemd is
59problematic.
60
61If it were our default, we would have to align with all their choices
62and this doesn't make sense. It is therefore a configuration option and
63available to anyone where the design goals align. But we are clear it
64is not the only way to handle init.
65
66Our automated testing includes it through the ``poky-altcfg`` :term:`DISTRO` and
67we don't really need it to be the default: it is tested, it works, and people
68can choose to use it.
69
48Building environment 70Building environment
49==================== 71====================
50 72
@@ -259,6 +281,25 @@ Within the :term:`Build Directory`, is the ``tmp`` directory. To remove all the
259build output yet preserve any source code or downloaded files from 281build output yet preserve any source code or downloaded files from
260previous builds, simply remove the ``tmp`` directory. 282previous builds, simply remove the ``tmp`` directory.
261 283
284Why isn't there a way to append bbclass files like bbappend for recipes?
285------------------------------------------------------------------------
286
287The Yocto Project has consciously chosen not to implement such functionality.
288Class code is designed to be shared and reused, and exposes some level of
289configuration to its users. We want to encourage people to share these changes
290so we can build the best classes.
291
292If the ``append`` functionality was available for classes, our evidence and
293experience suggest that people would create their custom changes in their
294layer instead of sharing and discussing the issues and/or limitations they
295encountered. This would lead to bizarre class interactions when new layers are
296included. We therefore consciously choose to have a natural pressure to share
297class code improvements or fixes.
298
299There are also technical considerations like which recipes a class append would
300apply to and how that would fit within the layer model. These are complications
301we think we can live without!
302
262Customizing generated images 303Customizing generated images
263============================ 304============================
264 305
diff --git a/documentation/ref-manual/features.rst b/documentation/ref-manual/features.rst
index b2ba731bb2..5574ecafe2 100644
--- a/documentation/ref-manual/features.rst
+++ b/documentation/ref-manual/features.rst
@@ -12,7 +12,7 @@ Features provide a mechanism for working out which packages should be
12included in the generated images. Distributions can select which 12included in the generated images. Distributions can select which
13features they want to support through the :term:`DISTRO_FEATURES` variable, 13features they want to support through the :term:`DISTRO_FEATURES` variable,
14which is set or appended to in a distribution's configuration file such 14which is set or appended to in a distribution's configuration file such
15as ``poky.conf``, ``poky-tiny.conf``, ``poky-lsb.conf`` and so forth. 15as ``poky.conf``, ``poky-tiny.conf``, ``poky-altcfg.conf`` and so forth.
16Machine features are set in the :term:`MACHINE_FEATURES` variable, which is 16Machine features are set in the :term:`MACHINE_FEATURES` variable, which is
17set in the machine configuration file and specifies the hardware 17set in the machine configuration file and specifies the hardware
18features for a given machine. 18features for a given machine.
@@ -207,7 +207,7 @@ metadata, as extra layers can define their own:
207 207
208- *ptest:* Enables building the package tests where supported by 208- *ptest:* Enables building the package tests where supported by
209 individual recipes. For more information on package tests, see the 209 individual recipes. For more information on package tests, see the
210 ":ref:`dev-manual/packages:testing packages with ptest`" section 210 ":ref:`test-manual/ptest:testing packages with ptest`" section
211 in the Yocto Project Development Tasks Manual. 211 in the Yocto Project Development Tasks Manual.
212 212
213- *pulseaudio:* Include support for 213- *pulseaudio:* Include support for
diff --git a/documentation/ref-manual/images.rst b/documentation/ref-manual/images.rst
index c45f9104a9..c9d8989261 100644
--- a/documentation/ref-manual/images.rst
+++ b/documentation/ref-manual/images.rst
@@ -51,27 +51,6 @@ Here is a list of supported recipes:
51- ``core-image-full-cmdline``: A console-only image with more 51- ``core-image-full-cmdline``: A console-only image with more
52 full-featured Linux system functionality installed. 52 full-featured Linux system functionality installed.
53 53
54- ``core-image-lsb``: An image that conforms to the Linux Standard Base
55 (LSB) specification. This image requires a distribution configuration
56 that enables LSB compliance (e.g. ``poky-lsb``). If you build
57 ``core-image-lsb`` without that configuration, the image will not be
58 LSB-compliant.
59
60- ``core-image-lsb-dev``: A ``core-image-lsb`` image that is suitable
61 for development work using the host. The image includes headers and
62 libraries you can use in a host development environment. This image
63 requires a distribution configuration that enables LSB compliance
64 (e.g. ``poky-lsb``). If you build ``core-image-lsb-dev`` without that
65 configuration, the image will not be LSB-compliant.
66
67- ``core-image-lsb-sdk``: A ``core-image-lsb`` that includes everything
68 in the cross-toolchain but also includes development headers and
69 libraries to form a complete standalone SDK. This image requires a
70 distribution configuration that enables LSB compliance (e.g.
71 ``poky-lsb``). If you build ``core-image-lsb-sdk`` without that
72 configuration, the image will not be LSB-compliant. This image is
73 suitable for development using the target.
74
75- ``core-image-minimal``: A small image just capable of allowing a 54- ``core-image-minimal``: A small image just capable of allowing a
76 device to boot. 55 device to boot.
77 56
@@ -119,8 +98,8 @@ Here is a list of supported recipes:
119 deployed to a separate partition so that you can boot into it and use 98 deployed to a separate partition so that you can boot into it and use
120 it to deploy a second image to be tested. You can find more 99 it to deploy a second image to be tested. You can find more
121 information about runtime testing in the 100 information about runtime testing in the
122 ":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 101 ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
123 section in the Yocto Project Development Tasks Manual. 102 section in the Yocto Project Test Environment Manual.
124 103
125- ``core-image-testmaster-initramfs``: A RAM-based Initial Root 104- ``core-image-testmaster-initramfs``: A RAM-based Initial Root
126 Filesystem (:term:`Initramfs`) image tailored for use with the 105 Filesystem (:term:`Initramfs`) image tailored for use with the
diff --git a/documentation/ref-manual/qa-checks.rst b/documentation/ref-manual/qa-checks.rst
index 53b1836e74..27d46de3fd 100644
--- a/documentation/ref-manual/qa-checks.rst
+++ b/documentation/ref-manual/qa-checks.rst
@@ -752,21 +752,17 @@ Errors and Warnings
752 752
753.. _qa-check-patch-status: 753.. _qa-check-patch-status:
754 754
755- ``Missing Upstream-Status in patch <patchfile> Please add according to <url> [patch-status-core/patch-status-noncore]`` 755- ``Missing Upstream-Status in patch <patchfile> Please add according to <url> [patch-status]``
756 756
757 The ``Upstream-Status`` value is missing in the specified patch file's header. 757 The ``Upstream-Status`` value is missing in the specified patch file's header.
758 This value is intended to track whether or not the patch has been sent 758 This value is intended to track whether or not the patch has been sent
759 upstream, whether or not it has been merged, etc. 759 upstream, whether or not it has been merged, etc.
760 760
761 There are two options for this same check - ``patch-status-core`` (for
762 recipes in OE-Core) and ``patch-status-noncore`` (for recipes in any other
763 layer).
764
765 For more information, see the 761 For more information, see the
766 ":ref:`contributor-guide/recipe-style-guide:patch upstream status`" 762 ":ref:`contributor-guide/recipe-style-guide:patch upstream status`"
767 section in the Yocto Project and OpenEmbedded Contributor Guide. 763 section in the Yocto Project and OpenEmbedded Contributor Guide.
768 764
769- ``Malformed Upstream-Status in patch <patchfile> Please correct according to <url> [patch-status-core/patch-status-noncore]`` 765- ``Malformed Upstream-Status in patch <patchfile> Please correct according to <url> [patch-status]``
770 766
771 The ``Upstream-Status`` value in the specified patch file's header is invalid - 767 The ``Upstream-Status`` value in the specified patch file's header is invalid -
772 it must be a specific format. See the "Missing Upstream-Status" entry above 768 it must be a specific format. See the "Missing Upstream-Status" entry above
@@ -795,7 +791,7 @@ Errors and Warnings
795 791
796 This check will detect if the source of the package contains some 792 This check will detect if the source of the package contains some
797 upstream-provided tests and, if so, that ptests are implemented for this 793 upstream-provided tests and, if so, that ptests are implemented for this
798 recipe. See the ":ref:`dev-manual/packages:testing packages with ptest`" 794 recipe. See the ":ref:`test-manual/ptest:testing packages with ptest`"
799 section in the Yocto Project Development Tasks Manual. See also the 795 section in the Yocto Project Development Tasks Manual. See also the
800 ":ref:`ref-classes-ptest`" section. 796 ":ref:`ref-classes-ptest`" section.
801 797
diff --git a/documentation/ref-manual/release-process.rst b/documentation/ref-manual/release-process.rst
index 920794679d..639921b9f6 100644
--- a/documentation/ref-manual/release-process.rst
+++ b/documentation/ref-manual/release-process.rst
@@ -103,17 +103,22 @@ have reached their End of Life (EOL) won't receive such updates.
103 103
104This started with version 3.1 ("Dunfell"), released in April 2020, which 104This started with version 3.1 ("Dunfell"), released in April 2020, which
105the project initially committed to supporting for two years, but this duration 105the project initially committed to supporting for two years, but this duration
106was later extended to four years. Similarly, the following :term:`LTS` release, 106was later extended to four years.
107version 4.0 ("Kirkstone"), was released two years later in May 2022 and the
108project committed to supporting it for four years too.
109 107
110Therefore, a new :term:`LTS` release is made every two years and is supported 108A new :term:`LTS` release is made every two years and is supported for four
111for four years. This offers more stability to project users and leaves more 109years. This offers more stability to project users and leaves more time to
112time to upgrade to the following :term:`LTS` release. 110upgrade to the following :term:`LTS` release.
111
112The currently supported :term:`LTS` releases are:
113
114- Version 5.0 ("Scarthgap"), released in April 2024 and supported until April 2028.
115- Version 4.0 ("Kirkstone"), released in May 2022 and supported until May 2026.
113 116
114See :yocto_wiki:`/Stable_Release_and_LTS` for details about the management 117See :yocto_wiki:`/Stable_Release_and_LTS` for details about the management
115of stable and :term:`LTS` releases. 118of stable and :term:`LTS` releases.
116 119
120This documentation was built for the &DISTRO_NAME; release.
121
117.. image:: svg/releases.* 122.. image:: svg/releases.*
118 :width: 100% 123 :width: 100%
119 124
@@ -143,8 +148,8 @@ Additionally, because the test strategies are visible to you as a
143developer, you can validate your projects. This section overviews the 148developer, you can validate your projects. This section overviews the
144available test infrastructure used in the Yocto Project. For information 149available test infrastructure used in the Yocto Project. For information
145on how to run available tests on your projects, see the 150on how to run available tests on your projects, see the
146":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 151":ref:`test-manual/runtime-testing:performing automated runtime testing`"
147section in the Yocto Project Development Tasks Manual. 152section in the Yocto Project Test Environment Manual.
148 153
149The QA/testing infrastructure is woven into the project to the point 154The QA/testing infrastructure is woven into the project to the point
150where core developers take some of it for granted. The infrastructure 155where core developers take some of it for granted. The infrastructure
@@ -170,7 +175,7 @@ consists of the following pieces:
170 operation and functions. However, the test can also use the IP 175 operation and functions. However, the test can also use the IP
171 address of a machine to test. 176 address of a machine to test.
172 177
173- :ref:`ptest <dev-manual/packages:testing packages with ptest>`: 178- :ref:`ptest <test-manual/ptest:testing packages with ptest>`:
174 Runs tests against packages produced during the build for a given 179 Runs tests against packages produced during the build for a given
175 piece of software. The test allows the packages to be run within a 180 piece of software. The test allows the packages to be run within a
176 target image. 181 target image.
@@ -185,7 +190,7 @@ effort has been made to automate the tests so that more people can use
185them and the Yocto Project development team can run them faster and more 190them and the Yocto Project development team can run them faster and more
186efficiently. 191efficiently.
187 192
188The Yocto Project's main Autobuilder (&YOCTO_AB_URL;) publicly tests each Yocto 193The Yocto Project's main :yocto_ab:`Autobuilder <>` publicly tests each Yocto
189Project release's code in the :oe_git:`openembedded-core </openembedded-core>`, 194Project release's code in the :oe_git:`openembedded-core </openembedded-core>`,
190:yocto_git:`poky </poky>` and :oe_git:`bitbake </bitbake>` repositories. The 195:yocto_git:`poky </poky>` and :oe_git:`bitbake </bitbake>` repositories. The
191testing occurs for both the current state of the "master" branch and also for 196testing occurs for both the current state of the "master" branch and also for
diff --git a/documentation/ref-manual/structure.rst b/documentation/ref-manual/structure.rst
index e4d8b54bb9..2190f5b90e 100644
--- a/documentation/ref-manual/structure.rst
+++ b/documentation/ref-manual/structure.rst
@@ -335,6 +335,15 @@ Once the build process gets the sample file, it uses ``sed`` to substitute final
335 version of the ``bblayers.conf.sample`` file in the ``meta-poky/conf/templates/default`` 335 version of the ``bblayers.conf.sample`` file in the ``meta-poky/conf/templates/default``
336 directory. 336 directory.
337 337
338.. _structure-build-conf-bblock.conf:
339
340``build/conf/bblock.conf``
341--------------------------
342
343This configuration file is generated by :doc:`bblock </dev-manual/bblock>` and
344contains the signatures locked by ``bblock``. By default, it does not exist
345and will be created upon the first invocation of ``bblock``.
346
338.. _structure-build-downloads: 347.. _structure-build-downloads:
339 348
340``build/downloads/`` 349``build/downloads/``
@@ -484,6 +493,30 @@ the ":ref:`sdk-manual/appendix-obtain:building an sdk installer`"
484section in the Yocto Project Application Development and the Extensible 493section in the Yocto Project Application Development and the Extensible
485Software Development Kit (eSDK) manual. 494Software Development Kit (eSDK) manual.
486 495
496.. _structure-build-tmp-hosttools:
497
498``build/tmp/hosttools/``
499~~~~~~~~~~~~~~~~~~~~~~~~
500
501The OpenEmbedded build system uses this directory to create symbolic links to
502some of the host components that are allowed to be called within tasks. These
503are basic components listed in the :ref:`ref-manual/system-requirements:required
504packages for the build host` section. These components are also listed in the
505:term:`HOSTTOOLS` variable and are limited to this list to prevent host
506contamination.
507
508.. _structure-build-tmp-pkgdata:
509
510``build/tmp/pkgdata/``
511~~~~~~~~~~~~~~~~~~~~~~
512
513The OpenEmbedded build system uses this directory to store package metadata
514generated during the :ref:`ref-tasks-packagedata` task. The files stored in this
515directory contain information about each output package produced by the
516OpenEmbedded build system, and are used in different ways by the build system
517such as ":ref:`dev-manual/debugging:viewing package information with
518``oe-pkgdata-util```".
519
487.. _structure-build-tmp-sstate-control: 520.. _structure-build-tmp-sstate-control:
488 521
489``build/tmp/sstate-control/`` 522``build/tmp/sstate-control/``
@@ -657,8 +690,15 @@ Here are key subdirectories within each recipe work directory:
657 690
658For efficiency, the OpenEmbedded build system creates and uses this 691For efficiency, the OpenEmbedded build system creates and uses this
659directory to hold recipes that share a work directory with other 692directory to hold recipes that share a work directory with other
660recipes. In practice, this is only used for ``gcc`` and its variants 693recipes. This is for example used for ``gcc`` and its variants (e.g.
661(e.g. ``gcc-cross``, ``libgcc``, ``gcc-runtime``, and so forth). 694``gcc-cross``, ``libgcc``, ``gcc-runtime``, and so forth), or by the
695:ref:`ref-classes-kernel` class to make the kernel source code and kernel build
696artifacts available to out-of-tree kernel modules or other kernel-dependent
697recipes.
698
699In practice, only a few recipes make use of the ``work-shared`` directory. This
700directory is especially useful for recipes that would induce a lot of storage
701space if they were to be shared with the standard :term:`Sysroot` mechanism.
662 702
663.. _structure-meta: 703.. _structure-meta:
664 704
diff --git a/documentation/ref-manual/svg/releases.svg b/documentation/ref-manual/svg/releases.svg
index 036aa467cc..3a379078b8 100644
--- a/documentation/ref-manual/svg/releases.svg
+++ b/documentation/ref-manual/svg/releases.svg
@@ -2,11 +2,14 @@
2<svg 2<svg
3 version="1.1" 3 version="1.1"
4 id="svg2" 4 id="svg2"
5 width="2040.0006" 5 width="1992.7236"
6 height="669.30511" 6 height="613.35602"
7 viewBox="0 0 2040.0006 669.30509" 7 viewBox="0 0 1992.7236 613.35599"
8 sodipodi:docname="releases.svg" 8 sodipodi:docname="releases.svg"
9 inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" 9 inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
10 inkscape:export-filename="../../../../../../../../tmp/releases.png"
11 inkscape:export-xdpi="96"
12 inkscape:export-ydpi="96"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 13 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 14 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns="http://www.w3.org/2000/svg" 15 xmlns="http://www.w3.org/2000/svg"
@@ -24,29 +27,29 @@
24 <dc:format>image/svg+xml</dc:format> 27 <dc:format>image/svg+xml</dc:format>
25 <dc:type 28 <dc:type
26 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 29 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
27 <cc:license
28 rdf:resource="http://artlibre.org/licence/lal" />
29 <dc:title>Yocto Project Release Timeline</dc:title> 30 <dc:title>Yocto Project Release Timeline</dc:title>
30 <dc:creator> 31 <dc:creator>
31 <cc:Agent> 32 <cc:Agent>
32 <dc:title>The Yocto Project</dc:title> 33 <dc:title>The Yocto Project</dc:title>
33 </cc:Agent> 34 </cc:Agent>
34 </dc:creator> 35 </dc:creator>
36 <cc:license
37 rdf:resource="http://artlibre.org/licence/lal" />
35 </cc:Work> 38 </cc:Work>
36 <cc:License 39 <cc:License
37 rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"> 40 rdf:about="http://artlibre.org/licence/lal">
38 <cc:permits 41 <cc:permits
39 rdf:resource="http://creativecommons.org/ns#Reproduction" /> 42 rdf:resource="http://creativecommons.org/ns#Reproduction" />
40 <cc:permits 43 <cc:permits
41 rdf:resource="http://creativecommons.org/ns#Distribution" /> 44 rdf:resource="http://creativecommons.org/ns#Distribution" />
42 <cc:requires
43 rdf:resource="http://creativecommons.org/ns#Notice" />
44 <cc:requires
45 rdf:resource="http://creativecommons.org/ns#Attribution" />
46 <cc:permits 45 <cc:permits
47 rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> 46 rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
48 <cc:requires 47 <cc:requires
49 rdf:resource="http://creativecommons.org/ns#ShareAlike" /> 48 rdf:resource="http://creativecommons.org/ns#ShareAlike" />
49 <cc:requires
50 rdf:resource="http://creativecommons.org/ns#Notice" />
51 <cc:requires
52 rdf:resource="http://creativecommons.org/ns#Attribution" />
50 </cc:License> 53 </cc:License>
51 </rdf:RDF> 54 </rdf:RDF>
52 </metadata> 55 </metadata>
@@ -66,7 +69,8 @@
66 miter_limit="4" 69 miter_limit="4"
67 scale_width="1" 70 scale_width="1"
68 end_linecap_type="zerowidth" 71 end_linecap_type="zerowidth"
69 not_jump="false" /> 72 not_jump="false"
73 message="" />
70 <marker 74 <marker
71 style="overflow:visible" 75 style="overflow:visible"
72 id="marker5783" 76 id="marker5783"
@@ -404,15 +408,15 @@
404 guidetolerance="10" 408 guidetolerance="10"
405 inkscape:pageopacity="0" 409 inkscape:pageopacity="0"
406 inkscape:pageshadow="2" 410 inkscape:pageshadow="2"
407 inkscape:window-width="1920" 411 inkscape:window-width="3826"
408 inkscape:window-height="1043" 412 inkscape:window-height="2069"
409 id="namedview4" 413 id="namedview4"
410 showgrid="true" 414 showgrid="true"
411 inkscape:zoom="1.4472045" 415 inkscape:zoom="1.5536106"
412 inkscape:cx="987.76641" 416 inkscape:cx="1158.2696"
413 inkscape:cy="357.93145" 417 inkscape:cy="273.55632"
414 inkscape:window-x="1728" 418 inkscape:window-x="2256"
415 inkscape:window-y="0" 419 inkscape:window-y="60"
416 inkscape:window-maximized="1" 420 inkscape:window-maximized="1"
417 inkscape:current-layer="g10" 421 inkscape:current-layer="g10"
418 inkscape:document-rotation="0" 422 inkscape:document-rotation="0"
@@ -422,94 +426,109 @@
422 fit-margin-left="30" 426 fit-margin-left="30"
423 fit-margin-right="30" 427 fit-margin-right="30"
424 fit-margin-bottom="30" 428 fit-margin-bottom="30"
425 inkscape:pagecheckerboard="0"> 429 inkscape:pagecheckerboard="0"
430 inkscape:showpageshadow="2"
431 inkscape:deskcolor="#d1d1d1"
432 showguides="true">
426 <inkscape:grid 433 <inkscape:grid
427 type="xygrid" 434 type="xygrid"
428 id="grid1257" 435 id="grid1257"
429 originx="-289.99936" 436 originx="-289.06071"
430 originy="369.99998" /> 437 originy="478.43017"
438 spacingy="1"
439 spacingx="1"
440 units="px"
441 visible="true" />
431 </sodipodi:namedview> 442 </sodipodi:namedview>
432 <g 443 <g
433 inkscape:groupmode="layer" 444 inkscape:groupmode="layer"
434 inkscape:label="Image" 445 inkscape:label="Image"
435 id="g10" 446 id="g10"
436 transform="translate(-289.99936,370.00003)"> 447 transform="translate(-289.06072,478.43022)">
437 <path 448 <rect
438 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 449 style="fill:#333333;fill-opacity:0;stroke:#000000;stroke-width:0.713896;stroke-linejoin:bevel;stroke-miterlimit:0;stroke-opacity:0"
439 d="m 1080,220.00003 v -515.00007 0 0" 450 id="rect1"
451 width="1992.0098"
452 height="612.64215"
453 x="289.41766"
454 y="-478.07327"
455 ry="24.97636" />
456 <path
457 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
458 d="m 563.40434,64.000628 v -524.414808 0 0"
440 id="path207708" /> 459 id="path207708" />
441 <path 460 <path
442 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 461 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
443 d="m 1200,220.00003 v -515.00007 0 0" 462 d="m 683.40434,64.000628 v -524.414808 0 0"
444 id="path207708-4" /> 463 id="path207708-4" />
445 <path 464 <path
446 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 465 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
447 d="m 1320,220.00003 v -515.00007 0 0" 466 d="m 803.40434,64.000628 v -524.414808 0 0"
448 id="path207708-4-3" /> 467 id="path207708-4-3" />
449 <path 468 <path
450 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 469 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
451 d="m 1440,219.99998 v -515.00002 0 0" 470 d="m 923.40434,64.000577 v -524.414757 0 0"
452 id="path207708-4-3-6" /> 471 id="path207708-4-3-6" />
453 <path 472 <path
454 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 473 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
455 d="m 1560,219.99998 v -515.00001 0 0" 474 d="m 1043.4043,64.000577 v -524.414757 0 0"
456 id="path207708-4-3-6-2" /> 475 id="path207708-4-3-6-2" />
457 <path 476 <path
458 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 477 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
459 d="m 1680,219.99998 v -515.00002 0 0" 478 d="m 1163.4043,64.000577 v -524.414757 0 0"
460 id="path207708-4-3-6-2-8" /> 479 id="path207708-4-3-6-2-8" />
461 <path 480 <path
462 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 481 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
463 d="m 1800,219.99998 v -515.00002 0 0" 482 d="m 1283.4043,64.000577 v -524.414757 0 0"
464 id="path207708-4-3-6-2-8-4" /> 483 id="path207708-4-3-6-2-8-4" />
465 <path 484 <path
466 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 485 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
467 d="m 1920,219.99998 v -515.00002 0 0" 486 d="m 1403.4043,64.000577 v -524.414757 0 0"
468 id="path207708-4-3-6-2-8-4-3" /> 487 id="path207708-4-3-6-2-8-4-3" />
469 <path 488 <path
470 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 489 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.475347;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
471 d="m 2040,219.99997 v -460.00002 0 0" 490 d="m 1523.4043,64.000568 v -415.757648 0 0"
472 id="path207708-4-3-6-2-8-4-3-8" /> 491 id="path207708-4-3-6-2-8-4-3-8" />
473 <path 492 <path
474 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 493 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
475 d="m 2040,219.99998 v -515.00002 0 0" 494 d="m 1523.4043,64.000577 v -524.414757 0 0"
476 id="path207708-4-3-6-2-8-4-3-8-0" /> 495 id="path207708-4-3-6-2-8-4-3-8-0" />
477 <path 496 <path
478 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 497 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
479 d="m 2159.954,219.99997 v -514.99999 0 0" 498 d="m 1643.3583,64.000565 v -524.414715 0 0"
480 id="path207708-4-3-6-2-8-4-3-8-4" /> 499 id="path207708-4-3-6-2-8-4-3-8-4" />
481 <path 500 <path
482 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 501 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
483 d="m 2280,219.99997 v -514.99999 0 0" 502 d="m 1763.4043,64.000565 v -524.414715 0 0"
484 id="path207708-4-3-6-2-8-4-3-8-4-0" /> 503 id="path207708-4-3-6-2-8-4-3-8-4-0" />
485 <path 504 <path
486 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 505 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
487 d="m 960,220.00003 v -515.00007 0 0" 506 d="m 1883.7877,64.878769 v -524.414709 0 0"
488 id="path207708-9" /> 507 id="path207708-4-3-6-2-8-4-3-8-4-0-8" />
489 <path 508 <path
490 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 509 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
491 d="m 840,220.00001 v -375 0 0" 510 d="m 2002.9599,64.984489 v -524.414709 0 0"
492 id="path207708-9-6" /> 511 id="path207708-4-3-6-2-8-4-3-8-4-0-8-8" />
493 <path 512 <path
494 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 513 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
495 d="m 840,220.00002 v -515.00004 0 0" 514 d="m 2123.2232,62.984489 v -524.414709 0 0"
496 id="path207708-9-6-2" /> 515 id="path207708-4-3-6-2-8-4-3-8-4-0-8-8-1" />
497 <path 516 <path
498 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 517 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
499 d="m 720,220.00003 v -515.00007 0 0" 518 d="m 2243.313,63.984489 v -524.414709 0 0"
500 id="path207708-9-6-2-5" /> 519 id="path207708-4-3-6-2-8-4-3-8-4-0-8-8-1-9" />
501 <path 520 <path
502 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 521 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
503 d="m 600,220.00003 v -515.00007 0 0" 522 d="m 443.40434,64.000628 v -524.414808 0 0"
504 id="path207708-9-6-2-5-9" /> 523 id="path207708-9" />
505 <path 524 <path
506 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 525 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
507 d="m 480,220.00003 v -515.00007 0 0" 526 d="m 323.40434,64.000608 v -375.000008 0 0"
508 id="path207708-9-6-2-5-9-0" /> 527 id="path207708-9-6" />
509 <path 528 <path
510 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 529 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
511 d="m 360,220.00003 v -515.00007 0 0" 530 d="m 323.40434,64.000616 v -524.414766 0 0"
512 id="path207708-9-6-2-5-9-0-5" /> 531 id="path207708-9-6-2" />
513 <text 532 <text
514 xml:space="preserve" 533 xml:space="preserve"
515 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 534 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@@ -541,186 +560,152 @@
541 x="-59.575905" 560 x="-59.575905"
542 y="580.05695" /></text> 561 y="580.05695" /></text>
543 <rect 562 <rect
544 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1" 563 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
545 id="rect917-0-0" 564 id="rect917-0-0-4-4-9-4"
546 width="980" 565 width="160.00002"
547 height="45.000004" 566 height="45.000004"
548 x="360" 567 x="443.40427"
549 y="154.99997" 568 y="-55.999405"
550 ry="2.2558987" /> 569 ry="2.2558987" />
551 <text 570 <text
552 xml:space="preserve" 571 xml:space="preserve"
553 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" 572 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"
554 x="420.52835" 573 x="491.89841"
555 y="174.12433" 574 y="-36.604408"
556 id="text1185-3-55-4"><tspan 575 id="text1185-3-55-4-0-0-0"><tspan
557 sodipodi:role="line" 576 sodipodi:role="line"
558 x="420.52835" 577 x="491.89841"
559 y="174.12433" 578 y="-36.604408"
560 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" 579 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"
561 id="tspan957-2-8">Dunfell (LTS)</tspan><tspan 580 id="tspan957-2-8-6-3-9">Langdale</tspan><tspan
562 sodipodi:role="line" 581 sodipodi:role="line"
563 x="420.52835" 582 x="491.89841"
564 y="192.121" 583 y="-18.607729"
565 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" 584 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"
566 id="tspan10317">3.1</tspan></text> 585 id="tspan10317-2-9-1">4.1</tspan></text>
567 <rect 586 <rect
568 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1" 587 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
569 id="rect917-0-0-4" 588 id="rect917-0-0-4-4-9-4-5"
570 width="140.00002" 589 width="140.00003"
571 height="45.000004" 590 height="45.000004"
572 x="480" 591 x="583.40436"
573 y="99.999969" 592 y="-110.99944"
574 ry="2.2558987" /> 593 ry="2.2558987" />
575 <text 594 <text
576 xml:space="preserve" 595 xml:space="preserve"
577 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" 596 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"
578 x="534.10651" 597 x="639.46136"
579 y="118.94971" 598 y="-91.498215"
580 id="text1185-3-55-4-0"><tspan 599 id="text1185-3-55-4-0-0-0-1"><tspan
581 sodipodi:role="line" 600 sodipodi:role="line"
582 x="534.10651" 601 x="639.46136"
583 y="118.94971" 602 y="-91.498215"
584 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" 603 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"
585 id="tspan957-2-8-6">Gatesgarth</tspan><tspan 604 id="tspan957-2-8-6-3-9-7">Mickledore</tspan><tspan
586 sodipodi:role="line" 605 sodipodi:role="line"
587 x="534.10651" 606 x="639.46136"
588 y="136.94638" 607 y="-73.501534"
589 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" 608 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"
590 id="tspan10317-2">3.2</tspan></text> 609 id="tspan10317-2-9-1-4">4.2</tspan></text>
591 <rect
592 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
593 id="rect917-0-0-4-4"
594 width="260"
595 height="45.000004"
596 x="599.99994"
597 y="45.000011"
598 ry="2.2558987" />
599 <rect 610 <rect
600 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1" 611 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
601 id="rect917-0-0-4-4-9" 612 id="rect917-0-0-4-4-9-4-5-3-9-2-3-6"
602 width="160.00002" 613 width="140"
603 height="45.000004" 614 height="45.000004"
604 x="720" 615 x="923.65302"
605 y="-9.9999905" 616 y="-275.19217"
606 ry="2.2558987" /> 617 ry="2.2558987" />
607 <text 618 <text
608 xml:space="preserve" 619 xml:space="preserve"
609 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" 620 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"
610 x="766.10297" 621 x="970.63739"
611 y="9.57586" 622 y="-256.32867"
612 id="text1185-3-55-4-0-0"><tspan 623 id="text1185-3-55-4-0-0-0-1-1-6-4"><tspan
613 sodipodi:role="line" 624 sodipodi:role="line"
614 x="766.10297" 625 x="970.63739"
615 y="9.57586" 626 y="-256.32867"
616 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" 627 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"
617 id="tspan957-2-8-6-3">Honister</tspan><tspan 628 id="tspan957-2-8-6-3-9-7-4-2-0">Styhead</tspan><tspan
618 sodipodi:role="line" 629 sodipodi:role="line"
619 x="766.10297" 630 x="970.63739"
620 y="27.57254" 631 y="-238.332"
621 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" 632 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"
622 id="tspan10317-2-9">3.4</tspan></text> 633 id="tspan10317-2-9-1-4-6-5-6">5.1</tspan></text>
623 <rect 634 <rect
624 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1" 635 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
625 id="rect917-0-0-4-4-9-4" 636 id="rect917-0-0-4-4-9-4-5-3-9-2-3-6-2"
626 width="160.00002" 637 width="140"
627 height="45.000004" 638 height="45.000004"
628 x="959.99994" 639 x="1043.4697"
629 y="-120" 640 y="-328.48172"
630 ry="2.2558987" /> 641 ry="2.2558987" />
631 <text 642 <text
632 xml:space="preserve" 643 xml:space="preserve"
633 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" 644 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"
634 x="1008.4941" 645 x="1090.4542"
635 y="-100.605" 646 y="-309.61823"
636 id="text1185-3-55-4-0-0-0"><tspan 647 id="text1185-3-55-4-0-0-0-1-1-6-4-7"><tspan
637 sodipodi:role="line" 648 sodipodi:role="line"
638 x="1008.4941" 649 x="1090.4542"
639 y="-100.605" 650 y="-309.61823"
640 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" 651 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"
641 id="tspan957-2-8-6-3-9">Langdale</tspan><tspan 652 id="tspan957-2-8-6-3-9-7-4-2-0-0">Walnascar</tspan><tspan
642 sodipodi:role="line" 653 sodipodi:role="line"
643 x="1008.4941" 654 x="1090.4542"
644 y="-82.608322" 655 y="-291.62155"
645 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" 656 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"
646 id="tspan10317-2-9-1">4.1</tspan></text> 657 id="tspan10317-2-9-1-4-6-5-6-9">5.2</tspan></text>
647 <rect 658 <rect
648 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1" 659 style="opacity:0.75;fill:#251f32;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
649 id="rect917-0-0-4-4-9-4-5" 660 id="rect917-0-0-4-4-9-4-5-3-9-2-3-67"
650 width="140.00003" 661 width="140"
651 height="45.000004" 662 height="45.000004"
652 x="1100" 663 x="1163.6425"
653 y="-175.00003" 664 y="-382.27469"
654 ry="2.2558987" /> 665 ry="2.2558987" />
655 <text 666 <text
656 xml:space="preserve" 667 xml:space="preserve"
657 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" 668 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"
658 x="1156.057" 669 x="1214.9716"
659 y="-155.49881" 670 y="-363.89413"
660 id="text1185-3-55-4-0-0-0-1"><tspan 671 id="text1185-3-55-4-0-0-0-1-1-6-4-3-53"><tspan
661 sodipodi:role="line" 672 sodipodi:role="line"
662 x="1156.057" 673 x="1214.9716"
663 y="-155.49881" 674 y="-363.89413"
664 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" 675 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"
665 id="tspan957-2-8-6-3-9-7">Mickledore</tspan><tspan 676 id="tspan957-2-8-6-3-9-7-4-2-0-5-5">Whinlatter</tspan><tspan
666 sodipodi:role="line" 677 sodipodi:role="line"
667 x="1156.057" 678 x="1214.9716"
668 y="-137.50214" 679 y="-345.89746"
669 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" 680 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"
670 id="tspan10317-2-9-1-4">4.2</tspan></text> 681 id="tspan10317-2-9-1-4-6-5-6-6-6">5.3</tspan></text>
671 <g
672 id="g1258">
673 <rect
674 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
675 id="rect917-0-0-4-4-9-4-5-38"
676 width="120.00002"
677 height="45.000004"
678 x="1220"
679 y="-230.00005"
680 ry="2.2558987" />
681 <text
682 xml:space="preserve"
683 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"
684 x="1269.2329"
685 y="-210.32925"
686 id="text1185-3-55-4-0-0-0-1-1"><tspan
687 sodipodi:role="line"
688 x="1269.2329"
689 y="-210.32925"
690 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"
691 id="tspan957-2-8-6-3-9-7-4">Nanbield</tspan><tspan
692 sodipodi:role="line"
693 x="1269.2329"
694 y="-192.33258"
695 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"
696 id="tspan10317-2-9-1-4-6">4.3</tspan></text>
697 </g>
698 <rect 682 <rect
699 style="opacity:0.75;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1" 683 style="opacity:0.75;fill:#251f32;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5.29752;stroke-opacity:1"
700 id="rect917-0-0-4-4-9-4-5-3-9-2" 684 id="rect917-0-0-4-4-9-4-5-3-9-2-3-67-6"
701 width="140" 685 width="982.23163"
702 height="45.000004" 686 height="45.000004"
703 x="1440" 687 x="1283.7023"
704 y="-340.00003" 688 y="-436.77539"
705 ry="2.2558987" /> 689 ry="2.2558987" />
706 <text 690 <text
707 xml:space="preserve" 691 xml:space="preserve"
708 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" 692 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"
709 x="1487.233" 693 x="1335.1118"
710 y="-320.32928" 694 y="-418.39484"
711 id="text1185-3-55-4-0-0-0-1-1-6-4"><tspan 695 id="text1185-3-55-4-0-0-0-1-1-6-4-3-53-0"><tspan
712 sodipodi:role="line" 696 sodipodi:role="line"
713 x="1487.233" 697 x="1335.1118"
714 y="-320.32928" 698 y="-418.39484"
715 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" 699 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"
716 id="tspan957-2-8-6-3-9-7-4-2-0">Styhead</tspan><tspan 700 id="tspan957-2-8-6-3-9-7-4-2-0-5-5-6">Wrynose</tspan><tspan
717 sodipodi:role="line" 701 sodipodi:role="line"
718 x="1487.233" 702 x="1335.1118"
719 y="-302.33261" 703 y="-400.39816"
720 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" 704 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"
721 id="tspan10317-2-9-1-4-6-5-6">5.1</tspan></text> 705 id="tspan10317-2-9-1-4-6-5-6-6-6-2">6.0</tspan></text>
722 <g 706 <g
723 id="g1591"> 707 id="g1591"
708 transform="translate(-516.59566,64.000598)">
724 <rect 709 <rect
725 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1" 710 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
726 id="rect917-0-0-4-4-9-9" 711 id="rect917-0-0-4-4-9-9"
@@ -749,42 +734,26 @@
749 <path 734 <path
750 id="rect917-0-0-4-4-9-9-9" 735 id="rect917-0-0-4-4-9-9-9"
751 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1" 736 style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-opacity:1"
752 d="m 1322.3015,-285.00003 c -1.2753,0 -2.302,1.00609 -2.302,2.25586 v 40.48828 c 0,1.24977 1.0267,2.25586 2.302,2.25586 h 975.0412 c 1.2754,0 2.302,-1.00609 2.302,-2.25586 v -40.48828 c 0,-1.24977 -1.0266,-2.25586 -2.302,-2.25586 z" /> 737 d="m 805.70584,-220.99944 c -1.2753,0 -2.302,1.00609 -2.302,2.25586 v 40.48828 c 0,1.24977 1.0267,2.25586 2.302,2.25586 H 1780.747 c 1.2754,0 2.302,-1.00609 2.302,-2.25586 v -40.48828 c 0,-1.24977 -1.0266,-2.25586 -2.302,-2.25586 z" />
753 <text 738 <text
754 xml:space="preserve" 739 xml:space="preserve"
755 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" 740 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"
756 x="1390.4988" 741 x="873.90314"
757 y="-265.64832" 742 y="-201.64772"
758 id="text1185-3-55-4-0-0-9-0"><tspan 743 id="text1185-3-55-4-0-0-9-0"><tspan
759 sodipodi:role="line" 744 sodipodi:role="line"
760 x="1390.4988" 745 x="873.90314"
761 y="-265.64832" 746 y="-201.64772"
762 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" 747 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"
763 id="tspan957-2-8-6-3-6-8">Scarthgap (LTS)</tspan><tspan 748 id="tspan957-2-8-6-3-6-8">Scarthgap (LTS)</tspan><tspan
764 sodipodi:role="line" 749 sodipodi:role="line"
765 x="1390.4988" 750 x="873.90314"
766 y="-247.65164" 751 y="-183.65105"
767 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" 752 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"
768 id="tspan10317-2-9-0-1">5.0</tspan></text> 753 id="tspan10317-2-9-0-1">5.0</tspan></text>
769 <text
770 xml:space="preserve"
771 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"
772 x="653.72168"
773 y="64.866302"
774 id="text1185-3-55-4-0-0-7"><tspan
775 sodipodi:role="line"
776 x="653.72168"
777 y="64.866302"
778 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"
779 id="tspan957-2-8-6-3-2">Hardknott </tspan><tspan
780 sodipodi:role="line"
781 x="653.72168"
782 y="82.862984"
783 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"
784 id="tspan10317-2-9-8">3.3</tspan></text>
785 <g 754 <g
786 id="g1125-0" 755 id="g1125-0"
787 transform="matrix(0.42240595,0,0,0.41654472,354.53445,-399.96314)" 756 transform="matrix(0.42240595,0,0,0.41654472,330.77064,-497.11721)"
788 style="stroke:none;stroke-width:2.38399"> 757 style="stroke:none;stroke-width:2.38399">
789 <rect 758 <rect
790 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.76797;stroke-opacity:1" 759 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.76797;stroke-opacity:1"
@@ -873,234 +842,149 @@
873 <text 842 <text
874 xml:space="preserve" 843 xml:space="preserve"
875 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 844 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
876 x="1199.6055" 845 x="683.00983"
877 y="250.21216" 846 y="94.212761"
878 id="text1185-9-7-1-1"><tspan 847 id="text1185-9-7-1-1"><tspan
879 sodipodi:role="line" 848 sodipodi:role="line"
880 x="1199.6055" 849 x="683.00983"
881 y="250.21216" 850 y="94.212761"
882 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 851 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
883 id="tspan31345">Oct.</tspan><tspan 852 id="tspan31345">Oct.</tspan><tspan
884 sodipodi:role="line" 853 sodipodi:role="line"
885 x="1199.6055" 854 x="683.00983"
886 y="268.20883" 855 y="112.20944"
887 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 856 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
888 id="tspan49906">2023</tspan></text> 857 id="tspan49906">2023</tspan></text>
889 <text 858 <text
890 xml:space="preserve" 859 xml:space="preserve"
891 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 860 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
892 x="1439.3904" 861 x="922.79474"
893 y="249.86044" 862 y="93.861046"
894 id="text1185-9-7-1-1-89"><tspan 863 id="text1185-9-7-1-1-89"><tspan
895 sodipodi:role="line" 864 sodipodi:role="line"
896 x="1439.3904" 865 x="922.79474"
897 y="249.86044" 866 y="93.861046"
898 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 867 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
899 id="tspan31345-7">Oct.</tspan><tspan 868 id="tspan31345-7">Oct.</tspan><tspan
900 sodipodi:role="line" 869 sodipodi:role="line"
901 x="1439.3904" 870 x="922.79474"
902 y="267.85712" 871 y="111.85773"
903 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 872 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
904 id="tspan49906-76">2024</tspan></text> 873 id="tspan49906-76">2024</tspan></text>
905 <text 874 <text
906 xml:space="preserve" 875 xml:space="preserve"
907 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 876 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
908 x="1679.3094" 877 x="1162.7139"
909 y="250.58356" 878 y="94.58416"
910 id="text1185-9-7-1-1-89-6"><tspan 879 id="text1185-9-7-1-1-89-6"><tspan
911 sodipodi:role="line" 880 sodipodi:role="line"
912 x="1679.3094" 881 x="1162.7139"
913 y="250.58356" 882 y="94.58416"
914 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 883 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
915 id="tspan31345-7-8">Oct.</tspan><tspan 884 id="tspan31345-7-8">Oct.</tspan><tspan
916 sodipodi:role="line" 885 sodipodi:role="line"
917 x="1679.3094" 886 x="1162.7139"
918 y="268.58023" 887 y="112.58084"
919 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 888 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
920 id="tspan49906-76-0">2025</tspan></text> 889 id="tspan49906-76-0">2025</tspan></text>
921 <text 890 <text
922 xml:space="preserve" 891 xml:space="preserve"
923 style="font-weight:bold;font-size:6.66667px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
924 x="849.49744"
925 y="61.106953"
926 id="text1185-9-7-1-1-0"><tspan
927 sodipodi:role="line"
928 x="849.49744"
929 y="61.106953"
930 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.66667px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:end;text-anchor:end;fill:#fffefe;fill-opacity:1;stroke:none"
931 id="tspan46212">Support for this version was extended to leave</tspan><tspan
932 sodipodi:role="line"
933 x="849.49744"
934 y="70.105324"
935 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.66667px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:end;text-anchor:end;fill:#fffefe;fill-opacity:1;stroke:none"
936 id="tspan120364">users more time to adapt to override syntax</tspan><tspan
937 sodipodi:role="line"
938 x="849.49744"
939 y="79.103691"
940 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.66667px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:end;text-anchor:end;fill:#fffefe;fill-opacity:1;stroke:none"
941 id="tspan123280">changes in the 3.4 release.</tspan></text>
942 <text
943 xml:space="preserve"
944 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 892 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
945 x="959.52008" 893 x="442.92441"
946 y="250.67822" 894 y="94.678825"
947 id="text1185-9-7-1-1-0-7"><tspan 895 id="text1185-9-7-1-1-0-7"><tspan
948 sodipodi:role="line" 896 sodipodi:role="line"
949 x="959.52008" 897 x="442.92441"
950 y="250.67822" 898 y="94.678825"
951 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 899 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
952 id="tspan31345-42-7">Oct.</tspan><tspan 900 id="tspan31345-42-7">Oct.</tspan><tspan
953 sodipodi:role="line" 901 sodipodi:role="line"
954 x="959.52008" 902 x="442.92441"
955 y="268.6749" 903 y="112.67551"
956 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 904 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
957 id="tspan49906-9-6">2022</tspan></text> 905 id="tspan49906-9-6">2022</tspan></text>
958 <text 906 <text
959 xml:space="preserve" 907 xml:space="preserve"
960 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 908 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
961 x="719.13617" 909 x="324.32913"
962 y="250.21216" 910 y="94.076042"
963 id="text1185-9-7-1-1-2"><tspan
964 sodipodi:role="line"
965 x="719.13617"
966 y="250.21216"
967 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
968 id="tspan31345-1">Oct.</tspan><tspan
969 sodipodi:role="line"
970 x="719.13617"
971 y="268.20883"
972 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
973 id="tspan49906-5">2021</tspan></text>
974 <text
975 xml:space="preserve"
976 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
977 x="478.82367"
978 y="250.21216"
979 id="text1185-9-7-1-1-80"><tspan
980 sodipodi:role="line"
981 x="478.82367"
982 y="250.21216"
983 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
984 id="tspan31345-5">Oct.</tspan><tspan
985 sodipodi:role="line"
986 x="478.82367"
987 y="268.20883"
988 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
989 id="tspan49906-6">2020</tspan></text>
990 <text
991 xml:space="preserve"
992 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
993 x="361.81961"
994 y="250.07544"
995 id="text1185-9-7-1-1-8"><tspan
996 sodipodi:role="line"
997 x="361.81961"
998 y="250.07544"
999 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1000 id="tspan31345-4">Apr.</tspan><tspan
1001 sodipodi:role="line"
1002 x="361.81961"
1003 y="268.07211"
1004 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1005 id="tspan49906-7">2020</tspan></text>
1006 <text
1007 xml:space="preserve"
1008 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1009 x="840.9248"
1010 y="250.07544"
1011 id="text1185-9-7-1-1-8-1"><tspan 911 id="text1185-9-7-1-1-8-1"><tspan
1012 sodipodi:role="line" 912 sodipodi:role="line"
1013 x="840.9248" 913 x="324.32913"
1014 y="250.07544" 914 y="94.076042"
1015 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 915 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1016 id="tspan31345-4-0">Apr</tspan><tspan 916 id="tspan31345-4-0">Apr</tspan><tspan
1017 sodipodi:role="line" 917 sodipodi:role="line"
1018 x="840.9248" 918 x="324.32913"
1019 y="268.07211" 919 y="112.07272"
1020 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 920 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1021 id="tspan49906-7-3">2022</tspan></text> 921 id="tspan49906-7-3">2022</tspan></text>
1022 <text 922 <text
1023 xml:space="preserve" 923 xml:space="preserve"
1024 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 924 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1025 x="1321.8608" 925 x="805.2652"
1026 y="250.07544" 926 y="94.076042"
1027 id="text1185-9-7-1-1-8-1-0"><tspan 927 id="text1185-9-7-1-1-8-1-0"><tspan
1028 sodipodi:role="line" 928 sodipodi:role="line"
1029 x="1321.8608" 929 x="805.2652"
1030 y="250.07544" 930 y="94.076042"
1031 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 931 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1032 id="tspan31345-4-0-4">Apr.</tspan><tspan 932 id="tspan31345-4-0-4">Apr.</tspan><tspan
1033 sodipodi:role="line" 933 sodipodi:role="line"
1034 x="1321.8608" 934 x="805.2652"
1035 y="268.07211" 935 y="112.07272"
1036 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 936 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1037 id="tspan49906-7-3-8">2024</tspan></text> 937 id="tspan49906-7-3-8">2024</tspan></text>
1038 <text 938 <text
1039 xml:space="preserve" 939 xml:space="preserve"
1040 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 940 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1041 x="1561.8163" 941 x="1045.2207"
1042 y="249.66977" 942 y="93.670372"
1043 id="text1185-9-7-1-1-8-1-0-4"><tspan 943 id="text1185-9-7-1-1-8-1-0-4"><tspan
1044 sodipodi:role="line" 944 sodipodi:role="line"
1045 x="1561.8163" 945 x="1045.2207"
1046 y="249.66977" 946 y="93.670372"
1047 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 947 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1048 id="tspan31345-4-0-4-81">Apr.</tspan><tspan 948 id="tspan31345-4-0-4-81">Apr.</tspan><tspan
1049 sodipodi:role="line" 949 sodipodi:role="line"
1050 x="1561.8163" 950 x="1045.2207"
1051 y="267.66644" 951 y="111.66705"
1052 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 952 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1053 id="tspan49906-7-3-8-2">2025</tspan></text> 953 id="tspan49906-7-3-8-2">2025</tspan></text>
1054 <text 954 <text
1055 xml:space="preserve" 955 xml:space="preserve"
1056 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 956 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1057 x="1802.1477" 957 x="1285.5521"
1058 y="250.26334" 958 y="94.263939"
1059 id="text1185-9-7-1-1-8-1-0-4-2"><tspan 959 id="text1185-9-7-1-1-8-1-0-4-2"><tspan
1060 sodipodi:role="line" 960 sodipodi:role="line"
1061 x="1802.1477" 961 x="1285.5521"
1062 y="250.26334" 962 y="94.263939"
1063 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 963 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1064 id="tspan31345-4-0-4-81-5">Apr.</tspan><tspan 964 id="tspan31345-4-0-4-81-5">Apr.</tspan><tspan
1065 sodipodi:role="line" 965 sodipodi:role="line"
1066 x="1802.1477" 966 x="1285.5521"
1067 y="268.26001" 967 y="112.26062"
1068 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 968 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1069 id="tspan49906-7-3-8-2-8">2026</tspan></text> 969 id="tspan49906-7-3-8-2-8">2026</tspan></text>
1070 <text 970 <text
1071 xml:space="preserve" 971 xml:space="preserve"
1072 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 972 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1073 x="1081.4458" 973 x="564.85016"
1074 y="250.07544" 974 y="94.076042"
1075 id="text1185-9-7-1-1-8-1-0-2"><tspan 975 id="text1185-9-7-1-1-8-1-0-2"><tspan
1076 sodipodi:role="line" 976 sodipodi:role="line"
1077 x="1081.4458" 977 x="564.85016"
1078 y="250.07544" 978 y="94.076042"
1079 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 979 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1080 id="tspan31345-4-0-4-8">Apr.</tspan><tspan 980 id="tspan31345-4-0-4-8">Apr.</tspan><tspan
1081 sodipodi:role="line" 981 sodipodi:role="line"
1082 x="1081.4458" 982 x="564.85016"
1083 y="268.07211" 983 y="112.07272"
1084 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 984 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1085 id="tspan49906-7-3-8-3">2023</tspan></text> 985 id="tspan49906-7-3-8-3">2023</tspan></text>
1086 <text 986 <text
1087 xml:space="preserve" 987 xml:space="preserve"
1088 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1089 x="602.51526"
1090 y="250.07544"
1091 id="text1185-9-7-1-1-8-1-7"><tspan
1092 sodipodi:role="line"
1093 x="602.51526"
1094 y="250.07544"
1095 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1096 id="tspan31345-4-0-5">Apr.</tspan><tspan
1097 sodipodi:role="line"
1098 x="602.51526"
1099 y="268.07211"
1100 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1101 id="tspan49906-7-3-6">2021</tspan></text>
1102 <text
1103 xml:space="preserve"
1104 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 988 style="font-weight:bold;font-size:42.5884px;line-height:125%;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1105 x="-16.290483" 989 x="-16.290483"
1106 y="345.7359" 990 y="345.7359"
@@ -1111,252 +995,117 @@
1111 y="345.7359" /></text> 995 y="345.7359" /></text>
1112 <path 996 <path
1113 id="path29430" 997 id="path29430"
1114 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 998 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99503;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1115 d="M 319.99936,219.99912 H 2300 Z" /> 999 d="M 307.54809,63.999718 H 2277.72 Z" />
1116 <path
1117 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1118 d="m 360,219.99997 v 10.00004 0"
1119 id="path29548" />
1120 <path
1121 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1122 d="m 480,219.99996 v 10 0"
1123 id="path29548-5" />
1124 <path 1000 <path
1125 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1001 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1126 d="m 600,219.99992 v 10.00005 0" 1002 d="m 323.40434,64.000618 v 9.99995 0"
1127 id="path29548-5-1" />
1128 <path
1129 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1130 d="m 720,220.00002 v 9.99999 0"
1131 id="path29548-5-1-3" />
1132 <path
1133 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1134 d="m 840,220.00002 v 9.99995 0"
1135 id="path29548-5-1-3-6" /> 1003 id="path29548-5-1-3-6" />
1136 <path 1004 <path
1137 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1005 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1138 d="m 960,220.00002 v 9.99999 0" 1006 d="m 443.40434,64.000618 v 9.99999 0"
1139 id="path29548-5-1-3-6-3" /> 1007 id="path29548-5-1-3-6-3" />
1140 <path 1008 <path
1141 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1009 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1142 d="m 1080,220.00002 v 9.99999 0" 1010 d="m 563.40434,64.000618 v 9.99999 0"
1143 id="path29548-5-1-3-6-3-1" /> 1011 id="path29548-5-1-3-6-3-1" />
1144 <path 1012 <path
1145 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1013 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1146 d="m 380,219.99997 v 5.00004 0" 1014 d="m 343.40434,64.000568 v 5.00004 0"
1147 id="path29548-8"
1148 inkscape:transform-center-x="14.782001"
1149 inkscape:transform-center-y="-0.085282837" />
1150 <path
1151 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1152 d="m 400,219.99997 v 5.00004 0"
1153 id="path29548-8-5"
1154 inkscape:transform-center-x="14.782001"
1155 inkscape:transform-center-y="-0.085282837" />
1156 <path
1157 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1158 d="m 420,219.99997 v 5 0"
1159 id="path29548-8-5-0"
1160 inkscape:transform-center-x="14.782001"
1161 inkscape:transform-center-y="-0.085282155" />
1162 <path
1163 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1164 d="m 440,219.99997 v 5 0"
1165 id="path29548-8-5-0-6"
1166 inkscape:transform-center-x="14.782001"
1167 inkscape:transform-center-y="-0.085282155" />
1168 <path
1169 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1170 d="m 460,219.99997 v 5.00004 0"
1171 id="path29548-8-5-0-6-4-6"
1172 inkscape:transform-center-x="14.782001"
1173 inkscape:transform-center-y="-0.085282837" />
1174 <path
1175 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1176 d="m 500,219.99997 v 5.00004 0"
1177 id="path29548-8-5-0-6-4-6-2"
1178 inkscape:transform-center-x="14.782001"
1179 inkscape:transform-center-y="-0.085282837" />
1180 <path
1181 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1182 d="m 520,219.99997 v 5 0"
1183 id="path29548-8-5-0-6-4-6-2-9"
1184 inkscape:transform-center-x="14.782001"
1185 inkscape:transform-center-y="-0.085282155" />
1186 <path
1187 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1188 d="m 540,219.99997 v 5.00004 0"
1189 id="path29548-8-5-0-6-4-6-2-9-0"
1190 inkscape:transform-center-x="14.782001"
1191 inkscape:transform-center-y="-0.085282837" />
1192 <path
1193 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1194 d="m 560,219.99997 v 5.00004 0"
1195 id="path29548-8-5-0-6-4-6-2-9-0-8"
1196 inkscape:transform-center-x="14.782001"
1197 inkscape:transform-center-y="-0.085282837" />
1198 <path
1199 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1200 d="m 580,219.99997 v 5.00004 0"
1201 id="path29548-8-5-0-6-4-6-2-9-0-8-1"
1202 inkscape:transform-center-x="14.782001"
1203 inkscape:transform-center-y="-0.085282837" />
1204 <path
1205 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1206 d="m 620.266,219.99997 v 5.00004 0"
1207 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3"
1208 inkscape:transform-center-x="14.782001"
1209 inkscape:transform-center-y="-0.085282837" />
1210 <path
1211 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1212 d="m 640,219.99997 v 5.00004 0"
1213 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1"
1214 inkscape:transform-center-x="14.782001"
1215 inkscape:transform-center-y="-0.085282837" />
1216 <path
1217 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1218 d="m 660,219.99997 v 5.00004 0"
1219 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9"
1220 inkscape:transform-center-x="14.782001"
1221 inkscape:transform-center-y="-0.085282837" />
1222 <path
1223 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1224 d="m 679.61073,219.99997 v 5.00004 0"
1225 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6"
1226 inkscape:transform-center-x="14.782001"
1227 inkscape:transform-center-y="-0.085282837" />
1228 <path
1229 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1230 d="m 700,219.99997 v 5.00004 0"
1231 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9"
1232 inkscape:transform-center-x="14.782001"
1233 inkscape:transform-center-y="-0.085282837" />
1234 <path
1235 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1236 d="m 740,219.99997 v 5.00004 0"
1237 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3"
1238 inkscape:transform-center-x="14.782001"
1239 inkscape:transform-center-y="-0.085282837" />
1240 <path
1241 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1242 d="m 760,219.99997 v 5.00004 0"
1243 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4"
1244 inkscape:transform-center-x="14.782001"
1245 inkscape:transform-center-y="-0.085282837" />
1246 <path
1247 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1248 d="m 780.36587,219.99997 v 5.00004 0"
1249 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0"
1250 inkscape:transform-center-x="14.782001"
1251 inkscape:transform-center-y="-0.085282837" />
1252 <path
1253 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1254 d="m 800,219.99997 v 5.00004 0"
1255 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4"
1256 inkscape:transform-center-x="14.782001"
1257 inkscape:transform-center-y="-0.085282837" />
1258 <path
1259 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1260 d="m 820,219.99997 v 5.00004 0"
1261 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6"
1262 inkscape:transform-center-x="14.782001"
1263 inkscape:transform-center-y="-0.085282837" />
1264 <path
1265 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1266 d="m 860,219.99997 v 5.00004 0"
1267 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2" 1015 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2"
1268 inkscape:transform-center-x="14.782001" 1016 inkscape:transform-center-x="14.782001"
1269 inkscape:transform-center-y="-0.085282837" /> 1017 inkscape:transform-center-y="-0.085282837" />
1270 <path 1018 <path
1271 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1019 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1272 d="m 880,219.99997 v 5.00004 0" 1020 d="m 363.40434,64.000568 v 5.00004 0"
1273 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2" 1021 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2"
1274 inkscape:transform-center-x="14.782001" 1022 inkscape:transform-center-x="14.782001"
1275 inkscape:transform-center-y="-0.085282837" /> 1023 inkscape:transform-center-y="-0.085282837" />
1276 <path 1024 <path
1277 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1025 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1278 d="m 899.72384,219.99997 v 5.00004 0" 1026 d="m 383.12818,64.000568 v 5.00004 0"
1279 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7" 1027 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7"
1280 inkscape:transform-center-x="14.782001" 1028 inkscape:transform-center-x="14.782001"
1281 inkscape:transform-center-y="-0.085282837" /> 1029 inkscape:transform-center-y="-0.085282837" />
1282 <path 1030 <path
1283 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1031 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1284 d="m 920,219.99997 v 5.00004 0" 1032 d="m 403.40434,64.000568 v 5.00004 0"
1285 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6" 1033 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6"
1286 inkscape:transform-center-x="14.782001" 1034 inkscape:transform-center-x="14.782001"
1287 inkscape:transform-center-y="-0.085282837" /> 1035 inkscape:transform-center-y="-0.085282837" />
1288 <path 1036 <path
1289 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1037 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1290 d="m 940,219.99997 v 5.00004 0" 1038 d="m 423.40434,64.000568 v 5.00004 0"
1291 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1" 1039 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1"
1292 inkscape:transform-center-x="14.782001" 1040 inkscape:transform-center-x="14.782001"
1293 inkscape:transform-center-y="-0.085282837" /> 1041 inkscape:transform-center-y="-0.085282837" />
1294 <path 1042 <path
1295 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1043 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1296 d="m 980,219.99997 v 5.00004 0" 1044 d="m 463.40434,64.000568 v 5.00004 0"
1297 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9" 1045 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9"
1298 inkscape:transform-center-x="14.782001" 1046 inkscape:transform-center-x="14.782001"
1299 inkscape:transform-center-y="-0.085282837" /> 1047 inkscape:transform-center-y="-0.085282837" />
1300 <path 1048 <path
1301 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1049 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1302 d="m 1000,219.99997 v 5.00004 0" 1050 d="m 483.40434,64.000568 v 5.00004 0"
1303 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9" 1051 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9"
1304 inkscape:transform-center-x="14.782001" 1052 inkscape:transform-center-x="14.782001"
1305 inkscape:transform-center-y="-0.085282837" /> 1053 inkscape:transform-center-y="-0.085282837" />
1306 <path 1054 <path
1307 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1055 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1308 d="m 1020,219.99997 v 5.00004 0" 1056 d="m 503.40434,64.000568 v 5.00004 0"
1309 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1" 1057 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1"
1310 inkscape:transform-center-x="14.782001" 1058 inkscape:transform-center-x="14.782001"
1311 inkscape:transform-center-y="-0.085282837" /> 1059 inkscape:transform-center-y="-0.085282837" />
1312 <path 1060 <path
1313 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1061 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1314 d="m 1040,219.99997 v 5.00004 0" 1062 d="m 523.40434,64.000568 v 5.00004 0"
1315 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4" 1063 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4"
1316 inkscape:transform-center-x="14.782001" 1064 inkscape:transform-center-x="14.782001"
1317 inkscape:transform-center-y="-0.085282837" /> 1065 inkscape:transform-center-y="-0.085282837" />
1318 <path 1066 <path
1319 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1067 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1320 d="m 1059.7216,219.99997 v 5.00004 0" 1068 d="m 543.12594,64.000568 v 5.00004 0"
1321 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9" 1069 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9"
1322 inkscape:transform-center-x="-14.78205" 1070 inkscape:transform-center-x="-14.78205"
1323 inkscape:transform-center-y="-0.085282837" /> 1071 inkscape:transform-center-y="-0.085282837" />
1324 <path 1072 <path
1325 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1073 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1326 d="m 1100,219.99997 v 5.00004 0" 1074 d="m 583.40434,64.000568 v 5.00004 0"
1327 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0" 1075 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0"
1328 inkscape:transform-center-x="14.782001" 1076 inkscape:transform-center-x="14.782001"
1329 inkscape:transform-center-y="-0.085282837" /> 1077 inkscape:transform-center-y="-0.085282837" />
1330 <path 1078 <path
1331 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1079 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1332 d="m 1120,219.99997 v 5.00004 0" 1080 d="m 603.40434,64.000568 v 5.00004 0"
1333 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7" 1081 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7"
1334 inkscape:transform-center-x="14.782001" 1082 inkscape:transform-center-x="14.782001"
1335 inkscape:transform-center-y="-0.085282837" /> 1083 inkscape:transform-center-y="-0.085282837" />
1336 <path 1084 <path
1337 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1085 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1338 d="m 1140,219.99997 v 5.00004 0" 1086 d="m 623.40434,64.000568 v 5.00004 0"
1339 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5" 1087 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5"
1340 inkscape:transform-center-x="14.782001" 1088 inkscape:transform-center-x="14.782001"
1341 inkscape:transform-center-y="-0.085282837" /> 1089 inkscape:transform-center-y="-0.085282837" />
1342 <path 1090 <path
1343 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1091 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1344 d="m 1160,219.99997 v 5.00004 0" 1092 d="m 643.40434,64.000568 v 5.00004 0"
1345 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8" 1093 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8"
1346 inkscape:transform-center-x="14.782001" 1094 inkscape:transform-center-x="14.782001"
1347 inkscape:transform-center-y="-0.085282837" /> 1095 inkscape:transform-center-y="-0.085282837" />
1348 <path 1096 <path
1349 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1097 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1350 d="m 1179.7216,219.99997 v 5.00004 0" 1098 d="m 663.12594,64.000568 v 5.00004 0"
1351 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7" 1099 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7"
1352 inkscape:transform-center-x="-14.78205" 1100 inkscape:transform-center-x="-14.78205"
1353 inkscape:transform-center-y="-0.085282837" /> 1101 inkscape:transform-center-y="-0.085282837" />
1354 <path 1102 <path
1355 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1103 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1356 d="m 1320,219.99996 v 10 0" 1104 d="m 803.40434,64.000558 v 10 0"
1357 id="path29548-5-1-3-6-3-1-0-8" /> 1105 id="path29548-5-1-3-6-3-1-0-8" />
1358 <g 1106 <g
1359 id="g1267"> 1107 id="g1267"
1108 transform="translate(-516.59566,-155.99941)">
1360 <path 1109 <path
1361 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1110 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1362 d="m 1200,220.00002 v 9.99999 0" 1111 d="m 1200,220.00002 v 9.99999 0"
@@ -1394,7 +1143,7 @@
1394 </g> 1143 </g>
1395 <g 1144 <g
1396 id="g1267-4" 1145 id="g1267-4"
1397 transform="translate(240,-4e-5)"> 1146 transform="translate(-276.59566,-155.99945)">
1398 <path 1147 <path
1399 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1148 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1400 d="m 1200,220.00002 v 9.99999 0" 1149 d="m 1200,220.00002 v 9.99999 0"
@@ -1432,7 +1181,7 @@
1432 </g> 1181 </g>
1433 <g 1182 <g
1434 id="g1267-4-5" 1183 id="g1267-4-5"
1435 transform="translate(480,-5e-5)"> 1184 transform="translate(-36.595659,-155.99946)">
1436 <path 1185 <path
1437 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1186 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1438 d="m 1200,220.00002 v 9.99999 0" 1187 d="m 1200,220.00002 v 9.99999 0"
@@ -1470,7 +1219,7 @@
1470 </g> 1219 </g>
1471 <g 1220 <g
1472 id="g1267-4-5-22" 1221 id="g1267-4-5-22"
1473 transform="translate(600,-4e-5)"> 1222 transform="translate(83.404341,-155.99945)">
1474 <path 1223 <path
1475 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1224 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1476 d="m 1200,220.00002 v 9.99999 0" 1225 d="m 1200,220.00002 v 9.99999 0"
@@ -1508,7 +1257,7 @@
1508 </g> 1257 </g>
1509 <g 1258 <g
1510 id="g1267-4-5-9" 1259 id="g1267-4-5-9"
1511 transform="translate(360,-4e-5)"> 1260 transform="translate(-156.59566,-155.99945)">
1512 <path 1261 <path
1513 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1262 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1514 d="m 1200,220.00002 v 9.99999 0" 1263 d="m 1200,220.00002 v 9.99999 0"
@@ -1546,105 +1295,105 @@
1546 </g> 1295 </g>
1547 <path 1296 <path
1548 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1297 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1549 d="m 1800,219.99997 v 9.99999 0" 1298 d="m 1283.4043,64.000568 v 9.99999 0"
1550 id="path29548-5-1-3-6-3-1-0-3-4-2-0" /> 1299 id="path29548-5-1-3-6-3-1-0-3-4-2-0" />
1551 <path 1300 <path
1552 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1301 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1553 d="m 1340,219.99997 v 5.00004 0" 1302 d="m 823.40434,64.000568 v 5.00004 0"
1554 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-3" 1303 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-3"
1555 inkscape:transform-center-x="14.782001" 1304 inkscape:transform-center-x="14.782001"
1556 inkscape:transform-center-y="-0.085282837" /> 1305 inkscape:transform-center-y="-0.085282837" />
1557 <path 1306 <path
1558 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1307 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1559 d="m 1360,219.99997 v 5.00004 0" 1308 d="m 843.40434,64.000568 v 5.00004 0"
1560 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-0" 1309 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-0"
1561 inkscape:transform-center-x="14.782001" 1310 inkscape:transform-center-x="14.782001"
1562 inkscape:transform-center-y="-0.085282837" /> 1311 inkscape:transform-center-y="-0.085282837" />
1563 <path 1312 <path
1564 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1313 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1565 d="m 1380,219.99997 v 5.00004 0" 1314 d="m 863.40434,64.000568 v 5.00004 0"
1566 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-3" 1315 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-3"
1567 inkscape:transform-center-x="14.782001" 1316 inkscape:transform-center-x="14.782001"
1568 inkscape:transform-center-y="-0.085282837" /> 1317 inkscape:transform-center-y="-0.085282837" />
1569 <path 1318 <path
1570 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1319 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1571 d="m 1400,219.99997 v 5.00004 0" 1320 d="m 883.40434,64.000568 v 5.00004 0"
1572 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-0" 1321 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-0"
1573 inkscape:transform-center-x="14.782001" 1322 inkscape:transform-center-x="14.782001"
1574 inkscape:transform-center-y="-0.085282837" /> 1323 inkscape:transform-center-y="-0.085282837" />
1575 <path 1324 <path
1576 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1325 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1577 d="m 1419.7216,219.99997 v 5.00004 0" 1326 d="m 903.12594,64.000568 v 5.00004 0"
1578 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-9" 1327 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-9"
1579 inkscape:transform-center-x="-14.78205" 1328 inkscape:transform-center-x="-14.78205"
1580 inkscape:transform-center-y="-0.085282837" /> 1329 inkscape:transform-center-y="-0.085282837" />
1581 <text 1330 <text
1582 xml:space="preserve" 1331 xml:space="preserve"
1583 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 1332 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1584 x="1919.3904" 1333 x="1402.7948"
1585 y="249.86044" 1334 y="93.861046"
1586 id="text1185-9-7-1-1-89-62"><tspan 1335 id="text1185-9-7-1-1-89-62"><tspan
1587 sodipodi:role="line" 1336 sodipodi:role="line"
1588 x="1919.3904" 1337 x="1402.7948"
1589 y="249.86044" 1338 y="93.861046"
1590 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 1339 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1591 id="tspan31345-7-6">Oct.</tspan><tspan 1340 id="tspan31345-7-6">Oct.</tspan><tspan
1592 sodipodi:role="line" 1341 sodipodi:role="line"
1593 x="1919.3904" 1342 x="1402.7948"
1594 y="267.85712" 1343 y="111.85773"
1595 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 1344 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1596 id="tspan49906-76-7">2026</tspan></text> 1345 id="tspan49906-76-7">2026</tspan></text>
1597 <text 1346 <text
1598 xml:space="preserve" 1347 xml:space="preserve"
1599 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 1348 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1600 x="2159.3093" 1349 x="1642.7137"
1601 y="250.58356" 1350 y="94.58416"
1602 id="text1185-9-7-1-1-89-6-5"><tspan 1351 id="text1185-9-7-1-1-89-6-5"><tspan
1603 sodipodi:role="line" 1352 sodipodi:role="line"
1604 x="2159.3093" 1353 x="1642.7137"
1605 y="250.58356" 1354 y="94.58416"
1606 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 1355 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1607 id="tspan31345-7-8-6">Oct.</tspan><tspan 1356 id="tspan31345-7-8-6">Oct.</tspan><tspan
1608 sodipodi:role="line" 1357 sodipodi:role="line"
1609 x="2159.3093" 1358 x="1642.7137"
1610 y="268.58023" 1359 y="112.58084"
1611 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 1360 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1612 id="tspan49906-76-0-9">2027</tspan></text> 1361 id="tspan49906-76-0-9">2027</tspan></text>
1613 <text 1362 <text
1614 xml:space="preserve" 1363 xml:space="preserve"
1615 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 1364 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1616 x="2041.8163" 1365 x="1525.2207"
1617 y="249.66977" 1366 y="93.670372"
1618 id="text1185-9-7-1-1-8-1-0-4-8"><tspan 1367 id="text1185-9-7-1-1-8-1-0-4-8"><tspan
1619 sodipodi:role="line" 1368 sodipodi:role="line"
1620 x="2041.8163" 1369 x="1525.2207"
1621 y="249.66977" 1370 y="93.670372"
1622 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 1371 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1623 id="tspan31345-4-0-4-81-7">Apr.</tspan><tspan 1372 id="tspan31345-4-0-4-81-7">Apr.</tspan><tspan
1624 sodipodi:role="line" 1373 sodipodi:role="line"
1625 x="2041.8163" 1374 x="1525.2207"
1626 y="267.66644" 1375 y="111.66705"
1627 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 1376 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1628 id="tspan49906-7-3-8-2-2">2027</tspan></text> 1377 id="tspan49906-7-3-8-2-2">2027</tspan></text>
1629 <text 1378 <text
1630 xml:space="preserve" 1379 xml:space="preserve"
1631 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 1380 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1632 x="2282.1477" 1381 x="1765.5521"
1633 y="250.26334" 1382 y="94.263939"
1634 id="text1185-9-7-1-1-8-1-0-4-2-8"><tspan 1383 id="text1185-9-7-1-1-8-1-0-4-2-8"><tspan
1635 sodipodi:role="line" 1384 sodipodi:role="line"
1636 x="2282.1477" 1385 x="1765.5521"
1637 y="250.26334" 1386 y="94.263939"
1638 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 1387 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1639 id="tspan31345-4-0-4-81-5-2">Apr.</tspan><tspan 1388 id="tspan31345-4-0-4-81-5-2">Apr.</tspan><tspan
1640 sodipodi:role="line" 1389 sodipodi:role="line"
1641 x="2282.1477" 1390 x="1765.5521"
1642 y="268.26001" 1391 y="112.26062"
1643 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none" 1392 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1644 id="tspan49906-7-3-8-2-8-9">2028</tspan></text> 1393 id="tspan49906-7-3-8-2-8-9">2028</tspan></text>
1645 <g 1394 <g
1646 id="g1267-4-9" 1395 id="g1267-4-9"
1647 transform="translate(720,-3e-5)"> 1396 transform="translate(203.40434,-155.99944)">
1648 <path 1397 <path
1649 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1398 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1650 d="m 1200,220.00002 v 9.99999 0" 1399 d="m 1200,220.00002 v 9.99999 0"
@@ -1682,7 +1431,7 @@
1682 </g> 1431 </g>
1683 <g 1432 <g
1684 id="g1267-4-5-2" 1433 id="g1267-4-5-2"
1685 transform="translate(960,-4e-5)"> 1434 transform="translate(443.40434,-155.99945)">
1686 <path 1435 <path
1687 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1436 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1688 d="m 1200,220.00002 v 9.99999 0" 1437 d="m 1200,220.00002 v 9.99999 0"
@@ -1720,7 +1469,7 @@
1720 </g> 1469 </g>
1721 <g 1470 <g
1722 id="g1267-4-5-9-9" 1471 id="g1267-4-5-9-9"
1723 transform="translate(840,-3e-5)"> 1472 transform="translate(323.40434,-155.99944)">
1724 <path 1473 <path
1725 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1474 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1726 d="m 1200,220.00002 v 9.99999 0" 1475 d="m 1200,220.00002 v 9.99999 0"
@@ -1758,8 +1507,390 @@
1758 </g> 1507 </g>
1759 <path 1508 <path
1760 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 1509 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1761 d="m 2280,219.99998 v 9.99999 0" 1510 d="m 1763.4043,64.000578 v 9.99999 0"
1762 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0" /> 1511 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0" />
1512 <text
1513 xml:space="preserve"
1514 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1515 x="1885.6029"
1516 y="94.285194"
1517 id="text1185-9-7-1-1-8-1-0-4-2-8-2"><tspan
1518 sodipodi:role="line"
1519 x="1885.6029"
1520 y="94.285194"
1521 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1522 id="tspan31345-4-0-4-81-5-2-8">Oct.</tspan><tspan
1523 sodipodi:role="line"
1524 x="1885.6029"
1525 y="112.28188"
1526 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1527 id="tspan49906-7-3-8-2-8-9-9">2028</tspan></text>
1528 <g
1529 id="g1267-4-5-2-7"
1530 transform="translate(563.45518,-155.9782)">
1531 <path
1532 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1533 d="m 1200,220.00002 v 9.99999 0"
1534 id="path29548-5-1-3-6-3-1-0-3-4-1-3" />
1535 <path
1536 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1537 d="m 1220,219.99997 v 5.00004 0"
1538 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6"
1539 inkscape:transform-center-x="14.782001"
1540 inkscape:transform-center-y="-0.085282837" />
1541 <path
1542 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1543 d="m 1240,219.99997 v 5.00004 0"
1544 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1"
1545 inkscape:transform-center-x="14.782001"
1546 inkscape:transform-center-y="-0.085282837" />
1547 <path
1548 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1549 d="m 1260,219.99997 v 5.00004 0"
1550 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2"
1551 inkscape:transform-center-x="14.782001"
1552 inkscape:transform-center-y="-0.085282837" />
1553 <path
1554 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1555 d="m 1280,219.99997 v 5.00004 0"
1556 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9"
1557 inkscape:transform-center-x="14.782001"
1558 inkscape:transform-center-y="-0.085282837" />
1559 <path
1560 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1561 d="m 1299.7216,219.99997 v 5.00004 0"
1562 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3"
1563 inkscape:transform-center-x="-14.78205"
1564 inkscape:transform-center-y="-0.085282837" />
1565 </g>
1566 <path
1567 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1568 d="m 1883.4551,64.021829 v 9.99999 0"
1569 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1" />
1570 <text
1571 xml:space="preserve"
1572 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1573 x="2005.5908"
1574 y="94.339828"
1575 id="text1185-9-7-1-1-8-1-0-4-2-8-2-4"><tspan
1576 sodipodi:role="line"
1577 x="2005.5908"
1578 y="94.339828"
1579 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1580 id="tspan31345-4-0-4-81-5-2-8-7">Apr.</tspan><tspan
1581 sodipodi:role="line"
1582 x="2005.5908"
1583 y="112.33651"
1584 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1585 id="tspan49906-7-3-8-2-8-9-9-8">2029</tspan></text>
1586 <g
1587 id="g1267-4-5-2-7-4"
1588 transform="translate(683.44312,-155.92356)">
1589 <path
1590 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1591 d="m 1200,220.00002 v 9.99999 0"
1592 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5" />
1593 <path
1594 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1595 d="m 1220,219.99997 v 5.00004 0"
1596 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0"
1597 inkscape:transform-center-x="14.782001"
1598 inkscape:transform-center-y="-0.085282837" />
1599 <path
1600 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1601 d="m 1240,219.99997 v 5.00004 0"
1602 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3"
1603 inkscape:transform-center-x="14.782001"
1604 inkscape:transform-center-y="-0.085282837" />
1605 <path
1606 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1607 d="m 1260,219.99997 v 5.00004 0"
1608 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6"
1609 inkscape:transform-center-x="14.782001"
1610 inkscape:transform-center-y="-0.085282837" />
1611 <path
1612 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1613 d="m 1280,219.99997 v 5.00004 0"
1614 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1"
1615 inkscape:transform-center-x="14.782001"
1616 inkscape:transform-center-y="-0.085282837" />
1617 <path
1618 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1619 d="m 1299.7216,219.99997 v 5.00004 0"
1620 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0"
1621 inkscape:transform-center-x="-14.78205"
1622 inkscape:transform-center-y="-0.085282837" />
1623 </g>
1624 <path
1625 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1626 d="m 2003.443,64.076464 v 9.99999 0"
1627 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6" />
1628 <text
1629 xml:space="preserve"
1630 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1631 x="2125.6079"
1632 y="94.692207"
1633 id="text1185-9-7-1-1-8-1-0-4-2-8-2-4-2"><tspan
1634 sodipodi:role="line"
1635 x="2125.6079"
1636 y="94.692207"
1637 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1638 id="tspan31345-4-0-4-81-5-2-8-7-0">Oct.</tspan><tspan
1639 sodipodi:role="line"
1640 x="2125.6079"
1641 y="112.68889"
1642 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1643 id="tspan49906-7-3-8-2-8-9-9-8-6">2029</tspan></text>
1644 <g
1645 id="g1267-4-5-2-7-4-1"
1646 transform="translate(803.46019,-155.57118)">
1647 <path
1648 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1649 d="m 1200,220.00002 v 9.99999 0"
1650 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5-5" />
1651 <path
1652 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1653 d="m 1220,219.99997 v 5.00004 0"
1654 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0-5"
1655 inkscape:transform-center-x="14.782001"
1656 inkscape:transform-center-y="-0.085282837" />
1657 <path
1658 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1659 d="m 1240,219.99997 v 5.00004 0"
1660 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3-4"
1661 inkscape:transform-center-x="14.782001"
1662 inkscape:transform-center-y="-0.085282837" />
1663 <path
1664 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1665 d="m 1260,219.99997 v 5.00004 0"
1666 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6-7"
1667 inkscape:transform-center-x="14.782001"
1668 inkscape:transform-center-y="-0.085282837" />
1669 <path
1670 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1671 d="m 1280,219.99997 v 5.00004 0"
1672 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1-6"
1673 inkscape:transform-center-x="14.782001"
1674 inkscape:transform-center-y="-0.085282837" />
1675 <path
1676 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1677 d="m 1299.7216,219.99997 v 5.00004 0"
1678 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0-5"
1679 inkscape:transform-center-x="-14.78205"
1680 inkscape:transform-center-y="-0.085282837" />
1681 </g>
1682 <path
1683 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1684 d="m 2123.4601,64.428843 v 9.99999 0"
1685 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6-6" />
1686 <path
1687 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1688 d="m 2123.3825,64.223284 v 9.99999 0"
1689 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6-3" />
1690 <text
1691 xml:space="preserve"
1692 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:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1693 x="2245.5474"
1694 y="94.839027"
1695 id="text1185-9-7-1-1-8-1-0-4-2-8-2-4-2-7"><tspan
1696 sodipodi:role="line"
1697 x="2245.5474"
1698 y="94.839027"
1699 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1700 id="tspan31345-4-0-4-81-5-2-8-7-0-4">Apr.</tspan><tspan
1701 sodipodi:role="line"
1702 x="2245.5474"
1703 y="112.83571"
1704 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';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke:none"
1705 id="tspan49906-7-3-8-2-8-9-9-8-6-5">2030</tspan></text>
1706 <g
1707 id="g1267-4-5-2-7-4-1-2"
1708 transform="translate(923.39972,-155.42436)">
1709 <path
1710 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1711 d="m 1200,220.00002 v 9.99999 0"
1712 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5-5-5" />
1713 <path
1714 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1715 d="m 1220,219.99997 v 5.00004 0"
1716 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0-5-4"
1717 inkscape:transform-center-x="14.782001"
1718 inkscape:transform-center-y="-0.085282837" />
1719 <path
1720 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1721 d="m 1240,219.99997 v 5.00004 0"
1722 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3-4-7"
1723 inkscape:transform-center-x="14.782001"
1724 inkscape:transform-center-y="-0.085282837" />
1725 <path
1726 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1727 d="m 1260,219.99997 v 5.00004 0"
1728 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6-7-4"
1729 inkscape:transform-center-x="14.782001"
1730 inkscape:transform-center-y="-0.085282837" />
1731 <path
1732 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1733 d="m 1280,219.99997 v 5.00004 0"
1734 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1-6-4"
1735 inkscape:transform-center-x="14.782001"
1736 inkscape:transform-center-y="-0.085282837" />
1737 <path
1738 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1739 d="m 1299.7216,219.99997 v 5.00004 0"
1740 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0-5-3"
1741 inkscape:transform-center-x="-14.78205"
1742 inkscape:transform-center-y="-0.085282837" />
1743 </g>
1744 <g
1745 id="g1267-4-5-2-7-4-1-2-0"
1746 transform="translate(1043.3579,-155.33829)">
1747 <path
1748 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1749 d="m 1200,220.00002 v 9.99999 0"
1750 id="path29548-5-1-3-6-3-1-0-3-4-1-3-5-5-5-6" />
1751 <path
1752 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1753 d="m 1220,219.99997 v 5.00004 0"
1754 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-0-5-0-0-5-6-0-5-4-8"
1755 inkscape:transform-center-x="14.782001"
1756 inkscape:transform-center-y="-0.085282837" />
1757 <path
1758 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1759 d="m 1240,219.99997 v 5.00004 0"
1760 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-7-5-3-5-9-1-3-4-7-9"
1761 inkscape:transform-center-x="14.782001"
1762 inkscape:transform-center-y="-0.085282837" />
1763 <path
1764 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1765 d="m 1260,219.99997 v 5.00004 0"
1766 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-5-2-0-9-9-2-6-7-4-2"
1767 inkscape:transform-center-x="14.782001"
1768 inkscape:transform-center-y="-0.085282837" />
1769 <path
1770 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1771 d="m 1280,219.99997 v 5.00004 0"
1772 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-8-9-9-4-1-9-1-6-4-6"
1773 inkscape:transform-center-x="14.782001"
1774 inkscape:transform-center-y="-0.085282837" />
1775 <path
1776 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1777 d="m 1299.7216,219.99997 v 5.00004 0"
1778 id="path29548-8-5-0-6-4-6-2-9-0-8-1-3-1-9-6-9-3-4-0-4-6-2-2-7-6-1-9-9-1-4-9-7-0-2-6-4-3-0-5-3-6"
1779 inkscape:transform-center-x="-14.78205"
1780 inkscape:transform-center-y="-0.085282837" />
1781 </g>
1782 <path
1783 style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1784 d="m 2243.3996,64.575663 v 9.99999 0"
1785 id="path29548-5-1-3-6-3-1-0-3-4-2-0-0-1-6-6-0" />
1786 <rect
1787 style="opacity:0.75;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.751473;stroke-opacity:1"
1788 id="rect917-0-0-4-4-9-4-5-3-9-2-36"
1789 width="38.418175"
1790 height="23.151052"
1791 x="2047.6135"
1792 y="-45.172161"
1793 ry="1.1605872" />
1794 <rect
1795 style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98878;stroke-dasharray:none;stroke-opacity:1"
1796 id="rect917-0-0-4-4-9-4-5-3-9-2-36-7"
1797 width="186.42949"
1798 height="110.40546"
1799 x="2036.5294"
1800 y="-77.753708"
1801 ry="5.5347452" />
1802 <rect
1803 style="opacity:0.75;fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1"
1804 id="rect917-0-0-4-4-9-4-5-3-9-2-6"
1805 width="21.197233"
1806 height="19.28739"
1807 x="2053.8164"
1808 y="-45.883858"
1809 ry="0.96689767" />
1810 <text
1811 xml:space="preserve"
1812 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"
1813 x="2132.4917"
1814 y="-57.687912"
1815 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5"><tspan
1816 sodipodi:role="line"
1817 x="2132.4917"
1818 y="-57.687912"
1819 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:#000000;fill-opacity:1;stroke:none"
1820 id="tspan10317-2-9-1-4-6-5-6-6-5">Legend</tspan></text>
1821 <text
1822 xml:space="preserve"
1823 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"
1824 x="2098.0986"
1825 y="-31.899874"
1826 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2"><tspan
1827 sodipodi:role="line"
1828 x="2098.0986"
1829 y="-31.899874"
1830 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"
1831 id="tspan10317-2-9-1-4-6-5-6-6-5-9">Future</tspan></text>
1832 <rect
1833 style="opacity:1;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1"
1834 id="rect917-0-0-4-4-9-4-5-3-9-2-6-1"
1835 width="21.197233"
1836 height="19.28739"
1837 x="2053.8672"
1838 y="-21.756365"
1839 ry="0.96689767" />
1840 <text
1841 xml:space="preserve"
1842 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"
1843 x="2128.7158"
1844 y="-7.6722765"
1845 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2-2"><tspan
1846 sodipodi:role="line"
1847 x="2128.7158"
1848 y="-7.6722765"
1849 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"
1850 id="tspan10317-2-9-1-4-6-5-6-6-5-9-7">Current (Apr. 25)</tspan></text>
1851 <text
1852 xml:space="preserve"
1853 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"
1854 x="2109.363"
1855 y="16.03771"
1856 id="text1185-3-55-4-0-0-0-1-1-6-4-3-5-2-2-9"><tspan
1857 sodipodi:role="line"
1858 x="2109.363"
1859 y="16.03771"
1860 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"
1861 id="tspan10317-2-9-1-4-6-5-6-6-5-9-7-3">End-of-life</tspan></text>
1862 <rect
1863 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.50949;stroke-opacity:1"
1864 id="rect917-0-0-4-4-9-4-5-3-9-2-6-1-0"
1865 width="21.197233"
1866 height="19.28739"
1867 x="2054.0239"
1868 y="1.9667883"
1869 ry="0.96689767" />
1870 <rect
1871 style="opacity:0.5;fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.85786;stroke-opacity:1"
1872 id="rect917-0-0-4-4-9-4-5-6"
1873 width="120.80748"
1874 height="45.000004"
1875 x="703.10553"
1876 y="-165.72791"
1877 ry="2.2558987" />
1878 <text
1879 xml:space="preserve"
1880 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"
1881 x="752.16809"
1882 y="-147.18787"
1883 id="text1185-3-55-4-0-0-0-1-2"><tspan
1884 sodipodi:role="line"
1885 x="752.16809"
1886 y="-147.18787"
1887 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"
1888 id="tspan1">Nanbield</tspan><tspan
1889 sodipodi:role="line"
1890 x="752.16809"
1891 y="-129.19119"
1892 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"
1893 id="tspan2">4.3</tspan></text>
1763 </g> 1894 </g>
1764 <style 1895 <style
1765 type="text/css" 1896 type="text/css"
diff --git a/documentation/ref-manual/system-requirements.rst b/documentation/ref-manual/system-requirements.rst
index 0fc92550a5..b22572c6b4 100644
--- a/documentation/ref-manual/system-requirements.rst
+++ b/documentation/ref-manual/system-requirements.rst
@@ -62,8 +62,12 @@ supported on the following distributions:
62 62
63- Ubuntu 22.04 (LTS) 63- Ubuntu 22.04 (LTS)
64 64
65- Ubuntu 23.04
66
65- Fedora 38 67- Fedora 38
66 68
69- Fedora 39
70
67- CentOS Stream 8 71- CentOS Stream 8
68 72
69- Debian GNU/Linux 11 (Bullseye) 73- Debian GNU/Linux 11 (Bullseye)
@@ -150,10 +154,27 @@ Ubuntu and Debian
150Here are the packages needed to build an image on a headless system 154Here are the packages needed to build an image on a headless system
151with a supported Ubuntu or Debian Linux distribution:: 155with a supported Ubuntu or Debian Linux distribution::
152 156
153 $ sudo apt install &UBUNTU_HOST_PACKAGES_ESSENTIAL; 157 $ sudo apt install &UBUNTU_DEBIAN_HOST_PACKAGES_ESSENTIAL;
158
159You also need to ensure you have the ``en_US.UTF-8`` locale enabled::
160
161 $ locale --all-locales | grep en_US.utf8
162
163If this is not the case, you can reconfigure the ``locales`` package to add it
164(requires an interactive shell)::
165
166 $ sudo dpkg-reconfigure locales
154 167
155.. note:: 168.. note::
156 169
170 - If you are not in an interactive shell, ``dpkg-reconfigure`` will
171 not work as expected. To add the locale you will need to edit
172 ``/etc/locale.gen`` file to add/uncomment the ``en_US.UTF-8`` locale.
173 A naive way to do this as root is::
174
175 $ echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
176 $ locale-gen
177
157 - If your build system has the ``oss4-dev`` package installed, you 178 - If your build system has the ``oss4-dev`` package installed, you
158 might experience QEMU build failures due to the package installing 179 might experience QEMU build failures due to the package installing
159 its own custom ``/usr/include/linux/soundcard.h`` on the Debian 180 its own custom ``/usr/include/linux/soundcard.h`` on the Debian
@@ -164,8 +185,12 @@ with a supported Ubuntu or Debian Linux distribution::
164 185
165Here are the packages needed to build Project documentation manuals:: 186Here are the packages needed to build Project documentation manuals::
166 187
167 $ sudo apt install git make inkscape texlive-latex-extra 188 $ sudo apt install &UBUNTU_DEBIAN_HOST_PACKAGES_DOC;
168 $ sudo apt install sphinx python3-saneyaml python3-sphinx-rtd-theme 189
190In addition to the previous packages, here are the packages needed to build the
191documentation in PDF format::
192
193 $ sudo apt install &UBUNTU_DEBIAN_HOST_PACKAGES_DOC_PDF;
169 194
170Fedora Packages 195Fedora Packages
171--------------- 196---------------
@@ -177,8 +202,13 @@ with a supported Fedora Linux distribution::
177 202
178Here are the packages needed to build Project documentation manuals:: 203Here are the packages needed to build Project documentation manuals::
179 204
180 $ sudo dnf install git make python3-pip which inkscape texlive-fncychap 205 $ sudo dnf install &FEDORA_HOST_PACKAGES_DOC;
181 &PIP3_HOST_PACKAGES_DOC; 206 $ sudo pip3 install &PIP3_HOST_PACKAGES_DOC;
207
208In addition to the previous packages, here are the packages needed to build the
209documentation in PDF format::
210
211 $ sudo dnf install &FEDORA_HOST_PACKAGES_DOC_PDF;
182 212
183openSUSE Packages 213openSUSE Packages
184----------------- 214-----------------
@@ -187,11 +217,17 @@ Here are the packages needed to build an image on a headless system
187with a supported openSUSE distribution:: 217with a supported openSUSE distribution::
188 218
189 $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL; 219 $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL;
220 $ sudo pip3 install &OPENSUSE_PIP3_HOST_PACKAGES_ESSENTIAL;
190 221
191Here are the packages needed to build Project documentation manuals:: 222Here are the packages needed to build Project documentation manuals::
192 223
193 $ sudo zypper install git make python3-pip which inkscape texlive-fncychap 224 $ sudo zypper install &OPENSUSE_HOST_PACKAGES_DOC;
194 &PIP3_HOST_PACKAGES_DOC; 225 $ sudo pip3 install &PIP3_HOST_PACKAGES_DOC;
226
227In addition to the previous packages, here are the packages needed to build the
228documentation in PDF format::
229
230 $ sudo zypper install &OPENSUSE_HOST_PACKAGES_DOC_PDF;
195 231
196 232
197AlmaLinux Packages 233AlmaLinux Packages
@@ -200,6 +236,10 @@ AlmaLinux Packages
200Here are the packages needed to build an image on a headless system 236Here are the packages needed to build an image on a headless system
201with a supported AlmaLinux distribution:: 237with a supported AlmaLinux distribution::
202 238
239 $ sudo dnf install -y epel-release
240 $ sudo yum install dnf-plugins-core
241 $ sudo dnf config-manager --set-enabled crb
242 $ sudo dnf makecache
203 $ sudo dnf install &ALMALINUX_HOST_PACKAGES_ESSENTIAL; 243 $ sudo dnf install &ALMALINUX_HOST_PACKAGES_ESSENTIAL;
204 244
205.. note:: 245.. note::
@@ -217,8 +257,20 @@ with a supported AlmaLinux distribution::
217 257
218Here are the packages needed to build Project documentation manuals:: 258Here are the packages needed to build Project documentation manuals::
219 259
220 $ sudo dnf install git make python3-pip which inkscape texlive-fncychap 260 $ sudo dnf install &ALMALINUX_HOST_PACKAGES_DOC;
221 &PIP3_HOST_PACKAGES_DOC; 261 $ sudo pip3 install &PIP3_HOST_PACKAGES_DOC;
262
263In addition to the previous packages, here are the packages needed to build the
264documentation in PDF format::
265
266 $ sudo dnf install &ALMALINUX_HOST_PACKAGES_DOC_PDF;
267
268.. warning::
269
270 Unlike Fedora or OpenSUSE, AlmaLinux does not provide the packages
271 ``texlive-collection-fontsextra``, ``texlive-collection-lang*`` and
272 ``texlive-collection-latexextra``, so you may run into issues. These may be
273 installed using `tlmgr <https://tug.org/texlive/tlmgr.html>`_.
222 274
223.. _system-requirements-buildtools: 275.. _system-requirements-buildtools:
224 276
@@ -319,7 +371,7 @@ If you would prefer not to use the ``install-buildtools`` script, you can instea
319download and run a pre-built :term:`buildtools` installer yourself with the following 371download and run a pre-built :term:`buildtools` installer yourself with the following
320steps: 372steps:
321 373
322#. Go to :yocto_dl:`/releases/yocto/yocto-&DISTRO;/buildtools/`, locate and 374#. Go to :yocto_dl:`/releases/yocto/&DISTRO_REL_LATEST_TAG;/buildtools/`, locate and
323 download the ``.sh`` file corresponding to your host architecture 375 download the ``.sh`` file corresponding to your host architecture
324 and to :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make`. 376 and to :term:`buildtools`, :term:`buildtools-extended` or :term:`buildtools-make`.
325 377
diff --git a/documentation/ref-manual/tasks.rst b/documentation/ref-manual/tasks.rst
index 2e4b23408d..cf6b9876ca 100644
--- a/documentation/ref-manual/tasks.rst
+++ b/documentation/ref-manual/tasks.rst
@@ -616,8 +616,8 @@ information on how the root filesystem is created.
616 616
617Boots an image and performs runtime tests within the image. For 617Boots an image and performs runtime tests within the image. For
618information on automatically testing images, see the 618information on automatically testing images, see the
619":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 619":ref:`test-manual/runtime-testing:performing automated runtime testing`"
620section in the Yocto Project Development Tasks Manual. 620section in the Yocto Project Test Environment Manual.
621 621
622.. _ref-tasks-testimage_auto: 622.. _ref-tasks-testimage_auto:
623 623
@@ -629,8 +629,8 @@ after it has been built. This task is enabled when you set
629:term:`TESTIMAGE_AUTO` equal to "1". 629:term:`TESTIMAGE_AUTO` equal to "1".
630 630
631For information on automatically testing images, see the 631For information on automatically testing images, see the
632":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 632":ref:`test-manual/runtime-testing:performing automated runtime testing`"
633section in the Yocto Project Development Tasks Manual. 633section in the Yocto Project Test Environment Manual.
634 634
635Kernel-Related Tasks 635Kernel-Related Tasks
636==================== 636====================
@@ -727,7 +727,7 @@ tool, which you then use to modify the kernel configuration.
727 $ bitbake linux-yocto -c menuconfig 727 $ bitbake linux-yocto -c menuconfig
728 728
729 729
730See the ":ref:`kernel-dev/common:using \`\`menuconfig\`\``" 730See the ":ref:`kernel-dev/common:using ``menuconfig```"
731section in the Yocto Project Linux Kernel Development Manual for more 731section in the Yocto Project Linux Kernel Development Manual for more
732information on this configuration tool. 732information on this configuration tool.
733 733
@@ -751,7 +751,7 @@ which can then be applied by subsequent tasks such as
751 751
752Runs ``make menuconfig`` for the kernel. For information on 752Runs ``make menuconfig`` for the kernel. For information on
753``menuconfig``, see the 753``menuconfig``, see the
754":ref:`kernel-dev/common:using \`\`menuconfig\`\``" 754":ref:`kernel-dev/common:using ``menuconfig```"
755section in the Yocto Project Linux Kernel Development Manual. 755section in the Yocto Project Linux Kernel Development Manual.
756 756
757.. _ref-tasks-savedefconfig: 757.. _ref-tasks-savedefconfig:
diff --git a/documentation/ref-manual/terms.rst b/documentation/ref-manual/terms.rst
index b18c4183b6..9f61061415 100644
--- a/documentation/ref-manual/terms.rst
+++ b/documentation/ref-manual/terms.rst
@@ -63,7 +63,7 @@ universal, the list includes them just in case:
63 This term refers to the area used by the OpenEmbedded build system for 63 This term refers to the area used by the OpenEmbedded build system for
64 builds. The area is created when you ``source`` the setup environment 64 builds. The area is created when you ``source`` the setup environment
65 script that is found in the Source Directory 65 script that is found in the Source Directory
66 (i.e. :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``). The 66 (i.e. :ref:`ref-manual/structure:``oe-init-build-env```). The
67 :term:`TOPDIR` variable points to the :term:`Build Directory`. 67 :term:`TOPDIR` variable points to the :term:`Build Directory`.
68 68
69 You have a lot of flexibility when creating the :term:`Build Directory`. 69 You have a lot of flexibility when creating the :term:`Build Directory`.
@@ -452,7 +452,7 @@ universal, the list includes them just in case:
452 the Source Directory, if you do, the top-level directory name of the 452 the Source Directory, if you do, the top-level directory name of the
453 Source Directory is derived from the Yocto Project release tarball. 453 Source Directory is derived from the Yocto Project release tarball.
454 For example, downloading and unpacking poky tarballs from 454 For example, downloading and unpacking poky tarballs from
455 :yocto_dl:`/releases/yocto/&DISTRO_REL_TAG;/` 455 :yocto_dl:`/releases/yocto/&DISTRO_REL_LATEST_TAG;/`
456 results in a Source Directory whose root folder is named poky. 456 results in a Source Directory whose root folder is named poky.
457 457
458 458
diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst
index f694640c00..9406f3548c 100644
--- a/documentation/ref-manual/variables.rst
+++ b/documentation/ref-manual/variables.rst
@@ -143,7 +143,7 @@ system and gives an overview of their function and contents.
143 information on how this variable is used. 143 information on how this variable is used.
144 144
145 :term:`AR` 145 :term:`AR`
146 The minimal command and arguments used to run ``ar``. 146 The minimal command and arguments used to run :manpage:`ar <ar(1)>`.
147 147
148 :term:`ARCHIVER_MODE` 148 :term:`ARCHIVER_MODE`
149 When used with the :ref:`ref-classes-archiver` class, 149 When used with the :ref:`ref-classes-archiver` class,
@@ -165,7 +165,8 @@ system and gives an overview of their function and contents.
165 ``meta/classes/archiver.bbclass`` file in the :term:`Source Directory`. 165 ``meta/classes/archiver.bbclass`` file in the :term:`Source Directory`.
166 166
167 :term:`AS` 167 :term:`AS`
168 Minimal command and arguments needed to run the assembler. 168 Minimal command and arguments needed to run the :manpage:`assembler
169 <as(1)>`.
169 170
170 :term:`ASSUME_PROVIDED` 171 :term:`ASSUME_PROVIDED`
171 Lists recipe names (:term:`PN` values) BitBake does not 172 Lists recipe names (:term:`PN` values) BitBake does not
@@ -209,12 +210,11 @@ system and gives an overview of their function and contents.
209 SRCREV = "${AUTOREV}" 210 SRCREV = "${AUTOREV}"
210 211
211 If you use the previous statement to retrieve the latest version of 212 If you use the previous statement to retrieve the latest version of
212 software, you need to be sure :term:`PV` contains 213 software, you need to make sure :term:`PV` contains the ``+`` sign so
213 ``${``\ :term:`SRCPV`\ ``}``. For example, suppose you have a kernel 214 :term:`bitbake` includes source control information to :term:`PKGV` when
214 recipe that inherits the :ref:`ref-classes-kernel` class and you 215 packaging the recipe. For example::
215 use the previous statement. In this example, ``${SRCPV}`` does not 216
216 automatically get into :term:`PV`. Consequently, you need to change 217 PV = "6.10.y+git"
217 :term:`PV` in your recipe so that it does contain ``${SRCPV}``.
218 218
219 For more information see the 219 For more information see the
220 ":ref:`dev-manual/packages:automatically incrementing a package version number`" 220 ":ref:`dev-manual/packages:automatically incrementing a package version number`"
@@ -225,6 +225,12 @@ system and gives an overview of their function and contents.
225 must set this variable in your recipe. The 225 must set this variable in your recipe. The
226 :ref:`ref-classes-syslinux` class checks this variable. 226 :ref:`ref-classes-syslinux` class checks this variable.
227 227
228 :term:`AUTOTOOLS_SCRIPT_PATH`
229 When using the :ref:`ref-classes-autotools` class, the
230 :term:`AUTOTOOLS_SCRIPT_PATH` variable stores the location of the
231 different scripts used by the Autotools build system. The default
232 value for this variable is :term:`S`.
233
228 :term:`AVAILTUNES` 234 :term:`AVAILTUNES`
229 The list of defined CPU and Application Binary Interface (ABI) 235 The list of defined CPU and Application Binary Interface (ABI)
230 tunings (i.e. "tunes") available for use by the OpenEmbedded build 236 tunings (i.e. "tunes") available for use by the OpenEmbedded build
@@ -972,55 +978,165 @@ system and gives an overview of their function and contents.
972 variable is a useful pointer in case a bug in the software being 978 variable is a useful pointer in case a bug in the software being
973 built needs to be manually reported. 979 built needs to be manually reported.
974 980
981 :term:`BUILD_AR`
982 Specifies the architecture-specific :manpage:`archiver <ar(1)>` for the
983 build host, and its default definition is derived in part from
984 :term:`BUILD_PREFIX`::
985
986 BUILD_AR = "${BUILD_PREFIX}ar"
987
988 When building a :ref:`ref-classes-native` recipe, :term:`AR` is set to the
989 value of this variable by default.
990
991 The :term:`BUILD_AR` variable should not be set manually, and is rarely
992 used in recipes as :term:`AR` contains the appropriate value depending on
993 the context (native or target recipes). Exception be made for target
994 recipes that need to use the :manpage:`archiver <ar(1)>` from the build
995 host at some point during the build.
996
975 :term:`BUILD_ARCH` 997 :term:`BUILD_ARCH`
976 Specifies the architecture of the build host (e.g. ``i686``). The 998 Specifies the architecture of the build host (e.g. ``i686``). The
977 OpenEmbedded build system sets the value of :term:`BUILD_ARCH` from the 999 OpenEmbedded build system sets the value of :term:`BUILD_ARCH` from the
978 machine name reported by the ``uname`` command. 1000 machine name reported by the ``uname`` command.
979 1001
1002 :term:`BUILD_AS`
1003 Specifies the architecture-specific :manpage:`assembler <as(1)>` for the
1004 build host, and its default definition is derived in part from
1005 :term:`BUILD_PREFIX`::
1006
1007 BUILD_AS = "${BUILD_PREFIX}as ${BUILD_AS_ARCH}"
1008
1009 When building a :ref:`ref-classes-native` recipe, :term:`AS` is set to the
1010 value of this variable by default.
1011
1012 The :term:`BUILD_AS` variable should not be set manually, and is rarely
1013 used in recipes as :term:`AS` contains the appropriate value depending on
1014 the context (native or target recipes). Exception be made for target
1015 recipes that need to use the :manpage:`assembler <as(1)>` from the build
1016 host at some point during the build.
1017
980 :term:`BUILD_AS_ARCH` 1018 :term:`BUILD_AS_ARCH`
981 Specifies the architecture-specific assembler flags for the build 1019 Specifies the architecture-specific assembler flags for the build
982 host. By default, the value of :term:`BUILD_AS_ARCH` is empty. 1020 host. By default, the value of :term:`BUILD_AS_ARCH` is empty.
983 1021
1022 :term:`BUILD_CC`
1023 Specifies the architecture-specific C compiler for the build host,
1024 and its default definition is derived in part from :term:`BUILD_PREFIX`
1025 and :term:`BUILD_CC_ARCH`::
1026
1027 BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
1028
1029 When building a :ref:`ref-classes-native` recipe, :term:`CC` is set to the
1030 value of this variable by default.
1031
1032 The :term:`BUILD_CC` variable should not be set manually, and is rarely
1033 used in recipes as :term:`CC` contains the appropriate value depending on
1034 the context (native or target recipes). Exception be made for target
1035 recipes that need to use the compiler from the build host at some point
1036 during the build.
1037
984 :term:`BUILD_CC_ARCH` 1038 :term:`BUILD_CC_ARCH`
985 Specifies the architecture-specific C compiler flags for the build 1039 Specifies the architecture-specific C compiler flags for the build
986 host. By default, the value of :term:`BUILD_CC_ARCH` is empty. 1040 host. By default, the value of :term:`BUILD_CC_ARCH` is empty.
987 1041
988 :term:`BUILD_CCLD` 1042 :term:`BUILD_CCLD`
989 Specifies the linker command to be used for the build host when the C 1043 Specifies the :manpage:`linker <ld(1)>` command to be used for the build
990 compiler is being used as the linker. By default, :term:`BUILD_CCLD` 1044 host when the C compiler is being used as the linker, and its default
991 points to GCC and passes as arguments the value of 1045 definition is derived in part from :term:`BUILD_PREFIX` and
992 :term:`BUILD_CC_ARCH`, assuming 1046 :term:`BUILD_CC_ARCH`::
993 :term:`BUILD_CC_ARCH` is set. 1047
1048 BUILD_CCLD = "${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
1049
1050 When building a :ref:`ref-classes-native` recipe, :term:`CCLD` is set to
1051 the value of this variable by default.
1052
1053 The :term:`BUILD_CCLD` variable should not be set manually, and is rarely
1054 used in recipes as :term:`CCLD` contains the appropriate value depending on
1055 the context (native or target recipes). Exception be made for target
1056 recipes that need to use the :manpage:`linker <ld(1)>` from the build host
1057 at some point during the build.
994 1058
995 :term:`BUILD_CFLAGS` 1059 :term:`BUILD_CFLAGS`
996 Specifies the flags to pass to the C compiler when building for the 1060 Specifies the flags to pass to the C compiler when building for the
997 build host. When building in the ``-native`` context, 1061 build host. When building a :ref:`ref-classes-native` recipe,
998 :term:`CFLAGS` is set to the value of this variable by 1062 :term:`CFLAGS` is set to the value of this variable by
999 default. 1063 default.
1000 1064
1065 :term:`BUILD_CPP`
1066 Specifies the C preprocessor command (to both the C and the C++ compilers)
1067 when building for the build host, and its default definition is derived in
1068 part from :term:`BUILD_PREFIX` and :term:`BUILD_CC_ARCH`::
1069
1070 BUILD_CPP = "${BUILD_PREFIX}gcc ${BUILD_CC_ARCH} -E"
1071
1072 When building a :ref:`ref-classes-native` recipe, :term:`CPP` is set to
1073 the value of this variable by default.
1074
1075 The :term:`BUILD_CPP` variable should not be set manually, and is rarely
1076 used in recipes as :term:`CPP` contains the appropriate value depending on
1077 the context (native or target recipes). Exception be made for target
1078 recipes that need to use the preprocessor from the build host at some
1079 point during the build.
1080
1001 :term:`BUILD_CPPFLAGS` 1081 :term:`BUILD_CPPFLAGS`
1002 Specifies the flags to pass to the C preprocessor (i.e. to both the C 1082 Specifies the flags to pass to the C preprocessor (i.e. to both the C
1003 and the C++ compilers) when building for the build host. When 1083 and the C++ compilers) when building for the build host. When
1004 building in the ``-native`` context, :term:`CPPFLAGS` 1084 building in the ``-native`` context, :term:`CPPFLAGS`
1005 is set to the value of this variable by default. 1085 is set to the value of this variable by default.
1006 1086
1087 :term:`BUILD_CXX`
1088 Specifies the architecture-specific C++ compiler for the build host,
1089 and its default definition is derived in part from :term:`BUILD_PREFIX`
1090 and :term:`BUILD_CC_ARCH`::
1091
1092 BUILD_CXX = "${CCACHE}${BUILD_PREFIX}g++ ${BUILD_CC_ARCH}"
1093
1094 When building a :ref:`ref-classes-native` recipe, :term:`CXX` is set to
1095 the value of this variable by default.
1096
1097 The :term:`BUILD_CXX` variable should not be set manually, and is rarely
1098 used in recipes as :term:`CXX` contains the appropriate value depending on
1099 the context (native or target recipes). Exception be made for target
1100 recipes that need to use the C++ compiler from the build host at some
1101 point during the build.
1102
1007 :term:`BUILD_CXXFLAGS` 1103 :term:`BUILD_CXXFLAGS`
1008 Specifies the flags to pass to the C++ compiler when building for the 1104 Specifies the flags to pass to the C++ compiler when building for the
1009 build host. When building in the ``-native`` context, 1105 build host. When building a :ref:`ref-classes-native` recipe,
1010 :term:`CXXFLAGS` is set to the value of this variable 1106 :term:`CXXFLAGS` is set to the value of this variable
1011 by default. 1107 by default.
1012 1108
1013 :term:`BUILD_FC` 1109 :term:`BUILD_FC`
1014 Specifies the Fortran compiler command for the build host. By 1110 Specifies the Fortran compiler command for the build host, and its default
1015 default, :term:`BUILD_FC` points to Gfortran and passes as arguments the 1111 definition is derived in part from :term:`BUILD_PREFIX` and
1016 value of :term:`BUILD_CC_ARCH`, assuming 1112 :term:`BUILD_CC_ARCH`::
1017 :term:`BUILD_CC_ARCH` is set. 1113
1114 BUILD_FC = "${BUILD_PREFIX}gfortran ${BUILD_CC_ARCH}"
1115
1116 When building a :ref:`ref-classes-native` recipe, :term:`FC` is set to the
1117 value of this variable by default.
1118
1119 The :term:`BUILD_FC` variable should not be set manually, and is rarely
1120 used in recipes as :term:`FC` contains the appropriate value depending on
1121 the context (native or target recipes). Exception be made for target
1122 recipes that need to use the Fortran compiler from the build host at some
1123 point during the build.
1018 1124
1019 :term:`BUILD_LD` 1125 :term:`BUILD_LD`
1020 Specifies the linker command for the build host. By default, 1126 Specifies the linker command for the build host, and its default
1021 :term:`BUILD_LD` points to the GNU linker (ld) and passes as arguments 1127 definition is derived in part from :term:`BUILD_PREFIX` and
1022 the value of :term:`BUILD_LD_ARCH`, assuming 1128 :term:`BUILD_LD_ARCH`::
1023 :term:`BUILD_LD_ARCH` is set. 1129
1130 BUILD_LD = "${BUILD_PREFIX}ld ${BUILD_LD_ARCH}"
1131
1132 When building a :ref:`ref-classes-native` recipe, :term:`LD` is set to the
1133 value of this variable by default.
1134
1135 The :term:`BUILD_LD` variable should not be set manually, and is rarely
1136 used in recipes as :term:`LD` contains the appropriate value depending on
1137 the context (native or target recipes). Exception be made for target
1138 recipes that need to use the linker from the build host at some point
1139 during the build.
1024 1140
1025 :term:`BUILD_LD_ARCH` 1141 :term:`BUILD_LD_ARCH`
1026 Specifies architecture-specific linker flags for the build host. By 1142 Specifies architecture-specific linker flags for the build host. By
@@ -1028,10 +1144,58 @@ system and gives an overview of their function and contents.
1028 1144
1029 :term:`BUILD_LDFLAGS` 1145 :term:`BUILD_LDFLAGS`
1030 Specifies the flags to pass to the linker when building for the build 1146 Specifies the flags to pass to the linker when building for the build
1031 host. When building in the ``-native`` context, 1147 host. When building a :ref:`ref-classes-native` recipe,
1032 :term:`LDFLAGS` is set to the value of this variable 1148 :term:`LDFLAGS` is set to the value of this variable
1033 by default. 1149 by default.
1034 1150
1151 :term:`BUILD_NM`
1152 Specifies the architecture-specific utility to list symbols from object
1153 files for the build host, and its default definition is derived in part
1154 from :term:`BUILD_PREFIX`::
1155
1156 BUILD_NM = "${BUILD_PREFIX}nm"
1157
1158 When building a :ref:`ref-classes-native` recipe, :term:`NM` is set to the
1159 value of this variable by default.
1160
1161 The :term:`BUILD_NM` variable should not be set manually, and is rarely
1162 used in recipes as :term:`NM` contains the appropriate value depending on
1163 the context (native or target recipes). Exception be made for target
1164 recipes that need to use the utility from the build host at some point
1165 during the build.
1166
1167 :term:`BUILD_OBJCOPY`
1168 Specifies the architecture-specific utility to copy object files for the
1169 build host, and its default definition is derived in part from
1170 :term:`BUILD_PREFIX`::
1171
1172 BUILD_OBJCOPY = "${BUILD_PREFIX}objcopy"
1173
1174 When building a :ref:`ref-classes-native` recipe, :term:`OBJCOPY` is set
1175 to the value of this variable by default.
1176
1177 The :term:`BUILD_OBJCOPY` variable should not be set manually, and is
1178 rarely used in recipes as :term:`OBJCOPY` contains the appropriate value
1179 depending on the context (native or target recipes). Exception be made for
1180 target recipes that need to use the utility from the build host at some
1181 point during the build.
1182
1183 :term:`BUILD_OBJDUMP`
1184 Specifies the architecture-specific utility to display object files
1185 information for the build host, and its default definition is derived in
1186 part from :term:`BUILD_PREFIX`::
1187
1188 BUILD_OBJDUMP = "${BUILD_PREFIX}objdump"
1189
1190 When building a :ref:`ref-classes-native` recipe, :term:`OBJDUMP` is set
1191 to the value of this variable by default.
1192
1193 The :term:`BUILD_OBJDUMP` variable should not be set manually, and is
1194 rarely used in recipes as :term:`OBJDUMP` contains the appropriate value
1195 depending on the context (native or target recipes). Exception be made for
1196 target recipes that need to use the utility from the build host at some
1197 point during the build.
1198
1035 :term:`BUILD_OPTIMIZATION` 1199 :term:`BUILD_OPTIMIZATION`
1036 Specifies the optimization flags passed to the C compiler when 1200 Specifies the optimization flags passed to the C compiler when
1037 building for the build host or the SDK. The flags are passed through 1201 building for the build host or the SDK. The flags are passed through
@@ -1052,11 +1216,53 @@ system and gives an overview of their function and contents.
1052 build system uses the :term:`BUILD_PREFIX` value to set the 1216 build system uses the :term:`BUILD_PREFIX` value to set the
1053 :term:`TARGET_PREFIX` when building for :ref:`ref-classes-native` recipes. 1217 :term:`TARGET_PREFIX` when building for :ref:`ref-classes-native` recipes.
1054 1218
1219 :term:`BUILD_RANLIB`
1220 Specifies the architecture-specific utility to generate indexes for
1221 archives for the build host, and its default definition is derived in part
1222 from :term:`BUILD_PREFIX`::
1223
1224 BUILD_RANLIB = "${BUILD_PREFIX}ranlib -D"
1225
1226 When building a :ref:`ref-classes-native` recipe, :term:`RANLIB` is set to
1227 the value of this variable by default.
1228
1229 The :term:`BUILD_RANLIB` variable should not be set manually, and is
1230 rarely used in recipes as :term:`RANLIB` contains the appropriate value
1231 depending on the context (native or target recipes). Exception be made for
1232 target recipes that need to use the utility from the build host at some
1233 point during the build.
1234
1235 :term:`BUILD_READELF`
1236 Specifies the architecture-specific utility to display information about
1237 ELF files for the build host, and its default definition is derived in
1238 part from :term:`BUILD_PREFIX`::
1239
1240 BUILD_READELF = "${BUILD_PREFIX}readelf"
1241
1242 When building a :ref:`ref-classes-native` recipe, :term:`READELF` is set
1243 to the value of this variable by default.
1244
1245 The :term:`BUILD_READELF` variable should not be set manually, and is
1246 rarely used in recipes as :term:`READELF` contains the appropriate value
1247 depending on the context (native or target recipes). Exception be made for
1248 target recipes that need to use the utility from the build host at some
1249 point during the build.
1250
1055 :term:`BUILD_STRIP` 1251 :term:`BUILD_STRIP`
1056 Specifies the command to be used to strip debugging symbols from 1252 Specifies the command to be used to strip debugging symbols from binaries
1057 binaries produced for the build host. By default, :term:`BUILD_STRIP` 1253 produced for the build host, and its default definition is derived in part
1058 points to 1254 from :term:`BUILD_PREFIX`::
1059 ``${``\ :term:`BUILD_PREFIX`\ ``}strip``. 1255
1256 BUILD_STRIP = "${BUILD_PREFIX}strip"
1257
1258 When building a :ref:`ref-classes-native` recipe, :term:`STRIP` is set to
1259 the value of this variable by default.
1260
1261 The :term:`BUILD_STRIP` variable should not be set manually, and is
1262 rarely used in recipes as :term:`STRIP` contains the appropriate value
1263 depending on the context (native or target recipes). Exception be made for
1264 target recipes that need to use the utility from the build host at some
1265 point during the build.
1060 1266
1061 :term:`BUILD_SYS` 1267 :term:`BUILD_SYS`
1062 Specifies the system, including the architecture and the operating 1268 Specifies the system, including the architecture and the operating
@@ -1252,6 +1458,10 @@ system and gives an overview of their function and contents.
1252 :term:`CC` 1458 :term:`CC`
1253 The minimal command and arguments used to run the C compiler. 1459 The minimal command and arguments used to run the C compiler.
1254 1460
1461 :term:`CCLD`
1462 The minimal command and arguments used to run the linker when the C
1463 compiler is being used as the linker.
1464
1255 :term:`CFLAGS` 1465 :term:`CFLAGS`
1256 Specifies the flags to pass to the C compiler. This variable is 1466 Specifies the flags to pass to the C compiler. This variable is
1257 exported to an environment variable and thus made visible to the 1467 exported to an environment variable and thus made visible to the
@@ -1495,6 +1705,17 @@ system and gives an overview of their function and contents.
1495 :term:`CONFIGURE_FLAGS` 1705 :term:`CONFIGURE_FLAGS`
1496 The minimal arguments for GNU configure. 1706 The minimal arguments for GNU configure.
1497 1707
1708 :term:`CONFIGURE_SCRIPT`
1709 When using the :ref:`ref-classes-autotools` class, the
1710 :term:`CONFIGURE_SCRIPT` variable stores the location of the ``configure``
1711 script for the Autotools build system. The default definition for this
1712 variable is::
1713
1714 CONFIGURE_SCRIPT ?= "${AUTOTOOLS_SCRIPT_PATH}/configure"
1715
1716 Where :term:`AUTOTOOLS_SCRIPT_PATH` is the location of the of the
1717 Autotools build system scripts, which defaults to :term:`S`.
1718
1498 :term:`CONFLICT_DISTRO_FEATURES` 1719 :term:`CONFLICT_DISTRO_FEATURES`
1499 When inheriting the :ref:`ref-classes-features_check` 1720 When inheriting the :ref:`ref-classes-features_check`
1500 class, this variable identifies distribution features that would be 1721 class, this variable identifies distribution features that would be
@@ -1678,9 +1899,27 @@ system and gives an overview of their function and contents.
1678 variable only in certain contexts (e.g. when building for kernel 1899 variable only in certain contexts (e.g. when building for kernel
1679 and kernel module recipes). 1900 and kernel module recipes).
1680 1901
1902 :term:`CVE_CHECK_CREATE_MANIFEST`
1903 Specifies whether to create a CVE manifest to place in the deploy
1904 directory. The default is "1".
1905
1681 :term:`CVE_CHECK_IGNORE` 1906 :term:`CVE_CHECK_IGNORE`
1682 This variable is deprecated and should be replaced by :term:`CVE_STATUS`. 1907 This variable is deprecated and should be replaced by :term:`CVE_STATUS`.
1683 1908
1909 :term:`CVE_CHECK_MANIFEST_JSON`
1910 Specifies the path to the CVE manifest in JSON format. See
1911 :term:`CVE_CHECK_CREATE_MANIFEST`.
1912
1913 :term:`CVE_CHECK_MANIFEST_JSON_SUFFIX`
1914 Allows to modify the JSON manifest suffix. See
1915 :term:`CVE_CHECK_MANIFEST_JSON`.
1916
1917 :term:`CVE_CHECK_REPORT_PATCHED`
1918 Specifies whether or not the :ref:`ref-classes-cve-check`
1919 class should report patched or ignored CVEs. The default is "1", but you
1920 may wish to set it to "0" if you do not need patched or ignored CVEs in
1921 the logs.
1922
1684 :term:`CVE_CHECK_SHOW_WARNINGS` 1923 :term:`CVE_CHECK_SHOW_WARNINGS`
1685 Specifies whether or not the :ref:`ref-classes-cve-check` 1924 Specifies whether or not the :ref:`ref-classes-cve-check`
1686 class should generate warning messages on the console when unpatched 1925 class should generate warning messages on the console when unpatched
@@ -1960,7 +2199,7 @@ system and gives an overview of their function and contents.
1960 resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``. 2199 resides within the :term:`Build Directory` as ``${TMPDIR}/deploy``.
1961 2200
1962 For more information on the structure of the Build Directory, see 2201 For more information on the structure of the Build Directory, see
1963 ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section. 2202 ":ref:`ref-manual/structure:the build directory --- ``build/```" section.
1964 For more detail on the contents of the ``deploy`` directory, see the 2203 For more detail on the contents of the ``deploy`` directory, see the
1965 ":ref:`overview-manual/concepts:images`", 2204 ":ref:`overview-manual/concepts:images`",
1966 ":ref:`overview-manual/concepts:package feeds`", and 2205 ":ref:`overview-manual/concepts:package feeds`", and
@@ -2002,7 +2241,7 @@ system and gives an overview of their function and contents.
2002 contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class. 2241 contents of :term:`IMGDEPLOYDIR` by the :ref:`ref-classes-image` class.
2003 2242
2004 For more information on the structure of the :term:`Build Directory`, see 2243 For more information on the structure of the :term:`Build Directory`, see
2005 ":ref:`ref-manual/structure:the build directory --- \`\`build/\`\``" section. 2244 ":ref:`ref-manual/structure:the build directory --- ``build/```" section.
2006 For more detail on the contents of the ``deploy`` directory, see the 2245 For more detail on the contents of the ``deploy`` directory, see the
2007 ":ref:`overview-manual/concepts:images`" and 2246 ":ref:`overview-manual/concepts:images`" and
2008 ":ref:`overview-manual/concepts:application development sdk`" sections both in 2247 ":ref:`overview-manual/concepts:application development sdk`" sections both in
@@ -2501,6 +2740,13 @@ system and gives an overview of their function and contents.
2501 external tools. See the :ref:`ref-classes-kernel-yocto` class in 2740 external tools. See the :ref:`ref-classes-kernel-yocto` class in
2502 ``meta/classes-recipe`` to see how the variable is used. 2741 ``meta/classes-recipe`` to see how the variable is used.
2503 2742
2743 :term:`EXTERNAL_KERNEL_DEVICETREE`
2744 When inheriting :ref:`ref-classes-kernel-fitimage` and a
2745 :term:`PREFERRED_PROVIDER` for ``virtual/dtb`` set to ``devicetree``, the
2746 variable :term:`EXTERNAL_KERNEL_DEVICETREE` can be used to specify a
2747 directory containing one or more compiled device tree or device tree
2748 overlays to use.
2749
2504 :term:`KERNEL_LOCALVERSION` 2750 :term:`KERNEL_LOCALVERSION`
2505 This variable allows to append a string to the version 2751 This variable allows to append a string to the version
2506 of the kernel image. This corresponds to the ``CONFIG_LOCALVERSION`` 2752 of the kernel image. This corresponds to the ``CONFIG_LOCALVERSION``
@@ -2744,6 +2990,9 @@ system and gives an overview of their function and contents.
2744 :term:`FAKEROOTNOENV` 2990 :term:`FAKEROOTNOENV`
2745 See :term:`bitbake:FAKEROOTNOENV` in the BitBake manual. 2991 See :term:`bitbake:FAKEROOTNOENV` in the BitBake manual.
2746 2992
2993 :term:`FC`
2994 The minimal command and arguments used to run the Fortran compiler.
2995
2747 :term:`FEATURE_PACKAGES` 2996 :term:`FEATURE_PACKAGES`
2748 Defines one or more packages to include in an image when a specific 2997 Defines one or more packages to include in an image when a specific
2749 item is included in :term:`IMAGE_FEATURES`. 2998 item is included in :term:`IMAGE_FEATURES`.
@@ -3323,6 +3572,20 @@ system and gives an overview of their function and contents.
3323 - mips 3572 - mips
3324 - mipsel 3573 - mipsel
3325 3574
3575 :term:`HOST_AS_ARCH`
3576 Specifies architecture-specific assembler flags.
3577
3578 Default initialization for :term:`HOST_AS_ARCH` varies depending on what
3579 is being built:
3580
3581 - :term:`TARGET_AS_ARCH` when building for the
3582 target
3583
3584 - :term:`BUILD_AS_ARCH` when building for the build host (i.e.
3585 ``-native``)
3586
3587 - :term:`SDK_AS_ARCH` when building for an SDK (i.e. ``nativesdk-``)
3588
3326 :term:`HOST_CC_ARCH` 3589 :term:`HOST_CC_ARCH`
3327 Specifies architecture-specific compiler flags that are passed to the 3590 Specifies architecture-specific compiler flags that are passed to the
3328 C compiler. 3591 C compiler.
@@ -3336,8 +3599,20 @@ system and gives an overview of their function and contents.
3336 - :term:`BUILD_CC_ARCH` when building for the build host (i.e. 3599 - :term:`BUILD_CC_ARCH` when building for the build host (i.e.
3337 ``-native``) 3600 ``-native``)
3338 3601
3339 - ``BUILDSDK_CC_ARCH`` when building for an SDK (i.e. 3602 - :term:`SDK_CC_ARCH` when building for an SDK (i.e. ``nativesdk-``)
3340 ``nativesdk-``) 3603
3604 :term:`HOST_LD_ARCH`
3605 Specifies architecture-specific linker flags.
3606
3607 Default initialization for :term:`HOST_LD_ARCH` varies depending on what
3608 is being built:
3609
3610 - :term:`TARGET_LD_ARCH` when building for the target
3611
3612 - :term:`BUILD_LD_ARCH` when building for the build host (i.e.
3613 ``-native``)
3614
3615 - :term:`SDK_LD_ARCH` when building for an SDK (i.e. ``nativesdk-``)
3341 3616
3342 :term:`HOST_OS` 3617 :term:`HOST_OS`
3343 Specifies the name of the target operating system, which is normally 3618 Specifies the name of the target operating system, which is normally
@@ -3878,6 +4153,36 @@ system and gives an overview of their function and contents.
3878 4153
3879 IMAGE_ROOTFS_EXTRA_SPACE = "41943040" 4154 IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
3880 4155
4156 :term:`IMAGE_ROOTFS_MAXSIZE`
4157 Defines the maximum allowed size of the generated image in kilobytes.
4158 The build will fail if the generated image size exceeds this value.
4159
4160 The generated image size undergoes several calculation steps before being
4161 compared to :term:`IMAGE_ROOTFS_MAXSIZE`.
4162 In the first step, the size of the directory pointed to by :term:`IMAGE_ROOTFS`
4163 is calculated.
4164 In the second step, the result from the first step is multiplied
4165 by :term:`IMAGE_OVERHEAD_FACTOR`.
4166 In the third step, the result from the second step is compared with
4167 :term:`IMAGE_ROOTFS_SIZE`. The larger value of these is added to
4168 :term:`IMAGE_ROOTFS_EXTRA_SPACE`.
4169 In the fourth step, the result from the third step is checked for
4170 a decimal part. If it has one, it is rounded up to the next integer.
4171 If it does not, it is simply converted into an integer.
4172 In the fifth step, the :term:`IMAGE_ROOTFS_ALIGNMENT` is added to the result
4173 from the fourth step and "1" is subtracted.
4174 In the sixth step, the remainder of the division between the result
4175 from the fifth step and :term:`IMAGE_ROOTFS_ALIGNMENT` is subtracted from the
4176 result of the fifth step. In this way, the result from the fourth step is
4177 rounded up to the nearest multiple of :term:`IMAGE_ROOTFS_ALIGNMENT`.
4178
4179 Thus, if the :term:`IMAGE_ROOTFS_MAXSIZE` is set, is compared with the result
4180 of the above calculations and is independent of the final image type.
4181 No default value is set for :term:`IMAGE_ROOTFS_MAXSIZE`.
4182
4183 It's a good idea to set this variable for images that need to fit on a limited
4184 space (e.g. SD card, a fixed-size partition, ...).
4185
3881 :term:`IMAGE_ROOTFS_SIZE` 4186 :term:`IMAGE_ROOTFS_SIZE`
3882 Defines the size in Kbytes for the generated image. The OpenEmbedded 4187 Defines the size in Kbytes for the generated image. The OpenEmbedded
3883 build system determines the final size for the generated image using 4188 build system determines the final size for the generated image using
@@ -4059,6 +4364,23 @@ system and gives an overview of their function and contents.
4059 Set the variable to "1" to prevent the default dependencies from 4364 Set the variable to "1" to prevent the default dependencies from
4060 being added. 4365 being added.
4061 4366
4367 :term:`INHIBIT_DEFAULT_RUST_DEPS`
4368 Prevents the :ref:`ref-classes-rust` class from automatically adding
4369 its default build-time dependencies.
4370
4371 When a recipe inherits the :ref:`ref-classes-rust` class, several
4372 tools such as ``rust-native`` and ``${RUSTLIB_DEP}`` (only added when cross-compiling) are added
4373 to :term:`DEPENDS` to support the ``rust`` build process.
4374
4375 To prevent the build system from adding these dependencies automatically,
4376 set the :term:`INHIBIT_DEFAULT_RUST_DEPS` variable as follows::
4377
4378 INHIBIT_DEFAULT_RUST_DEPS = "1"
4379
4380 By default, the value of :term:`INHIBIT_DEFAULT_RUST_DEPS` is empty. Setting
4381 it to "0" does not disable inhibition. Only the empty string will disable
4382 inhibition.
4383
4062 :term:`INHIBIT_PACKAGE_DEBUG_SPLIT` 4384 :term:`INHIBIT_PACKAGE_DEBUG_SPLIT`
4063 Prevents the OpenEmbedded build system from splitting out debug 4385 Prevents the OpenEmbedded build system from splitting out debug
4064 information during packaging. By default, the build system splits out 4386 information during packaging. By default, the build system splits out
@@ -4105,6 +4427,25 @@ system and gives an overview of their function and contents.
4105 even if the toolchain's binaries are strippable, there are other files 4427 even if the toolchain's binaries are strippable, there are other files
4106 needed for the build that are not strippable. 4428 needed for the build that are not strippable.
4107 4429
4430 :term:`INHIBIT_UPDATERCD_BBCLASS`
4431 Prevents the :ref:`ref-classes-update-rc.d` class from automatically
4432 installing and registering SysV init scripts for packages.
4433
4434 When a recipe inherits the :ref:`ref-classes-update-rc.d` class, init
4435 scripts are typically installed and registered for the packages listed in
4436 :term:`INITSCRIPT_PACKAGES`. This ensures that the relevant
4437 services are started and stopped at the appropriate runlevels using the
4438 traditional SysV init system.
4439
4440 To prevent the build system from adding these scripts and configurations
4441 automatically, set the :term:`INHIBIT_UPDATERCD_BBCLASS` variable as follows::
4442
4443 INHIBIT_UPDATERCD_BBCLASS = "1"
4444
4445 By default, the value of :term:`INHIBIT_UPDATERCD_BBCLASS` is empty. Setting
4446 it to "0" does not disable inhibition. Only the empty string will disable
4447 inhibition.
4448
4108 :term:`INIT_MANAGER` 4449 :term:`INIT_MANAGER`
4109 Specifies the system init manager to use. Available options are: 4450 Specifies the system init manager to use. Available options are:
4110 4451
@@ -4271,6 +4612,20 @@ system and gives an overview of their function and contents.
4271 See the :term:`MACHINE` variable for additional 4612 See the :term:`MACHINE` variable for additional
4272 information. 4613 information.
4273 4614
4615 :term:`INITRAMFS_MAXSIZE`
4616 Defines the maximum allowed size of the :term:`Initramfs` image in Kbytes.
4617 The build will fail if the :term:`Initramfs` image size exceeds this value.
4618
4619 The :term:`Initramfs` image size undergoes several calculation steps before
4620 being compared to :term:`INITRAMFS_MAXSIZE`.
4621 These steps are the same as those used for :term:`IMAGE_ROOTFS_MAXSIZE`
4622 and are described in detail in that entry.
4623
4624 Thus, :term:`INITRAMFS_MAXSIZE` is compared with the result of the calculations
4625 and is independent of the final image type (e.g. compressed).
4626 A default value for :term:`INITRAMFS_MAXSIZE` is set in
4627 :oe_git:`meta/conf/bitbake.conf </openembedded-core/tree/meta/conf/bitbake.conf>`.
4628
4274 :term:`INITRAMFS_MULTICONFIG` 4629 :term:`INITRAMFS_MULTICONFIG`
4275 Defines the multiconfig to create a multiconfig dependency to be used by 4630 Defines the multiconfig to create a multiconfig dependency to be used by
4276 the :ref:`ref-classes-kernel` class. 4631 the :ref:`ref-classes-kernel` class.
@@ -4336,8 +4691,7 @@ system and gives an overview of their function and contents.
4336 4691
4337 The value in :term:`INITSCRIPT_PARAMS` is passed through to the 4692 The value in :term:`INITSCRIPT_PARAMS` is passed through to the
4338 ``update-rc.d`` command. For more information on valid parameters, 4693 ``update-rc.d`` command. For more information on valid parameters,
4339 please see the ``update-rc.d`` manual page at 4694 please see the manual page: :manpage:`update-rc.d <update-rc.d(8)>`.
4340 https://manpages.debian.org/buster/init-system-helpers/update-rc.d.8.en.html
4341 4695
4342 :term:`INSANE_SKIP` 4696 :term:`INSANE_SKIP`
4343 Specifies the QA checks to skip for a specific package within a 4697 Specifies the QA checks to skip for a specific package within a
@@ -4454,15 +4808,8 @@ system and gives an overview of their function and contents.
4454 options not explicitly specified will be disabled in the kernel 4808 options not explicitly specified will be disabled in the kernel
4455 config. 4809 config.
4456 4810
4457 In case :term:`KCONFIG_MODE` is not set the behaviour will depend on where 4811 In case :term:`KCONFIG_MODE` is not set the ``defconfig`` file
4458 the ``defconfig`` file is coming from. An "in-tree" ``defconfig`` file 4812 will be handled in ``allnoconfig`` mode.
4459 will be handled in ``alldefconfig`` mode, a ``defconfig`` file placed
4460 in ``${WORKDIR}`` through a meta-layer will be handled in
4461 ``allnoconfig`` mode.
4462
4463 An "in-tree" ``defconfig`` file can be selected via the
4464 :term:`KBUILD_DEFCONFIG` variable. :term:`KCONFIG_MODE` does not need to
4465 be explicitly set.
4466 4813
4467 A ``defconfig`` file compatible with ``allnoconfig`` mode can be 4814 A ``defconfig`` file compatible with ``allnoconfig`` mode can be
4468 generated by copying the ``.config`` file from a working Linux kernel 4815 generated by copying the ``.config`` file from a working Linux kernel
@@ -4906,7 +5253,8 @@ system and gives an overview of their function and contents.
4906 ``LAYERVERSION_mylayer``). 5253 ``LAYERVERSION_mylayer``).
4907 5254
4908 :term:`LD` 5255 :term:`LD`
4909 The minimal command and arguments used to run the linker. 5256 The minimal command and arguments used to run the :manpage:`linker
5257 <ld(1)>`.
4910 5258
4911 :term:`LDFLAGS` 5259 :term:`LDFLAGS`
4912 Specifies the flags to pass to the linker. This variable is exported 5260 Specifies the flags to pass to the linker. This variable is exported
@@ -5084,7 +5432,7 @@ system and gives an overview of their function and contents.
5084 The :term:`LINUX_VERSION` variable is used to define :term:`PV` 5432 The :term:`LINUX_VERSION` variable is used to define :term:`PV`
5085 for the recipe:: 5433 for the recipe::
5086 5434
5087 PV = "${LINUX_VERSION}+git${SRCPV}" 5435 PV = "${LINUX_VERSION}+git"
5088 5436
5089 :term:`LINUX_VERSION_EXTENSION` 5437 :term:`LINUX_VERSION_EXTENSION`
5090 A string extension compiled into the version string of the Linux 5438 A string extension compiled into the version string of the Linux
@@ -5512,7 +5860,7 @@ system and gives an overview of their function and contents.
5512 variable is set. 5860 variable is set.
5513 5861
5514 :term:`NM` 5862 :term:`NM`
5515 The minimal command and arguments to run ``nm``. 5863 The minimal command and arguments to run :manpage:`nm <nm(1)>`.
5516 5864
5517 :term:`NO_GENERIC_LICENSE` 5865 :term:`NO_GENERIC_LICENSE`
5518 Avoids QA errors when you use a non-common, non-CLOSED license in a 5866 Avoids QA errors when you use a non-common, non-CLOSED license in a
@@ -5586,10 +5934,10 @@ system and gives an overview of their function and contents.
5586 NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot" 5934 NON_MULTILIB_RECIPES = "grub grub-efi make-mod-scripts ovmf u-boot"
5587 5935
5588 :term:`OBJCOPY` 5936 :term:`OBJCOPY`
5589 The minimal command and arguments to run ``objcopy``. 5937 The minimal command and arguments to run :manpage:`objcopy <objcopy(1)>`.
5590 5938
5591 :term:`OBJDUMP` 5939 :term:`OBJDUMP`
5592 The minimal command and arguments to run ``objdump``. 5940 The minimal command and arguments to run :manpage:`objdump <objdump(1)>`.
5593 5941
5594 :term:`OE_BINCONFIG_EXTRA_MANGLE` 5942 :term:`OE_BINCONFIG_EXTRA_MANGLE`
5595 When inheriting the :ref:`ref-classes-binconfig` class, 5943 When inheriting the :ref:`ref-classes-binconfig` class,
@@ -5614,14 +5962,6 @@ system and gives an overview of their function and contents.
5614 5962
5615 OECMAKE_GENERATOR = "Unix Makefiles" 5963 OECMAKE_GENERATOR = "Unix Makefiles"
5616 5964
5617 :term:`OE_IMPORTS`
5618 An internal variable used to tell the OpenEmbedded build system what
5619 Python modules to import for every Python function run by the system.
5620
5621 .. note::
5622
5623 Do not set this variable. It is for internal use only.
5624
5625 :term:`OE_INIT_ENV_SCRIPT` 5965 :term:`OE_INIT_ENV_SCRIPT`
5626 The name of the build environment setup script for the purposes of 5966 The name of the build environment setup script for the purposes of
5627 setting up the environment within the extensible SDK. The default 5967 setting up the environment within the extensible SDK. The default
@@ -5684,6 +6024,13 @@ system and gives an overview of their function and contents.
5684 :term:`OPKG_MAKE_INDEX_EXTRA_PARAMS` 6024 :term:`OPKG_MAKE_INDEX_EXTRA_PARAMS`
5685 Specifies extra parameters for the ``opkg-make-index`` command. 6025 Specifies extra parameters for the ``opkg-make-index`` command.
5686 6026
6027 :term:`OPKGBUILDCMD`
6028 The variable :term:`OPKGBUILDCMD` specifies the command used to build opkg
6029 packages when using the :ref:`ref-classes-package_ipk` class. It is
6030 defined in :ref:`ref-classes-package_ipk` as::
6031
6032 OPKGBUILDCMD ??= 'opkg-build -Z zstd -a "${ZSTD_DEFAULTS}"'
6033
5687 :term:`OVERLAYFS_ETC_DEVICE` 6034 :term:`OVERLAYFS_ETC_DEVICE`
5688 When the :ref:`ref-classes-overlayfs-etc` class is 6035 When the :ref:`ref-classes-overlayfs-etc` class is
5689 inherited, specifies the device to be mounted for the read/write 6036 inherited, specifies the device to be mounted for the read/write
@@ -6450,7 +6797,7 @@ system and gives an overview of their function and contents.
6450 For examples of how this data is used, see the 6797 For examples of how this data is used, see the
6451 ":ref:`overview-manual/concepts:automatically added runtime dependencies`" 6798 ":ref:`overview-manual/concepts:automatically added runtime dependencies`"
6452 section in the Yocto Project Overview and Concepts Manual and the 6799 section in the Yocto Project Overview and Concepts Manual and the
6453 ":ref:`dev-manual/debugging:viewing package information with \`\`oe-pkgdata-util\`\``" 6800 ":ref:`dev-manual/debugging:viewing package information with ``oe-pkgdata-util```"
6454 section in the Yocto Project Development Tasks Manual. For more 6801 section in the Yocto Project Development Tasks Manual. For more
6455 information on the shared, global-state directory, see 6802 information on the shared, global-state directory, see
6456 :term:`STAGING_DIR_HOST`. 6803 :term:`STAGING_DIR_HOST`.
@@ -6491,6 +6838,23 @@ system and gives an overview of their function and contents.
6491 The version of the package(s) built by the recipe. By default, 6838 The version of the package(s) built by the recipe. By default,
6492 :term:`PKGV` is set to :term:`PV`. 6839 :term:`PKGV` is set to :term:`PV`.
6493 6840
6841 If :term:`PV` contains the ``+`` sign, source control information will be
6842 included in :term:`PKGV` later in the packaging phase. For more
6843 information, see the :doc:`/dev-manual/external-scm` section of the Yocto
6844 Project Development Tasks Manual.
6845
6846 .. warning::
6847
6848 Since source control information is included in a late stage by the
6849 :ref:`ref-classes-package` class, it cannot be seen from the BitBake
6850 environment with ``bitbake -e`` or ``bitbake-getvar``. Instead, after
6851 the package is built, the version information can be retrieved with
6852 ``oe-pkgdata-util package-info <package name>``. See the
6853 :ref:`dev-manual/debugging:Viewing Package Information with
6854 ``oe-pkgdata-util``` section of the Yocto Project Development Tasks
6855 Manual for more information on ``oe-pkgdata-util``.
6856
6857
6494 :term:`PN` 6858 :term:`PN`
6495 This variable can have two separate functions depending on the 6859 This variable can have two separate functions depending on the
6496 context: a recipe name or a resulting package name. 6860 context: a recipe name or a resulting package name.
@@ -6625,22 +6989,14 @@ system and gives an overview of their function and contents.
6625 string. You cannot use the wildcard character in any other 6989 string. You cannot use the wildcard character in any other
6626 location of the string. 6990 location of the string.
6627 6991
6628 The specified version is matched against :term:`PV`, which 6992 The specified version is matched against :term:`PV`, which does not
6629 does not necessarily match the version part of the recipe's filename. 6993 necessarily match the version part of the recipe's filename.
6630 For example, consider two recipes ``foo_1.2.bb`` and ``foo_git.bb``
6631 where ``foo_git.bb`` contains the following assignment::
6632
6633 PV = "1.1+git${SRCPV}"
6634
6635 In this case, the correct way to select
6636 ``foo_git.bb`` is by using an assignment such as the following::
6637
6638 PREFERRED_VERSION_foo = "1.1+git%"
6639 6994
6640 Compare that previous example 6995 If you want to select a recipe named ``foo_git.bb`` which has :term:`PV`
6641 against the following incorrect example, which does not work:: 6996 set to ``1.2.3+git``, you can do so by setting ```PREFERRED_VERSION_foo``
6642 6997 to ``1.2.3%`` (i.e. simply setting ``PREFERRED_VERSION_foo`` to ``git``
6643 PREFERRED_VERSION_foo = "git" 6998 will not work as the name of the recipe isn't used, but rather its
6999 :term:`PV` definition).
6644 7000
6645 Sometimes the :term:`PREFERRED_VERSION` variable can be set by 7001 Sometimes the :term:`PREFERRED_VERSION` variable can be set by
6646 configuration files in a way that is hard to change. You can use 7002 configuration files in a way that is hard to change. You can use
@@ -6805,7 +7161,7 @@ system and gives an overview of their function and contents.
6805 7161
6806 :term:`PTEST_ENABLED` 7162 :term:`PTEST_ENABLED`
6807 Specifies whether or not :ref:`Package 7163 Specifies whether or not :ref:`Package
6808 Test <dev-manual/packages:testing packages with ptest>` (ptest) 7164 Test <test-manual/ptest:testing packages with ptest>` (ptest)
6809 functionality is enabled when building a recipe. You should not set 7165 functionality is enabled when building a recipe. You should not set
6810 this variable directly. Enabling and disabling building Package Tests 7166 this variable directly. Enabling and disabling building Package Tests
6811 at build time should be done by adding "ptest" to (or removing it 7167 at build time should be done by adding "ptest" to (or removing it
@@ -6862,7 +7218,7 @@ system and gives an overview of their function and contents.
6862 QA_EMPTY_DIRS_RECOMMENDATION:/dev = "but all devices must be created at runtime" 7218 QA_EMPTY_DIRS_RECOMMENDATION:/dev = "but all devices must be created at runtime"
6863 7219
6864 :term:`RANLIB` 7220 :term:`RANLIB`
6865 The minimal command and arguments to run ``ranlib``. 7221 The minimal command and arguments to run :manpage:`ranlib <ranlib(1)>`.
6866 7222
6867 :term:`RCONFLICTS` 7223 :term:`RCONFLICTS`
6868 The list of packages that conflict with packages. Note that packages 7224 The list of packages that conflict with packages. Note that packages
@@ -6999,6 +7355,9 @@ system and gives an overview of their function and contents.
6999 ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the 7355 ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
7000 BitBake User Manual for additional information on tasks and dependencies. 7356 BitBake User Manual for additional information on tasks and dependencies.
7001 7357
7358 :term:`READELF`
7359 The minimal command and arguments to run :manpage:`readelf <readelf(1)>`.
7360
7002 :term:`RECIPE_MAINTAINER` 7361 :term:`RECIPE_MAINTAINER`
7003 This variable defines the name and e-mail address of the maintainer of a 7362 This variable defines the name and e-mail address of the maintainer of a
7004 recipe. Such information can be used by human users submitted changes, 7363 recipe. Such information can be used by human users submitted changes,
@@ -7093,17 +7452,12 @@ system and gives an overview of their function and contents.
7093 prefer to have a read-only root filesystem and prefer to keep 7452 prefer to have a read-only root filesystem and prefer to keep
7094 writeable data in one place. 7453 writeable data in one place.
7095 7454
7096 You can override the default by setting the variable in any layer or 7455 When setting ``INIT_MANAGER = systemd``, the default will be set to::
7097 in the ``local.conf`` file. Because the default is set using a "weak"
7098 assignment (i.e. "??="), you can use either of the following forms to
7099 define your override::
7100 7456
7101 ROOT_HOME = "/root"
7102 ROOT_HOME ?= "/root" 7457 ROOT_HOME ?= "/root"
7103 7458
7104 These 7459 You can also override the default by setting the variable in your distro
7105 override examples use ``/root``, which is probably the most commonly 7460 configuration or in the ``local.conf`` file.
7106 used override.
7107 7461
7108 :term:`ROOTFS` 7462 :term:`ROOTFS`
7109 Indicates a filesystem image to include as the root filesystem. 7463 Indicates a filesystem image to include as the root filesystem.
@@ -7348,11 +7702,21 @@ system and gives an overview of their function and contents.
7348 7702
7349 Only one archive type can be specified. 7703 Only one archive type can be specified.
7350 7704
7705 :term:`SDK_AS_ARCH`
7706 Specifies architecture-specific assembler flags when building
7707 :ref:`ref-classes-nativesdk` recipes. By default, the value of
7708 :term:`SDK_AS_ARCH` equals the one of :term:`BUILD_AS_ARCH`.
7709
7351 :term:`SDK_BUILDINFO_FILE` 7710 :term:`SDK_BUILDINFO_FILE`
7352 When using the :ref:`ref-classes-image-buildinfo` class, 7711 When using the :ref:`ref-classes-image-buildinfo` class,
7353 specifies the file in the SDK to write the build information into. The 7712 specifies the file in the SDK to write the build information into. The
7354 default value is "``/buildinfo``". 7713 default value is "``/buildinfo``".
7355 7714
7715 :term:`SDK_CC_ARCH`
7716 Specifies the architecture-specific C compiler flags when building
7717 :ref:`ref-classes-nativesdk` recipes. By default, the value of
7718 :term:`SDK_CC_ARCH` equals the one of :term:`BUILD_CC_ARCH`.
7719
7356 :term:`SDK_CUSTOM_TEMPLATECONF` 7720 :term:`SDK_CUSTOM_TEMPLATECONF`
7357 When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to 7721 When building the extensible SDK, if :term:`SDK_CUSTOM_TEMPLATECONF` is set to
7358 "1" and a ``conf/templateconf.cfg`` file exists in the :term:`Build Directory` 7722 "1" and a ``conf/templateconf.cfg`` file exists in the :term:`Build Directory`
@@ -7434,6 +7798,11 @@ system and gives an overview of their function and contents.
7434 :term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if 7798 :term:`SDK_EXT_TYPE` is set to "minimal", and defaults to "1" if
7435 :term:`SDK_EXT_TYPE` is set to "full". 7799 :term:`SDK_EXT_TYPE` is set to "full".
7436 7800
7801 :term:`SDK_LD_ARCH`
7802 Specifies architecture-specific linker flags when building
7803 :ref:`ref-classes-nativesdk` recipes. By default, the value of
7804 :term:`SDK_LD_ARCH` equals the one of :term:`BUILD_LD_ARCH`.
7805
7437 :term:`SDK_NAME` 7806 :term:`SDK_NAME`
7438 The base name for SDK output files. The default value (as set in 7807 The base name for SDK output files. The default value (as set in
7439 ``meta-poky/conf/distro/poky.conf``) is derived from the 7808 ``meta-poky/conf/distro/poky.conf``) is derived from the
@@ -7725,6 +8094,53 @@ system and gives an overview of their function and contents.
7725 might break at runtime if the interface of the recipe was changed 8094 might break at runtime if the interface of the recipe was changed
7726 after the other had been built. 8095 after the other had been built.
7727 8096
8097 :term:`SIGGEN_LOCKEDSIGS`
8098 The list of locked tasks, with the form::
8099
8100 SIGGEN_LOCKEDSIGS += "<package>:<task>:<signature>"
8101
8102 If ``<signature>`` exists for the specified ``<task>`` and ``<package>``
8103 in the sstate cache, BitBake will use the cached output instead of
8104 rebuilding the ``<task>``. If it does not exist, BitBake will build the
8105 ``<task>`` and the sstate cache will be used next time.
8106
8107 Example::
8108
8109 SIGGEN_LOCKEDSIGS += "bc:do_compile:09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0"
8110
8111 You can obtain the signature of all the tasks for the recipe ``bc`` using::
8112
8113 bitbake -S none bc
8114
8115 Then you can look at files in ``build/tmp/stamps/<arch>/bc`` and look for
8116 files like: ``<PV>.do_compile.sigdata.09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0``.
8117
8118 Alternatively, you can also use :doc:`bblock </dev-manual/bblock>` to
8119 generate this line for you.
8120
8121 :term:`SIGGEN_LOCKEDSIGS_TASKSIG_CHECK`
8122 Specifies the debug level of task signature check. 3 levels are supported:
8123
8124 * ``info``: displays a "Note" message to remind the user that a task is locked
8125 and the current signature matches the locked one.
8126 * ``warn``: displays a "Warning" message if a task is locked and the current
8127 signature does not match the locked one.
8128 * ``error``: same as warn but displays an "Error" message and aborts.
8129
8130 :term:`SIGGEN_LOCKEDSIGS_TYPES`
8131 Allowed overrides for :term:`SIGGEN_LOCKEDSIGS`. This is mainly used
8132 for architecture specific locks. A common value for
8133 :term:`SIGGEN_LOCKEDSIGS_TYPES` is ``${PACKAGE_ARCHS}``::
8134
8135 SIGGEN_LOCKEDSIGS_TYPES += "${PACKAGE_ARCHS}"
8136
8137 SIGGEN_LOCKEDSIGS_core2-64 += "bc:do_compile:09772aa4532512baf96d433484f27234d4b7c11dd9cda0d6f56fa1b7ce6f25f0"
8138 SIGGEN_LOCKEDSIGS_cortexa57 += "bc:do_compile:12178eb6d55ef602a8fe638e49862fd247e07b228f0f08967697b655bfe4bb61"
8139
8140 Here, the ``do_compile`` task from ``bc`` will be locked only for
8141 ``core2-64`` and ``cortexa57`` but not for other architectures such as
8142 ``mips32r2``.
8143
7728 :term:`SITEINFO_BITS` 8144 :term:`SITEINFO_BITS`
7729 Specifies the number of bits for the target system CPU. The value 8145 Specifies the number of bits for the target system CPU. The value
7730 should be either "32" or "64". 8146 should be either "32" or "64".
@@ -7835,6 +8251,31 @@ system and gives an overview of their function and contents.
7835 8251
7836 You can specify only a single URL in :term:`SOURCE_MIRROR_URL`. 8252 You can specify only a single URL in :term:`SOURCE_MIRROR_URL`.
7837 8253
8254 .. note::
8255
8256 If the mirror is protected behind a username and password, the
8257 :term:`build host` needs to be configured so the :term:`build system
8258 <OpenEmbedded Build System>` is able to fetch from the mirror.
8259
8260 The recommended way to do that is by setting the following parameters
8261 in ``$HOME/.netrc`` (``$HOME`` being the :term:`build host` home
8262 directory)::
8263
8264 machine example.com
8265 login <user>
8266 password <password>
8267
8268 This file requires permissions set to ``400`` or ``600`` to prevent
8269 other users from reading the file::
8270
8271 chmod 600 "$HOME/.netrc"
8272
8273 Another method to configure the username and password is from the URL
8274 in :term:`SOURCE_MIRROR_URL` directly, with the ``user`` and ``pswd``
8275 parameters::
8276
8277 SOURCE_MIRROR_URL = "http://example.com/my_source_mirror;user=<user>;pswd=<password>"
8278
7838 :term:`SPDX_ARCHIVE_PACKAGED` 8279 :term:`SPDX_ARCHIVE_PACKAGED`
7839 This option allows to add to :term:`SPDX` output compressed archives 8280 This option allows to add to :term:`SPDX` output compressed archives
7840 of the files in the generated target packages. 8281 of the files in the generated target packages.
@@ -8009,7 +8450,7 @@ system and gives an overview of their function and contents.
8009 class. 8450 class.
8010 8451
8011 :term:`SPL_SIGN_KEYNAME` 8452 :term:`SPL_SIGN_KEYNAME`
8012 The name of keys used by the :ref:`ref-classes-kernel-fitimage` class 8453 The name of keys used by the :ref:`ref-classes-uboot-sign` class
8013 for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR` 8454 for signing U-Boot FIT image stored in the :term:`SPL_SIGN_KEYDIR`
8014 directory. If we have for example a ``dev.key`` key and a ``dev.crt`` 8455 directory. If we have for example a ``dev.key`` key and a ``dev.crt``
8015 certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will 8456 certificate stored in the :term:`SPL_SIGN_KEYDIR` directory, you will
@@ -8115,21 +8556,23 @@ system and gives an overview of their function and contents.
8115 (SCM). 8556 (SCM).
8116 8557
8117 :term:`SRCPV` 8558 :term:`SRCPV`
8118 Returns the version string of the current package. This string is 8559 The variable :term:`SRCPV` is deprecated. It was previously used to
8119 used to help define the value of :term:`PV`. 8560 include source control information in :term:`PV` for :term:`bitbake` to
8561 work correctly but this is no longer a requirement. Source control
8562 information will be automatically included by :term:`bitbake` in the
8563 variable :term:`PKGV` during packaging if the ``+`` sign is present in
8564 :term:`PV`.
8120 8565
8121 The :term:`SRCPV` variable is defined in the ``meta/conf/bitbake.conf`` 8566 .. note::
8122 configuration file in the :term:`Source Directory` as
8123 follows::
8124 8567
8125 SRCPV = "${@bb.fetch2.get_srcrev(d)}" 8568 The :term:`SRCPV` variable used to be defined in the
8569 ``meta/conf/bitbake.conf`` configuration file in the :term:`Source
8570 Directory` as follows::
8126 8571
8127 Recipes that need to define :term:`PV` do so with the help of the 8572 SRCPV = "${@bb.fetch2.get_srcrev(d)}"
8128 :term:`SRCPV`. For example, the ``ofono`` recipe (``ofono_git.bb``)
8129 located in ``meta/recipes-connectivity`` in the Source Directory
8130 defines :term:`PV` as follows::
8131 8573
8132 PV = "0.12-git${SRCPV}" 8574 The ``get_srcrev`` function can still be used to include source control
8575 information in variables manually.
8133 8576
8134 :term:`SRCREV` 8577 :term:`SRCREV`
8135 The revision of the source code used to build the package. This 8578 The revision of the source code used to build the package. This
@@ -8240,10 +8683,38 @@ system and gives an overview of their function and contents.
8240 file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \ 8683 file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
8241 file://.* file:///some-local-dir/sstate/PATH" 8684 file://.* file:///some-local-dir/sstate/PATH"
8242 8685
8686 .. note::
8687
8688 If the mirror is protected behind a username and password, the
8689 :term:`build host` needs to be configured so the :term:`build system
8690 <OpenEmbedded Build System>` is able to download the sstate cache using
8691 authentication.
8692
8693 The recommended way to do that is by setting the following parameters
8694 in ``$HOME/.netrc`` (``$HOME`` being the :term:`build host` home
8695 directory)::
8696
8697 machine someserver.tld
8698 login <user>
8699 password <password>
8700
8701 This file requires permissions set to ``400`` or ``600`` to prevent
8702 other users from reading the file::
8703
8704 chmod 600 "$HOME/.netrc"
8705
8706 Another method to configure the username and password is from the
8707 URL in :term:`SSTATE_MIRRORS` directly, with the ``user`` and ``pswd``
8708 parameters::
8709
8710 SSTATE_MIRRORS ?= "\
8711 file://.* https://someserver.tld/share/sstate/PATH;user=<user>;pswd=<password>;downloadfilename=PATH \
8712 "
8713
8243 The Yocto Project actually shares the cache data objects built by its 8714 The Yocto Project actually shares the cache data objects built by its
8244 autobuilder:: 8715 autobuilder::
8245 8716
8246 SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 8717 SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
8247 8718
8248 As such binary artifacts are built for the generic QEMU machines 8719 As such binary artifacts are built for the generic QEMU machines
8249 supported by the various Poky releases, they are less likely to be 8720 supported by the various Poky releases, they are less likely to be
@@ -8267,6 +8738,26 @@ system and gives an overview of their function and contents.
8267 8738
8268 For details on the process, see the :ref:`ref-classes-staging` class. 8739 For details on the process, see the :ref:`ref-classes-staging` class.
8269 8740
8741 :term:`SSTATE_SKIP_CREATION`
8742 The :term:`SSTATE_SKIP_CREATION` variable can be used to skip the
8743 creation of :ref:`shared state <overview-manual/concepts:shared state cache>`
8744 tarball files. It makes sense e.g. for image creation tasks as tarring images
8745 and keeping them in sstate would consume a lot of disk space.
8746
8747 In general it is not recommended to use this variable as missing sstate
8748 artefacts adversely impact the build, particularly for entries in the
8749 middle of dependency chains. The case it can make sense is where the
8750 size and time costs of the artefact are similar to just running the
8751 tasks. This generally only applies to end artefact output like images.
8752
8753 The syntax to disable it for one task is::
8754
8755 SSTATE_SKIP_CREATION:task-image-complete = "1"
8756
8757 The syntax to disable it for the whole recipe is::
8758
8759 SSTATE_SKIP_CREATION = "1"
8760
8270 :term:`STAGING_BASE_LIBDIR_NATIVE` 8761 :term:`STAGING_BASE_LIBDIR_NATIVE`
8271 Specifies the path to the ``/lib`` subdirectory of the sysroot 8762 Specifies the path to the ``/lib`` subdirectory of the sysroot
8272 directory for the build host. 8763 directory for the build host.
@@ -8457,8 +8948,8 @@ system and gives an overview of their function and contents.
8457 places stamps. The default directory is ``${TMPDIR}/stamps``. 8948 places stamps. The default directory is ``${TMPDIR}/stamps``.
8458 8949
8459 :term:`STRIP` 8950 :term:`STRIP`
8460 The minimal command and arguments to run ``strip``, which is used to 8951 The minimal command and arguments to run :manpage:`strip <strip(1)>`,
8461 strip symbols. 8952 which is used to strip symbols.
8462 8953
8463 :term:`SUMMARY` 8954 :term:`SUMMARY`
8464 The short (72 characters or less) summary of the binary package for 8955 The short (72 characters or less) summary of the binary package for
@@ -9018,8 +9509,8 @@ system and gives an overview of their function and contents.
9018 file. 9509 file.
9019 9510
9020 For more information on testing images, see the 9511 For more information on testing images, see the
9021 ":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 9512 ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
9022 section in the Yocto Project Development Tasks Manual. 9513 section in the Yocto Project Test Environment Manual.
9023 9514
9024 :term:`TEST_SERIALCONTROL_CMD` 9515 :term:`TEST_SERIALCONTROL_CMD`
9025 For automated hardware testing, specifies the command to use to 9516 For automated hardware testing, specifies the command to use to
@@ -9090,8 +9581,8 @@ system and gives an overview of their function and contents.
9090 TEST_SUITES = "test_A test_B" 9581 TEST_SUITES = "test_A test_B"
9091 9582
9092 For more information on testing images, see the 9583 For more information on testing images, see the
9093 ":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 9584 ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
9094 section in the Yocto Project Development Tasks Manual. 9585 section in the Yocto Project Test Environment Manual.
9095 9586
9096 :term:`TEST_TARGET` 9587 :term:`TEST_TARGET`
9097 Specifies the target controller to use when running tests against a 9588 Specifies the target controller to use when running tests against a
@@ -9109,8 +9600,8 @@ system and gives an overview of their function and contents.
9109 You can provide the following arguments with :term:`TEST_TARGET`: 9600 You can provide the following arguments with :term:`TEST_TARGET`:
9110 9601
9111 - *"qemu":* Boots a QEMU image and runs the tests. See the 9602 - *"qemu":* Boots a QEMU image and runs the tests. See the
9112 ":ref:`dev-manual/runtime-testing:enabling runtime tests on qemu`" section 9603 ":ref:`test-manual/runtime-testing:enabling runtime tests on qemu`" section
9113 in the Yocto Project Development Tasks Manual for more 9604 in the Yocto Project Test Environment Manual for more
9114 information. 9605 information.
9115 9606
9116 - *"simpleremote":* Runs the tests on target hardware that is 9607 - *"simpleremote":* Runs the tests on target hardware that is
@@ -9125,8 +9616,8 @@ system and gives an overview of their function and contents.
9125 ``meta/lib/oeqa/controllers/simpleremote.py``. 9616 ``meta/lib/oeqa/controllers/simpleremote.py``.
9126 9617
9127 For information on running tests on hardware, see the 9618 For information on running tests on hardware, see the
9128 ":ref:`dev-manual/runtime-testing:enabling runtime tests on hardware`" 9619 ":ref:`test-manual/runtime-testing:enabling runtime tests on hardware`"
9129 section in the Yocto Project Development Tasks Manual. 9620 section in the Yocto Project Test Environment Manual.
9130 9621
9131 :term:`TEST_TARGET_IP` 9622 :term:`TEST_TARGET_IP`
9132 The IP address of your hardware under test. The :term:`TEST_TARGET_IP` 9623 The IP address of your hardware under test. The :term:`TEST_TARGET_IP`
@@ -9162,10 +9653,15 @@ system and gives an overview of their function and contents.
9162 9653
9163 For more information 9654 For more information
9164 on enabling, running, and writing these tests, see the 9655 on enabling, running, and writing these tests, see the
9165 ":ref:`dev-manual/runtime-testing:performing automated runtime testing`" 9656 ":ref:`test-manual/runtime-testing:performing automated runtime testing`"
9166 section in the Yocto Project Development Tasks Manual and the 9657 section in the Yocto Project Test Environment Manual and the
9167 ":ref:`ref-classes-testimage`" section. 9658 ":ref:`ref-classes-testimage`" section.
9168 9659
9660 :term:`TESTIMAGE_FAILED_QA_ARTIFACTS`
9661 When using the :ref:`ref-classes-testimage` class, the variable
9662 :term:`TESTIMAGE_FAILED_QA_ARTIFACTS` lists space-separated paths on the
9663 target to retrieve onto the host.
9664
9169 :term:`THISDIR` 9665 :term:`THISDIR`
9170 The directory in which the file BitBake is currently parsing is 9666 The directory in which the file BitBake is currently parsing is
9171 located. Do not manually set this variable. 9667 located. Do not manually set this variable.
@@ -9957,8 +10453,22 @@ system and gives an overview of their function and contents.
9957 ":ref:`ref-classes-insane`" section. 10453 ":ref:`ref-classes-insane`" section.
9958 10454
9959 :term:`WATCHDOG_TIMEOUT` 10455 :term:`WATCHDOG_TIMEOUT`
9960 Specifies the timeout in seconds used by the ``watchdog`` recipe and 10456 Specifies the timeout in seconds used by the ``watchdog-config`` recipe
9961 also by ``systemd`` during reboot. The default is 60 seconds. 10457 and also by ``systemd`` during reboot. The default is 60 seconds.
10458
10459 :term:`WIC_CREATE_EXTRA_ARGS`
10460 If the :term:`IMAGE_FSTYPES` variable contains "wic", the build
10461 will generate a
10462 :ref:`Wic image <dev-manual/wic:creating partitioned images using wic>`
10463 automatically when BitBake builds an image recipe. As part of
10464 this process BitBake will invoke the "`wic create`" command. The
10465 :term:`WIC_CREATE_EXTRA_ARGS` variable is placed at the end of this
10466 command which allows the user to supply additional arguments.
10467
10468 One such useful purpose for this mechanism is to add the ``-D`` (or
10469 ``--debug``) argument to the "`wic create`" command. This increases the
10470 amount of debugging information written out to the Wic log during the
10471 Wic creation process.
9962 10472
9963 :term:`WIRELESS_DAEMON` 10473 :term:`WIRELESS_DAEMON`
9964 For ``connman`` and ``packagegroup-base``, specifies the wireless 10474 For ``connman`` and ``packagegroup-base``, specifies the wireless
diff --git a/documentation/sdk-manual/appendix-obtain.rst b/documentation/sdk-manual/appendix-obtain.rst
index d06d6ec6b5..a42cbc31bb 100644
--- a/documentation/sdk-manual/appendix-obtain.rst
+++ b/documentation/sdk-manual/appendix-obtain.rst
@@ -29,7 +29,7 @@ and then run the script to hand-install the toolchain.
29Follow these steps to locate and hand-install the toolchain: 29Follow these steps to locate and hand-install the toolchain:
30 30
31#. *Go to the Installers Directory:* Go to 31#. *Go to the Installers Directory:* Go to
32 :yocto_dl:`/releases/yocto/yocto-&DISTRO;/toolchain/` 32 :yocto_dl:`/releases/yocto/&DISTRO_REL_LATEST_TAG;/toolchain/`
33 33
34#. *Open the Folder for Your Build Host:* Open the folder that matches 34#. *Open the Folder for Your Build Host:* Open the folder that matches
35 your :term:`Build Host` (i.e. 35 your :term:`Build Host` (i.e.
@@ -201,7 +201,7 @@ Follow these steps to extract the root filesystem:
201 Image File:* You need to find and download the root filesystem image 201 Image File:* You need to find and download the root filesystem image
202 file that is appropriate for your target system. These files are kept 202 file that is appropriate for your target system. These files are kept
203 in machine-specific folders in the 203 in machine-specific folders in the
204 :yocto_dl:`Index of Releases </releases/yocto/yocto-&DISTRO;/machines/>` 204 :yocto_dl:`Index of Releases </releases/yocto/&DISTRO_REL_LATEST_TAG;/machines/>`
205 in the "machines" directory. 205 in the "machines" directory.
206 206
207 The machine-specific folders of the "machines" directory contain 207 The machine-specific folders of the "machines" directory contain
@@ -245,7 +245,7 @@ Follow these steps to extract the root filesystem:
245 245
246 Here is an example command that extracts the root filesystem 246 Here is an example command that extracts the root filesystem
247 from a previously built root filesystem image that was downloaded 247 from a previously built root filesystem image that was downloaded
248 from the :yocto_dl:`Index of Releases </releases/yocto/yocto-&DISTRO;/machines/>`. 248 from the :yocto_dl:`Index of Releases </releases/yocto/&DISTRO_REL_LATEST_TAG;/machines/>`.
249 This command extracts the root filesystem into the ``core2-64-sato`` 249 This command extracts the root filesystem into the ``core2-64-sato``
250 directory:: 250 directory::
251 251
diff --git a/documentation/sdk-manual/extensible.rst b/documentation/sdk-manual/extensible.rst
index 3f6a754d88..ab4956f466 100644
--- a/documentation/sdk-manual/extensible.rst
+++ b/documentation/sdk-manual/extensible.rst
@@ -87,7 +87,7 @@ Host` by running the ``*.sh`` installation script.
87You can download a tarball installer, which includes the pre-built 87You can download a tarball installer, which includes the pre-built
88toolchain, the ``runqemu`` script, the internal build system, 88toolchain, the ``runqemu`` script, the internal build system,
89``devtool``, and support files from the appropriate 89``devtool``, and support files from the appropriate
90:yocto_dl:`toolchain </releases/yocto/yocto-&DISTRO;/toolchain/>` directory within the Index of 90:yocto_dl:`toolchain </releases/yocto/&DISTRO_REL_LATEST_TAG;/toolchain/>` directory within the Index of
91Releases. Toolchains are available for several 32-bit and 64-bit 91Releases. Toolchains are available for several 32-bit and 64-bit
92architectures with the ``x86_64`` directories, respectively. The 92architectures with the ``x86_64`` directories, respectively. The
93toolchains the Yocto Project provides are based off the 93toolchains the Yocto Project provides are based off the
@@ -178,7 +178,7 @@ Running the Extensible SDK Environment Setup Script
178Once you have the SDK installed, you must run the SDK environment setup 178Once you have the SDK installed, you must run the SDK environment setup
179script before you can actually use the SDK. 179script before you can actually use the SDK.
180 180
181When using a SDK directly in a Yocto build, you will find the script in 181When using an SDK directly in a Yocto build, you will find the script in
182``tmp/deploy/images/qemux86-64/`` in your :term:`Build Directory`. 182``tmp/deploy/images/qemux86-64/`` in your :term:`Build Directory`.
183 183
184When using a standalone SDK installer, this setup script resides in 184When using a standalone SDK installer, this setup script resides in
@@ -622,28 +622,91 @@ command:
622 decide you do not want to proceed with your work. If you do use this 622 decide you do not want to proceed with your work. If you do use this
623 command, realize that the source tree is preserved. 623 command, realize that the source tree is preserved.
624 624
625``devtool ide-sdk`` configures IDEs for the extensible SDK 625``devtool ide-sdk`` configures IDEs and bootstraps SDKs
626---------------------------------------------------------- 626-------------------------------------------------------
627 627
628``devtool ide-sdk`` automatically configures IDEs to use the extensible SDK. 628The ``devtool ide-sdk`` command can provide an IDE configuration for IDEs when
629To make sure that all parts of the extensible SDK required by the generated 629working on the source code of one or more recipes.
630IDE configuration are available, ``devtool ide-sdk`` uses BitBake in the 630Depending on the programming language, and the build system used by the recipe,
631background to bootstrap the extensible SDK. 631the tools required for cross-development and remote debugging are different.
632For example:
632 633
633The extensible SDK supports two different development modes. 634- A C/C++ project usually uses CMake or Meson.
634``devtool ide-sdk`` supports both of them:
635 635
636#. *Modified mode*: 636- A Python project uses setuptools or one of its successors.
637
638- A Rust project uses Cargo.
639
640Also, the IDE plugins needed for the integration of a build system with the
641IDE and the corresponding settings are usually specific to these build-systems.
642To hide all these details from the user, ``devtool ide-sdk`` does two things:
643
644- It generates any kind of SDK needed for cross-development and remote
645 debugging of the specified recipes.
646
647- It generates the configuration for the IDE (and the IDE plugins) for using
648 the cross-toolchain and remote debugging tools provided by the SDK directly
649 from the IDE.
650
651For supported build systems the configurations generated by ``devtool ide-sdk``
652combine the advantages of the ``devtool modify`` based workflow
653(see :ref:`using_devtool`) with the advantages of the simple Environment Setup
654script based workflow (see :ref:`running_the_ext_sdk_env`) provided by Yocto's
655SDK or eSDK:
656
657- The source code of the recipe is in the workspace created by
658 ``devtool modify`` or ``devtool add``.
659 Using ``devtool build``, ``devtool build-image``,
660 ``devtool deploy-target`` or ``bitbake`` is possible.
661 Also ``devtool ide-sdk`` can be used to update the SDK and the IDE
662 configuration at any time.
637 663
638 By default ``devtool ide-sdk`` generates IDE configurations for recipes in 664- ``devtool ide-sdk`` aims to support multiple programming languages and
639 workspaces created by ``devtool modify`` or ``devtool add`` as described in 665 multiple IDEs natively. "Natively" means that the IDE is configured to call
640 :ref:`using_devtool`. This mode creates IDE configurations with support for 666 the build tool (e.g. ``cmake`` or ``meson``) directly. This has several
641 advanced features, such as deploying the binaries to the remote target 667 advantages.
642 device and performing remote debugging sessions. The generated IDE 668 First of all, it is usually much faster to call for example ``cmake`` than
643 configurations use the per recipe sysroots as Bitbake does internally. 669 ``devtool build``.
670 It also allows to benefit from the very good integration that IDEs like
671 VSCode offer for tools like CMake or GDB.
672
673 However, supporting many programming languages and multiple
674 IDEs is quite an elaborate and constantly evolving thing. Support for IDEs
675 is therefore implemented as plugins. Plugins can also be provided by
676 optional layers.
644 677
645 In order to use the tool, a few settings are needed. As a starting example, 678So much about the introduction to the default mode of ``devtool sdk-ide`` which
646 the following lines of code can be added to the ``local.conf`` file:: 679is called the "modified" mode because it uses the workspace created by
680``devtool modify`` and the per recipe :term:`Sysroots <Sysroot>` of BitBake.
681
682For some recipes and use cases, this default behavior of ``devtool ide-sdk``
683with full ``devtool`` and ``bitbake`` integration might not be suitable.
684To offer full feature parity with the SDK and the eSDK, ``devtool ide-sdk`` has
685a second mode called "shared" mode.
686If ``devtool ide-sdk`` is called with the ``--mode=shared`` option, it
687bootstraps an SDK directly from the BitBake environment, which offers the same
688Environment Setup script as described in :ref:`running_the_ext_sdk_env`.
689In addition to the (e)SDK installer-based setup, the IDE gets configured
690to use the shared :term:`Sysroots <Sysroot>` and the tools from the SDK.
691``devtool ide-sdk --mode=shared`` is basically a wrapper for the setup of the
692extensible SDK as described in :ref:`setting_up_ext_sdk_in_build`.
693
694The use of ``devtool ide-sdk`` is an alternative to using one of the SDK
695installers.
696``devtool ide-sdk`` allows the creation of SDKs that offer all the
697functionality of the SDK and the eSDK installers. Compared to the installers,
698however, the SDK created with ``devtool ide-sdk`` is much more flexible.
699For example, it is very easy to change the :term:`MACHINE` in the
700``local.conf`` file, update the layer meta data and then regenerate the SDK.
701
702Let's take a look at an example of how to use ``devtool ide-sdk`` in each of
703the two modes:
704
705#. *Modified mode*:
706
707 In order to use the ``devtool ide-sdk``, a few settings are needed. As a
708 starting example, the following lines of code can be added to the
709 ``local.conf`` file::
647 710
648 # Build the companion debug file system 711 # Build the companion debug file system
649 IMAGE_GEN_DEBUGFS = "1" 712 IMAGE_GEN_DEBUGFS = "1"
@@ -666,15 +729,20 @@ The extensible SDK supports two different development modes.
666 IMAGE_INSTALL:append = " my-recipe" 729 IMAGE_INSTALL:append = " my-recipe"
667 730
668 Assuming the BitBake environment is set up correctly and a workspace has 731 Assuming the BitBake environment is set up correctly and a workspace has
669 been created for the recipe using ``devtool modify my-recipe``, the 732 been created for the recipe using ``devtool modify my-recipe`` or probably
733 even better by using ``devtool modify my-recipe --debug-build``, the
670 following command can create the SDK and the configuration for VSCode in 734 following command can create the SDK and the configuration for VSCode in
671 the recipe workspace:: 735 the recipe workspace::
672 736
673 $ devtool ide-sdk my-recipe core-image-minimal --target root@192.168.7.2 737 $ devtool ide-sdk my-recipe core-image-minimal --target root@192.168.7.2
674 738
675 The command requires an image recipe (``core-image-minimal`` for this example) 739 The command requires an image recipe (``core-image-minimal`` for this
676 that is used to create the SDK. This firmware image should also be installed 740 example) that is used to create the SDK.
677 on the target device. It is possible to pass multiple package recipes. 741 This firmware image should also be installed on the target device.
742 It is possible to pass multiple package recipes::
743
744 $ devtool ide-sdk my-recipe-1 my-recipe-2 core-image-minimal --target root@192.168.7.2
745
678 ``devtool ide-sdk`` tries to create an IDE configuration for all package 746 ``devtool ide-sdk`` tries to create an IDE configuration for all package
679 recipes. 747 recipes.
680 748
@@ -684,9 +752,9 @@ The extensible SDK supports two different development modes.
684 752
685 For example, a CMake preset is created for a recipe that inherits 753 For example, a CMake preset is created for a recipe that inherits
686 :ref:`ref-classes-cmake`. In the case of VSCode, CMake presets are supported 754 :ref:`ref-classes-cmake`. In the case of VSCode, CMake presets are supported
687 by the CMake Tools plugin. This is an example of how the build 755 by the CMake Tools plugin. This is an example of how the build configuration
688 configuration used by ``bitbake`` is exported to an IDE configuration that 756 used by ``bitbake`` is exported to an IDE configuration that gives exactly
689 gives exactly the same build results. 757 the same build results.
690 758
691 Support for remote debugging with seamless integration into the IDE is 759 Support for remote debugging with seamless integration into the IDE is
692 important for a cross-SDK. ``devtool ide-sdk`` automatically generates the 760 important for a cross-SDK. ``devtool ide-sdk`` automatically generates the
@@ -699,23 +767,54 @@ The extensible SDK supports two different development modes.
699 running on the target device, it is essential that the image built by 767 running on the target device, it is essential that the image built by
700 ``devtool ide-sdk`` is running on the target device. 768 ``devtool ide-sdk`` is running on the target device.
701 769
702 ``devtool ide-sdk`` aims to support multiple programming languages and
703 multiple IDEs natively. "Natively" means that the IDE is configured to call
704 the build tool (e.g. CMake or Meson) directly. This has several advantages.
705 First of all, it is much faster than ``devtool build``, but it also allows
706 to use the very good integration of tools like CMake or GDB in VSCode and
707 other IDEs. However, supporting many programming languages and multiple
708 IDEs is quite an elaborate and constantly evolving thing. Support for IDEs
709 is therefore implemented as plugins. Plugins can also be provided by
710 optional layers.
711
712 The default IDE is VSCode. Some hints about using VSCode: 770 The default IDE is VSCode. Some hints about using VSCode:
713 771
714 - To work on the source code of a recipe an instance of VSCode is started in 772 - VSCode can be used to work on the BitBake recipes or the application
715 the recipe's workspace. Example:: 773 source code.
774 Usually there is one instance of VSCode running in the folder where the
775 BitBake recipes are. This instance has the
776 `Yocto Project BitBake plugin <https://marketplace.visualstudio.com/items?itemName=yocto-project.yocto-bitbake>`_
777 running.
778
779 .. warning::
780
781 Some VSCode plugins (Python, BitBake and others) need a reasonable
782 configuration to work as expected. Otherwise, some plugins try to
783 index the build directory of BitBake, which keeps your system quite
784 busy until an out of memory exception stops this nonsense.
785 Other plugins, such as the BitBake plugin, do not behave as expected.
786
787 To work around such issues, the ``oe-init-build-env`` script creates
788 an initial ``.vscode/settings.json`` file if ``code`` can be found
789 and the ``.vscode`` folder does not yet exist.
790 It is best to run ``oe-init-build-env`` once before starting VSCode.
791 An alternative approach is to use a build folder outside the layers,
792 e.g. ``oe-init-build-env ../build``.
793
794 The BitBake plugin also offers to create devtool workspaces and run
795 ``devtool ide-sdk`` with a few mouse clicks.
796 Of course, issuing commands in the terminal works as well.
797
798 - To work on the source code of a recipe another instance of VSCode is
799 started in the recipe's workspace. Example::
716 800
717 code build/workspace/sources/my-recipe 801 code build/workspace/sources/my-recipe
718 802
803 This instance of VSCode uses plugins that are useful for the development
804 of the application. ``devtool ide-sdk`` generates the necessary
805 ``extensions.json``, ``settings.json``, ``tasks.json`` and ``launch.json``
806 configuration files for all the involved plugins.
807
808 When the source code folder present in the workspace folder is opened in
809 VSCode for the first time, a pop-up message recommends installing the
810 required plugins.
811 After accepting the installation of the plugins, working with the source
812 code or some debugging tasks should work as usual with VSCode.
813
814 Starting the VSCode instances in the recipe workspace folders can also be
815 done by a mouse click on the recipe workspaces in the first VSCode
816 instance.
817
719 - To work with CMake press ``Ctrl + Shift + p``, type ``cmake``. This will 818 - To work with CMake press ``Ctrl + Shift + p``, type ``cmake``. This will
720 show some possible commands like selecting a CMake preset, compiling or 819 show some possible commands like selecting a CMake preset, compiling or
721 running CTest. 820 running CTest.
@@ -728,10 +827,9 @@ The extensible SDK supports two different development modes.
728 show some possible commands like compiling or executing the unit tests. 827 show some possible commands like compiling or executing the unit tests.
729 828
730 A note on running cross-compiled unit tests on the host: Meson enables 829 A note on running cross-compiled unit tests on the host: Meson enables
731 support for QEMU user-mode by default. It is expected that the execution 830 support for QEMU user mode by default. It is expected that the execution
732 of the unit tests from the IDE will work easily without any additional 831 of the unit tests from the IDE will work without any additional steps,
733 steps, provided that the code is suitable for execution on the host 832 given that the code is suitable for the execution on the host machine.
734 machine.
735 833
736 - For the deployment to the target device, just press ``Ctrl + Shift + p``, 834 - For the deployment to the target device, just press ``Ctrl + Shift + p``,
737 type ``task``. Select ``install && deploy-target``. 835 type ``task``. Select ``install && deploy-target``.
@@ -742,23 +840,23 @@ The extensible SDK supports two different development modes.
742 selected. After selecting one of the generated configurations, press the 840 selected. After selecting one of the generated configurations, press the
743 "play" button. 841 "play" button.
744 842
745 Starting a remote debugging session automatically initiates the deployment 843 Starting a remote debugging session automatically initiates the
746 to the target device. If this is not desired, the 844 deployment to the target device. If this is not desired, the
747 ``"dependsOn": ["install && deploy-target...]`` parameter of the tasks 845 ``"dependsOn": ["install && deploy-target...]`` parameter of the tasks
748 with ``"label": "gdbserver start...`` can be removed from the 846 with ``"label": "gdbserver start...`` can be removed from the
749 ``tasks.json`` file. 847 ``tasks.json`` file.
750 848
751 VSCode supports GDB with many different setups and configurations for many 849 VSCode supports GDB with many different setups and configurations for
752 different use cases. However, most of these setups have some limitations 850 many different use cases. However, most of these setups have some
753 when it comes to cross-development, support only a few target 851 limitations when it comes to cross-development, support only a few target
754 architectures or require a high performance target device. Therefore 852 architectures or require a high performance target device. Therefore
755 ``devtool ide-sdk`` supports the classic, generic setup with GDB on the 853 ``devtool ide-sdk`` supports the classic, generic setup with GDB on the
756 development host and gdbserver on the target device. 854 development host and gdbserver on the target device.
757 855
758 Roughly summarized, this means: 856 Roughly summarized, this means:
759 857
760 - The binaries are copied via SSH to the remote target device by a script 858 - The binaries are copied via SSH to the remote target device by a
761 referred by ``tasks.json``. 859 script referred by ``tasks.json``.
762 860
763 - gdbserver is started on the remote target device via SSH by a script 861 - gdbserver is started on the remote target device via SSH by a script
764 referred by ``tasks.json``. 862 referred by ``tasks.json``.
@@ -783,8 +881,8 @@ The extensible SDK supports two different development modes.
783 .. code-block:: sh 881 .. code-block:: sh
784 882
785 # Create the SDK 883 # Create the SDK
786 devtool modify cmake-example 884 devtool modify cmake-example --debug-build
787 devtool ide-sdk cmake-example core-image-minimal -c --debug-build-config --ide=none 885 devtool ide-sdk cmake-example core-image-minimal -c --ide=none
788 886
789 # Install the firmware on a target device or start QEMU 887 # Install the firmware on a target device or start QEMU
790 runqemu 888 runqemu
@@ -860,16 +958,9 @@ The extensible SDK supports two different development modes.
860 958
861#. *Shared sysroots mode* 959#. *Shared sysroots mode*
862 960
863 For some recipes and use cases a per-recipe sysroot based SDK is not 961 Creating an SDK with shared :term:`Sysroots <Sysroot>` that contains all the
864 suitable. Optionally ``devtool ide-sdk`` configures the IDE to use the 962 dependencies needed to work with ``my-recipe`` is possible with the following
865 toolchain provided by the extensible SDK as described in 963 example command::
866 :ref:`running_the_ext_sdk_env`. ``devtool ide-sdk --mode=shared`` is
867 basically a wrapper for the setup of the extensible SDK as described in
868 :ref:`setting_up_ext_sdk_in_build`. The IDE gets a configuration to use the
869 shared sysroots.
870
871 Creating a SDK with shared sysroots that contains all the dependencies needed
872 to work with ``my-recipe`` is possible with the following example command::
873 964
874 $ devtool ide-sdk --mode=shared my-recipe 965 $ devtool ide-sdk --mode=shared my-recipe
875 966
@@ -883,12 +974,14 @@ The extensible SDK supports two different development modes.
883 echo "project(foo VERSION 1.0)" > kit-test/CMakeLists.txt 974 echo "project(foo VERSION 1.0)" > kit-test/CMakeLists.txt
884 code kit-test 975 code kit-test
885 976
886 If there is a CMake project in the workspace, cross-compilation is supported: 977 If there is a CMake project in the workspace, cross-compilation is
978 supported:
887 979
888 - Press ``Ctrl + Shift + P``, type ``CMake: Scan for Kits`` 980 - Press ``Ctrl + Shift + P``, type ``CMake: Scan for Kits``
889 - Press ``Ctrl + Shift + P``, type ``CMake: Select a Kit`` 981 - Press ``Ctrl + Shift + P``, type ``CMake: Select a Kit``
890 982
891 Finally most of the features provided by CMake and the IDE should be available. 983 Finally most of the features provided by CMake and the IDE should be
984 available.
892 985
893 Other IDEs than VSCode are supported as well. However, 986 Other IDEs than VSCode are supported as well. However,
894 ``devtool ide-sdk --mode=shared --ide=none my-recipe`` is currently 987 ``devtool ide-sdk --mode=shared --ide=none my-recipe`` is currently
diff --git a/documentation/sdk-manual/intro.rst b/documentation/sdk-manual/intro.rst
index e8fd191dbc..fbfc8c2ac7 100644
--- a/documentation/sdk-manual/intro.rst
+++ b/documentation/sdk-manual/intro.rst
@@ -173,7 +173,7 @@ You just need to follow these general steps:
173 root filesystem images. 173 root filesystem images.
174 174
175 If you are going to develop your application on hardware, go to the 175 If you are going to develop your application on hardware, go to the
176 :yocto_dl:`machines </releases/yocto/yocto-&DISTRO;/machines/>` download area and choose a 176 :yocto_dl:`machines </releases/yocto/&DISTRO_REL_LATEST_TAG;/machines/>` download area and choose a
177 target machine area from which to download the kernel image and root 177 target machine area from which to download the kernel image and root
178 filesystem. This download area could have several files in it that 178 filesystem. This download area could have several files in it that
179 support development using actual hardware. For example, the area 179 support development using actual hardware. For example, the area
@@ -183,7 +183,7 @@ You just need to follow these general steps:
183 183
184 If you are going to develop your application and then run and test it 184 If you are going to develop your application and then run and test it
185 using the QEMU emulator, go to the 185 using the QEMU emulator, go to the
186 :yocto_dl:`machines/qemu </releases/yocto/yocto-&DISTRO;/machines/qemu>` download area. From this 186 :yocto_dl:`machines/qemu </releases/yocto/&DISTRO_REL_LATEST_TAG;/machines/qemu>` download area. From this
187 area, go down into the directory for your target architecture (e.g. 187 area, go down into the directory for your target architecture (e.g.
188 ``qemux86_64`` for an Intel-based 64-bit architecture). Download the 188 ``qemux86_64`` for an Intel-based 64-bit architecture). Download the
189 kernel, root filesystem, and any other files you need for your 189 kernel, root filesystem, and any other files you need for your
diff --git a/documentation/sdk-manual/using.rst b/documentation/sdk-manual/using.rst
index f1ff0c76ca..bfb306abf5 100644
--- a/documentation/sdk-manual/using.rst
+++ b/documentation/sdk-manual/using.rst
@@ -43,7 +43,7 @@ Host` by running the ``*.sh`` installation script.
43 43
44You can download a tarball installer, which includes the pre-built 44You can download a tarball installer, which includes the pre-built
45toolchain, the ``runqemu`` script, and support files from the 45toolchain, the ``runqemu`` script, and support files from the
46appropriate :yocto_dl:`toolchain </releases/yocto/yocto-&DISTRO;/toolchain/>` directory within 46appropriate :yocto_dl:`toolchain </releases/yocto/&DISTRO_REL_LATEST_TAG;/toolchain/>` directory within
47the Index of Releases. Toolchains are available for several 32-bit and 47the Index of Releases. Toolchains are available for several 32-bit and
4864-bit architectures with the ``x86_64`` directories, respectively. The 4864-bit architectures with the ``x86_64`` directories, respectively. The
49toolchains the Yocto Project provides are based off the 49toolchains the Yocto Project provides are based off the
diff --git a/documentation/set_versions.py b/documentation/set_versions.py
index dec0780834..820bd64036 100755
--- a/documentation/set_versions.py
+++ b/documentation/set_versions.py
@@ -168,17 +168,29 @@ series = [k for k in release_series]
168previousseries = series[series.index(ourseries)+1:] or [""] 168previousseries = series[series.index(ourseries)+1:] or [""]
169lastlts = [k for k in previousseries if k in ltsseries] or "dunfell" 169lastlts = [k for k in previousseries if k in ltsseries] or "dunfell"
170 170
171latestreltag = subprocess.run(["git", "describe", "--abbrev=0", "--tags", "--match", "yocto-*"], capture_output=True, text=True).stdout
172latestreltag = latestreltag.strip()
173if latestreltag:
174 if latestreltag.startswith("yocto-"):
175 latesttag = latestreltag[6:]
176else:
177 # fallback on the calculated version
178 print("Did not find a tag with 'git describe', falling back to %s" % ourversion)
179 latestreltag = "yocto-" + ourversion
180 latesttag = ourversion
181
171print("Version calculated to be %s" % ourversion) 182print("Version calculated to be %s" % ourversion)
183print("Latest release tag found is %s" % latestreltag)
172print("Release series calculated to be %s" % ourseries) 184print("Release series calculated to be %s" % ourseries)
173 185
174replacements = { 186replacements = {
175 "DISTRO" : ourversion, 187 "DISTRO" : ourversion,
188 "DISTRO_LATEST_TAG": latesttag,
176 "DISTRO_NAME_NO_CAP" : ourseries, 189 "DISTRO_NAME_NO_CAP" : ourseries,
177 "DISTRO_NAME" : ourseries.capitalize(), 190 "DISTRO_NAME" : ourseries.capitalize(),
178 "DISTRO_NAME_NO_CAP_MINUS_ONE" : previousseries[0], 191 "DISTRO_NAME_NO_CAP_MINUS_ONE" : previousseries[0],
179 "DISTRO_NAME_NO_CAP_LTS" : lastlts[0], 192 "DISTRO_NAME_NO_CAP_LTS" : lastlts[0],
180 "YOCTO_DOC_VERSION" : ourversion, 193 "YOCTO_DOC_VERSION" : ourversion,
181 "DISTRO_REL_TAG" : "yocto-" + ourversion,
182 "DOCCONF_VERSION" : docconfver, 194 "DOCCONF_VERSION" : docconfver,
183 "BITBAKE_SERIES" : bitbakeversion, 195 "BITBAKE_SERIES" : bitbakeversion,
184} 196}
@@ -316,3 +328,5 @@ with open('releases.rst', 'w') as f:
316 if tag == release_series[series] or tag.startswith('%s.' % release_series[series]): 328 if tag == release_series[series] or tag.startswith('%s.' % release_series[series]):
317 f.write('- :yocto_docs:`%s Documentation </%s>`\n' % (tag, tag)) 329 f.write('- :yocto_docs:`%s Documentation </%s>`\n' % (tag, tag))
318 f.write('\n') 330 f.write('\n')
331
332
diff --git a/documentation/sphinx-static/favicon.ico b/documentation/sphinx-static/favicon.ico
new file mode 100644
index 0000000000..85a921e3ef
--- /dev/null
+++ b/documentation/sphinx-static/favicon.ico
Binary files differ
diff --git a/documentation/sphinx-static/switchers.js.in b/documentation/sphinx-static/switchers.js.in
index 8c016859bc..b1c0812b53 100644
--- a/documentation/sphinx-static/switchers.js.in
+++ b/documentation/sphinx-static/switchers.js.in
@@ -133,7 +133,13 @@ by https://git.yoctoproject.org/yocto-autobuilder-helper/tree/scripts/run-docs-b
133 133
134 function get_docroot_url() { 134 function get_docroot_url() {
135 var url = window.location.href; 135 var url = window.location.href;
136 // Try to get the variable from documentation_options.js
136 var root = DOCUMENTATION_OPTIONS.URL_ROOT; 137 var root = DOCUMENTATION_OPTIONS.URL_ROOT;
138 if (root == null) {
139 // In recent versions of Sphinx, URL_ROOT was removed from
140 // documentation_options.js, so get it like searchtools.js does.
141 root = document.documentElement.dataset.content_root;
142 }
137 143
138 var urlarray = url.split('/'); 144 var urlarray = url.split('/');
139 // Trim off anything after '/' 145 // Trim off anything after '/'
diff --git a/documentation/standards.md b/documentation/standards.md
index bc403e393e..8300d813dc 100644
--- a/documentation/standards.md
+++ b/documentation/standards.md
@@ -1,6 +1,6 @@
1# Standards for contributing to Yocto Project documentation 1# Standards for contributing to Yocto Project documentation
2 2
3This document attemps to standardize the way the Yocto Project 3This document attempts to standardize the way the Yocto Project
4documentation is created. 4documentation is created.
5 5
6It is currently a work in progress. 6It is currently a work in progress.
@@ -109,6 +109,21 @@ or in the BitBake User Manual
109If it is not described yet, the variable should be added to the 109If it is not described yet, the variable should be added to the
110glossary before or in the same patch it is used, so that `:term:` can be used. 110glossary before or in the same patch it is used, so that `:term:` can be used.
111 111
112### Admonitions
113
114Sphinx has predefined admonitions that can be used to highlight a bit of text or
115add a side-note to the documentation. For example:
116
117```rst
118.. note::
119
120 This is a note admonition.
121```
122
123We try to limit our usage of these admonitions to `note` and `warning`, as the
124Sphinx documentation [warns](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#directives)
125that most themes only style these two admonitions.
126
112## ReStructured Text Syntax standards 127## ReStructured Text Syntax standards
113 128
114This section has not been filled yet 129This section has not been filled yet
diff --git a/documentation/styles/config/vocabularies/Yocto/accept.txt b/documentation/styles/config/vocabularies/Yocto/accept.txt
index ca622ba412..7fedda8ae2 100644
--- a/documentation/styles/config/vocabularies/Yocto/accept.txt
+++ b/documentation/styles/config/vocabularies/Yocto/accept.txt
@@ -2,4 +2,5 @@ BitBake
2BSP 2BSP
3crosstap 3crosstap
4OpenEmbedded 4OpenEmbedded
5sstate
5Yocto 6Yocto
diff --git a/documentation/test-manual/index.rst b/documentation/test-manual/index.rst
index 86a2f436ea..d365d337ea 100644
--- a/documentation/test-manual/index.rst
+++ b/documentation/test-manual/index.rst
@@ -12,6 +12,8 @@ Yocto Project Test Environment Manual
12 12
13 intro 13 intro
14 test-process 14 test-process
15 ptest
16 runtime-testing
15 understand-autobuilder 17 understand-autobuilder
16 reproducible-builds 18 reproducible-builds
17 yocto-project-compatible 19 yocto-project-compatible
diff --git a/documentation/test-manual/intro.rst b/documentation/test-manual/intro.rst
index c31fd11c7a..caa0a8a792 100644
--- a/documentation/test-manual/intro.rst
+++ b/documentation/test-manual/intro.rst
@@ -51,13 +51,11 @@ fashion. Basically, during the development of a Yocto Project release,
51the Autobuilder tests if things work. The Autobuilder builds all test 51the Autobuilder tests if things work. The Autobuilder builds all test
52targets and runs all the tests. 52targets and runs all the tests.
53 53
54The Yocto Project uses now uses standard upstream 54The Yocto Project uses standard upstream Buildbot to drive its integration and
55Buildbot (`version 3.8 <https://docs.buildbot.net/3.8.0/>`__) to 55testing. Buildbot has a plug-in interface that the Yocto Project customizes
56drive its integration and testing. Buildbot has a plug-in interface 56using code from the :yocto_git:`yocto-autobuilder2 </yocto-autobuilder2>`
57that the Yocto Project customizes using code from the 57repository, adding its own console UI plugin. The resulting UI plug-in allows
58``yocto-autobuilder2`` repository, adding its own console UI plugin. The 58you to visualize builds in a way suited to the project's needs.
59resulting UI plug-in allows you to visualize builds in a way suited to
60the project's needs.
61 59
62A ``helper`` layer provides configuration and job management through 60A ``helper`` layer provides configuration and job management through
63scripts found in the ``yocto-autobuilder-helper`` repository. The 61scripts found in the ``yocto-autobuilder-helper`` repository. The
@@ -130,7 +128,9 @@ the following types of tests:
130 $ bitbake image -c testimage 128 $ bitbake image -c testimage
131 129
132 The tests use the :ref:`ref-classes-testimage` 130 The tests use the :ref:`ref-classes-testimage`
133 class and the :ref:`ref-tasks-testimage` task. 131 class and the :ref:`ref-tasks-testimage` task. See the
132 :ref:`test-manual/runtime-testing:Performing Automated Runtime Testing`
133 section of the Yocto Project Test Environment Manual for more information.
134 134
135- *Layer Testing:* The Autobuilder has the possibility to test whether 135- *Layer Testing:* The Autobuilder has the possibility to test whether
136 specific layers work with the test of the system. The layers tested 136 specific layers work with the test of the system. The layers tested
@@ -140,7 +140,7 @@ the following types of tests:
140- *Package Testing:* A Package Test (ptest) runs tests against packages 140- *Package Testing:* A Package Test (ptest) runs tests against packages
141 built by the OpenEmbedded build system on the target machine. See the 141 built by the OpenEmbedded build system on the target machine. See the
142 :ref:`Testing Packages With 142 :ref:`Testing Packages With
143 ptest <dev-manual/packages:Testing Packages With ptest>` section 143 ptest <test-manual/ptest:Testing Packages With ptest>` section
144 in the Yocto Project Development Tasks Manual and the 144 in the Yocto Project Development Tasks Manual and the
145 ":yocto_wiki:`Ptest </Ptest>`" Wiki page for more 145 ":yocto_wiki:`Ptest </Ptest>`" Wiki page for more
146 information on Ptest. 146 information on Ptest.
diff --git a/documentation/test-manual/ptest.rst b/documentation/test-manual/ptest.rst
new file mode 100644
index 0000000000..2c021af515
--- /dev/null
+++ b/documentation/test-manual/ptest.rst
@@ -0,0 +1,128 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3***************************
4Testing Packages With ptest
5***************************
6
7A Package Test (ptest) runs tests against packages built by the
8OpenEmbedded build system on the target machine. A ptest contains at
9least two items: the actual test, and a shell script (``run-ptest``)
10that starts the test. The shell script that starts the test must not
11contain the actual test --- the script only starts the test. On the other
12hand, the test can be anything from a simple shell script that runs a
13binary and checks the output to an elaborate system of test binaries and
14data files.
15
16The test generates output in the format used by Automake::
17
18 result: testname
19
20where the result can be ``PASS``, ``FAIL``, or ``SKIP``, and
21the testname can be any identifying string.
22
23For a list of Yocto Project recipes that are already enabled with ptest,
24see the :yocto_wiki:`Ptest </Ptest>` wiki page.
25
26.. note::
27
28 A recipe is "ptest-enabled" if it inherits the :ref:`ref-classes-ptest`
29 class.
30
31Adding ptest to Your Build
32==========================
33
34To add package testing to your build, add the :term:`DISTRO_FEATURES` and
35:term:`EXTRA_IMAGE_FEATURES` variables to your ``local.conf`` file, which
36is found in the :term:`Build Directory`::
37
38 DISTRO_FEATURES:append = " ptest"
39 EXTRA_IMAGE_FEATURES += "ptest-pkgs"
40
41Once your build is complete, the ptest files are installed into the
42``/usr/lib/package/ptest`` directory within the image, where ``package``
43is the name of the package.
44
45Running ptest
46=============
47
48The ``ptest-runner`` package installs a shell script that loops through
49all installed ptest test suites and runs them in sequence. Consequently,
50you might want to add this package to your image.
51
52Getting Your Package Ready
53==========================
54
55In order to enable a recipe to run installed ptests on target hardware,
56you need to prepare the recipes that build the packages you want to
57test. Here is what you have to do for each recipe:
58
59- *Be sure the recipe inherits the* :ref:`ref-classes-ptest` *class:*
60 Include the following line in each recipe::
61
62 inherit ptest
63
64 .. note::
65
66 Classes for common frameworks already exist in :term:`OpenEmbedded-Core
67 (OE-Core)`, such as:
68
69 - :oe_git:`go-ptest </openembedded-core/tree/meta/classes-recipe/go-ptest.bbclass>`
70 - :ref:`ref-classes-ptest-cargo`
71 - :ref:`ref-classes-ptest-gnome`
72 - :oe_git:`ptest-perl </openembedded-core/tree/meta/classes-recipe/ptest-perl.bbclass>`
73 - :oe_git:`ptest-python-pytest </openembedded-core/tree/meta/classes-recipe/ptest-python-pytest.bbclass>`
74
75 Inheriting these classes with the ``inherit`` keyword in your recipe will
76 make the next steps automatic.
77
78- *Create run-ptest:* This script starts your test. Locate the
79 script where you will refer to it using
80 :term:`SRC_URI`. Here is an
81 example that starts a test for ``dbus``::
82
83 #!/bin/sh
84 cd test
85 make -k runtest-TESTS
86
87- *Ensure dependencies are met:* If the test adds build or runtime
88 dependencies that normally do not exist for the package (such as
89 requiring "make" to run the test suite), use the
90 :term:`DEPENDS` and
91 :term:`RDEPENDS` variables in
92 your recipe in order for the package to meet the dependencies. Here
93 is an example where the package has a runtime dependency on "make"::
94
95 RDEPENDS:${PN}-ptest += "make"
96
97- *Add a function to build the test suite:* Not many packages support
98 cross-compilation of their test suites. Consequently, you usually
99 need to add a cross-compilation function to the package.
100
101 Many packages based on Automake compile and run the test suite by
102 using a single command such as ``make check``. However, the host
103 ``make check`` builds and runs on the same computer, while
104 cross-compiling requires that the package is built on the host but
105 executed for the target architecture (though often, as in the case
106 for ptest, the execution occurs on the host). The built version of
107 Automake that ships with the Yocto Project includes a patch that
108 separates building and execution. Consequently, packages that use the
109 unaltered, patched version of ``make check`` automatically
110 cross-compiles.
111
112 Regardless, you still must add a ``do_compile_ptest`` function to
113 build the test suite. Add a function similar to the following to your
114 recipe::
115
116 do_compile_ptest() {
117 oe_runmake buildtest-TESTS
118 }
119
120- *Ensure special configurations are set:* If the package requires
121 special configurations prior to compiling the test code, you must
122 insert a ``do_configure_ptest`` function into the recipe.
123
124- *Install the test suite:* The :ref:`ref-classes-ptest` class
125 automatically copies the file ``run-ptest`` to the target and then runs make
126 ``install-ptest`` to run the tests. If this is not enough, you need
127 to create a ``do_install_ptest`` function and make sure it gets
128 called after the "make install-ptest" completes.
diff --git a/documentation/test-manual/reproducible-builds.rst b/documentation/test-manual/reproducible-builds.rst
index 91f94a5c74..aaf2e4541e 100644
--- a/documentation/test-manual/reproducible-builds.rst
+++ b/documentation/test-manual/reproducible-builds.rst
@@ -91,13 +91,21 @@ run::
91 91
92 oe-selftest -r reproducible.ReproducibleTests.test_reproducible_builds 92 oe-selftest -r reproducible.ReproducibleTests.test_reproducible_builds
93 93
94This defaults to including a ``world`` build so, if other layers are added, it would 94This defaults to including a ``world`` build so, if other layers are added, it
95also run the tests for recipes in the additional layers. Different build targets 95would also run the tests for recipes in the additional layers. Different build
96can be defined using the :term:`OEQA_REPRODUCIBLE_TEST_TARGET` variable in ``local.conf``. 96targets can be defined using the :term:`OEQA_REPRODUCIBLE_TEST_TARGET` variable
97The first build will be run using :ref:`Shared State <overview-manual/concepts:Shared State>` if 97in ``local.conf``. For example, running reproducibility tests for only the
98available, the second build explicitly disables 98``python3-numpy`` recipe can be done by setting::
99:ref:`Shared State <overview-manual/concepts:Shared State>` except for recipes defined in 99
100the :term:`OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS` variable, and builds on the 100 OEQA_REPRODUCIBLE_TEST_TARGET = "python3-numpy"
101
102in local.conf before running the ``oe-selftest`` command shown above.
103
104Reproducibility builds the target list twice. The first build will be run using
105:ref:`Shared State <overview-manual/concepts:Shared State>` if available, the
106second build explicitly disables :ref:`Shared State
107<overview-manual/concepts:Shared State>` except for recipes defined in the
108:term:`OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS` variable, and builds on the
101specific host the build is running on. This means we can test reproducibility 109specific host the build is running on. This means we can test reproducibility
102builds between different host distributions over time on the Autobuilder. 110builds between different host distributions over time on the Autobuilder.
103 111
@@ -111,12 +119,8 @@ https://autobuilder.yocto.io/pub/repro-fail/ in the form ``oe-reproducible +
111The project's current reproducibility status can be seen at 119The project's current reproducibility status can be seen at
112:yocto_home:`/reproducible-build-results/` 120:yocto_home:`/reproducible-build-results/`
113 121
114You can also check the reproducibility status on supported host distributions: 122You can also check the reproducibility status on the Autobuilder:
115 123:yocto_ab:`/valkyrie/#/builders/reproducible`.
116- CentOS: :yocto_ab:`/typhoon/#/builders/reproducible-centos`
117- Debian: :yocto_ab:`/typhoon/#/builders/reproducible-debian`
118- Fedora: :yocto_ab:`/typhoon/#/builders/reproducible-fedora`
119- Ubuntu: :yocto_ab:`/typhoon/#/builders/reproducible-ubuntu`
120 124
121=============================== 125===============================
122Can I test my layer or recipes? 126Can I test my layer or recipes?
diff --git a/documentation/dev-manual/runtime-testing.rst b/documentation/test-manual/runtime-testing.rst
index 7a2b42f25a..557e0530b0 100644
--- a/documentation/dev-manual/runtime-testing.rst
+++ b/documentation/test-manual/runtime-testing.rst
@@ -1,5 +1,6 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK 1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2 2
3************************************
3Performing Automated Runtime Testing 4Performing Automated Runtime Testing
4************************************ 5************************************
5 6
@@ -153,7 +154,7 @@ options are available:
153 154
154 If you choose "SystemdbootTarget", there are additional requirements 155 If you choose "SystemdbootTarget", there are additional requirements
155 and considerations. See the 156 and considerations. See the
156 ":ref:`dev-manual/runtime-testing:selecting systemdboottarget`" section, which 157 ":ref:`test-manual/runtime-testing:selecting systemdboottarget`" section, which
157 follows, for more information. 158 follows, for more information.
158 159
159- *"BeagleBoneTarget":* Choose "BeagleBoneTarget" if you are deploying 160- *"BeagleBoneTarget":* Choose "BeagleBoneTarget" if you are deploying
@@ -179,7 +180,7 @@ Selecting SystemdbootTarget
179 180
180If you did not set :term:`TEST_TARGET` to "SystemdbootTarget", then you do 181If you did not set :term:`TEST_TARGET` to "SystemdbootTarget", then you do
181not need any information in this section. You can skip down to the 182not need any information in this section. You can skip down to the
182":ref:`dev-manual/runtime-testing:running tests`" section. 183":ref:`test-manual/runtime-testing:running tests`" section.
183 184
184If you did set :term:`TEST_TARGET` to "SystemdbootTarget", you also need to 185If you did set :term:`TEST_TARGET` to "SystemdbootTarget", you also need to
185perform a one-time setup of your controller image by doing the following: 186perform a one-time setup of your controller image by doing the following:
diff --git a/documentation/test-manual/test-process.rst b/documentation/test-manual/test-process.rst
index 7bec5ba828..945b56830f 100644
--- a/documentation/test-manual/test-process.rst
+++ b/documentation/test-manual/test-process.rst
@@ -20,7 +20,7 @@ helps review and test patches and this is his testing tree).
20We have two broad categories of test builds, including "full" and 20We have two broad categories of test builds, including "full" and
21"quick". On the Autobuilder, these can be seen as "a-quick" and 21"quick". On the Autobuilder, these can be seen as "a-quick" and
22"a-full", simply for ease of sorting in the UI. Use our Autobuilder 22"a-full", simply for ease of sorting in the UI. Use our Autobuilder
23:yocto_ab:`console view </typhoon/#/console>` to see where we manage most 23:yocto_ab:`console view </valkyrie/#/console>` to see where we manage most
24test-related items. 24test-related items.
25 25
26Builds are triggered manually when the test branches are ready. The 26Builds are triggered manually when the test branches are ready. The
diff --git a/documentation/test-manual/understand-autobuilder.rst b/documentation/test-manual/understand-autobuilder.rst
index 6b4fab4f0b..7f4d1be3cd 100644
--- a/documentation/test-manual/understand-autobuilder.rst
+++ b/documentation/test-manual/understand-autobuilder.rst
@@ -10,7 +10,7 @@ Execution Flow within the Autobuilder
10The "a-full" and "a-quick" targets are the usual entry points into the 10The "a-full" and "a-quick" targets are the usual entry points into the
11Autobuilder and it makes sense to follow the process through the system 11Autobuilder and it makes sense to follow the process through the system
12starting there. This is best visualized from the :yocto_ab:`Autobuilder 12starting there. This is best visualized from the :yocto_ab:`Autobuilder
13Console view </typhoon/#/console>`. 13Console view </valkyrie/#/console>`.
14 14
15Each item along the top of that view represents some "target build" and 15Each item along the top of that view represents some "target build" and
16these targets are all run in parallel. The 'full' build will trigger the 16these targets are all run in parallel. The 'full' build will trigger the
diff --git a/documentation/toaster-manual/reference.rst b/documentation/toaster-manual/reference.rst
index 755b895cee..3050b5d0f5 100644
--- a/documentation/toaster-manual/reference.rst
+++ b/documentation/toaster-manual/reference.rst
@@ -546,7 +546,7 @@ database.
546 546
547You need to run the ``buildslist`` command first to identify existing 547You need to run the ``buildslist`` command first to identify existing
548builds in the database before using the 548builds in the database before using the
549:ref:`toaster-manual/reference:\`\`builddelete\`\`` command. Here is an 549:ref:`toaster-manual/reference:``builddelete``` command. Here is an
550example that assumes default repository and :term:`Build Directory` names: 550example that assumes default repository and :term:`Build Directory` names:
551 551
552.. code-block:: shell 552.. code-block:: shell
@@ -555,7 +555,7 @@ example that assumes default repository and :term:`Build Directory` names:
555 $ python ../bitbake/lib/toaster/manage.py buildslist 555 $ python ../bitbake/lib/toaster/manage.py buildslist
556 556
557If your Toaster database had only one build, the above 557If your Toaster database had only one build, the above
558:ref:`toaster-manual/reference:\`\`buildslist\`\`` 558:ref:`toaster-manual/reference:``buildslist```
559command would return something like the following:: 559command would return something like the following::
560 560
561 1: qemux86 poky core-image-minimal 561 1: qemux86 poky core-image-minimal
@@ -576,7 +576,7 @@ the database.
576 576
577Prior to running the ``builddelete`` command, you need to get the ID 577Prior to running the ``builddelete`` command, you need to get the ID
578associated with builds by using the 578associated with builds by using the
579:ref:`toaster-manual/reference:\`\`buildslist\`\`` command. 579:ref:`toaster-manual/reference:``buildslist``` command.
580 580
581``perf`` 581``perf``
582-------- 582--------
diff --git a/meta-poky/conf/distro/poky.conf b/meta-poky/conf/distro/poky.conf
index 47e55683cf..9eff80491b 100644
--- a/meta-poky/conf/distro/poky.conf
+++ b/meta-poky/conf/distro/poky.conf
@@ -1,6 +1,6 @@
1DISTRO = "poky" 1DISTRO = "poky"
2DISTRO_NAME = "Poky (Yocto Project Reference Distro)" 2DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
3DISTRO_VERSION = "5.0.4" 3DISTRO_VERSION = "5.0.10"
4DISTRO_CODENAME = "scarthgap" 4DISTRO_CODENAME = "scarthgap"
5SDK_VENDOR = "-pokysdk" 5SDK_VENDOR = "-pokysdk"
6SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}" 6SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
@@ -38,14 +38,19 @@ SANITY_TESTED_DISTROS ?= " \
38 ubuntu-20.04 \n \ 38 ubuntu-20.04 \n \
39 ubuntu-22.04 \n \ 39 ubuntu-22.04 \n \
40 ubuntu-23.04 \n \ 40 ubuntu-23.04 \n \
41 ubuntu-24.04 \n \
41 fedora-38 \n \ 42 fedora-38 \n \
42 fedora-39 \n \ 43 fedora-39 \n \
44 fedora-40 \n \
43 centosstream-8 \n \ 45 centosstream-8 \n \
44 debian-11 \n \ 46 debian-11 \n \
45 debian-12 \n \ 47 debian-12 \n \
46 opensuseleap-15.4 \n \ 48 opensuseleap-15.4 \n \
47 almalinux-8.8 \n \ 49 almalinux-8.8 \n \
50 almalinux-8.9 \n \
51 almalinux-8.10 \n \
48 almalinux-9.2 \n \ 52 almalinux-9.2 \n \
53 almalinux-9.4 \n \
49 rocky-9 \n \ 54 rocky-9 \n \
50 " 55 "
51# add poky sanity bbclass 56# add poky sanity bbclass
diff --git a/meta-poky/conf/templates/default/local.conf.sample b/meta-poky/conf/templates/default/local.conf.sample
index 72d3566294..b6071e2821 100644
--- a/meta-poky/conf/templates/default/local.conf.sample
+++ b/meta-poky/conf/templates/default/local.conf.sample
@@ -239,10 +239,7 @@ BB_DISKMON_DIRS ??= "\
239# Using the CDN rather than the yoctoproject.org address is suggested/preferred. 239# Using the CDN rather than the yoctoproject.org address is suggested/preferred.
240# 240#
241#BB_HASHSERVE_UPSTREAM = 'wss://hashserv.yoctoproject.org/ws' 241#BB_HASHSERVE_UPSTREAM = 'wss://hashserv.yoctoproject.org/ws'
242#SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 242#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
243#
244###SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
245
246 243
247# 244#
248# Qemu configuration 245# Qemu configuration
diff --git a/meta/classes-global/license.bbclass b/meta/classes-global/license.bbclass
index b2e0d3faba..d7c5d08a77 100644
--- a/meta/classes-global/license.bbclass
+++ b/meta/classes-global/license.bbclass
@@ -18,8 +18,14 @@ LICENSE_CREATE_PACKAGE ??= "0"
18LICENSE_PACKAGE_SUFFIX ??= "-lic" 18LICENSE_PACKAGE_SUFFIX ??= "-lic"
19LICENSE_FILES_DIRECTORY ??= "${datadir}/licenses/" 19LICENSE_FILES_DIRECTORY ??= "${datadir}/licenses/"
20 20
21LICENSE_DEPLOY_PATHCOMPONENT = "${SSTATE_PKGARCH}"
22LICENSE_DEPLOY_PATHCOMPONENT:class-cross = "native"
23LICENSE_DEPLOY_PATHCOMPONENT:class-native = "native"
24# Ensure the *value* of SSTATE_PKGARCH is captured as it is used in the output paths
25LICENSE_DEPLOY_PATHCOMPONENT[vardepvalue] += "${LICENSE_DEPLOY_PATHCOMPONENT}"
26
21addtask populate_lic after do_patch before do_build 27addtask populate_lic after do_patch before do_build
22do_populate_lic[dirs] = "${LICSSTATEDIR}/${PN}" 28do_populate_lic[dirs] = "${LICSSTATEDIR}/${LICENSE_DEPLOY_PATHCOMPONENT}/${PN}"
23do_populate_lic[cleandirs] = "${LICSSTATEDIR}" 29do_populate_lic[cleandirs] = "${LICSSTATEDIR}"
24 30
25python do_populate_lic() { 31python do_populate_lic() {
@@ -29,7 +35,7 @@ python do_populate_lic() {
29 lic_files_paths = find_license_files(d) 35 lic_files_paths = find_license_files(d)
30 36
31 # The base directory we wrangle licenses to 37 # The base directory we wrangle licenses to
32 destdir = os.path.join(d.getVar('LICSSTATEDIR'), d.getVar('SSTATE_PKGARCH'), d.getVar('PN')) 38 destdir = os.path.join(d.getVar('LICSSTATEDIR'), d.getVar('LICENSE_DEPLOY_PATHCOMPONENT'), d.getVar('PN'))
33 copy_license_files(lic_files_paths, destdir) 39 copy_license_files(lic_files_paths, destdir)
34 info = get_recipe_info(d) 40 info = get_recipe_info(d)
35 with open(os.path.join(destdir, "recipeinfo"), "w") as f: 41 with open(os.path.join(destdir, "recipeinfo"), "w") as f:
diff --git a/meta/classes-global/package_rpm.bbclass b/meta/classes-global/package_rpm.bbclass
index 2e3e4e8c79..4a700ec124 100644
--- a/meta/classes-global/package_rpm.bbclass
+++ b/meta/classes-global/package_rpm.bbclass
@@ -10,7 +10,7 @@ IMAGE_PKGTYPE ?= "rpm"
10 10
11RPM = "rpm" 11RPM = "rpm"
12RPMBUILD = "rpmbuild" 12RPMBUILD = "rpmbuild"
13RPMBUILD_COMPMODE ?= "${@'w19T%d.zstdio' % int(d.getVar('ZSTD_THREADS'))}" 13RPMBUILD_COMPMODE ?= "${@'w3T%d.zstdio' % int(d.getVar('ZSTD_THREADS'))}"
14 14
15PKGWRITEDIRRPM = "${WORKDIR}/deploy-rpms" 15PKGWRITEDIRRPM = "${WORKDIR}/deploy-rpms"
16 16
@@ -205,14 +205,22 @@ python write_specfile () {
205 try: 205 try:
206 owner = pwd.getpwuid(stat_f.st_uid).pw_name 206 owner = pwd.getpwuid(stat_f.st_uid).pw_name
207 except Exception as e: 207 except Exception as e:
208 bb.error("Content of /etc/passwd in sysroot:\n{}".format( 208 filename = d.getVar('RECIPE_SYSROOT') + '/etc/passwd'
209 open(d.getVar("RECIPE_SYSROOT") +"/etc/passwd").read())) 209 if os.path.exists(filename):
210 bb.error("Content of /etc/passwd in sysroot:\n{}".format(
211 open(filename).read()))
212 else:
213 bb.error("File {} doesn't exist in sysroot!".format(filename))
210 raise e 214 raise e
211 try: 215 try:
212 group = grp.getgrgid(stat_f.st_gid).gr_name 216 group = grp.getgrgid(stat_f.st_gid).gr_name
213 except Exception as e: 217 except Exception as e:
214 bb.error("Content of /etc/group in sysroot:\n{}".format( 218 filename = d.getVar("RECIPE_SYSROOT") +"/etc/group"
215 open(d.getVar("RECIPE_SYSROOT") +"/etc/group").read())) 219 if os.path.exists(filename):
220 bb.error("Content of /etc/group in sysroot:\n{}".format(
221 open(filename).read()))
222 else:
223 bb.error("File {} doesn't exists in sysroot!".format(filename))
216 raise e 224 raise e
217 return "%attr({:o},{},{}) ".format(mode, owner, group) 225 return "%attr({:o},{},{}) ".format(mode, owner, group)
218 226
@@ -705,6 +713,7 @@ python do_package_rpm () {
705 cmd = cmd + " --define '_use_internal_dependency_generator 0'" 713 cmd = cmd + " --define '_use_internal_dependency_generator 0'"
706 cmd = cmd + " --define '_binaries_in_noarch_packages_terminate_build 0'" 714 cmd = cmd + " --define '_binaries_in_noarch_packages_terminate_build 0'"
707 cmd = cmd + " --define '_build_id_links none'" 715 cmd = cmd + " --define '_build_id_links none'"
716 cmd = cmd + " --define '_smp_ncpus_max 4'"
708 cmd = cmd + " --define '_source_payload %s'" % rpmbuild_compmode 717 cmd = cmd + " --define '_source_payload %s'" % rpmbuild_compmode
709 cmd = cmd + " --define '_binary_payload %s'" % rpmbuild_compmode 718 cmd = cmd + " --define '_binary_payload %s'" % rpmbuild_compmode
710 cmd = cmd + " --define 'clamp_mtime_to_source_date_epoch 1'" 719 cmd = cmd + " --define 'clamp_mtime_to_source_date_epoch 1'"
diff --git a/meta/classes-global/sanity.bbclass b/meta/classes-global/sanity.bbclass
index 1d242f0f0a..a0b2508e11 100644
--- a/meta/classes-global/sanity.bbclass
+++ b/meta/classes-global/sanity.bbclass
@@ -475,6 +475,31 @@ def check_wsl(d):
475 bb.warn("You are running bitbake under WSLv2, this works properly but you should optimize your VHDX file eventually to avoid running out of storage space") 475 bb.warn("You are running bitbake under WSLv2, this works properly but you should optimize your VHDX file eventually to avoid running out of storage space")
476 return None 476 return None
477 477
478def check_userns():
479 """
480 Check that user namespaces are functional, as they're used for network isolation.
481 """
482
483 # There is a known failure case with AppAmrmor where the unshare() call
484 # succeeds (at which point the uid is nobody) but writing to the uid_map
485 # fails (so the uid isn't reset back to the user's uid). We can detect this.
486 parentuid = os.getuid()
487 if not bb.utils.is_local_uid(parentuid):
488 return None
489 pid = os.fork()
490 if not pid:
491 try:
492 bb.utils.disable_network()
493 except:
494 pass
495 os._exit(parentuid != os.getuid())
496
497 ret = os.waitpid(pid, 0)[1]
498 if ret:
499 bb.fatal("User namespaces are not usable by BitBake, possibly due to AppArmor.\n"
500 "See https://discourse.ubuntu.com/t/ubuntu-24-04-lts-noble-numbat-release-notes/39890#unprivileged-user-namespace-restrictions for more information.")
501
502
478# Require at least gcc version 8.0 503# Require at least gcc version 8.0
479# 504#
480# This can be fixed on CentOS-7 with devtoolset-6+ 505# This can be fixed on CentOS-7 with devtoolset-6+
@@ -641,6 +666,7 @@ def check_sanity_version_change(status, d):
641 status.addresult(check_git_version(d)) 666 status.addresult(check_git_version(d))
642 status.addresult(check_perl_modules(d)) 667 status.addresult(check_perl_modules(d))
643 status.addresult(check_wsl(d)) 668 status.addresult(check_wsl(d))
669 status.addresult(check_userns())
644 670
645 missing = "" 671 missing = ""
646 672
diff --git a/meta/classes-global/sstate.bbclass b/meta/classes-global/sstate.bbclass
index 93df5fa9e6..567797305f 100644
--- a/meta/classes-global/sstate.bbclass
+++ b/meta/classes-global/sstate.bbclass
@@ -648,15 +648,6 @@ def sstate_package(ss, d):
648 648
649 tmpdir = d.getVar('TMPDIR') 649 tmpdir = d.getVar('TMPDIR')
650 650
651 fixtime = False
652 if ss['task'] == "package":
653 fixtime = True
654
655 def fixtimestamp(root, path):
656 f = os.path.join(root, path)
657 if os.lstat(f).st_mtime > sde:
658 os.utime(f, (sde, sde), follow_symlinks=False)
659
660 sstatebuild = d.expand("${WORKDIR}/sstate-build-%s/" % ss['task']) 651 sstatebuild = d.expand("${WORKDIR}/sstate-build-%s/" % ss['task'])
661 sde = int(d.getVar("SOURCE_DATE_EPOCH") or time.time()) 652 sde = int(d.getVar("SOURCE_DATE_EPOCH") or time.time())
662 d.setVar("SSTATE_CURRTASK", ss['task']) 653 d.setVar("SSTATE_CURRTASK", ss['task'])
@@ -671,8 +662,6 @@ def sstate_package(ss, d):
671 # to sstate tasks but there aren't many of these so better just avoid them entirely. 662 # to sstate tasks but there aren't many of these so better just avoid them entirely.
672 for walkroot, dirs, files in os.walk(state[1]): 663 for walkroot, dirs, files in os.walk(state[1]):
673 for file in files + dirs: 664 for file in files + dirs:
674 if fixtime:
675 fixtimestamp(walkroot, file)
676 srcpath = os.path.join(walkroot, file) 665 srcpath = os.path.join(walkroot, file)
677 if not os.path.islink(srcpath): 666 if not os.path.islink(srcpath):
678 continue 667 continue
@@ -694,11 +683,6 @@ def sstate_package(ss, d):
694 bb.utils.mkdirhier(plain) 683 bb.utils.mkdirhier(plain)
695 bb.utils.mkdirhier(pdir) 684 bb.utils.mkdirhier(pdir)
696 bb.utils.rename(plain, pdir) 685 bb.utils.rename(plain, pdir)
697 if fixtime:
698 fixtimestamp(pdir, "")
699 for walkroot, dirs, files in os.walk(pdir):
700 for file in files + dirs:
701 fixtimestamp(walkroot, file)
702 686
703 d.setVar('SSTATE_BUILDDIR', sstatebuild) 687 d.setVar('SSTATE_BUILDDIR', sstatebuild)
704 d.setVar('SSTATE_INSTDIR', sstatebuild) 688 d.setVar('SSTATE_INSTDIR', sstatebuild)
diff --git a/meta/classes-recipe/cmake.bbclass b/meta/classes-recipe/cmake.bbclass
index 3d3781ef33..e8aca0db8b 100644
--- a/meta/classes-recipe/cmake.bbclass
+++ b/meta/classes-recipe/cmake.bbclass
@@ -67,6 +67,8 @@ EXTRA_OECMAKE:append = " ${PACKAGECONFIG_CONFARGS}"
67export CMAKE_BUILD_PARALLEL_LEVEL 67export CMAKE_BUILD_PARALLEL_LEVEL
68CMAKE_BUILD_PARALLEL_LEVEL:task-compile = "${@oe.utils.parallel_make(d, False)}" 68CMAKE_BUILD_PARALLEL_LEVEL:task-compile = "${@oe.utils.parallel_make(d, False)}"
69CMAKE_BUILD_PARALLEL_LEVEL:task-install = "${@oe.utils.parallel_make(d, True)}" 69CMAKE_BUILD_PARALLEL_LEVEL:task-install = "${@oe.utils.parallel_make(d, True)}"
70CMAKE_BUILD_PARALLEL_LEVEL:task-compile-ptest-base = "${@oe.utils.parallel_make(d, False)}"
71CMAKE_BUILD_PARALLEL_LEVEL:task-install-ptest-base = "${@oe.utils.parallel_make(d, True)}"
70 72
71OECMAKE_TARGET_COMPILE ?= "all" 73OECMAKE_TARGET_COMPILE ?= "all"
72OECMAKE_TARGET_INSTALL ?= "install" 74OECMAKE_TARGET_INSTALL ?= "install"
diff --git a/meta/classes-recipe/cml1.bbclass b/meta/classes-recipe/cml1.bbclass
index 03e5fe6f47..456305a315 100644
--- a/meta/classes-recipe/cml1.bbclass
+++ b/meta/classes-recipe/cml1.bbclass
@@ -93,10 +93,9 @@ python do_diffconfig() {
93 93
94 if isdiff: 94 if isdiff:
95 statement = 'diff --unchanged-line-format= --old-line-format= --new-line-format="%L" ' + configorig + ' ' + config + '>' + fragment 95 statement = 'diff --unchanged-line-format= --old-line-format= --new-line-format="%L" ' + configorig + ' ' + config + '>' + fragment
96 subprocess.call(statement, shell=True)
97 # No need to check the exit code as we know it's going to be 96 # No need to check the exit code as we know it's going to be
98 # non-zero, but that's what we expect. 97 # non-zero, but that's what we expect.
99 shutil.copy(configorig, config) 98 subprocess.call(statement, shell=True)
100 99
101 bb.plain("Config fragment has been dumped into:\n %s" % fragment) 100 bb.plain("Config fragment has been dumped into:\n %s" % fragment)
102 else: 101 else:
diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass
index 28be6c6362..1f0ee1861e 100644
--- a/meta/classes-recipe/image.bbclass
+++ b/meta/classes-recipe/image.bbclass
@@ -303,28 +303,22 @@ addtask do_image_complete_setscene
303# IMAGE_QA_COMMANDS += " \ 303# IMAGE_QA_COMMANDS += " \
304# image_check_everything_ok \ 304# image_check_everything_ok \
305# " 305# "
306#
306# This task runs all functions in IMAGE_QA_COMMANDS after the rootfs 307# This task runs all functions in IMAGE_QA_COMMANDS after the rootfs
307# construction has completed in order to validate the resulting image. 308# construction has completed in order to validate the resulting image.
308# 309#
309# The functions should use ${IMAGE_ROOTFS} to find the unpacked rootfs 310# The functions should use ${IMAGE_ROOTFS} to find the unpacked rootfs
310# directory, which if QA passes will be the basis for the images. 311# directory, which if QA passes will be the basis for the images.
312#
313# The functions are expected to call oe.qa.handle_error() to report any
314# problems.
311fakeroot python do_image_qa () { 315fakeroot python do_image_qa () {
312 from oe.utils import ImageQAFailed
313
314 qa_cmds = (d.getVar('IMAGE_QA_COMMANDS') or '').split() 316 qa_cmds = (d.getVar('IMAGE_QA_COMMANDS') or '').split()
315 qamsg = ""
316 317
317 for cmd in qa_cmds: 318 for cmd in qa_cmds:
318 try: 319 bb.build.exec_func(cmd, d)
319 bb.build.exec_func(cmd, d) 320
320 except oe.utils.ImageQAFailed as e: 321 oe.qa.exit_if_errors(d)
321 qamsg = qamsg + '\tImage QA function %s failed: %s\n' % (e.name, e.description)
322 except Exception as e:
323 qamsg = qamsg + '\tImage QA function %s failed: %s\n' % (cmd, e)
324
325 if qamsg:
326 imgname = d.getVar('IMAGE_NAME')
327 bb.fatal("QA errors found whilst validating image: %s\n%s" % (imgname, qamsg))
328} 322}
329addtask do_image_qa after do_rootfs before do_image 323addtask do_image_qa after do_rootfs before do_image
330 324
diff --git a/meta/classes-recipe/kernel-arch.bbclass b/meta/classes-recipe/kernel-arch.bbclass
index b32f6137a2..36a6e0a60a 100644
--- a/meta/classes-recipe/kernel-arch.bbclass
+++ b/meta/classes-recipe/kernel-arch.bbclass
@@ -71,7 +71,13 @@ HOST_AR_KERNEL_ARCH ?= "${TARGET_AR_KERNEL_ARCH}"
71TARGET_OBJCOPY_KERNEL_ARCH ?= "" 71TARGET_OBJCOPY_KERNEL_ARCH ?= ""
72HOST_OBJCOPY_KERNEL_ARCH ?= "${TARGET_OBJCOPY_KERNEL_ARCH}" 72HOST_OBJCOPY_KERNEL_ARCH ?= "${TARGET_OBJCOPY_KERNEL_ARCH}"
73 73
74KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_KERNEL_ARCH} -fuse-ld=bfd ${DEBUG_PREFIX_MAP} -fdebug-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} -fdebug-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH}" 74KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_KERNEL_ARCH} \
75 -fuse-ld=bfd ${DEBUG_PREFIX_MAP} \
76 -fdebug-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \
77 -fmacro-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH} \
78 -fdebug-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \
79 -fmacro-prefix-map=${STAGING_KERNEL_BUILDDIR}=${KERNEL_SRC_PATH} \
80"
75KERNEL_LD = "${HOST_PREFIX}ld.bfd ${HOST_LD_KERNEL_ARCH}" 81KERNEL_LD = "${HOST_PREFIX}ld.bfd ${HOST_LD_KERNEL_ARCH}"
76KERNEL_AR = "${HOST_PREFIX}ar ${HOST_AR_KERNEL_ARCH}" 82KERNEL_AR = "${HOST_PREFIX}ar ${HOST_AR_KERNEL_ARCH}"
77KERNEL_OBJCOPY = "${HOST_PREFIX}objcopy ${HOST_OBJCOPY_KERNEL_ARCH}" 83KERNEL_OBJCOPY = "${HOST_PREFIX}objcopy ${HOST_OBJCOPY_KERNEL_ARCH}"
diff --git a/meta/classes-recipe/kernel-fitimage.bbclass b/meta/classes-recipe/kernel-fitimage.bbclass
index 18ab17bd2c..3e20c3248b 100644
--- a/meta/classes-recipe/kernel-fitimage.bbclass
+++ b/meta/classes-recipe/kernel-fitimage.bbclass
@@ -5,6 +5,7 @@
5# 5#
6 6
7inherit kernel-uboot kernel-artifact-names uboot-config 7inherit kernel-uboot kernel-artifact-names uboot-config
8require conf/image-fitimage.conf
8 9
9def get_fit_replacement_type(d): 10def get_fit_replacement_type(d):
10 kerneltypes = d.getVar('KERNEL_IMAGETYPES') or "" 11 kerneltypes = d.getVar('KERNEL_IMAGETYPES') or ""
@@ -52,58 +53,6 @@ python __anonymous () {
52 d.setVar('EXTERNAL_KERNEL_DEVICETREE', "${RECIPE_SYSROOT}/boot/devicetree") 53 d.setVar('EXTERNAL_KERNEL_DEVICETREE', "${RECIPE_SYSROOT}/boot/devicetree")
53} 54}
54 55
55
56# Description string
57FIT_DESC ?= "Kernel fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
58
59# Kernel fitImage Hash Algo
60FIT_HASH_ALG ?= "sha256"
61
62# Kernel fitImage Signature Algo
63FIT_SIGN_ALG ?= "rsa2048"
64
65# Kernel / U-Boot fitImage Padding Algo
66FIT_PAD_ALG ?= "pkcs-1.5"
67
68# Generate keys for signing Kernel fitImage
69FIT_GENERATE_KEYS ?= "0"
70
71# Size of private keys in number of bits
72FIT_SIGN_NUMBITS ?= "2048"
73
74# args to openssl genrsa (Default is just the public exponent)
75FIT_KEY_GENRSA_ARGS ?= "-F4"
76
77# args to openssl req (Default is -batch for non interactive mode and
78# -new for new certificate)
79FIT_KEY_REQ_ARGS ?= "-batch -new"
80
81# Standard format for public key certificate
82FIT_KEY_SIGN_PKCS ?= "-x509"
83
84# Sign individual images as well
85FIT_SIGN_INDIVIDUAL ?= "0"
86
87FIT_CONF_PREFIX ?= "conf-"
88FIT_CONF_PREFIX[doc] = "Prefix to use for FIT configuration node name"
89
90FIT_SUPPORTED_INITRAMFS_FSTYPES ?= "cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.zst cpio.gz ext2.gz cpio"
91
92# Allow user to select the default DTB for FIT image when multiple dtb's exists.
93FIT_CONF_DEFAULT_DTB ?= ""
94
95# length of address in number of <u32> cells
96# ex: 1 32bits address, 2 64bits address
97FIT_ADDRESS_CELLS ?= "1"
98
99# Keys used to sign individually image nodes.
100# The keys to sign image nodes must be different from those used to sign
101# configuration nodes, otherwise the "required" property, from
102# UBOOT_DTB_BINARY, will be set to "conf", because "conf" prevails on "image".
103# Then the images signature checking will not be mandatory and no error will be
104# raised in case of failure.
105# UBOOT_SIGN_IMG_KEYNAME = "dev2" # keys name in keydir (eg. "dev2.crt", "dev2.key")
106
107# 56#
108# Emit the fitImage ITS header 57# Emit the fitImage ITS header
109# 58#
diff --git a/meta/classes-recipe/module.bbclass b/meta/classes-recipe/module.bbclass
index f2f0b25a2d..4948e995c5 100644
--- a/meta/classes-recipe/module.bbclass
+++ b/meta/classes-recipe/module.bbclass
@@ -65,6 +65,7 @@ module_do_install() {
65 CC="${KERNEL_CC}" LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" \ 65 CC="${KERNEL_CC}" LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" \
66 STRIP="${KERNEL_STRIP}" \ 66 STRIP="${KERNEL_STRIP}" \
67 O=${STAGING_KERNEL_BUILDDIR} \ 67 O=${STAGING_KERNEL_BUILDDIR} \
68 KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" \
68 ${MODULES_INSTALL_TARGET} 69 ${MODULES_INSTALL_TARGET}
69 70
70 if [ ! -e "${B}/${MODULES_MODULE_SYMVERS_LOCATION}/Module.symvers" ] ; then 71 if [ ! -e "${B}/${MODULES_MODULE_SYMVERS_LOCATION}/Module.symvers" ] ; then
diff --git a/meta/classes-recipe/nativesdk.bbclass b/meta/classes-recipe/nativesdk.bbclass
index de6debda93..83ea901fa5 100644
--- a/meta/classes-recipe/nativesdk.bbclass
+++ b/meta/classes-recipe/nativesdk.bbclass
@@ -32,6 +32,7 @@ RECIPE_SYSROOT = "${WORKDIR}/recipe-sysroot"
32# 32#
33PACKAGE_ARCH = "${SDK_ARCH}-${SDKPKGSUFFIX}" 33PACKAGE_ARCH = "${SDK_ARCH}-${SDKPKGSUFFIX}"
34PACKAGE_ARCHS = "${SDK_PACKAGE_ARCHS}" 34PACKAGE_ARCHS = "${SDK_PACKAGE_ARCHS}"
35TUNE_PKGARCH = "${SDK_ARCH}"
35 36
36# 37#
37# We need chrpath >= 0.14 to ensure we can deal with 32 and 64 bit 38# We need chrpath >= 0.14 to ensure we can deal with 32 and 64 bit
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass
index a103e7b738..5c738dbf2a 100644
--- a/meta/classes-recipe/populate_sdk_base.bbclass
+++ b/meta/classes-recipe/populate_sdk_base.bbclass
@@ -13,7 +13,7 @@ PACKAGES = ""
13# SDK processing context. This class happens to be common to these usages. 13# SDK processing context. This class happens to be common to these usages.
14SPDX_MULTILIB_SSTATE_ARCHS = "${@all_multilib_tune_values(d, 'SSTATE_ARCHS')}" 14SPDX_MULTILIB_SSTATE_ARCHS = "${@all_multilib_tune_values(d, 'SSTATE_ARCHS')}"
15 15
16inherit image-postinst-intercepts image-artifact-names 16inherit image-postinst-intercepts image-artifact-names nopackages
17 17
18# Wildcards specifying complementary packages to install for every package that has been explicitly 18# Wildcards specifying complementary packages to install for every package that has been explicitly
19# installed into the rootfs 19# installed into the rootfs
diff --git a/meta/classes-recipe/populate_sdk_ext.bbclass b/meta/classes-recipe/populate_sdk_ext.bbclass
index e76ef60720..662cc493ce 100644
--- a/meta/classes-recipe/populate_sdk_ext.bbclass
+++ b/meta/classes-recipe/populate_sdk_ext.bbclass
@@ -290,6 +290,8 @@ def copy_uninative(d, baseoutpath):
290 return uninative_checksum 290 return uninative_checksum
291 291
292def write_local_conf(d, baseoutpath, derivative, core_meta_subdir, uninative_checksum): 292def write_local_conf(d, baseoutpath, derivative, core_meta_subdir, uninative_checksum):
293 import shutil
294
293 #check if custome templateconf path is set 295 #check if custome templateconf path is set
294 use_custom_templateconf = d.getVar('SDK_CUSTOM_TEMPLATECONF') 296 use_custom_templateconf = d.getVar('SDK_CUSTOM_TEMPLATECONF')
295 297
diff --git a/meta/classes-recipe/qemu.bbclass b/meta/classes-recipe/qemu.bbclass
index dbb5ee0b66..8d7c82668b 100644
--- a/meta/classes-recipe/qemu.bbclass
+++ b/meta/classes-recipe/qemu.bbclass
@@ -60,8 +60,8 @@ def qemu_run_binary(data, rootfs_path, binary):
60# this dance). For others (e.g. arm) a -cpu option is not necessary, since the 60# this dance). For others (e.g. arm) a -cpu option is not necessary, since the
61# qemu-arm default CPU supports all required architecture levels. 61# qemu-arm default CPU supports all required architecture levels.
62 62
63QEMU_OPTIONS = "-r ${OLDEST_KERNEL} ${@d.getVar("QEMU_EXTRAOPTIONS_%s" % d.getVar('PACKAGE_ARCH')) or ""}" 63QEMU_OPTIONS = "-r ${OLDEST_KERNEL} ${@d.getVar("QEMU_EXTRAOPTIONS_%s" % d.getVar('TUNE_PKGARCH')) or ""}"
64QEMU_OPTIONS[vardeps] += "QEMU_EXTRAOPTIONS_${PACKAGE_ARCH}" 64QEMU_OPTIONS[vardeps] += "QEMU_EXTRAOPTIONS_${TUNE_PKGARCH}"
65 65
66QEMU_EXTRAOPTIONS_ppce500v2 = " -cpu e500v2" 66QEMU_EXTRAOPTIONS_ppce500v2 = " -cpu e500v2"
67QEMU_EXTRAOPTIONS_ppce500mc = " -cpu e500mc" 67QEMU_EXTRAOPTIONS_ppce500mc = " -cpu e500mc"
@@ -71,7 +71,3 @@ QEMU_EXTRAOPTIONS_ppce6500 = " -cpu e500mc"
71QEMU_EXTRAOPTIONS_ppc64e6500 = " -cpu e500mc" 71QEMU_EXTRAOPTIONS_ppc64e6500 = " -cpu e500mc"
72QEMU_EXTRAOPTIONS_ppc7400 = " -cpu 7400" 72QEMU_EXTRAOPTIONS_ppc7400 = " -cpu 7400"
73QEMU_EXTRAOPTIONS_powerpc64le = " -cpu POWER9" 73QEMU_EXTRAOPTIONS_powerpc64le = " -cpu POWER9"
74# Some packages e.g. fwupd sets PACKAGE_ARCH = MACHINE_ARCH and uses meson which
75# needs right options to usermode qemu
76QEMU_EXTRAOPTIONS_qemuppc = " -cpu 7400"
77QEMU_EXTRAOPTIONS_qemuppc64 = " -cpu POWER9"
diff --git a/meta/classes-recipe/rootfs-postcommands.bbclass b/meta/classes-recipe/rootfs-postcommands.bbclass
index 920da94ba2..5f4d67f93c 100644
--- a/meta/classes-recipe/rootfs-postcommands.bbclass
+++ b/meta/classes-recipe/rootfs-postcommands.bbclass
@@ -487,6 +487,10 @@ rootfs_reproducible () {
487 find ${IMAGE_ROOTFS}${sysconfdir}/gconf -name '%gconf.xml' -print0 | xargs -0r \ 487 find ${IMAGE_ROOTFS}${sysconfdir}/gconf -name '%gconf.xml' -print0 | xargs -0r \
488 sed -i -e 's@\bmtime="[0-9][0-9]*"@mtime="'${REPRODUCIBLE_TIMESTAMP_ROOTFS}'"@g' 488 sed -i -e 's@\bmtime="[0-9][0-9]*"@mtime="'${REPRODUCIBLE_TIMESTAMP_ROOTFS}'"@g'
489 fi 489 fi
490
491 if [ -f ${IMAGE_ROOTFS}${localstatedir}/lib/opkg/status ]; then
492 sed -i 's/^Installed-Time: .*/Installed-Time: ${REPRODUCIBLE_TIMESTAMP_ROOTFS}/' ${IMAGE_ROOTFS}${localstatedir}/lib/opkg/status
493 fi
490 fi 494 fi
491} 495}
492 496
diff --git a/meta/classes-recipe/rust-common.bbclass b/meta/classes-recipe/rust-common.bbclass
index 6940093e59..b4b70574a2 100644
--- a/meta/classes-recipe/rust-common.bbclass
+++ b/meta/classes-recipe/rust-common.bbclass
@@ -13,7 +13,7 @@ FILES:${PN} += "${rustlibdir}/*.so"
13FILES:${PN}-dev += "${rustlibdir}/*.rlib ${rustlibdir}/*.rmeta" 13FILES:${PN}-dev += "${rustlibdir}/*.rlib ${rustlibdir}/*.rmeta"
14FILES:${PN}-dbg += "${rustlibdir}/.debug" 14FILES:${PN}-dbg += "${rustlibdir}/.debug"
15 15
16RUSTLIB = "-L ${STAGING_DIR_HOST}${rustlibdir}" 16RUSTLIB ?= "-L ${STAGING_DIR_HOST}${rustlibdir}"
17RUST_DEBUG_REMAP = "--remap-path-prefix=${WORKDIR}=${TARGET_DBGSRC_DIR}" 17RUST_DEBUG_REMAP = "--remap-path-prefix=${WORKDIR}=${TARGET_DBGSRC_DIR}"
18RUSTFLAGS += "${RUSTLIB} ${RUST_DEBUG_REMAP}" 18RUSTFLAGS += "${RUSTLIB} ${RUST_DEBUG_REMAP}"
19RUSTLIB_DEP ??= "libstd-rs" 19RUSTLIB_DEP ??= "libstd-rs"
diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass
index 926b0630b1..1bd7626bd8 100644
--- a/meta/classes-recipe/rust-target-config.bbclass
+++ b/meta/classes-recipe/rust-target-config.bbclass
@@ -195,7 +195,7 @@ MAX_ATOMIC_WIDTH[mipsel] = "32"
195DATA_LAYOUT[mips64] = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128" 195DATA_LAYOUT[mips64] = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
196TARGET_ENDIAN[mips64] = "big" 196TARGET_ENDIAN[mips64] = "big"
197TARGET_POINTER_WIDTH[mips64] = "64" 197TARGET_POINTER_WIDTH[mips64] = "64"
198TARGET_C_INT_WIDTH[mips64] = "64" 198TARGET_C_INT_WIDTH[mips64] = "32"
199MAX_ATOMIC_WIDTH[mips64] = "64" 199MAX_ATOMIC_WIDTH[mips64] = "64"
200 200
201## mips64-n32-unknown-linux-{gnu, musl} 201## mips64-n32-unknown-linux-{gnu, musl}
@@ -209,7 +209,7 @@ MAX_ATOMIC_WIDTH[mips64-n32] = "64"
209DATA_LAYOUT[mips64el] = "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128" 209DATA_LAYOUT[mips64el] = "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
210TARGET_ENDIAN[mips64el] = "little" 210TARGET_ENDIAN[mips64el] = "little"
211TARGET_POINTER_WIDTH[mips64el] = "64" 211TARGET_POINTER_WIDTH[mips64el] = "64"
212TARGET_C_INT_WIDTH[mips64el] = "64" 212TARGET_C_INT_WIDTH[mips64el] = "32"
213MAX_ATOMIC_WIDTH[mips64el] = "64" 213MAX_ATOMIC_WIDTH[mips64el] = "64"
214 214
215## powerpc-unknown-linux-{gnu, musl} 215## powerpc-unknown-linux-{gnu, musl}
@@ -223,14 +223,14 @@ MAX_ATOMIC_WIDTH[powerpc] = "32"
223DATA_LAYOUT[powerpc64] = "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512" 223DATA_LAYOUT[powerpc64] = "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512"
224TARGET_ENDIAN[powerpc64] = "big" 224TARGET_ENDIAN[powerpc64] = "big"
225TARGET_POINTER_WIDTH[powerpc64] = "64" 225TARGET_POINTER_WIDTH[powerpc64] = "64"
226TARGET_C_INT_WIDTH[powerpc64] = "64" 226TARGET_C_INT_WIDTH[powerpc64] = "32"
227MAX_ATOMIC_WIDTH[powerpc64] = "64" 227MAX_ATOMIC_WIDTH[powerpc64] = "64"
228 228
229## powerpc64le-unknown-linux-{gnu, musl} 229## powerpc64le-unknown-linux-{gnu, musl}
230DATA_LAYOUT[powerpc64le] = "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512" 230DATA_LAYOUT[powerpc64le] = "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512"
231TARGET_ENDIAN[powerpc64le] = "little" 231TARGET_ENDIAN[powerpc64le] = "little"
232TARGET_POINTER_WIDTH[powerpc64le] = "64" 232TARGET_POINTER_WIDTH[powerpc64le] = "64"
233TARGET_C_INT_WIDTH[powerpc64le] = "64" 233TARGET_C_INT_WIDTH[powerpc64le] = "32"
234MAX_ATOMIC_WIDTH[powerpc64le] = "64" 234MAX_ATOMIC_WIDTH[powerpc64le] = "64"
235 235
236## riscv32gc-unknown-linux-{gnu, musl} 236## riscv32gc-unknown-linux-{gnu, musl}
@@ -244,7 +244,7 @@ MAX_ATOMIC_WIDTH[riscv32gc] = "32"
244DATA_LAYOUT[riscv64gc] = "e-m:e-p:64:64-i64:64-i128:128-n64-S128" 244DATA_LAYOUT[riscv64gc] = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
245TARGET_ENDIAN[riscv64gc] = "little" 245TARGET_ENDIAN[riscv64gc] = "little"
246TARGET_POINTER_WIDTH[riscv64gc] = "64" 246TARGET_POINTER_WIDTH[riscv64gc] = "64"
247TARGET_C_INT_WIDTH[riscv64gc] = "64" 247TARGET_C_INT_WIDTH[riscv64gc] = "32"
248MAX_ATOMIC_WIDTH[riscv64gc] = "64" 248MAX_ATOMIC_WIDTH[riscv64gc] = "64"
249 249
250## loongarch64-unknown-linux-{gnu, musl} 250## loongarch64-unknown-linux-{gnu, musl}
diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass
index 954c213912..33b1c13f9d 100644
--- a/meta/classes-recipe/testimage.bbclass
+++ b/meta/classes-recipe/testimage.bbclass
@@ -25,7 +25,9 @@ TESTIMAGE_AUTO ??= "0"
25TESTIMAGE_FAILED_QA_ARTIFACTS = "\ 25TESTIMAGE_FAILED_QA_ARTIFACTS = "\
26 ${localstatedir}/log \ 26 ${localstatedir}/log \
27 ${sysconfdir}/version \ 27 ${sysconfdir}/version \
28 ${sysconfdir}/os-release" 28 ${sysconfdir}/os-release \
29 ${nonarch_libdir}/os-release \
30"
29 31
30# If some ptests are run and fail, retrieve corresponding directories 32# If some ptests are run and fail, retrieve corresponding directories
31TESTIMAGE_FAILED_QA_ARTIFACTS += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${libdir}/${MCNAME}/ptest', '', d)}" 33TESTIMAGE_FAILED_QA_ARTIFACTS += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${libdir}/${MCNAME}/ptest', '', d)}"
diff --git a/meta/classes-recipe/uboot-config.bbclass b/meta/classes-recipe/uboot-config.bbclass
index e55fc38b7c..bf21961977 100644
--- a/meta/classes-recipe/uboot-config.bbclass
+++ b/meta/classes-recipe/uboot-config.bbclass
@@ -101,12 +101,12 @@ python () {
101 # The "doc" varflag is special, we don't want to see it here 101 # The "doc" varflag is special, we don't want to see it here
102 ubootconfigflags.pop('doc', None) 102 ubootconfigflags.pop('doc', None)
103 ubootconfig = (d.getVar('UBOOT_CONFIG') or "").split() 103 ubootconfig = (d.getVar('UBOOT_CONFIG') or "").split()
104 recipename = d.getVar("PN")
104 105
105 if not ubootmachine and not ubootconfig: 106 if not ubootmachine and not ubootconfig:
106 PN = d.getVar("PN")
107 FILE = os.path.basename(d.getVar("FILE")) 107 FILE = os.path.basename(d.getVar("FILE"))
108 bb.debug(1, "To build %s, see %s for instructions on \ 108 bb.debug(1, "To build %s, see %s for instructions on \
109 setting up your machine config" % (PN, FILE)) 109 setting up your machine config" % (recipename, FILE))
110 raise bb.parse.SkipRecipe("Either UBOOT_MACHINE or UBOOT_CONFIG must be set in the %s machine configuration." % d.getVar("MACHINE")) 110 raise bb.parse.SkipRecipe("Either UBOOT_MACHINE or UBOOT_CONFIG must be set in the %s machine configuration." % d.getVar("MACHINE"))
111 111
112 if ubootmachine and ubootconfig: 112 if ubootmachine and ubootconfig:
@@ -140,9 +140,12 @@ python () {
140 if not found: 140 if not found:
141 raise bb.parse.SkipRecipe("The selected UBOOT_CONFIG key %s has no match in %s." % (ubootconfig, ubootconfigflags.keys())) 141 raise bb.parse.SkipRecipe("The selected UBOOT_CONFIG key %s has no match in %s." % (ubootconfig, ubootconfigflags.keys()))
142 142
143 if len(ubootconfig) == 1: 143 # This recipe might be inherited e.g. by the kernel recipe via kernel-fitimage.bbclass
144 d.setVar('KCONFIG_CONFIG_ROOTDIR', os.path.join(d.getVar("B"), d.getVar("UBOOT_MACHINE").strip())) 144 # Ensure the uboot specific menuconfig settings do not leak into other recipes
145 else: 145 if 'u-boot' in recipename:
146 # Disable menuconfig for multiple configs 146 if len(ubootconfig) == 1:
147 d.setVar('KCONFIG_CONFIG_ENABLE_MENUCONFIG', "false") 147 d.setVar('KCONFIG_CONFIG_ROOTDIR', os.path.join(d.getVar("B"), d.getVar("UBOOT_MACHINE").strip()))
148 else:
149 # Disable menuconfig for multiple configs
150 d.setVar('KCONFIG_CONFIG_ENABLE_MENUCONFIG', "false")
148} 151}
diff --git a/meta/classes-recipe/uboot-sign.bbclass b/meta/classes-recipe/uboot-sign.bbclass
index c8e097f2f2..699db248e1 100644
--- a/meta/classes-recipe/uboot-sign.bbclass
+++ b/meta/classes-recipe/uboot-sign.bbclass
@@ -26,6 +26,7 @@
26 26
27# We need some variables from u-boot-config 27# We need some variables from u-boot-config
28inherit uboot-config 28inherit uboot-config
29require conf/image-fitimage.conf
29 30
30# Enable use of a U-Boot fitImage 31# Enable use of a U-Boot fitImage
31UBOOT_FITIMAGE_ENABLE ?= "0" 32UBOOT_FITIMAGE_ENABLE ?= "0"
@@ -85,9 +86,6 @@ UBOOT_FIT_KEY_SIGN_PKCS ?= "-x509"
85# ex: 1 32bits address, 2 64bits address 86# ex: 1 32bits address, 2 64bits address
86UBOOT_FIT_ADDRESS_CELLS ?= "1" 87UBOOT_FIT_ADDRESS_CELLS ?= "1"
87 88
88# This is only necessary for determining the signing configuration
89KERNEL_PN = "${PREFERRED_PROVIDER_virtual/kernel}"
90
91UBOOT_FIT_UBOOT_LOADADDRESS ?= "${UBOOT_LOADADDRESS}" 89UBOOT_FIT_UBOOT_LOADADDRESS ?= "${UBOOT_LOADADDRESS}"
92UBOOT_FIT_UBOOT_ENTRYPOINT ?= "${UBOOT_ENTRYPOINT}" 90UBOOT_FIT_UBOOT_ENTRYPOINT ?= "${UBOOT_ENTRYPOINT}"
93 91
@@ -96,8 +94,8 @@ python() {
96 sign = d.getVar('UBOOT_SIGN_ENABLE') == '1' 94 sign = d.getVar('UBOOT_SIGN_ENABLE') == '1'
97 if d.getVar('UBOOT_FITIMAGE_ENABLE') == '1' or sign: 95 if d.getVar('UBOOT_FITIMAGE_ENABLE') == '1' or sign:
98 d.appendVar('DEPENDS', " u-boot-tools-native dtc-native") 96 d.appendVar('DEPENDS', " u-boot-tools-native dtc-native")
99 if sign: 97 if d.getVar('FIT_GENERATE_KEYS') == '1' and sign:
100 d.appendVar('DEPENDS', " " + d.getVar('KERNEL_PN')) 98 d.appendVarFlag('do_uboot_assemble_fitimage', 'depends', ' virtual/kernel:do_kernel_generate_rsa_keys')
101} 99}
102 100
103concat_dtb() { 101concat_dtb() {
@@ -105,17 +103,69 @@ concat_dtb() {
105 binary="$2" 103 binary="$2"
106 104
107 if [ -e "${UBOOT_DTB_BINARY}" ]; then 105 if [ -e "${UBOOT_DTB_BINARY}" ]; then
108 # Re-sign the kernel in order to add the keys to our dtb 106 # Signing individual images is not recommended as that
107 # makes fitImage susceptible to mix-and-match attack.
108 #
109 # OE FIT_SIGN_INDIVIDUAL is implemented in an unusual manner,
110 # where the resulting signed fitImage contains both signed
111 # images and signed configurations. This is redundant. In
112 # order to prevent mix-and-match attack, it is sufficient
113 # to sign configurations. The FIT_SIGN_INDIVIDUAL = "1"
114 # support is kept to avoid breakage of existing layers, but
115 # it is highly recommended to avoid FIT_SIGN_INDIVIDUAL = "1",
116 # i.e. set FIT_SIGN_INDIVIDUAL = "0" .
117 if [ "${FIT_SIGN_INDIVIDUAL}" = "1" ] ; then
118 # Sign dummy image images in order to
119 # add the image signing keys to our dtb
120 ${UBOOT_MKIMAGE_SIGN} \
121 ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
122 -f auto \
123 -k "${UBOOT_SIGN_KEYDIR}" \
124 -o "${FIT_HASH_ALG},${FIT_SIGN_ALG}" \
125 -g "${UBOOT_SIGN_IMG_KEYNAME}" \
126 -K "${UBOOT_DTB_BINARY}" \
127 -d /dev/null \
128 -r ${B}/unused.itb \
129 ${UBOOT_MKIMAGE_SIGN_ARGS}
130 fi
131
132 # Sign dummy image configurations in order to
133 # add the configuration signing keys to our dtb
109 ${UBOOT_MKIMAGE_SIGN} \ 134 ${UBOOT_MKIMAGE_SIGN} \
110 ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \ 135 ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
111 -F -k "${UBOOT_SIGN_KEYDIR}" \ 136 -f auto-conf \
137 -k "${UBOOT_SIGN_KEYDIR}" \
138 -o "${FIT_HASH_ALG},${FIT_SIGN_ALG}" \
139 -g "${UBOOT_SIGN_KEYNAME}" \
112 -K "${UBOOT_DTB_BINARY}" \ 140 -K "${UBOOT_DTB_BINARY}" \
113 -r ${B}/fitImage-linux \ 141 -d /dev/null \
142 -r ${B}/unused.itb \
114 ${UBOOT_MKIMAGE_SIGN_ARGS} 143 ${UBOOT_MKIMAGE_SIGN_ARGS}
115 # Verify the kernel image and u-boot dtb 144
116 ${UBOOT_FIT_CHECK_SIGN} \ 145 # Verify the dummy fitImage signature against u-boot.dtb
117 -k "${UBOOT_DTB_BINARY}" \ 146 # augmented using public key material.
118 -f ${B}/fitImage-linux 147 #
148 # This only works for FIT_SIGN_INDIVIDUAL = "0", because
149 # mkimage -f auto-conf does not support -F to extend the
150 # existing unused.itb , and instead rewrites unused.itb
151 # from scratch.
152 #
153 # Using two separate unused.itb for mkimage -f auto and
154 # mkimage -f auto-conf invocation above would not help, as
155 # the signature verification process below checks whether
156 # all keys inserted into u-boot.dtb /signature node pass
157 # the verification. Separate unused.itb would each miss one
158 # of the signatures.
159 #
160 # The FIT_SIGN_INDIVIDUAL = "1" support is kept to avoid
161 # breakage of existing layers, but it is highly recommended
162 # to not use FIT_SIGN_INDIVIDUAL = "1", i.e. set
163 # FIT_SIGN_INDIVIDUAL = "0" .
164 if [ "${FIT_SIGN_INDIVIDUAL}" != "1" ] ; then
165 ${UBOOT_FIT_CHECK_SIGN} \
166 -k "${UBOOT_DTB_BINARY}" \
167 -f ${B}/unused.itb
168 fi
119 cp ${UBOOT_DTB_BINARY} ${UBOOT_DTB_SIGNED} 169 cp ${UBOOT_DTB_BINARY} ${UBOOT_DTB_SIGNED}
120 fi 170 fi
121 171
@@ -338,7 +388,7 @@ uboot_assemble_fitimage_helper() {
338 binary="$2" 388 binary="$2"
339 389
340 if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ] ; then 390 if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ] ; then
341 concat_dtb $type $binary 391 concat_dtb "$type" "$binary"
342 fi 392 fi
343 393
344 if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" -a -n "${SPL_DTB_BINARY}" ]; then 394 if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" -a -n "${SPL_DTB_BINARY}" ]; then
@@ -351,13 +401,10 @@ uboot_assemble_fitimage_helper() {
351} 401}
352 402
353do_uboot_assemble_fitimage() { 403do_uboot_assemble_fitimage() {
354 if [ "${UBOOT_SIGN_ENABLE}" = "1" ] ; then
355 cp "${STAGING_DIR_HOST}/sysroot-only/fitImage" "${B}/fitImage-linux"
356 fi
357
358 if [ -n "${UBOOT_CONFIG}" ]; then 404 if [ -n "${UBOOT_CONFIG}" ]; then
359 unset i j k 405 unset i
360 for config in ${UBOOT_MACHINE}; do 406 for config in ${UBOOT_MACHINE}; do
407 unset j k
361 i=$(expr $i + 1); 408 i=$(expr $i + 1);
362 for type in ${UBOOT_CONFIG}; do 409 for type in ${UBOOT_CONFIG}; do
363 j=$(expr $j + 1); 410 j=$(expr $j + 1);
diff --git a/meta/classes/cve-check.bbclass b/meta/classes/cve-check.bbclass
index 93a2a1413d..6b8376bf17 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -31,8 +31,9 @@
31CVE_PRODUCT ??= "${BPN}" 31CVE_PRODUCT ??= "${BPN}"
32CVE_VERSION ??= "${PV}" 32CVE_VERSION ??= "${PV}"
33 33
34CVE_CHECK_DB_DIR ?= "${DL_DIR}/CVE_CHECK" 34CVE_CHECK_DB_FILENAME ?= "nvdcve_2-2.db"
35CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvdcve_2-1.db" 35CVE_CHECK_DB_DIR ?= "${STAGING_DIR}/CVE_CHECK"
36CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/${CVE_CHECK_DB_FILENAME}"
36CVE_CHECK_DB_FILE_LOCK ?= "${CVE_CHECK_DB_FILE}.lock" 37CVE_CHECK_DB_FILE_LOCK ?= "${CVE_CHECK_DB_FILE}.lock"
37 38
38CVE_CHECK_LOG ?= "${T}/cve.log" 39CVE_CHECK_LOG ?= "${T}/cve.log"
@@ -198,7 +199,7 @@ python do_cve_check () {
198} 199}
199 200
200addtask cve_check before do_build 201addtask cve_check before do_build
201do_cve_check[depends] = "cve-update-nvd2-native:do_fetch" 202do_cve_check[depends] = "cve-update-nvd2-native:do_unpack"
202do_cve_check[nostamp] = "1" 203do_cve_check[nostamp] = "1"
203 204
204python cve_check_cleanup () { 205python cve_check_cleanup () {
@@ -269,24 +270,27 @@ python cve_check_write_rootfs_manifest () {
269 d.setVar("PN", save_pn) 270 d.setVar("PN", save_pn)
270 271
271 if enable_text: 272 if enable_text:
272 link_path = os.path.join(deploy_dir, "%s.cve" % link_name)
273 manifest_name = d.getVar("CVE_CHECK_MANIFEST") 273 manifest_name = d.getVar("CVE_CHECK_MANIFEST")
274 274
275 with open(manifest_name, "w") as f: 275 with open(manifest_name, "w") as f:
276 f.write(text_data) 276 f.write(text_data)
277 277
278 update_symlinks(manifest_name, link_path) 278 if link_name:
279 link_path = os.path.join(deploy_dir, "%s.cve" % link_name)
280 update_symlinks(manifest_name, link_path)
279 bb.plain("Image CVE report stored in: %s" % manifest_name) 281 bb.plain("Image CVE report stored in: %s" % manifest_name)
280 282
281 if enable_json: 283 if enable_json:
282 manifest_name_suffix = d.getVar("CVE_CHECK_MANIFEST_JSON_SUFFIX") 284 manifest_name_suffix = d.getVar("CVE_CHECK_MANIFEST_JSON_SUFFIX")
283 link_path = os.path.join(deploy_dir, "%s.%s" % (link_name, manifest_name_suffix))
284 manifest_name = d.getVar("CVE_CHECK_MANIFEST_JSON") 285 manifest_name = d.getVar("CVE_CHECK_MANIFEST_JSON")
285 286
286 with open(manifest_name, "w") as f: 287 with open(manifest_name, "w") as f:
287 json.dump(json_data, f, indent=2) 288 json.dump(json_data, f, indent=2)
288 289
289 update_symlinks(manifest_name, link_path) 290 if link_name:
291 link_path = os.path.join(deploy_dir, "%s.%s" % (link_name, manifest_name_suffix))
292 update_symlinks(manifest_name, link_path)
293
290 bb.plain("Image CVE JSON report stored in: %s" % manifest_name) 294 bb.plain("Image CVE JSON report stored in: %s" % manifest_name)
291} 295}
292 296
@@ -447,9 +451,10 @@ def get_cve_info(d, cves):
447 cve_data[row[0]]["summary"] = row[1] 451 cve_data[row[0]]["summary"] = row[1]
448 cve_data[row[0]]["scorev2"] = row[2] 452 cve_data[row[0]]["scorev2"] = row[2]
449 cve_data[row[0]]["scorev3"] = row[3] 453 cve_data[row[0]]["scorev3"] = row[3]
450 cve_data[row[0]]["modified"] = row[4] 454 cve_data[row[0]]["scorev4"] = row[4]
451 cve_data[row[0]]["vector"] = row[5] 455 cve_data[row[0]]["modified"] = row[5]
452 cve_data[row[0]]["vectorString"] = row[6] 456 cve_data[row[0]]["vector"] = row[6]
457 cve_data[row[0]]["vectorString"] = row[7]
453 cursor.close() 458 cursor.close()
454 conn.close() 459 conn.close()
455 return cve_data 460 return cve_data
@@ -514,6 +519,7 @@ def cve_write_data_text(d, patched, unpatched, ignored, cve_data):
514 write_string += "CVE SUMMARY: %s\n" % cve_data[cve]["summary"] 519 write_string += "CVE SUMMARY: %s\n" % cve_data[cve]["summary"]
515 write_string += "CVSS v2 BASE SCORE: %s\n" % cve_data[cve]["scorev2"] 520 write_string += "CVSS v2 BASE SCORE: %s\n" % cve_data[cve]["scorev2"]
516 write_string += "CVSS v3 BASE SCORE: %s\n" % cve_data[cve]["scorev3"] 521 write_string += "CVSS v3 BASE SCORE: %s\n" % cve_data[cve]["scorev3"]
522 write_string += "CVSS v4 BASE SCORE: %s\n" % cve_data[cve]["scorev4"]
517 write_string += "VECTOR: %s\n" % cve_data[cve]["vector"] 523 write_string += "VECTOR: %s\n" % cve_data[cve]["vector"]
518 write_string += "VECTORSTRING: %s\n" % cve_data[cve]["vectorString"] 524 write_string += "VECTORSTRING: %s\n" % cve_data[cve]["vectorString"]
519 write_string += "MORE INFORMATION: %s%s\n\n" % (nvd_link, cve) 525 write_string += "MORE INFORMATION: %s%s\n\n" % (nvd_link, cve)
@@ -631,6 +637,7 @@ def cve_write_data_json(d, patched, unpatched, ignored, cve_data, cve_status):
631 "summary" : cve_data[cve]["summary"], 637 "summary" : cve_data[cve]["summary"],
632 "scorev2" : cve_data[cve]["scorev2"], 638 "scorev2" : cve_data[cve]["scorev2"],
633 "scorev3" : cve_data[cve]["scorev3"], 639 "scorev3" : cve_data[cve]["scorev3"],
640 "scorev4" : cve_data[cve]["scorev4"],
634 "vector" : cve_data[cve]["vector"], 641 "vector" : cve_data[cve]["vector"],
635 "vectorString" : cve_data[cve]["vectorString"], 642 "vectorString" : cve_data[cve]["vectorString"],
636 "status" : status, 643 "status" : status,
diff --git a/meta/conf/ccache.conf b/meta/conf/ccache.conf
index 4406ae561b..499e5327b8 100644
--- a/meta/conf/ccache.conf
+++ b/meta/conf/ccache.conf
@@ -1 +1,7 @@
1max_size = 0 1max_size = 0
2
3# Avoid spurious cache misses caused by recipe sysroot creation: Creating a
4# recipe sysroot hardlinks all dependent files into place. Hardlinking updates
5# the file's ctime which in turn interferes with ccache's include_file_ctime
6# check.
7sloppiness = include_file_ctime
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index baaf971a9a..3a51ad2139 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -190,7 +190,7 @@ RECIPE_MAINTAINER:pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <r
190RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>" 190RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
191RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>" 191RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>"
192RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>" 192RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>"
193RECIPE_MAINTAINER:pn-gcc-source-13.3.0 = "Khem Raj <raj.khem@gmail.com>" 193RECIPE_MAINTAINER:pn-gcc-source-13.4.0 = "Khem Raj <raj.khem@gmail.com>"
194RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>" 194RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>"
195RECIPE_MAINTAINER:pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>" 195RECIPE_MAINTAINER:pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>"
196RECIPE_MAINTAINER:pn-gdb = "Khem Raj <raj.khem@gmail.com>" 196RECIPE_MAINTAINER:pn-gdb = "Khem Raj <raj.khem@gmail.com>"
@@ -210,7 +210,6 @@ RECIPE_MAINTAINER:pn-glibc = "Khem Raj <raj.khem@gmail.com>"
210RECIPE_MAINTAINER:pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>" 210RECIPE_MAINTAINER:pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>"
211RECIPE_MAINTAINER:pn-glibc-mtrace = "Khem Raj <raj.khem@gmail.com>" 211RECIPE_MAINTAINER:pn-glibc-mtrace = "Khem Raj <raj.khem@gmail.com>"
212RECIPE_MAINTAINER:pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>" 212RECIPE_MAINTAINER:pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>"
213RECIPE_MAINTAINER:pn-glibc-y2038-tests = "Lukasz Majewski <lukma@denx.de>"
214RECIPE_MAINTAINER:pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>" 213RECIPE_MAINTAINER:pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>"
215RECIPE_MAINTAINER:pn-gmp = "Khem Raj <raj.khem@gmail.com>" 214RECIPE_MAINTAINER:pn-gmp = "Khem Raj <raj.khem@gmail.com>"
216RECIPE_MAINTAINER:pn-glslang = "Jose Quaresma <quaresma.jose@gmail.com>" 215RECIPE_MAINTAINER:pn-glslang = "Jose Quaresma <quaresma.jose@gmail.com>"
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 5975db25cc..9950e46776 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -81,8 +81,6 @@ PTESTS_FAST = "\
81 zlib \ 81 zlib \
82 libexif \ 82 libexif \
83" 83"
84PTESTS_FAST:append:libc-glibc = " glibc-y2038-tests"
85PTESTS_PROBLEMS:remove:libc-glibc = "glibc-y2038-tests"
86PTESTS_FAST:remove:mips64 = "qemu" 84PTESTS_FAST:remove:mips64 = "qemu"
87PTESTS_PROBLEMS:append:mips64 = " qemu" 85PTESTS_PROBLEMS:append:mips64 = " qemu"
88PTESTS_FAST:remove:riscv32 = "qemu" 86PTESTS_FAST:remove:riscv32 = "qemu"
@@ -104,6 +102,7 @@ PTESTS_SLOW = "\
104 libevent \ 102 libevent \
105 libgcrypt \ 103 libgcrypt \
106 libmodule-build-perl \ 104 libmodule-build-perl \
105 libpng \
107 lttng-tools \ 106 lttng-tools \
108 openssh \ 107 openssh \
109 openssl \ 108 openssl \
diff --git a/meta/conf/distro/include/time64.inc b/meta/conf/distro/include/time64.inc
index 2e85753e55..dd29105db4 100644
--- a/meta/conf/distro/include/time64.inc
+++ b/meta/conf/distro/include/time64.inc
@@ -19,7 +19,6 @@ TARGET_CC_ARCH:append:powerpc = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '$
19TARGET_CC_ARCH:append:x86 = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}" 19TARGET_CC_ARCH:append:x86 = "${@bb.utils.contains('TUNE_FEATURES', 'm32', '${GLIBC_64BIT_TIME_FLAGS}', '', d)}"
20 20
21GLIBC_64BIT_TIME_FLAGS:pn-glibc = "" 21GLIBC_64BIT_TIME_FLAGS:pn-glibc = ""
22GLIBC_64BIT_TIME_FLAGS:pn-glibc-y2038-tests = ""
23GLIBC_64BIT_TIME_FLAGS:pn-glibc-testsuite = "" 22GLIBC_64BIT_TIME_FLAGS:pn-glibc-testsuite = ""
24# pipewire-v4l2 explicitly sets _FILE_OFFSET_BITS=32 to get access to 23# pipewire-v4l2 explicitly sets _FILE_OFFSET_BITS=32 to get access to
25# both 32 and 64 bit file APIs. But it does not handle the time side? 24# both 32 and 64 bit file APIs. But it does not handle the time side?
@@ -36,7 +35,6 @@ GLIBC_64BIT_TIME_FLAGS:pn-gcc-sanitizers = ""
36# Caused by the flags exceptions above 35# Caused by the flags exceptions above
37INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time" 36INSANE_SKIP:append:pn-gcc-sanitizers = " 32bit-time"
38INSANE_SKIP:append:pn-glibc = " 32bit-time" 37INSANE_SKIP:append:pn-glibc = " 32bit-time"
39INSANE_SKIP:append:pn-glibc-y2038-tests = " 32bit-time"
40INSANE_SKIP:append:pn-pulseaudio = " 32bit-time" 38INSANE_SKIP:append:pn-pulseaudio = " 32bit-time"
41 39
42# Strace has tests that call 32 bit API directly, which is fair enough, e.g. 40# Strace has tests that call 32 bit API directly, which is fair enough, e.g.
diff --git a/meta/conf/distro/include/yocto-uninative.inc b/meta/conf/distro/include/yocto-uninative.inc
index a6f7107dfe..3d0f1fdccd 100644
--- a/meta/conf/distro/include/yocto-uninative.inc
+++ b/meta/conf/distro/include/yocto-uninative.inc
@@ -6,10 +6,10 @@
6# to the distro running on the build machine. 6# to the distro running on the build machine.
7# 7#
8 8
9UNINATIVE_MAXGLIBCVERSION = "2.40" 9UNINATIVE_MAXGLIBCVERSION = "2.41"
10UNINATIVE_VERSION = "4.6" 10UNINATIVE_VERSION = "4.7"
11 11
12UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/${UNINATIVE_VERSION}/" 12UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/${UNINATIVE_VERSION}/"
13UNINATIVE_CHECKSUM[aarch64] ?= "c2d36338272eba101580f648dd8dff5352cdb4c1809db7dedf8fc4d7e7df716c" 13UNINATIVE_CHECKSUM[aarch64] ?= "ac440e4fc80665c79f9718c665c6e28d771e51609c088c3c97ba3ad5cfed197a"
14UNINATIVE_CHECKSUM[i686] ?= "0041584678109c18deca48fb59eaf14cf725cf024a170ab537b354b63240c504" 14UNINATIVE_CHECKSUM[i686] ?= "c5efa31450f3bbd63ea961d4e7c747ae41317937d429f65e1d5cf2050338e27a"
15UNINATIVE_CHECKSUM[x86_64] ?= "6bf00154c5a7bc48adbf63fd17684bb87eb07f4814fbb482a3fbd817c1ccf4c5" 15UNINATIVE_CHECKSUM[x86_64] ?= "5800d4e9a129d1be09cf548918d25f74e91a7c1193ae5239d5b0c9246c486d2c"
diff --git a/meta/conf/image-fitimage.conf b/meta/conf/image-fitimage.conf
new file mode 100644
index 0000000000..be9ae30134
--- /dev/null
+++ b/meta/conf/image-fitimage.conf
@@ -0,0 +1,53 @@
1# Possible options for fitImage generation, mainly
2# related to signing of the fitImage content.
3
4# Description string
5FIT_DESC ?= "Kernel fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
6
7# Kernel fitImage Hash Algo
8FIT_HASH_ALG ?= "sha256"
9
10# Kernel fitImage Signature Algo
11FIT_SIGN_ALG ?= "rsa2048"
12
13# Kernel / U-Boot fitImage Padding Algo
14FIT_PAD_ALG ?= "pkcs-1.5"
15
16# Generate keys for signing Kernel fitImage
17FIT_GENERATE_KEYS ?= "0"
18
19# Size of private keys in number of bits
20FIT_SIGN_NUMBITS ?= "2048"
21
22# args to openssl genrsa (Default is just the public exponent)
23FIT_KEY_GENRSA_ARGS ?= "-F4"
24
25# args to openssl req (Default is -batch for non interactive mode and
26# -new for new certificate)
27FIT_KEY_REQ_ARGS ?= "-batch -new"
28
29# Standard format for public key certificate
30FIT_KEY_SIGN_PKCS ?= "-x509"
31
32# Sign individual images as well
33FIT_SIGN_INDIVIDUAL ?= "0"
34
35FIT_CONF_PREFIX ?= "conf-"
36FIT_CONF_PREFIX[doc] = "Prefix to use for FIT configuration node name"
37
38FIT_SUPPORTED_INITRAMFS_FSTYPES ?= "cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.zst cpio.gz ext2.gz cpio"
39
40# Allow user to select the default DTB for FIT image when multiple dtb's exists.
41FIT_CONF_DEFAULT_DTB ?= ""
42
43# length of address in number of <u32> cells
44# ex: 1 32bits address, 2 64bits address
45FIT_ADDRESS_CELLS ?= "1"
46
47# Keys used to sign individually image nodes.
48# The keys to sign image nodes must be different from those used to sign
49# configuration nodes, otherwise the "required" property, from
50# UBOOT_DTB_BINARY, will be set to "conf", because "conf" prevails on "image".
51# Then the images signature checking will not be mandatory and no error will be
52# raised in case of failure.
53# UBOOT_SIGN_IMG_KEYNAME = "dev2" # keys name in keydir (eg. "dev2.crt", "dev2.key")
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc
index 25bdf12b18..0eb938a240 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc
@@ -10,7 +10,7 @@ AVAILTUNES += "cortexa32 cortexa32-crypto"
10ARMPKGARCH:tune-cortexa32 = "cortexa32" 10ARMPKGARCH:tune-cortexa32 = "cortexa32"
11ARMPKGARCH:tune-cortexa32-crypto = "cortexa32" 11ARMPKGARCH:tune-cortexa32-crypto = "cortexa32"
12# We do not want -march since -mcpu is added above to cover for it 12# We do not want -march since -mcpu is added above to cover for it
13TUNE_FEATURES:tune-cortexa32 = "aarch64 cortexa32 crc callconvention-hard neon" 13TUNE_FEATURES:tune-cortexa32 = "armv8a cortexa32 crc callconvention-hard neon"
14TUNE_FEATURES:tune-cortexa32-crypto = "${TUNE_FEATURES:tune-cortexa32} crypto" 14TUNE_FEATURES:tune-cortexa32-crypto = "${TUNE_FEATURES:tune-cortexa32} crypto"
15PACKAGE_EXTRA_ARCHS:tune-cortexa32 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa32 cortexa32hf-neon" 15PACKAGE_EXTRA_ARCHS:tune-cortexa32 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa32 cortexa32hf-neon"
16PACKAGE_EXTRA_ARCHS:tune-cortexa32-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa32 cortexa32hf-neon cortexa32hf-neon-crypto" 16PACKAGE_EXTRA_ARCHS:tune-cortexa32-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa32 cortexa32hf-neon cortexa32hf-neon-crypto"
diff --git a/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc b/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
index 89f0e09450..e8667bc16b 100644
--- a/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
+++ b/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
@@ -10,11 +10,10 @@ require conf/machine/include/arm/arch-armv8r.inc
10 10
11AVAILTUNES += "cortexr52" 11AVAILTUNES += "cortexr52"
12ARMPKGARCH:tune-cortexr52 = "cortexr52" 12ARMPKGARCH:tune-cortexr52 = "cortexr52"
13# We do not want -march since -mcpu is added above to cover for it 13TUNE_FEATURES:tune-cortexr52 = "${TUNE_FEATURES:tune-armv8r-crc-simd} cortexr52"
14TUNE_FEATURES:tune-cortexr52 = "aarch64 crc simd cortexr52"
15PACKAGE_EXTRA_ARCHS:tune-cortexr52 = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} cortexr52" 14PACKAGE_EXTRA_ARCHS:tune-cortexr52 = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} cortexr52"
16 15
17AVAILTUNES += "cortexr52hf" 16AVAILTUNES += "cortexr52hf"
18ARMPKGARCH:tune-cortexr52hf = "cortexr52" 17ARMPKGARCH:tune-cortexr52hf = "cortexr52hf"
19TUNE_FEATURES:tune-cortexr52hf = "${TUNE_FEATURES:tune-cortexr52} callconvention-hard" 18TUNE_FEATURES:tune-cortexr52hf = "${TUNE_FEATURES:tune-cortexr52} callconvention-hard"
20PACKAGE_EXTRA_ARCHS:tune-cortexr52hf = "cortexr52hf" 19PACKAGE_EXTRA_ARCHS:tune-cortexr52hf = "cortexr52hf"
diff --git a/meta/files/overlayfs-create-dirs.service.in b/meta/files/overlayfs-create-dirs.service.in
index c949a6dc73..c8431548d7 100644
--- a/meta/files/overlayfs-create-dirs.service.in
+++ b/meta/files/overlayfs-create-dirs.service.in
@@ -1,7 +1,6 @@
1[Unit] 1[Unit]
2Description=Overlayfs directories setup 2Description=Overlayfs directories setup {LOWERDIR}
3Requires={DATA_MOUNT_UNIT} 3RequiresMountsFor={DATA_MOUNT_POINT}
4After={DATA_MOUNT_UNIT}
5DefaultDependencies=no 4DefaultDependencies=no
6 5
7[Service] 6[Service]
diff --git a/meta/files/overlayfs-unit.mount.in b/meta/files/overlayfs-unit.mount.in
index 1d33b7e39c..9c117f2c52 100644
--- a/meta/files/overlayfs-unit.mount.in
+++ b/meta/files/overlayfs-unit.mount.in
@@ -1,5 +1,5 @@
1[Unit] 1[Unit]
2Description=Overlayfs mount unit 2Description=Overlayfs mount unit {LOWERDIR}
3Requires={CREATE_DIRS_SERVICE} 3Requires={CREATE_DIRS_SERVICE}
4After={CREATE_DIRS_SERVICE} 4After={CREATE_DIRS_SERVICE}
5 5
diff --git a/meta/files/toolchain-shar-extract.sh b/meta/files/toolchain-shar-extract.sh
index 89d30005fd..29c52e3b13 100644
--- a/meta/files/toolchain-shar-extract.sh
+++ b/meta/files/toolchain-shar-extract.sh
@@ -1,6 +1,11 @@
1#!/bin/sh 1#!/bin/sh
2 2
3export LC_ALL=en_US.UTF-8 3export LC_ALL=en_US.UTF-8
4
5# The pipefail option is now part of POSIX (POSIX.1-2024) and available in more
6# and more shells. Enable it if available to make the SDK installer more robust.
7(set -o pipefail 2> /dev/null) && set -o pipefail
8
4#Make sure at least one python is installed 9#Make sure at least one python is installed
5INIT_PYTHON=$(which python3 2>/dev/null ) 10INIT_PYTHON=$(which python3 2>/dev/null )
6[ -z "$INIT_PYTHON" ] && INIT_PYTHON=$(which python2 2>/dev/null) 11[ -z "$INIT_PYTHON" ] && INIT_PYTHON=$(which python2 2>/dev/null)
@@ -286,6 +291,10 @@ post_relocate="$target_sdk_dir/post-relocate-setup.sh"
286if [ -e "$post_relocate" ]; then 291if [ -e "$post_relocate" ]; then
287 $SUDO_EXEC sed -e "s:@SDKPATH@:$target_sdk_dir:g" -i $post_relocate 292 $SUDO_EXEC sed -e "s:@SDKPATH@:$target_sdk_dir:g" -i $post_relocate
288 $SUDO_EXEC /bin/sh $post_relocate "$target_sdk_dir" "@SDKPATH@" 293 $SUDO_EXEC /bin/sh $post_relocate "$target_sdk_dir" "@SDKPATH@"
294 if [ $? -ne 0 ]; then
295 echo "Executing $post_relocate failed"
296 exit 1
297 fi
289 $SUDO_EXEC rm -f $post_relocate 298 $SUDO_EXEC rm -f $post_relocate
290fi 299fi
291 300
diff --git a/meta/lib/oe/package_manager/__init__.py b/meta/lib/oe/package_manager/__init__.py
index d3b2317894..2100a97c12 100644
--- a/meta/lib/oe/package_manager/__init__.py
+++ b/meta/lib/oe/package_manager/__init__.py
@@ -365,45 +365,43 @@ class PackageManager(object, metaclass=ABCMeta):
365 for complementary_linguas in (self.d.getVar('IMAGE_LINGUAS_COMPLEMENTARY') or "").split(): 365 for complementary_linguas in (self.d.getVar('IMAGE_LINGUAS_COMPLEMENTARY') or "").split():
366 globs += (" " + complementary_linguas) % lang 366 globs += (" " + complementary_linguas) % lang
367 367
368 if globs is None: 368 if globs:
369 return 369 # we need to write the list of installed packages to a file because the
370 370 # oe-pkgdata-util reads it from a file
371 # we need to write the list of installed packages to a file because the 371 with tempfile.NamedTemporaryFile(mode="w+", prefix="installed-pkgs") as installed_pkgs:
372 # oe-pkgdata-util reads it from a file 372 pkgs = self.list_installed()
373 with tempfile.NamedTemporaryFile(mode="w+", prefix="installed-pkgs") as installed_pkgs: 373
374 pkgs = self.list_installed() 374 provided_pkgs = set()
375 375 for pkg in pkgs.values():
376 provided_pkgs = set() 376 provided_pkgs |= set(pkg.get('provs', []))
377 for pkg in pkgs.values(): 377
378 provided_pkgs |= set(pkg.get('provs', [])) 378 output = oe.utils.format_pkg_list(pkgs, "arch")
379 379 installed_pkgs.write(output)
380 output = oe.utils.format_pkg_list(pkgs, "arch") 380 installed_pkgs.flush()
381 installed_pkgs.write(output) 381
382 installed_pkgs.flush() 382 cmd = ["oe-pkgdata-util",
383 383 "-p", self.d.getVar('PKGDATA_DIR'), "glob", installed_pkgs.name,
384 cmd = ["oe-pkgdata-util", 384 globs]
385 "-p", self.d.getVar('PKGDATA_DIR'), "glob", installed_pkgs.name, 385 exclude = self.d.getVar('PACKAGE_EXCLUDE_COMPLEMENTARY')
386 globs] 386 if exclude:
387 exclude = self.d.getVar('PACKAGE_EXCLUDE_COMPLEMENTARY') 387 cmd.extend(['--exclude=' + '|'.join(exclude.split())])
388 if exclude: 388 try:
389 cmd.extend(['--exclude=' + '|'.join(exclude.split())]) 389 bb.note('Running %s' % cmd)
390 try: 390 proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
391 bb.note('Running %s' % cmd) 391 stdout, stderr = proc.communicate()
392 proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 392 if stderr: bb.note(stderr.decode("utf-8"))
393 stdout, stderr = proc.communicate() 393 complementary_pkgs = stdout.decode("utf-8")
394 if stderr: bb.note(stderr.decode("utf-8")) 394 complementary_pkgs = set(complementary_pkgs.split())
395 complementary_pkgs = stdout.decode("utf-8") 395 skip_pkgs = sorted(complementary_pkgs & provided_pkgs)
396 complementary_pkgs = set(complementary_pkgs.split()) 396 install_pkgs = sorted(complementary_pkgs - provided_pkgs)
397 skip_pkgs = sorted(complementary_pkgs & provided_pkgs) 397 bb.note("Installing complementary packages ... %s (skipped already provided packages %s)" % (
398 install_pkgs = sorted(complementary_pkgs - provided_pkgs) 398 ' '.join(install_pkgs),
399 bb.note("Installing complementary packages ... %s (skipped already provided packages %s)" % ( 399 ' '.join(skip_pkgs)))
400 ' '.join(install_pkgs), 400 self.install(install_pkgs, hard_depends_only=True)
401 ' '.join(skip_pkgs))) 401 except subprocess.CalledProcessError as e:
402 self.install(install_pkgs, hard_depends_only=True) 402 bb.fatal("Could not compute complementary packages list. Command "
403 except subprocess.CalledProcessError as e: 403 "'%s' returned %d:\n%s" %
404 bb.fatal("Could not compute complementary packages list. Command " 404 (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
405 "'%s' returned %d:\n%s" %
406 (' '.join(cmd), e.returncode, e.output.decode("utf-8")))
407 405
408 if self.d.getVar('IMAGE_LOCALES_ARCHIVE') == '1': 406 if self.d.getVar('IMAGE_LOCALES_ARCHIVE') == '1':
409 target_arch = self.d.getVar('TARGET_ARCH') 407 target_arch = self.d.getVar('TARGET_ARCH')
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index 60a0cc8291..417333e431 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -462,21 +462,23 @@ class GitApplyTree(PatchTree):
462 return (tmpfile, cmd) 462 return (tmpfile, cmd)
463 463
464 @staticmethod 464 @staticmethod
465 def addNote(repo, ref, key, value=None): 465 def addNote(repo, ref, key, value=None, commituser=None, commitemail=None):
466 note = key + (": %s" % value if value else "") 466 note = key + (": %s" % value if value else "")
467 notes_ref = GitApplyTree.notes_ref 467 notes_ref = GitApplyTree.notes_ref
468 runcmd(["git", "config", "notes.rewriteMode", "ignore"], repo) 468 runcmd(["git", "config", "notes.rewriteMode", "ignore"], repo)
469 runcmd(["git", "config", "notes.displayRef", notes_ref, notes_ref], repo) 469 runcmd(["git", "config", "notes.displayRef", notes_ref, notes_ref], repo)
470 runcmd(["git", "config", "notes.rewriteRef", notes_ref, notes_ref], repo) 470 runcmd(["git", "config", "notes.rewriteRef", notes_ref, notes_ref], repo)
471 runcmd(["git", "notes", "--ref", notes_ref, "append", "-m", note, ref], repo) 471 cmd = ["git"]
472 GitApplyTree.gitCommandUserOptions(cmd, commituser, commitemail)
473 runcmd(cmd + ["notes", "--ref", notes_ref, "append", "-m", note, ref], repo)
472 474
473 @staticmethod 475 @staticmethod
474 def removeNote(repo, ref, key): 476 def removeNote(repo, ref, key, commituser=None, commitemail=None):
475 notes = GitApplyTree.getNotes(repo, ref) 477 notes = GitApplyTree.getNotes(repo, ref)
476 notes = {k: v for k, v in notes.items() if k != key and not k.startswith(key + ":")} 478 notes = {k: v for k, v in notes.items() if k != key and not k.startswith(key + ":")}
477 runcmd(["git", "notes", "--ref", GitApplyTree.notes_ref, "remove", "--ignore-missing", ref], repo) 479 runcmd(["git", "notes", "--ref", GitApplyTree.notes_ref, "remove", "--ignore-missing", ref], repo)
478 for note, value in notes.items(): 480 for note, value in notes.items():
479 GitApplyTree.addNote(repo, ref, note, value) 481 GitApplyTree.addNote(repo, ref, note, value, commituser, commitemail)
480 482
481 @staticmethod 483 @staticmethod
482 def getNotes(repo, ref): 484 def getNotes(repo, ref):
@@ -507,7 +509,7 @@ class GitApplyTree(PatchTree):
507 GitApplyTree.gitCommandUserOptions(cmd, d=d) 509 GitApplyTree.gitCommandUserOptions(cmd, d=d)
508 cmd += ["commit", "-m", subject, "--no-verify"] 510 cmd += ["commit", "-m", subject, "--no-verify"]
509 runcmd(cmd, dir) 511 runcmd(cmd, dir)
510 GitApplyTree.addNote(dir, "HEAD", GitApplyTree.ignore_commit) 512 GitApplyTree.addNote(dir, "HEAD", GitApplyTree.ignore_commit, d.getVar('PATCH_GIT_USER_NAME'), d.getVar('PATCH_GIT_USER_EMAIL'))
511 513
512 @staticmethod 514 @staticmethod
513 def extractPatches(tree, startcommits, outdir, paths=None): 515 def extractPatches(tree, startcommits, outdir, paths=None):
@@ -654,7 +656,7 @@ class GitApplyTree(PatchTree):
654 raise 656 raise
655 finally: 657 finally:
656 if patch_applied: 658 if patch_applied:
657 GitApplyTree.addNote(self.dir, "HEAD", GitApplyTree.original_patch, os.path.basename(patch['file'])) 659 GitApplyTree.addNote(self.dir, "HEAD", GitApplyTree.original_patch, os.path.basename(patch['file']), self.commituser, self.commitemail)
658 660
659 661
660class QuiltTree(PatchSet): 662class QuiltTree(PatchSet):
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index 8cd48f9450..5abce4ad7d 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -269,7 +269,11 @@ class Rootfs(object, metaclass=ABCMeta):
269 self.pm.remove(["run-postinsts"]) 269 self.pm.remove(["run-postinsts"])
270 270
271 image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", 271 image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
272 True, False, self.d) and \
273 not bb.utils.contains("IMAGE_FEATURES",
274 "read-only-rootfs-delayed-postinsts",
272 True, False, self.d) 275 True, False, self.d)
276
273 image_rorfs_force = self.d.getVar('FORCE_RO_REMOVE') 277 image_rorfs_force = self.d.getVar('FORCE_RO_REMOVE')
274 278
275 if image_rorfs or image_rorfs_force == "1": 279 if image_rorfs or image_rorfs_force == "1":
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py
index a46e5502ab..d818fce8f1 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -524,6 +524,7 @@ def OEOuthashBasic(path, sigfile, task, d):
524 if task == "package": 524 if task == "package":
525 include_timestamps = True 525 include_timestamps = True
526 include_root = False 526 include_root = False
527 source_date_epoch = float(d.getVar("SOURCE_DATE_EPOCH"))
527 hash_version = d.getVar('HASHEQUIV_HASH_VERSION') 528 hash_version = d.getVar('HASHEQUIV_HASH_VERSION')
528 extra_sigdata = d.getVar("HASHEQUIV_EXTRA_SIGDATA") 529 extra_sigdata = d.getVar("HASHEQUIV_EXTRA_SIGDATA")
529 530
@@ -615,7 +616,11 @@ def OEOuthashBasic(path, sigfile, task, d):
615 raise Exception(msg).with_traceback(e.__traceback__) 616 raise Exception(msg).with_traceback(e.__traceback__)
616 617
617 if include_timestamps: 618 if include_timestamps:
618 update_hash(" %10d" % s.st_mtime) 619 # Need to clamp to SOURCE_DATE_EPOCH
620 if s.st_mtime > source_date_epoch:
621 update_hash(" %10d" % source_date_epoch)
622 else:
623 update_hash(" %10d" % s.st_mtime)
619 624
620 update_hash(" ") 625 update_hash(" ")
621 if stat.S_ISBLK(s.st_mode) or stat.S_ISCHR(s.st_mode): 626 if stat.S_ISBLK(s.st_mode) or stat.S_ISCHR(s.st_mode):
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index 14a7d07ef0..c9c7a47041 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -482,19 +482,6 @@ def get_multilib_datastore(variant, d):
482 localdata.setVar("MLPREFIX", "") 482 localdata.setVar("MLPREFIX", "")
483 return localdata 483 return localdata
484 484
485class ImageQAFailed(Exception):
486 def __init__(self, description, name=None, logfile=None):
487 self.description = description
488 self.name = name
489 self.logfile=logfile
490
491 def __str__(self):
492 msg = 'Function failed: %s' % self.name
493 if self.description:
494 msg = msg + ' (%s)' % self.description
495
496 return msg
497
498def sh_quote(string): 485def sh_quote(string):
499 import shlex 486 import shlex
500 return shlex.quote(string) 487 return shlex.quote(string)
diff --git a/meta/lib/oeqa/core/runner.py b/meta/lib/oeqa/core/runner.py
index a86a706bd9..b683d9b80a 100644
--- a/meta/lib/oeqa/core/runner.py
+++ b/meta/lib/oeqa/core/runner.py
@@ -357,7 +357,7 @@ class OETestResultJSONHelper(object):
357 os.makedirs(write_dir, exist_ok=True) 357 os.makedirs(write_dir, exist_ok=True)
358 test_results = self._get_existing_testresults_if_available(write_dir) 358 test_results = self._get_existing_testresults_if_available(write_dir)
359 test_results[result_id] = {'configuration': configuration, 'result': test_result} 359 test_results[result_id] = {'configuration': configuration, 'result': test_result}
360 json_testresults = json.dumps(test_results, sort_keys=True, indent=4) 360 json_testresults = json.dumps(test_results, sort_keys=True, indent=1)
361 self._write_file(write_dir, self.testresult_filename, json_testresults) 361 self._write_file(write_dir, self.testresult_filename, json_testresults)
362 if has_bb: 362 if has_bb:
363 bb.utils.unlockfile(lf) 363 bb.utils.unlockfile(lf)
diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py
index 09cdd14c75..d473469384 100644
--- a/meta/lib/oeqa/core/target/ssh.py
+++ b/meta/lib/oeqa/core/target/ssh.py
@@ -55,14 +55,14 @@ class OESSHTarget(OETarget):
55 def stop(self, **kwargs): 55 def stop(self, **kwargs):
56 pass 56 pass
57 57
58 def _run(self, command, timeout=None, ignore_status=True): 58 def _run(self, command, timeout=None, ignore_status=True, raw=False):
59 """ 59 """
60 Runs command in target using SSHProcess. 60 Runs command in target using SSHProcess.
61 """ 61 """
62 self.logger.debug("[Running]$ %s" % " ".join(command)) 62 self.logger.debug("[Running]$ %s" % " ".join(command))
63 63
64 starttime = time.time() 64 starttime = time.time()
65 status, output = SSHCall(command, self.logger, timeout) 65 status, output = SSHCall(command, self.logger, timeout, raw)
66 self.logger.debug("[Command returned '%d' after %.2f seconds]" 66 self.logger.debug("[Command returned '%d' after %.2f seconds]"
67 "" % (status, time.time() - starttime)) 67 "" % (status, time.time() - starttime))
68 68
@@ -72,7 +72,7 @@ class OESSHTarget(OETarget):
72 72
73 return (status, output) 73 return (status, output)
74 74
75 def run(self, command, timeout=None, ignore_status=True): 75 def run(self, command, timeout=None, ignore_status=True, raw=False):
76 """ 76 """
77 Runs command in target. 77 Runs command in target.
78 78
@@ -91,7 +91,7 @@ class OESSHTarget(OETarget):
91 else: 91 else:
92 processTimeout = self.timeout 92 processTimeout = self.timeout
93 93
94 status, output = self._run(sshCmd, processTimeout, ignore_status) 94 status, output = self._run(sshCmd, processTimeout, ignore_status, raw)
95 self.logger.debug('Command: %s\nStatus: %d Output: %s\n' % (command, status, output)) 95 self.logger.debug('Command: %s\nStatus: %d Output: %s\n' % (command, status, output))
96 96
97 return (status, output) 97 return (status, output)
@@ -206,7 +206,7 @@ class OESSHTarget(OETarget):
206 remoteDir = os.path.join(remotePath, tmpDir.lstrip("/")) 206 remoteDir = os.path.join(remotePath, tmpDir.lstrip("/"))
207 self.deleteDir(remoteDir) 207 self.deleteDir(remoteDir)
208 208
209def SSHCall(command, logger, timeout=None, **opts): 209def SSHCall(command, logger, timeout=None, raw=False, **opts):
210 210
211 def run(): 211 def run():
212 nonlocal output 212 nonlocal output
@@ -265,7 +265,7 @@ def SSHCall(command, logger, timeout=None, **opts):
265 else: 265 else:
266 output_raw = process.communicate()[0] 266 output_raw = process.communicate()[0]
267 267
268 output = output_raw.decode('utf-8', errors='ignore') 268 output = output_raw if raw else output_raw.decode('utf-8', errors='ignore')
269 logger.debug('Data from SSH call:\n%s' % output.rstrip()) 269 logger.debug('Data from SSH call:\n%s' % output.rstrip())
270 270
271 # timout or not, make sure process exits and is not hanging 271 # timout or not, make sure process exits and is not hanging
@@ -292,7 +292,7 @@ def SSHCall(command, logger, timeout=None, **opts):
292 292
293 options = { 293 options = {
294 "stdout": subprocess.PIPE, 294 "stdout": subprocess.PIPE,
295 "stderr": subprocess.STDOUT, 295 "stderr": subprocess.STDOUT if not raw else None,
296 "stdin": None, 296 "stdin": None,
297 "shell": False, 297 "shell": False,
298 "bufsize": -1, 298 "bufsize": -1,
@@ -320,4 +320,4 @@ def SSHCall(command, logger, timeout=None, **opts):
320 logger.debug('Something went wrong, killing SSH process') 320 logger.debug('Something went wrong, killing SSH process')
321 raise 321 raise
322 322
323 return (process.returncode, output.rstrip()) 323 return (process.returncode, output if raw else output.rstrip())
diff --git a/meta/lib/oeqa/runtime/cases/ssh.py b/meta/lib/oeqa/runtime/cases/ssh.py
index b86428002f..89d64430e5 100644
--- a/meta/lib/oeqa/runtime/cases/ssh.py
+++ b/meta/lib/oeqa/runtime/cases/ssh.py
@@ -16,8 +16,8 @@ class SSHTest(OERuntimeTestCase):
16 @OETestDepends(['ping.PingTest.test_ping']) 16 @OETestDepends(['ping.PingTest.test_ping'])
17 @OEHasPackage(['dropbear', 'openssh-sshd']) 17 @OEHasPackage(['dropbear', 'openssh-sshd'])
18 def test_ssh(self): 18 def test_ssh(self):
19 for i in range(20): 19 for i in range(5):
20 status, output = self.target.run("uname -a", timeout=5) 20 status, output = self.target.run("uname -a", timeout=30)
21 if status == 0: 21 if status == 0:
22 break 22 break
23 elif status == 255 or status == -signal.SIGTERM: 23 elif status == 255 or status == -signal.SIGTERM:
diff --git a/meta/lib/oeqa/sdk/context.py b/meta/lib/oeqa/sdk/context.py
index 01c38c24e6..77e6a98f39 100644
--- a/meta/lib/oeqa/sdk/context.py
+++ b/meta/lib/oeqa/sdk/context.py
@@ -41,11 +41,13 @@ class OESDKTestContext(OETestContext):
41 41
42 def hasTargetPackage(self, pkg, multilib=False, regex=False): 42 def hasTargetPackage(self, pkg, multilib=False, regex=False):
43 if multilib: 43 if multilib:
44 # match multilib according to sdk_env 44 stripped_sdk_env = os.path.basename(self.sdk_env)
45 mls = self.td.get('MULTILIB_VARIANTS', '').split() 45 if stripped_sdk_env.startswith('environment-setup-'):
46 for ml in mls: 46 # match multilib according to sdk_env
47 if ('ml'+ml) in self.sdk_env: 47 mls = self.td.get('MULTILIB_VARIANTS', '').split()
48 pkg = ml + '-' + pkg 48 for ml in mls:
49 if ('ml'+ml) in stripped_sdk_env:
50 pkg = ml + '-' + pkg
49 return self._hasPackage(self.target_pkg_manifest, pkg, regex=regex) 51 return self._hasPackage(self.target_pkg_manifest, pkg, regex=regex)
50 52
51class OESDKTestContextExecutor(OETestContextExecutor): 53class OESDKTestContextExecutor(OETestContextExecutor):
diff --git a/meta/lib/oeqa/selftest/cases/devtool.py b/meta/lib/oeqa/selftest/cases/devtool.py
index fc08906117..ee75687f01 100644
--- a/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/meta/lib/oeqa/selftest/cases/devtool.py
@@ -2493,7 +2493,7 @@ class DevtoolIdeSdkTests(DevtoolBase):
2493 self.track_for_cleanup(tempdir) 2493 self.track_for_cleanup(tempdir)
2494 self.add_command_to_tearDown('bitbake -c clean %s' % recipe_name) 2494 self.add_command_to_tearDown('bitbake -c clean %s' % recipe_name)
2495 2495
2496 result = runCmd('devtool modify %s -x %s' % (recipe_name, tempdir)) 2496 result = runCmd('devtool modify %s -x %s --debug-build' % (recipe_name, tempdir))
2497 self.assertExists(os.path.join(tempdir, build_file), 2497 self.assertExists(os.path.join(tempdir, build_file),
2498 'Extracted source could not be found') 2498 'Extracted source could not be found')
2499 self.assertExists(os.path.join(self.workspacedir, 'conf', 2499 self.assertExists(os.path.join(self.workspacedir, 'conf',
diff --git a/meta/lib/oeqa/selftest/cases/meta_ide.py b/meta/lib/oeqa/selftest/cases/meta_ide.py
index ffe0d2604d..5a17ca52ea 100644
--- a/meta/lib/oeqa/selftest/cases/meta_ide.py
+++ b/meta/lib/oeqa/selftest/cases/meta_ide.py
@@ -20,8 +20,8 @@ class MetaIDE(OESelftestTestCase):
20 bitbake('meta-ide-support') 20 bitbake('meta-ide-support')
21 bitbake('build-sysroots -c build_native_sysroot') 21 bitbake('build-sysroots -c build_native_sysroot')
22 bitbake('build-sysroots -c build_target_sysroot') 22 bitbake('build-sysroots -c build_target_sysroot')
23 bb_vars = get_bb_vars(['MULTIMACH_TARGET_SYS', 'DEPLOY_DIR_IMAGE', 'COREBASE']) 23 bb_vars = get_bb_vars(['MACHINE_ARCH', 'TARGET_VENDOR', 'TARGET_OS', 'DEPLOY_DIR_IMAGE', 'COREBASE'])
24 cls.environment_script = 'environment-setup-%s' % bb_vars['MULTIMACH_TARGET_SYS'] 24 cls.environment_script = 'environment-setup-%s%s-%s' % (bb_vars['MACHINE_ARCH'], bb_vars['TARGET_VENDOR'], bb_vars['TARGET_OS'])
25 cls.deploydir = bb_vars['DEPLOY_DIR_IMAGE'] 25 cls.deploydir = bb_vars['DEPLOY_DIR_IMAGE']
26 cls.environment_script_path = '%s/%s' % (cls.deploydir, cls.environment_script) 26 cls.environment_script_path = '%s/%s' % (cls.deploydir, cls.environment_script)
27 cls.corebasedir = bb_vars['COREBASE'] 27 cls.corebasedir = bb_vars['COREBASE']
diff --git a/meta/lib/oeqa/selftest/cases/overlayfs.py b/meta/lib/oeqa/selftest/cases/overlayfs.py
index e31063567b..580fbdcb9c 100644
--- a/meta/lib/oeqa/selftest/cases/overlayfs.py
+++ b/meta/lib/oeqa/selftest/cases/overlayfs.py
@@ -5,7 +5,7 @@
5# 5#
6 6
7from oeqa.selftest.case import OESelftestTestCase 7from oeqa.selftest.case import OESelftestTestCase
8from oeqa.utils.commands import bitbake, runqemu 8from oeqa.utils.commands import bitbake, runqemu, get_bb_vars
9from oeqa.core.decorator import OETestTag 9from oeqa.core.decorator import OETestTag
10from oeqa.core.decorator.data import skipIfNotMachine 10from oeqa.core.decorator.data import skipIfNotMachine
11 11
@@ -466,6 +466,45 @@ IMAGE_INSTALL:append = " overlayfs-user"
466 line = getline_qemu(output, "Read-only file system") 466 line = getline_qemu(output, "Read-only file system")
467 self.assertTrue(line, msg=output) 467 self.assertTrue(line, msg=output)
468 468
469 @skipIfNotMachine("qemux86-64", "tests are qemux86-64 specific currently")
470 def test_postinst_on_target_for_read_only_rootfs(self):
471 """
472 Summary: The purpose of this test case is to verify that post-installation
473 on target scripts are executed even if using read-only rootfs when
474 read-only-rootfs-delayed-postinsts is set
475 Expected: The test files are created on first boot
476 """
477
478 import oe.path
479
480 vars = get_bb_vars(("IMAGE_ROOTFS", "sysconfdir"), "core-image-minimal")
481 sysconfdir = vars["sysconfdir"]
482 self.assertIsNotNone(sysconfdir)
483 # Need to use oe.path here as sysconfdir starts with /
484 targettestdir = os.path.join(sysconfdir, "postinst-test")
485
486 config = self.get_working_config()
487
488 args = {
489 'OVERLAYFS_INIT_OPTION': "",
490 'OVERLAYFS_ETC_USE_ORIG_INIT_NAME': 1,
491 'OVERLAYFS_ROOTFS_TYPE': "ext4",
492 'OVERLAYFS_ETC_CREATE_MOUNT_DIRS': 1
493 }
494
495 # read-only-rootfs is already set in get_working_config()
496 config += 'EXTRA_IMAGE_FEATURES += "read-only-rootfs-delayed-postinsts"\n'
497 config += 'CORE_IMAGE_EXTRA_INSTALL = "postinst-delayed-b"\n'
498
499 self.write_config(config.format(**args))
500
501 res = bitbake('core-image-minimal')
502
503 with runqemu('core-image-minimal', image_fstype='wic') as qemu:
504 for filename in ("rootfs", "delayed-a", "delayed-b"):
505 status, output = qemu.run_serial("test -f %s && echo found" % os.path.join(targettestdir, filename))
506 self.assertIn("found", output, "%s was not present on boot" % filename)
507
469 def get_working_config(self): 508 def get_working_config(self):
470 return """ 509 return """
471# Use systemd as init manager 510# Use systemd as init manager
diff --git a/meta/lib/oeqa/selftest/cases/reproducible.py b/meta/lib/oeqa/selftest/cases/reproducible.py
index 021e894012..34efa730e5 100644
--- a/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -16,6 +16,8 @@ import os
16import datetime 16import datetime
17 17
18exclude_packages = [ 18exclude_packages = [
19 'rust-rustdoc',
20 'rust-dbg'
19 ] 21 ]
20 22
21def is_excluded(package): 23def is_excluded(package):
@@ -177,12 +179,8 @@ class ReproducibleTests(OESelftestTestCase):
177 self.sstate_targets = bb_vars['OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS'].split() 179 self.sstate_targets = bb_vars['OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS'].split()
178 180
179 self.extraresults = {} 181 self.extraresults = {}
180 self.extraresults.setdefault('reproducible.rawlogs', {})['log'] = ''
181 self.extraresults.setdefault('reproducible', {}).setdefault('files', {}) 182 self.extraresults.setdefault('reproducible', {}).setdefault('files', {})
182 183
183 def append_to_log(self, msg):
184 self.extraresults['reproducible.rawlogs']['log'] += msg
185
186 def compare_packages(self, reference_dir, test_dir, diffutils_sysroot): 184 def compare_packages(self, reference_dir, test_dir, diffutils_sysroot):
187 result = PackageCompareResults(self.oeqa_reproducible_excluded_packages) 185 result = PackageCompareResults(self.oeqa_reproducible_excluded_packages)
188 186
@@ -209,7 +207,7 @@ class ReproducibleTests(OESelftestTestCase):
209 207
210 def write_package_list(self, package_class, name, packages): 208 def write_package_list(self, package_class, name, packages):
211 self.extraresults['reproducible']['files'].setdefault(package_class, {})[name] = [ 209 self.extraresults['reproducible']['files'].setdefault(package_class, {})[name] = [
212 {'reference': p.reference, 'test': p.test} for p in packages] 210 p.reference.split("/./")[1] for p in packages]
213 211
214 def copy_file(self, source, dest): 212 def copy_file(self, source, dest):
215 bb.utils.mkdirhier(os.path.dirname(dest)) 213 bb.utils.mkdirhier(os.path.dirname(dest))
@@ -295,8 +293,6 @@ class ReproducibleTests(OESelftestTestCase):
295 293
296 self.logger.info('Reproducibility summary for %s: %s' % (c, result)) 294 self.logger.info('Reproducibility summary for %s: %s' % (c, result))
297 295
298 self.append_to_log('\n'.join("%s: %s" % (r.status, r.test) for r in result.total))
299
300 self.write_package_list(package_class, 'missing', result.missing) 296 self.write_package_list(package_class, 'missing', result.missing)
301 self.write_package_list(package_class, 'different', result.different) 297 self.write_package_list(package_class, 'different', result.different)
302 self.write_package_list(package_class, 'different_excluded', result.different_excluded) 298 self.write_package_list(package_class, 'different_excluded', result.different_excluded)
diff --git a/meta/lib/oeqa/selftest/cases/rust.py b/meta/lib/oeqa/selftest/cases/rust.py
index ad14189c6d..26f132edc4 100644
--- a/meta/lib/oeqa/selftest/cases/rust.py
+++ b/meta/lib/oeqa/selftest/cases/rust.py
@@ -3,6 +3,7 @@ import os
3import subprocess 3import subprocess
4import time 4import time
5from oeqa.core.decorator import OETestTag 5from oeqa.core.decorator import OETestTag
6from oeqa.core.decorator.data import skipIfArch
6from oeqa.core.case import OEPTestResultTestCase 7from oeqa.core.case import OEPTestResultTestCase
7from oeqa.selftest.case import OESelftestTestCase 8from oeqa.selftest.case import OESelftestTestCase
8from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqemu, Command 9from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqemu, Command
@@ -38,15 +39,12 @@ def parse_results(filename):
38@OETestTag("toolchain-user") 39@OETestTag("toolchain-user")
39@OETestTag("runqemu") 40@OETestTag("runqemu")
40class RustSelfTestSystemEmulated(OESelftestTestCase, OEPTestResultTestCase): 41class RustSelfTestSystemEmulated(OESelftestTestCase, OEPTestResultTestCase):
42
43 @skipIfArch(['mips', 'mips64'])
41 def test_rust(self, *args, **kwargs): 44 def test_rust(self, *args, **kwargs):
42 # Disable Rust Oe-selftest 45 # Disable Rust Oe-selftest
43 #self.skipTest("The Rust Oe-selftest is disabled.") 46 #self.skipTest("The Rust Oe-selftest is disabled.")
44 47
45 # Skip mips32 target since it is unstable with rust tests
46 machine = get_bb_var('MACHINE')
47 if machine == "qemumips":
48 self.skipTest("The mips32 target is skipped for Rust Oe-selftest.")
49
50 # build remote-test-server before image build 48 # build remote-test-server before image build
51 recipe = "rust" 49 recipe = "rust"
52 start_time = time.time() 50 start_time = time.time()
@@ -210,9 +208,8 @@ class RustSelfTestSystemEmulated(OESelftestTestCase, OEPTestResultTestCase):
210 tmpdir = get_bb_var("TMPDIR", "rust") 208 tmpdir = get_bb_var("TMPDIR", "rust")
211 209
212 # Set path for target-poky-linux-gcc, RUST_TARGET_PATH and hosttools. 210 # Set path for target-poky-linux-gcc, RUST_TARGET_PATH and hosttools.
213 cmd = " export PATH=%s/recipe-sysroot-native/usr/bin:$PATH;" % rustlibpath 211 cmd = "export TARGET_VENDOR=\"-poky\";"
214 cmd = cmd + " export TARGET_VENDOR=\"-poky\";" 212 cmd = cmd + " export PATH=%s/recipe-sysroot-native/usr/bin/python3-native:%s/recipe-sysroot-native/usr/bin:%s/recipe-sysroot-native/usr/bin/%s:%s/hosttools:$PATH;" % (rustlibpath, rustlibpath, rustlibpath, tcpath, tmpdir)
215 cmd = cmd + " export PATH=%s/recipe-sysroot-native/usr/bin/%s:%s/hosttools:$PATH;" % (rustlibpath, tcpath, tmpdir)
216 cmd = cmd + " export RUST_TARGET_PATH=%s/rust-targets;" % rustlibpath 213 cmd = cmd + " export RUST_TARGET_PATH=%s/rust-targets;" % rustlibpath
217 # Trigger testing. 214 # Trigger testing.
218 cmd = cmd + " export TEST_DEVICE_ADDR=\"%s:12345\";" % qemu.ip 215 cmd = cmd + " export TEST_DEVICE_ADDR=\"%s:12345\";" % qemu.ip
diff --git a/meta/lib/oeqa/selftest/cases/sstatetests.py b/meta/lib/oeqa/selftest/cases/sstatetests.py
index 86d6cd7464..4a2c425ac8 100644
--- a/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -977,7 +977,7 @@ class SStateMirrors(SStateBase):
977 self.append_config(""" 977 self.append_config("""
978MACHINE = "{}" 978MACHINE = "{}"
979BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687" 979BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687"
980SSTATE_MIRRORS ?= "file://.* http://cdn.jsdelivr.net/yocto/sstate/all/PATH;downloadfilename=PATH" 980SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
981""".format(machine)) 981""".format(machine))
982 else: 982 else:
983 self.append_config(""" 983 self.append_config("""
diff --git a/meta/lib/oeqa/utils/gitarchive.py b/meta/lib/oeqa/utils/gitarchive.py
index 10cb267dfa..a826646059 100644
--- a/meta/lib/oeqa/utils/gitarchive.py
+++ b/meta/lib/oeqa/utils/gitarchive.py
@@ -67,7 +67,7 @@ def git_commit_data(repo, data_dir, branch, message, exclude, notes, log):
67 67
68 # Remove files that are excluded 68 # Remove files that are excluded
69 if exclude: 69 if exclude:
70 repo.run_cmd(['rm', '--cached'] + [f for f in exclude], env_update) 70 repo.run_cmd(['rm', '--cached', '--ignore-unmatch'] + [f for f in exclude], env_update)
71 71
72 tree = repo.run_cmd('write-tree', env_update) 72 tree = repo.run_cmd('write-tree', env_update)
73 73
@@ -202,6 +202,8 @@ def gitarchive(data_dir, git_dir, no_create, bare, commit_msg_subject, commit_ms
202 log.info("Pushing data to remote") 202 log.info("Pushing data to remote")
203 data_repo.run_cmd(cmd) 203 data_repo.run_cmd(cmd)
204 204
205 return tag_name
206
205# Container class for tester revisions 207# Container class for tester revisions
206TestedRev = namedtuple('TestedRev', 'commit commit_number tags') 208TestedRev = namedtuple('TestedRev', 'commit commit_number tags')
207 209
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index cda43aad8c..f1c2d2b5c9 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -519,7 +519,6 @@ class QemuRunner:
519 except Exception as e: 519 except Exception as e:
520 self.logger.warning('Extra log data exception %s' % repr(e)) 520 self.logger.warning('Extra log data exception %s' % repr(e))
521 data = None 521 data = None
522 self.thread.serial_lock.release()
523 return False 522 return False
524 523
525 with self.thread.serial_lock: 524 with self.thread.serial_lock:
@@ -822,10 +821,12 @@ class LoggingThread(threading.Thread):
822 self.logfunc(data, ".stdout") 821 self.logfunc(data, ".stdout")
823 elif self.serialsock and self.serialsock.fileno() == fd: 822 elif self.serialsock and self.serialsock.fileno() == fd:
824 if self.serial_lock.acquire(blocking=False): 823 if self.serial_lock.acquire(blocking=False):
825 data = self.recv(1024, self.serialsock) 824 try:
826 self.logger.debug("Data received serial thread %s" % data.decode('utf-8', 'replace')) 825 data = self.recv(1024, self.serialsock)
827 self.logfunc(data, ".2") 826 self.logger.debug("Data received serial thread %s" % data.decode('utf-8', 'replace'))
828 self.serial_lock.release() 827 self.logfunc(data, ".2")
828 finally:
829 self.serial_lock.release()
829 else: 830 else:
830 serial_registered = False 831 serial_registered = False
831 poll.unregister(self.serialsock.fileno()) 832 poll.unregister(self.serialsock.fileno())
diff --git a/meta/recipes-bsp/grub/files/0001-misc-Implement-grub_strlcpy.patch b/meta/recipes-bsp/grub/files/0001-misc-Implement-grub_strlcpy.patch
new file mode 100644
index 0000000000..0ff6dff33a
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/0001-misc-Implement-grub_strlcpy.patch
@@ -0,0 +1,68 @@
1From ea703528a8581a2ea7e0bad424a70fdf0aec7d8f Mon Sep 17 00:00:00 2001
2From: B Horn <b@horn.uk>
3Date: Sat, 15 Jun 2024 02:33:08 +0100
4Subject: [PATCH 1/2] misc: Implement grub_strlcpy()
5
6grub_strlcpy() acts the same way as strlcpy() does on most *NIX,
7returning the length of src and ensuring dest is always NUL
8terminated except when size is 0.
9
10Signed-off-by: B Horn <b@horn.uk>
11Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
12
13Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=ea703528a8581a2ea7e0bad424a70fdf0aec7d8f]
14Signed-off-by: Peter Marko <peter.marko@siemens.com>
15---
16 include/grub/misc.h | 39 +++++++++++++++++++++++++++++++++++++++
17 1 file changed, 39 insertions(+)
18
19diff --git a/include/grub/misc.h b/include/grub/misc.h
20index 1578f36c3..14d8f37ac 100644
21--- a/include/grub/misc.h
22+++ b/include/grub/misc.h
23@@ -64,6 +64,45 @@ grub_stpcpy (char *dest, const char *src)
24 return d - 1;
25 }
26
27+static inline grub_size_t
28+grub_strlcpy (char *dest, const char *src, grub_size_t size)
29+{
30+ char *d = dest;
31+ grub_size_t res = 0;
32+ /*
33+ * We do not subtract one from size here to avoid dealing with underflowing
34+ * the value, which is why to_copy is always checked to be greater than one
35+ * throughout this function.
36+ */
37+ grub_size_t to_copy = size;
38+
39+ /* Copy size - 1 bytes to dest. */
40+ if (to_copy > 1)
41+ while ((*d++ = *src++) != '\0' && ++res && --to_copy > 1)
42+ ;
43+
44+ /*
45+ * NUL terminate if size != 0. The previous step may have copied a NUL byte
46+ * if it reached the end of the string, but we know dest[size - 1] must always
47+ * be a NUL byte.
48+ */
49+ if (size != 0)
50+ dest[size - 1] = '\0';
51+
52+ /* If there is still space in dest, but are here, we reached the end of src. */
53+ if (to_copy > 1)
54+ return res;
55+
56+ /*
57+ * If we haven't reached the end of the string, iterate through to determine
58+ * the strings total length.
59+ */
60+ while (*src++ != '\0' && ++res)
61+ ;
62+
63+ return res;
64+}
65+
66 /* XXX: If grub_memmove is too slow, we must implement grub_memcpy. */
67 static inline void *
68 grub_memcpy (void *dest, const void *src, grub_size_t n)
diff --git a/meta/recipes-bsp/grub/files/CVE-2024-45774.patch b/meta/recipes-bsp/grub/files/CVE-2024-45774.patch
new file mode 100644
index 0000000000..55aecc17d7
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2024-45774.patch
@@ -0,0 +1,37 @@
1From 2c34af908ebf4856051ed29e46d88abd2b20387f Mon Sep 17 00:00:00 2001
2From: Daniel Axtens <dja@axtens.net>
3Date: Fri, 8 Mar 2024 22:47:20 +1100
4Subject: [PATCH] video/readers/jpeg: Do not permit duplicate SOF0 markers in
5 JPEG
6
7Otherwise a subsequent header could change the height and width
8allowing future OOB writes.
9
10Fixes: CVE-2024-45774
11
12Reported-by: Nils Langius <nils@langius.de>
13Signed-off-by: Daniel Axtens <dja@axtens.net>
14Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
15
16CVE: CVE-2024-45774
17Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=2c34af908ebf4856051ed29e46d88abd2b20387f]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 grub-core/video/readers/jpeg.c | 4 ++++
21 1 file changed, 4 insertions(+)
22
23diff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c
24index ae634fd41..631a89356 100644
25--- a/grub-core/video/readers/jpeg.c
26+++ b/grub-core/video/readers/jpeg.c
27@@ -339,6 +339,10 @@ grub_jpeg_decode_sof (struct grub_jpeg_data *data)
28 if (grub_errno != GRUB_ERR_NONE)
29 return grub_errno;
30
31+ if (data->image_height != 0 || data->image_width != 0)
32+ return grub_error (GRUB_ERR_BAD_FILE_TYPE,
33+ "jpeg: cannot have duplicate SOF0 markers");
34+
35 if (grub_jpeg_get_byte (data) != 8)
36 return grub_error (GRUB_ERR_BAD_FILE_TYPE,
37 "jpeg: only 8-bit precision is supported");
diff --git a/meta/recipes-bsp/grub/files/CVE-2024-45775.patch b/meta/recipes-bsp/grub/files/CVE-2024-45775.patch
new file mode 100644
index 0000000000..70492b8c2e
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2024-45775.patch
@@ -0,0 +1,38 @@
1From 05be856a8c3aae41f5df90cab7796ab7ee34b872 Mon Sep 17 00:00:00 2001
2From: Lidong Chen <lidong.chen@oracle.com>
3Date: Fri, 22 Nov 2024 06:27:55 +0000
4Subject: [PATCH] commands/extcmd: Missing check for failed allocation
5
6The grub_extcmd_dispatcher() calls grub_arg_list_alloc() to allocate
7a grub_arg_list struct but it does not verify the allocation was successful.
8In case of failed allocation the NULL state pointer can be accessed in
9parse_option() through grub_arg_parse() which may lead to a security issue.
10
11Fixes: CVE-2024-45775
12
13Reported-by: Nils Langius <nils@langius.de>
14Signed-off-by: Lidong Chen <lidong.chen@oracle.com>
15Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
16Reviewed-by: Alec Brown <alec.r.brown@oracle.com>
17
18CVE: CVE-2024-45775
19Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=05be856a8c3aae41f5df90cab7796ab7ee34b872]
20Signed-off-by: Peter Marko <peter.marko@siemens.com>
21---
22 grub-core/commands/extcmd.c | 3 +++
23 1 file changed, 3 insertions(+)
24
25diff --git a/grub-core/commands/extcmd.c b/grub-core/commands/extcmd.c
26index 90a5ca24a..c236be13a 100644
27--- a/grub-core/commands/extcmd.c
28+++ b/grub-core/commands/extcmd.c
29@@ -49,6 +49,9 @@ grub_extcmd_dispatcher (struct grub_command *cmd, int argc, char **args,
30 }
31
32 state = grub_arg_list_alloc (ext, argc, args);
33+ if (state == NULL)
34+ return grub_errno;
35+
36 if (grub_arg_parse (ext, argc, args, state, &new_args, &new_argc))
37 {
38 context.state = state;
diff --git a/meta/recipes-bsp/grub/files/CVE-2024-45776.patch b/meta/recipes-bsp/grub/files/CVE-2024-45776.patch
new file mode 100644
index 0000000000..8deea958b8
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2024-45776.patch
@@ -0,0 +1,39 @@
1From 09bd6eb58b0f71ec273916070fa1e2de16897a91 Mon Sep 17 00:00:00 2001
2From: Lidong Chen <lidong.chen@oracle.com>
3Date: Fri, 22 Nov 2024 06:27:56 +0000
4Subject: [PATCH] gettext: Integer overflow leads to heap OOB write or read
5
6Calculation of ctx->grub_gettext_msg_list size in grub_mofile_open() may
7overflow leading to subsequent OOB write or read. This patch fixes the
8issue by replacing grub_zalloc() and explicit multiplication with
9grub_calloc() which does the same thing in safe manner.
10
11Fixes: CVE-2024-45776
12
13Reported-by: Nils Langius <nils@langius.de>
14Signed-off-by: Lidong Chen <lidong.chen@oracle.com>
15Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
16Reviewed-by: Alec Brown <alec.r.brown@oracle.com>
17
18CVE: CVE-2024-45776
19Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=09bd6eb58b0f71ec273916070fa1e2de16897a91]
20Signed-off-by: Peter Marko <peter.marko@siemens.com>
21---
22 grub-core/gettext/gettext.c | 4 ++--
23 1 file changed, 2 insertions(+), 2 deletions(-)
24
25diff --git a/grub-core/gettext/gettext.c b/grub-core/gettext/gettext.c
26index e4f4f8ee6..63bb1ab73 100644
27--- a/grub-core/gettext/gettext.c
28+++ b/grub-core/gettext/gettext.c
29@@ -323,8 +323,8 @@ grub_mofile_open (struct grub_gettext_context *ctx,
30 for (ctx->grub_gettext_max_log = 0; ctx->grub_gettext_max >> ctx->grub_gettext_max_log;
31 ctx->grub_gettext_max_log++);
32
33- ctx->grub_gettext_msg_list = grub_zalloc (ctx->grub_gettext_max
34- * sizeof (ctx->grub_gettext_msg_list[0]));
35+ ctx->grub_gettext_msg_list = grub_calloc (ctx->grub_gettext_max,
36+ sizeof (ctx->grub_gettext_msg_list[0]));
37 if (!ctx->grub_gettext_msg_list)
38 {
39 grub_file_close (fd);
diff --git a/meta/recipes-bsp/grub/files/CVE-2024-45777.patch b/meta/recipes-bsp/grub/files/CVE-2024-45777.patch
new file mode 100644
index 0000000000..0305a95fd5
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2024-45777.patch
@@ -0,0 +1,57 @@
1From b970a5ed967816bbca8225994cd0ee2557bad515 Mon Sep 17 00:00:00 2001
2From: Lidong Chen <lidong.chen@oracle.com>
3Date: Fri, 22 Nov 2024 06:27:57 +0000
4Subject: [PATCH] gettext: Integer overflow leads to heap OOB write
5
6The size calculation of the translation buffer in
7grub_gettext_getstr_from_position() may overflow
8to 0 leading to heap OOB write. This patch fixes
9the issue by using grub_add() and checking for
10an overflow.
11
12Fixes: CVE-2024-45777
13
14Reported-by: Nils Langius <nils@langius.de>
15Signed-off-by: Lidong Chen <lidong.chen@oracle.com>
16Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
17Reviewed-by: Alec Brown <alec.r.brown@oracle.com>
18
19CVE: CVE-2024-45777
20Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=b970a5ed967816bbca8225994cd0ee2557bad515]
21Signed-off-by: Peter Marko <peter.marko@siemens.com>
22---
23 grub-core/gettext/gettext.c | 7 ++++++-
24 1 file changed, 6 insertions(+), 1 deletion(-)
25
26diff --git a/grub-core/gettext/gettext.c b/grub-core/gettext/gettext.c
27index 63bb1ab73..9ffc73428 100644
28--- a/grub-core/gettext/gettext.c
29+++ b/grub-core/gettext/gettext.c
30@@ -26,6 +26,7 @@
31 #include <grub/file.h>
32 #include <grub/kernel.h>
33 #include <grub/i18n.h>
34+#include <grub/safemath.h>
35
36 GRUB_MOD_LICENSE ("GPLv3+");
37
38@@ -99,6 +100,7 @@ grub_gettext_getstr_from_position (struct grub_gettext_context *ctx,
39 char *translation;
40 struct string_descriptor desc;
41 grub_err_t err;
42+ grub_size_t alloc_sz;
43
44 internal_position = (off + position * sizeof (desc));
45
46@@ -109,7 +111,10 @@ grub_gettext_getstr_from_position (struct grub_gettext_context *ctx,
47 length = grub_cpu_to_le32 (desc.length);
48 offset = grub_cpu_to_le32 (desc.offset);
49
50- translation = grub_malloc (length + 1);
51+ if (grub_add (length, 1, &alloc_sz))
52+ return NULL;
53+
54+ translation = grub_malloc (alloc_sz);
55 if (!translation)
56 return NULL;
57
diff --git a/meta/recipes-bsp/grub/files/CVE-2024-45778_CVE-2024-45779.patch b/meta/recipes-bsp/grub/files/CVE-2024-45778_CVE-2024-45779.patch
new file mode 100644
index 0000000000..eba013897f
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2024-45778_CVE-2024-45779.patch
@@ -0,0 +1,55 @@
1From 26db6605036bd9e5b16d9068a8cc75be63b8b630 Mon Sep 17 00:00:00 2001
2From: Daniel Axtens <dja@axtens.net>
3Date: Sat, 23 Mar 2024 15:59:43 +1100
4Subject: [PATCH] fs/bfs: Disable under lockdown
5
6The BFS is not fuzz-clean. Don't allow it to be loaded under lockdown.
7This will also disable the AFS.
8
9Fixes: CVE-2024-45778
10Fixes: CVE-2024-45779
11
12Reported-by: Nils Langius <nils@langius.de>
13Signed-off-by: Daniel Axtens <dja@axtens.net>
14Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
15
16CVE: CVE-2024-45778
17CVE: CVE-2024-45779
18Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 grub-core/fs/bfs.c | 9 +++++++--
22 1 file changed, 7 insertions(+), 2 deletions(-)
23
24diff --git a/grub-core/fs/bfs.c b/grub-core/fs/bfs.c
25index 022f69fe2..78aeb051f 100644
26--- a/grub-core/fs/bfs.c
27+++ b/grub-core/fs/bfs.c
28@@ -30,6 +30,7 @@
29 #include <grub/types.h>
30 #include <grub/i18n.h>
31 #include <grub/fshelp.h>
32+#include <grub/lockdown.h>
33
34 GRUB_MOD_LICENSE ("GPLv3+");
35
36@@ -1106,7 +1107,10 @@ GRUB_MOD_INIT (bfs)
37 {
38 COMPILE_TIME_ASSERT (1 << LOG_EXTENT_SIZE ==
39 sizeof (struct grub_bfs_extent));
40- grub_fs_register (&grub_bfs_fs);
41+ if (!grub_is_lockdown ())
42+ {
43+ grub_fs_register (&grub_bfs_fs);
44+ }
45 }
46
47 #ifdef MODE_AFS
48@@ -1115,5 +1119,6 @@ GRUB_MOD_FINI (afs)
49 GRUB_MOD_FINI (bfs)
50 #endif
51 {
52- grub_fs_unregister (&grub_bfs_fs);
53+ if (!grub_is_lockdown ())
54+ grub_fs_unregister (&grub_bfs_fs);
55 }
diff --git a/meta/recipes-bsp/grub/files/CVE-2024-45780.patch b/meta/recipes-bsp/grub/files/CVE-2024-45780.patch
new file mode 100644
index 0000000000..1de0099f94
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2024-45780.patch
@@ -0,0 +1,93 @@
1From 0087bc6902182fe5cedce2d034c75a79cf6dd4f3 Mon Sep 17 00:00:00 2001
2From: Lidong Chen <lidong.chen@oracle.com>
3Date: Fri, 22 Nov 2024 06:27:58 +0000
4Subject: [PATCH] fs/tar: Integer overflow leads to heap OOB write
5
6Both namesize and linksize are derived from hd.size, a 12-digit octal
7number parsed by read_number(). Later direct arithmetic calculation like
8"namesize + 1" and "linksize + 1" may exceed the maximum value of
9grub_size_t leading to heap OOB write. This patch fixes the issue by
10using grub_add() and checking for an overflow.
11
12Fixes: CVE-2024-45780
13
14Reported-by: Nils Langius <nils@langius.de>
15Signed-off-by: Lidong Chen <lidong.chen@oracle.com>
16Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
17Reviewed-by: Alec Brown <alec.r.brown@oracle.com>
18
19CVE: CVE-2024-45780
20Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=0087bc6902182fe5cedce2d034c75a79cf6dd4f3]
21Signed-off-by: Peter Marko <peter.marko@siemens.com>
22---
23 grub-core/fs/tar.c | 23 ++++++++++++++++++-----
24 1 file changed, 18 insertions(+), 5 deletions(-)
25
26diff --git a/grub-core/fs/tar.c b/grub-core/fs/tar.c
27index 646bce5eb..386c09022 100644
28--- a/grub-core/fs/tar.c
29+++ b/grub-core/fs/tar.c
30@@ -25,6 +25,7 @@
31 #include <grub/mm.h>
32 #include <grub/dl.h>
33 #include <grub/i18n.h>
34+#include <grub/safemath.h>
35
36 GRUB_MOD_LICENSE ("GPLv3+");
37
38@@ -76,6 +77,7 @@ grub_cpio_find_file (struct grub_archelp_data *data, char **name,
39 {
40 struct head hd;
41 int reread = 0, have_longname = 0, have_longlink = 0;
42+ grub_size_t sz;
43
44 data->hofs = data->next_hofs;
45
46@@ -97,7 +99,11 @@ grub_cpio_find_file (struct grub_archelp_data *data, char **name,
47 {
48 grub_err_t err;
49 grub_size_t namesize = read_number (hd.size, sizeof (hd.size));
50- *name = grub_malloc (namesize + 1);
51+
52+ if (grub_add (namesize, 1, &sz))
53+ return grub_error (GRUB_ERR_BAD_FS, N_("name size overflow"));
54+
55+ *name = grub_malloc (sz);
56 if (*name == NULL)
57 return grub_errno;
58 err = grub_disk_read (data->disk, 0,
59@@ -117,15 +123,19 @@ grub_cpio_find_file (struct grub_archelp_data *data, char **name,
60 {
61 grub_err_t err;
62 grub_size_t linksize = read_number (hd.size, sizeof (hd.size));
63- if (data->linkname_alloc < linksize + 1)
64+
65+ if (grub_add (linksize, 1, &sz))
66+ return grub_error (GRUB_ERR_BAD_FS, N_("link size overflow"));
67+
68+ if (data->linkname_alloc < sz)
69 {
70 char *n;
71- n = grub_calloc (2, linksize + 1);
72+ n = grub_calloc (2, sz);
73 if (!n)
74 return grub_errno;
75 grub_free (data->linkname);
76 data->linkname = n;
77- data->linkname_alloc = 2 * (linksize + 1);
78+ data->linkname_alloc = 2 * (sz);
79 }
80
81 err = grub_disk_read (data->disk, 0,
82@@ -148,7 +158,10 @@ grub_cpio_find_file (struct grub_archelp_data *data, char **name,
83 while (extra_size < sizeof (hd.prefix)
84 && hd.prefix[extra_size])
85 extra_size++;
86- *name = grub_malloc (sizeof (hd.name) + extra_size + 2);
87+
88+ if (grub_add (sizeof (hd.name) + 2, extra_size, &sz))
89+ return grub_error (GRUB_ERR_BAD_FS, N_("long name size overflow"));
90+ *name = grub_malloc (sz);
91 if (*name == NULL)
92 return grub_errno;
93 if (hd.prefix[0])
diff --git a/meta/recipes-bsp/grub/files/CVE-2024-45781.patch b/meta/recipes-bsp/grub/files/CVE-2024-45781.patch
new file mode 100644
index 0000000000..bd0b6aa04a
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2024-45781.patch
@@ -0,0 +1,35 @@
1From c1a291b01f4f1dcd6a22b61f1c81a45a966d16ba Mon Sep 17 00:00:00 2001
2From: B Horn <b@horn.uk>
3Date: Sun, 12 May 2024 02:03:33 +0100
4Subject: [PATCH 2/2] fs/ufs: Fix a heap OOB write
5
6grub_strcpy() was used to copy a symlink name from the filesystem
7image to a heap allocated buffer. This led to a OOB write to adjacent
8heap allocations. Fix by using grub_strlcpy().
9
10Fixes: CVE-2024-45781
11
12Reported-by: B Horn <b@horn.uk>
13Signed-off-by: B Horn <b@horn.uk>
14Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
15
16CVE: CVE-2024-45781
17Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=c1a291b01f4f1dcd6a22b61f1c81a45a966d16ba]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 grub-core/fs/ufs.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/grub-core/fs/ufs.c b/grub-core/fs/ufs.c
24index a354c92d9..01235101b 100644
25--- a/grub-core/fs/ufs.c
26+++ b/grub-core/fs/ufs.c
27@@ -463,7 +463,7 @@ grub_ufs_lookup_symlink (struct grub_ufs_data *data, int ino)
28 /* Check against zero is paylindromic, no need to swap. */
29 if (data->inode.nblocks == 0
30 && INODE_SIZE (data) <= sizeof (data->inode.symlink))
31- grub_strcpy (symlink, (char *) data->inode.symlink);
32+ grub_strlcpy (symlink, (char *) data->inode.symlink, sz);
33 else
34 {
35 if (grub_ufs_read_file (data, 0, 0, 0, sz, symlink) < 0)
diff --git a/meta/recipes-bsp/grub/files/CVE-2024-45782_CVE-2024-56737.patch b/meta/recipes-bsp/grub/files/CVE-2024-45782_CVE-2024-56737.patch
new file mode 100644
index 0000000000..41cc025b81
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2024-45782_CVE-2024-56737.patch
@@ -0,0 +1,36 @@
1From 417547c10410b714e43f08f74137c24015f8f4c3 Mon Sep 17 00:00:00 2001
2From: B Horn <b@horn.uk>
3Date: Sun, 12 May 2024 02:48:33 +0100
4Subject: [PATCH] fs/hfs: Fix stack OOB write with grub_strcpy()
5
6Replaced with grub_strlcpy().
7
8Fixes: CVE-2024-45782
9Fixes: CVE-2024-56737
10Fixes: https://savannah.gnu.org/bugs/?66599
11
12Reported-by: B Horn <b@horn.uk>
13Signed-off-by: B Horn <b@horn.uk>
14Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
15
16CVE: CVE-2024-45782
17CVE: CVE-2024-56737
18Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=417547c10410b714e43f08f74137c24015f8f4c3]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 grub-core/fs/hfs.c | 2 +-
22 1 file changed, 1 insertion(+), 1 deletion(-)
23
24diff --git a/grub-core/fs/hfs.c b/grub-core/fs/hfs.c
25index 91dc0e69c..920112b03 100644
26--- a/grub-core/fs/hfs.c
27+++ b/grub-core/fs/hfs.c
28@@ -379,7 +379,7 @@ grub_hfs_mount (grub_disk_t disk)
29 volume name. */
30 key.parent_dir = grub_cpu_to_be32_compile_time (1);
31 key.strlen = data->sblock.volname[0];
32- grub_strcpy ((char *) key.str, (char *) (data->sblock.volname + 1));
33+ grub_strlcpy ((char *) key.str, (char *) (data->sblock.volname + 1), sizeof (key.str));
34
35 if (grub_hfs_find_node (data, (char *) &key, data->cat_root,
36 0, (char *) &dir, sizeof (dir)) == 0)
diff --git a/meta/recipes-bsp/grub/files/CVE-2024-45783.patch b/meta/recipes-bsp/grub/files/CVE-2024-45783.patch
new file mode 100644
index 0000000000..99c769961b
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2024-45783.patch
@@ -0,0 +1,39 @@
1From f7c070a2e28dfab7137db0739fb8db1dc02d8898 Mon Sep 17 00:00:00 2001
2From: B Horn <b@horn.uk>
3Date: Sun, 12 May 2024 06:22:51 +0100
4Subject: [PATCH] fs/hfsplus: Set a grub_errno if mount fails
5
6It was possible for mount to fail but not set grub_errno. This led to
7a possible double decrement of the module reference count if the NULL
8page was mapped.
9
10Fixing in general as a similar bug was fixed in commit 61b13c187
11(fs/hfsplus: Set grub_errno to prevent NULL pointer access) and there
12are likely more variants around.
13
14Fixes: CVE-2024-45783
15
16Reported-by: B Horn <b@horn.uk>
17Signed-off-by: B Horn <b@horn.uk>
18Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
19
20CVE: CVE-2024-45783
21Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=f7c070a2e28dfab7137db0739fb8db1dc02d8898]
22Signed-off-by: Peter Marko <peter.marko@siemens.com>
23---
24 grub-core/fs/hfsplus.c | 2 +-
25 1 file changed, 1 insertion(+), 1 deletion(-)
26
27diff --git a/grub-core/fs/hfsplus.c b/grub-core/fs/hfsplus.c
28index 295822f69..de71fd486 100644
29--- a/grub-core/fs/hfsplus.c
30+++ b/grub-core/fs/hfsplus.c
31@@ -405,7 +405,7 @@ grub_hfsplus_mount (grub_disk_t disk)
32
33 fail:
34
35- if (grub_errno == GRUB_ERR_OUT_OF_RANGE)
36+ if (grub_errno == GRUB_ERR_OUT_OF_RANGE || grub_errno == GRUB_ERR_NONE)
37 grub_error (GRUB_ERR_BAD_FS, "not a HFS+ filesystem");
38
39 grub_free (data);
diff --git a/meta/recipes-bsp/grub/files/CVE-2025-0622-01.patch b/meta/recipes-bsp/grub/files/CVE-2025-0622-01.patch
new file mode 100644
index 0000000000..09dbfce5f8
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2025-0622-01.patch
@@ -0,0 +1,35 @@
1From 2123c5bca7e21fbeb0263df4597ddd7054700726 Mon Sep 17 00:00:00 2001
2From: B Horn <b@horn.uk>
3Date: Fri, 1 Nov 2024 19:24:29 +0000
4Subject: [PATCH 1/3] commands/pgp: Unregister the "check_signatures" hooks on
5 module unload
6
7If the hooks are not removed they can be called after the module has
8been unloaded leading to an use-after-free.
9
10Fixes: CVE-2025-0622
11
12Reported-by: B Horn <b@horn.uk>
13Signed-off-by: B Horn <b@horn.uk>
14Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
15
16CVE: CVE-2025-0622
17Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=2123c5bca7e21fbeb0263df4597ddd7054700726]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 grub-core/commands/pgp.c | 2 ++
21 1 file changed, 2 insertions(+)
22
23diff --git a/grub-core/commands/pgp.c b/grub-core/commands/pgp.c
24index c6766f044..5fadc33c4 100644
25--- a/grub-core/commands/pgp.c
26+++ b/grub-core/commands/pgp.c
27@@ -1010,6 +1010,8 @@ GRUB_MOD_INIT(pgp)
28
29 GRUB_MOD_FINI(pgp)
30 {
31+ grub_register_variable_hook ("check_signatures", NULL, NULL);
32+ grub_env_unset ("check_signatures");
33 grub_verifier_unregister (&grub_pubkey_verifier);
34 grub_unregister_extcmd (cmd);
35 grub_unregister_extcmd (cmd_trust);
diff --git a/meta/recipes-bsp/grub/files/CVE-2025-0622-02.patch b/meta/recipes-bsp/grub/files/CVE-2025-0622-02.patch
new file mode 100644
index 0000000000..be01da3355
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2025-0622-02.patch
@@ -0,0 +1,41 @@
1From 9c16197734ada8d0838407eebe081117799bfe67 Mon Sep 17 00:00:00 2001
2From: B Horn <b@horn.uk>
3Date: Fri, 1 Nov 2024 23:46:55 +0000
4Subject: [PATCH 2/3] normal: Remove variables hooks on module unload
5
6The normal module does not entirely cleanup after itself in
7its GRUB_MOD_FINI() leaving a few variables hooks in place.
8It is not possible to unload normal module now but fix the
9issues for completeness.
10
11On the occasion replace 0s with NULLs for "pager" variable
12hooks unregister.
13
14Fixes: CVE-2025-0622
15
16Reported-by: B Horn <b@horn.uk>
17Signed-off-by: B Horn <b@horn.uk>
18Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
19
20CVE: CVE-2025-0622
21Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=9c16197734ada8d0838407eebe081117799bfe67]
22Signed-off-by: Peter Marko <peter.marko@siemens.com>
23---
24 grub-core/normal/main.c | 4 +++-
25 1 file changed, 3 insertions(+), 1 deletion(-)
26
27diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
28index 838f57fa5..04d058f55 100644
29--- a/grub-core/normal/main.c
30+++ b/grub-core/normal/main.c
31@@ -582,7 +582,9 @@ GRUB_MOD_FINI(normal)
32 grub_xputs = grub_xputs_saved;
33
34 grub_set_history (0);
35- grub_register_variable_hook ("pager", 0, 0);
36+ grub_register_variable_hook ("pager", NULL, NULL);
37+ grub_register_variable_hook ("color_normal", NULL, NULL);
38+ grub_register_variable_hook ("color_highlight", NULL, NULL);
39 grub_fs_autoload_hook = 0;
40 grub_unregister_command (cmd_clear);
41 }
diff --git a/meta/recipes-bsp/grub/files/CVE-2025-0622-03.patch b/meta/recipes-bsp/grub/files/CVE-2025-0622-03.patch
new file mode 100644
index 0000000000..79078a4350
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2025-0622-03.patch
@@ -0,0 +1,38 @@
1From 7580addfc8c94cedb0cdfd7a1fd65b539215e637 Mon Sep 17 00:00:00 2001
2From: B Horn <b@horn.uk>
3Date: Fri, 1 Nov 2024 23:52:06 +0000
4Subject: [PATCH 3/3] gettext: Remove variables hooks on module unload
5
6The gettext module does not entirely cleanup after itself in
7its GRUB_MOD_FINI() leaving a few variables hooks in place.
8It is not possible to unload gettext module because normal
9module depends on it. Though fix the issues for completeness.
10
11Fixes: CVE-2025-0622
12
13Reported-by: B Horn <b@horn.uk>
14Signed-off-by: B Horn <b@horn.uk>
15Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
16
17CVE: CVE-2025-0622
18Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=7580addfc8c94cedb0cdfd7a1fd65b539215e637]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 grub-core/gettext/gettext.c | 4 ++++
22 1 file changed, 4 insertions(+)
23
24diff --git a/grub-core/gettext/gettext.c b/grub-core/gettext/gettext.c
25index 7a1c14e4f..e4f4f8ee6 100644
26--- a/grub-core/gettext/gettext.c
27+++ b/grub-core/gettext/gettext.c
28@@ -535,6 +535,10 @@ GRUB_MOD_INIT (gettext)
29
30 GRUB_MOD_FINI (gettext)
31 {
32+ grub_register_variable_hook ("locale_dir", NULL, NULL);
33+ grub_register_variable_hook ("secondary_locale_dir", NULL, NULL);
34+ grub_register_variable_hook ("lang", NULL, NULL);
35+
36 grub_gettext_delete_list (&main_context);
37 grub_gettext_delete_list (&secondary_context);
38
diff --git a/meta/recipes-bsp/grub/files/CVE-2025-0624.patch b/meta/recipes-bsp/grub/files/CVE-2025-0624.patch
new file mode 100644
index 0000000000..229fe6399e
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2025-0624.patch
@@ -0,0 +1,84 @@
1From 5eef88152833062a3f7e017535372d64ac8ef7e1 Mon Sep 17 00:00:00 2001
2From: B Horn <b@horn.uk>
3Date: Fri, 15 Nov 2024 13:12:09 +0000
4Subject: [PATCH] net: Fix OOB write in grub_net_search_config_file()
5
6The function included a call to grub_strcpy() which copied data from an
7environment variable to a buffer allocated in grub_cmd_normal(). The
8grub_cmd_normal() didn't consider the length of the environment variable.
9So, the copy operation could exceed the allocation and lead to an OOB
10write. Fix the issue by replacing grub_strcpy() with grub_strlcpy() and
11pass the underlying buffers size to the grub_net_search_config_file().
12
13Fixes: CVE-2025-0624
14
15Reported-by: B Horn <b@horn.uk>
16Signed-off-by: B Horn <b@horn.uk>
17Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
18
19CVE: CVE-2025-0624
20Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=5eef88152833062a3f7e017535372d64ac8ef7e1]
21Signed-off-by: Peter Marko <peter.marko@siemens.com>
22---
23 grub-core/net/net.c | 7 ++++---
24 grub-core/normal/main.c | 2 +-
25 include/grub/net.h | 2 +-
26 3 files changed, 6 insertions(+), 5 deletions(-)
27
28diff --git a/grub-core/net/net.c b/grub-core/net/net.c
29index 0e41e21a5..9939ff601 100644
30--- a/grub-core/net/net.c
31+++ b/grub-core/net/net.c
32@@ -1909,14 +1909,15 @@ grub_config_search_through (char *config, char *suffix,
33 }
34
35 grub_err_t
36-grub_net_search_config_file (char *config)
37+grub_net_search_config_file (char *config, grub_size_t config_buf_len)
38 {
39- grub_size_t config_len;
40+ grub_size_t config_len, suffix_len;
41 char *suffix;
42
43 config_len = grub_strlen (config);
44 config[config_len] = '-';
45 suffix = config + config_len + 1;
46+ suffix_len = config_buf_len - (config_len + 1);
47
48 struct grub_net_network_level_interface *inf;
49 FOR_NET_NETWORK_LEVEL_INTERFACES (inf)
50@@ -1942,7 +1943,7 @@ grub_net_search_config_file (char *config)
51
52 if (client_uuid)
53 {
54- grub_strcpy (suffix, client_uuid);
55+ grub_strlcpy (suffix, client_uuid, suffix_len);
56 if (grub_config_search_through (config, suffix, 1, 0) == 0)
57 return GRUB_ERR_NONE;
58 }
59diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
60index 90879dc21..838f57fa5 100644
61--- a/grub-core/normal/main.c
62+++ b/grub-core/normal/main.c
63@@ -344,7 +344,7 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
64
65 if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0 &&
66 !disable_net_search)
67- grub_net_search_config_file (config);
68+ grub_net_search_config_file (config, config_len);
69
70 grub_enter_normal_mode (config);
71 grub_free (config);
72diff --git a/include/grub/net.h b/include/grub/net.h
73index 228d04963..58a4f83fc 100644
74--- a/include/grub/net.h
75+++ b/include/grub/net.h
76@@ -579,7 +579,7 @@ void
77 grub_net_remove_dns_server (const struct grub_net_network_level_address *s);
78
79 grub_err_t
80-grub_net_search_config_file (char *config);
81+grub_net_search_config_file (char *config, grub_size_t config_buf_len);
82
83 extern char *grub_net_default_server;
84
diff --git a/meta/recipes-bsp/grub/files/CVE-2025-0677_CVE-2025-0684_CVE-2025-0685_CVE-2025-0686_CVE-2025-0689.patch b/meta/recipes-bsp/grub/files/CVE-2025-0677_CVE-2025-0684_CVE-2025-0685_CVE-2025-0686_CVE-2025-0689.patch
new file mode 100644
index 0000000000..d5563cecc4
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2025-0677_CVE-2025-0684_CVE-2025-0685_CVE-2025-0686_CVE-2025-0689.patch
@@ -0,0 +1,377 @@
1From 47b2dfc7953f70f98ddf35dfdd6e7f4f20283b10 Mon Sep 17 00:00:00 2001
2From: Daniel Axtens <dja@axtens.net>
3Date: Sat, 23 Mar 2024 16:20:45 +1100
4Subject: [PATCH] fs: Disable many filesystems under lockdown
5
6The idea is to permit the following: btrfs, cpio, exfat, ext, f2fs, fat,
7hfsplus, iso9660, squash4, tar, xfs and zfs.
8
9The JFS, ReiserFS, romfs, UDF and UFS security vulnerabilities were
10reported by Jonathan Bar Or <jonathanbaror@gmail.com>.
11
12Fixes: CVE-2025-0677
13Fixes: CVE-2025-0684
14Fixes: CVE-2025-0685
15Fixes: CVE-2025-0686
16Fixes: CVE-2025-0689
17
18Suggested-by: Daniel Axtens <dja@axtens.net>
19Signed-off-by: Daniel Axtens <dja@axtens.net>
20Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
21
22CVE: CVE-2025-0677
23CVE: CVE-2025-0684
24CVE: CVE-2025-0685
25CVE: CVE-2025-0686
26CVE: CVE-2025-0689
27Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=47b2dfc7953f70f98ddf35dfdd6e7f4f20283b10]
28Signed-off-by: Peter Marko <peter.marko@siemens.com>
29---
30 grub-core/fs/affs.c | 9 +++++++--
31 grub-core/fs/cbfs.c | 9 +++++++--
32 grub-core/fs/jfs.c | 9 +++++++--
33 grub-core/fs/minix.c | 9 +++++++--
34 grub-core/fs/nilfs2.c | 9 +++++++--
35 grub-core/fs/ntfs.c | 9 +++++++--
36 grub-core/fs/reiserfs.c | 9 +++++++--
37 grub-core/fs/romfs.c | 9 +++++++--
38 grub-core/fs/sfs.c | 9 +++++++--
39 grub-core/fs/udf.c | 9 +++++++--
40 grub-core/fs/ufs.c | 9 +++++++--
41 11 files changed, 77 insertions(+), 22 deletions(-)
42
43diff --git a/grub-core/fs/affs.c b/grub-core/fs/affs.c
44index ed606b3f1..352f5d232 100644
45--- a/grub-core/fs/affs.c
46+++ b/grub-core/fs/affs.c
47@@ -26,6 +26,7 @@
48 #include <grub/types.h>
49 #include <grub/fshelp.h>
50 #include <grub/charset.h>
51+#include <grub/lockdown.h>
52
53 GRUB_MOD_LICENSE ("GPLv3+");
54
55@@ -703,11 +704,15 @@ static struct grub_fs grub_affs_fs =
56
57 GRUB_MOD_INIT(affs)
58 {
59- grub_fs_register (&grub_affs_fs);
60+ if (!grub_is_lockdown ())
61+ {
62+ grub_fs_register (&grub_affs_fs);
63+ }
64 my_mod = mod;
65 }
66
67 GRUB_MOD_FINI(affs)
68 {
69- grub_fs_unregister (&grub_affs_fs);
70+ if (!grub_is_lockdown ())
71+ grub_fs_unregister (&grub_affs_fs);
72 }
73diff --git a/grub-core/fs/cbfs.c b/grub-core/fs/cbfs.c
74index 8ab7106af..f6349df34 100644
75--- a/grub-core/fs/cbfs.c
76+++ b/grub-core/fs/cbfs.c
77@@ -26,6 +26,7 @@
78 #include <grub/dl.h>
79 #include <grub/i18n.h>
80 #include <grub/cbfs_core.h>
81+#include <grub/lockdown.h>
82
83 GRUB_MOD_LICENSE ("GPLv3+");
84
85@@ -390,12 +391,16 @@ GRUB_MOD_INIT (cbfs)
86 #if (defined (__i386__) || defined (__x86_64__)) && !defined (GRUB_UTIL) && !defined (GRUB_MACHINE_EMU) && !defined (GRUB_MACHINE_XEN)
87 init_cbfsdisk ();
88 #endif
89- grub_fs_register (&grub_cbfs_fs);
90+ if (!grub_is_lockdown ())
91+ {
92+ grub_fs_register (&grub_cbfs_fs);
93+ }
94 }
95
96 GRUB_MOD_FINI (cbfs)
97 {
98- grub_fs_unregister (&grub_cbfs_fs);
99+ if (!grub_is_lockdown ())
100+ grub_fs_unregister (&grub_cbfs_fs);
101 #if (defined (__i386__) || defined (__x86_64__)) && !defined (GRUB_UTIL) && !defined (GRUB_MACHINE_EMU) && !defined (GRUB_MACHINE_XEN)
102 fini_cbfsdisk ();
103 #endif
104diff --git a/grub-core/fs/jfs.c b/grub-core/fs/jfs.c
105index 6f7c43904..c0bbab8a9 100644
106--- a/grub-core/fs/jfs.c
107+++ b/grub-core/fs/jfs.c
108@@ -26,6 +26,7 @@
109 #include <grub/types.h>
110 #include <grub/charset.h>
111 #include <grub/i18n.h>
112+#include <grub/lockdown.h>
113
114 GRUB_MOD_LICENSE ("GPLv3+");
115
116@@ -963,11 +964,15 @@ static struct grub_fs grub_jfs_fs =
117
118 GRUB_MOD_INIT(jfs)
119 {
120- grub_fs_register (&grub_jfs_fs);
121+ if (!grub_is_lockdown ())
122+ {
123+ grub_fs_register (&grub_jfs_fs);
124+ }
125 my_mod = mod;
126 }
127
128 GRUB_MOD_FINI(jfs)
129 {
130- grub_fs_unregister (&grub_jfs_fs);
131+ if (!grub_is_lockdown ())
132+ grub_fs_unregister (&grub_jfs_fs);
133 }
134diff --git a/grub-core/fs/minix.c b/grub-core/fs/minix.c
135index 5354951d1..c267298b5 100644
136--- a/grub-core/fs/minix.c
137+++ b/grub-core/fs/minix.c
138@@ -25,6 +25,7 @@
139 #include <grub/dl.h>
140 #include <grub/types.h>
141 #include <grub/i18n.h>
142+#include <grub/lockdown.h>
143
144 GRUB_MOD_LICENSE ("GPLv3+");
145
146@@ -734,7 +735,10 @@ GRUB_MOD_INIT(minix)
147 #endif
148 #endif
149 {
150- grub_fs_register (&grub_minix_fs);
151+ if (!grub_is_lockdown ())
152+ {
153+ grub_fs_register (&grub_minix_fs);
154+ }
155 my_mod = mod;
156 }
157
158@@ -756,5 +760,6 @@ GRUB_MOD_FINI(minix)
159 #endif
160 #endif
161 {
162- grub_fs_unregister (&grub_minix_fs);
163+ if (!grub_is_lockdown ())
164+ grub_fs_unregister (&grub_minix_fs);
165 }
166diff --git a/grub-core/fs/nilfs2.c b/grub-core/fs/nilfs2.c
167index fc7374ead..08abf173f 100644
168--- a/grub-core/fs/nilfs2.c
169+++ b/grub-core/fs/nilfs2.c
170@@ -34,6 +34,7 @@
171 #include <grub/dl.h>
172 #include <grub/types.h>
173 #include <grub/fshelp.h>
174+#include <grub/lockdown.h>
175
176 GRUB_MOD_LICENSE ("GPLv3+");
177
178@@ -1231,11 +1232,15 @@ GRUB_MOD_INIT (nilfs2)
179 grub_nilfs2_dat_entry));
180 COMPILE_TIME_ASSERT (1 << LOG_INODE_SIZE
181 == sizeof (struct grub_nilfs2_inode));
182- grub_fs_register (&grub_nilfs2_fs);
183+ if (!grub_is_lockdown ())
184+ {
185+ grub_fs_register (&grub_nilfs2_fs);
186+ }
187 my_mod = mod;
188 }
189
190 GRUB_MOD_FINI (nilfs2)
191 {
192- grub_fs_unregister (&grub_nilfs2_fs);
193+ if (!grub_is_lockdown ())
194+ grub_fs_unregister (&grub_nilfs2_fs);
195 }
196diff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c
197index de435aa14..8cc2ba3d5 100644
198--- a/grub-core/fs/ntfs.c
199+++ b/grub-core/fs/ntfs.c
200@@ -27,6 +27,7 @@
201 #include <grub/fshelp.h>
202 #include <grub/ntfs.h>
203 #include <grub/charset.h>
204+#include <grub/lockdown.h>
205
206 GRUB_MOD_LICENSE ("GPLv3+");
207
208@@ -1320,11 +1321,15 @@ static struct grub_fs grub_ntfs_fs =
209
210 GRUB_MOD_INIT (ntfs)
211 {
212- grub_fs_register (&grub_ntfs_fs);
213+ if (!grub_is_lockdown ())
214+ {
215+ grub_fs_register (&grub_ntfs_fs);
216+ }
217 my_mod = mod;
218 }
219
220 GRUB_MOD_FINI (ntfs)
221 {
222- grub_fs_unregister (&grub_ntfs_fs);
223+ if (!grub_is_lockdown ())
224+ grub_fs_unregister (&grub_ntfs_fs);
225 }
226diff --git a/grub-core/fs/reiserfs.c b/grub-core/fs/reiserfs.c
227index 36b26ac98..cdef2eba0 100644
228--- a/grub-core/fs/reiserfs.c
229+++ b/grub-core/fs/reiserfs.c
230@@ -39,6 +39,7 @@
231 #include <grub/types.h>
232 #include <grub/fshelp.h>
233 #include <grub/i18n.h>
234+#include <grub/lockdown.h>
235
236 GRUB_MOD_LICENSE ("GPLv3+");
237
238@@ -1417,11 +1418,15 @@ static struct grub_fs grub_reiserfs_fs =
239
240 GRUB_MOD_INIT(reiserfs)
241 {
242- grub_fs_register (&grub_reiserfs_fs);
243+ if (!grub_is_lockdown ())
244+ {
245+ grub_fs_register (&grub_reiserfs_fs);
246+ }
247 my_mod = mod;
248 }
249
250 GRUB_MOD_FINI(reiserfs)
251 {
252- grub_fs_unregister (&grub_reiserfs_fs);
253+ if (!grub_is_lockdown ())
254+ grub_fs_unregister (&grub_reiserfs_fs);
255 }
256diff --git a/grub-core/fs/romfs.c b/grub-core/fs/romfs.c
257index 1f7dcfca1..acf8dd21e 100644
258--- a/grub-core/fs/romfs.c
259+++ b/grub-core/fs/romfs.c
260@@ -23,6 +23,7 @@
261 #include <grub/disk.h>
262 #include <grub/fs.h>
263 #include <grub/fshelp.h>
264+#include <grub/lockdown.h>
265
266 GRUB_MOD_LICENSE ("GPLv3+");
267
268@@ -475,10 +476,14 @@ static struct grub_fs grub_romfs_fs =
269
270 GRUB_MOD_INIT(romfs)
271 {
272- grub_fs_register (&grub_romfs_fs);
273+ if (!grub_is_lockdown ())
274+ {
275+ grub_fs_register (&grub_romfs_fs);
276+ }
277 }
278
279 GRUB_MOD_FINI(romfs)
280 {
281- grub_fs_unregister (&grub_romfs_fs);
282+ if (!grub_is_lockdown ())
283+ grub_fs_unregister (&grub_romfs_fs);
284 }
285diff --git a/grub-core/fs/sfs.c b/grub-core/fs/sfs.c
286index 983e88008..f64bdd2df 100644
287--- a/grub-core/fs/sfs.c
288+++ b/grub-core/fs/sfs.c
289@@ -26,6 +26,7 @@
290 #include <grub/types.h>
291 #include <grub/fshelp.h>
292 #include <grub/charset.h>
293+#include <grub/lockdown.h>
294 #include <grub/safemath.h>
295
296 GRUB_MOD_LICENSE ("GPLv3+");
297@@ -779,11 +780,15 @@ static struct grub_fs grub_sfs_fs =
298
299 GRUB_MOD_INIT(sfs)
300 {
301- grub_fs_register (&grub_sfs_fs);
302+ if (!grub_is_lockdown ())
303+ {
304+ grub_fs_register (&grub_sfs_fs);
305+ }
306 my_mod = mod;
307 }
308
309 GRUB_MOD_FINI(sfs)
310 {
311- grub_fs_unregister (&grub_sfs_fs);
312+ if (!grub_is_lockdown ())
313+ grub_fs_unregister (&grub_sfs_fs);
314 }
315diff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c
316index b836e6107..a60643be1 100644
317--- a/grub-core/fs/udf.c
318+++ b/grub-core/fs/udf.c
319@@ -27,6 +27,7 @@
320 #include <grub/fshelp.h>
321 #include <grub/charset.h>
322 #include <grub/datetime.h>
323+#include <grub/lockdown.h>
324 #include <grub/udf.h>
325 #include <grub/safemath.h>
326
327@@ -1455,11 +1456,15 @@ static struct grub_fs grub_udf_fs = {
328
329 GRUB_MOD_INIT (udf)
330 {
331- grub_fs_register (&grub_udf_fs);
332+ if (!grub_is_lockdown ())
333+ {
334+ grub_fs_register (&grub_udf_fs);
335+ }
336 my_mod = mod;
337 }
338
339 GRUB_MOD_FINI (udf)
340 {
341- grub_fs_unregister (&grub_udf_fs);
342+ if (!grub_is_lockdown ())
343+ grub_fs_unregister (&grub_udf_fs);
344 }
345diff --git a/grub-core/fs/ufs.c b/grub-core/fs/ufs.c
346index 01235101b..6b496e7b8 100644
347--- a/grub-core/fs/ufs.c
348+++ b/grub-core/fs/ufs.c
349@@ -25,6 +25,7 @@
350 #include <grub/dl.h>
351 #include <grub/types.h>
352 #include <grub/i18n.h>
353+#include <grub/lockdown.h>
354
355 GRUB_MOD_LICENSE ("GPLv3+");
356
357@@ -899,7 +900,10 @@ GRUB_MOD_INIT(ufs1)
358 #endif
359 #endif
360 {
361- grub_fs_register (&grub_ufs_fs);
362+ if (!grub_is_lockdown ())
363+ {
364+ grub_fs_register (&grub_ufs_fs);
365+ }
366 my_mod = mod;
367 }
368
369@@ -913,6 +917,7 @@ GRUB_MOD_FINI(ufs1)
370 #endif
371 #endif
372 {
373- grub_fs_unregister (&grub_ufs_fs);
374+ if (!grub_is_lockdown ())
375+ grub_fs_unregister (&grub_ufs_fs);
376 }
377
diff --git a/meta/recipes-bsp/grub/files/CVE-2025-0678_CVE-2025-1125.patch b/meta/recipes-bsp/grub/files/CVE-2025-0678_CVE-2025-1125.patch
new file mode 100644
index 0000000000..14e67cf35b
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2025-0678_CVE-2025-1125.patch
@@ -0,0 +1,87 @@
1From 84bc0a9a68835952ae69165c11709811dae7634e Mon Sep 17 00:00:00 2001
2From: Lidong Chen <lidong.chen@oracle.com>
3Date: Tue, 21 Jan 2025 19:02:37 +0000
4Subject: [PATCH] fs: Prevent overflows when allocating memory for arrays
5
6Use grub_calloc() when allocating memory for arrays to ensure proper
7overflow checks are in place.
8
9The HFS+ and squash4 security vulnerabilities were reported by
10Jonathan Bar Or <jonathanbaror@gmail.com>.
11
12Fixes: CVE-2025-0678
13Fixes: CVE-2025-1125
14
15Signed-off-by: Lidong Chen <lidong.chen@oracle.com>
16Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
17
18CVE: CVE-2025-0678
19CVE: CVE-2025-1125
20Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=84bc0a9a68835952ae69165c11709811dae7634e]
21Signed-off-by: Peter Marko <peter.marko@siemens.com>
22---
23 grub-core/fs/btrfs.c | 4 ++--
24 grub-core/fs/hfspluscomp.c | 9 +++++++--
25 grub-core/fs/squash4.c | 8 ++++----
26 3 files changed, 13 insertions(+), 8 deletions(-)
27
28diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
29index 0625b1166..9c1e925c9 100644
30--- a/grub-core/fs/btrfs.c
31+++ b/grub-core/fs/btrfs.c
32@@ -1276,8 +1276,8 @@ grub_btrfs_mount (grub_device_t dev)
33 }
34
35 data->n_devices_allocated = 16;
36- data->devices_attached = grub_malloc (sizeof (data->devices_attached[0])
37- * data->n_devices_allocated);
38+ data->devices_attached = grub_calloc (data->n_devices_allocated,
39+ sizeof (data->devices_attached[0]));
40 if (!data->devices_attached)
41 {
42 grub_free (data);
43diff --git a/grub-core/fs/hfspluscomp.c b/grub-core/fs/hfspluscomp.c
44index 48ae438d8..a80954ee6 100644
45--- a/grub-core/fs/hfspluscomp.c
46+++ b/grub-core/fs/hfspluscomp.c
47@@ -244,14 +244,19 @@ hfsplus_open_compressed_real (struct grub_hfsplus_file *node)
48 return 0;
49 }
50 node->compress_index_size = grub_le_to_cpu32 (index_size);
51- node->compress_index = grub_malloc (node->compress_index_size
52- * sizeof (node->compress_index[0]));
53+ node->compress_index = grub_calloc (node->compress_index_size,
54+ sizeof (node->compress_index[0]));
55 if (!node->compress_index)
56 {
57 node->compressed = 0;
58 grub_free (attr_node);
59 return grub_errno;
60 }
61+
62+ /*
63+ * The node->compress_index_size * sizeof (node->compress_index[0]) is safe here
64+ * due to relevant checks done in grub_calloc() above.
65+ */
66 if (grub_hfsplus_read_file (node, 0, 0,
67 0x104 + sizeof (index_size),
68 node->compress_index_size
69diff --git a/grub-core/fs/squash4.c b/grub-core/fs/squash4.c
70index f91ff3bfa..cf2bca822 100644
71--- a/grub-core/fs/squash4.c
72+++ b/grub-core/fs/squash4.c
73@@ -816,10 +816,10 @@ direct_read (struct grub_squash_data *data,
74 break;
75 }
76 total_blocks = ((total_size + data->blksz - 1) >> data->log2_blksz);
77- ino->block_sizes = grub_malloc (total_blocks
78- * sizeof (ino->block_sizes[0]));
79- ino->cumulated_block_sizes = grub_malloc (total_blocks
80- * sizeof (ino->cumulated_block_sizes[0]));
81+ ino->block_sizes = grub_calloc (total_blocks,
82+ sizeof (ino->block_sizes[0]));
83+ ino->cumulated_block_sizes = grub_calloc (total_blocks,
84+ sizeof (ino->cumulated_block_sizes[0]));
85 if (!ino->block_sizes || !ino->cumulated_block_sizes)
86 {
87 grub_free (ino->block_sizes);
diff --git a/meta/recipes-bsp/grub/files/CVE-2025-0690.patch b/meta/recipes-bsp/grub/files/CVE-2025-0690.patch
new file mode 100644
index 0000000000..be585c96ad
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2025-0690.patch
@@ -0,0 +1,73 @@
1From dad8f502974ed9ad0a70ae6820d17b4b142558fc Mon Sep 17 00:00:00 2001
2From: Jonathan Bar Or <jonathanbaror@gmail.com>
3Date: Thu, 23 Jan 2025 19:17:05 +0100
4Subject: [PATCH] commands/read: Fix an integer overflow when supplying more
5 than 2^31 characters
6
7The grub_getline() function currently has a signed integer variable "i"
8that can be overflown when user supplies more than 2^31 characters.
9It results in a memory corruption of the allocated line buffer as well
10as supplying large negative values to grub_realloc().
11
12Fixes: CVE-2025-0690
13
14Reported-by: Jonathan Bar Or <jonathanbaror@gmail.com>
15Signed-off-by: Jonathan Bar Or <jonathanbaror@gmail.com>
16Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
17
18CVE: CVE-2025-0690
19Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=dad8f502974ed9ad0a70ae6820d17b4b142558fc]
20Signed-off-by: Peter Marko <peter.marko@siemens.com>
21---
22 grub-core/commands/read.c | 19 +++++++++++++++----
23 1 file changed, 15 insertions(+), 4 deletions(-)
24
25diff --git a/grub-core/commands/read.c b/grub-core/commands/read.c
26index 597c90706..8d72e45c9 100644
27--- a/grub-core/commands/read.c
28+++ b/grub-core/commands/read.c
29@@ -25,6 +25,7 @@
30 #include <grub/types.h>
31 #include <grub/extcmd.h>
32 #include <grub/i18n.h>
33+#include <grub/safemath.h>
34
35 GRUB_MOD_LICENSE ("GPLv3+");
36
37@@ -37,13 +38,14 @@ static const struct grub_arg_option options[] =
38 static char *
39 grub_getline (int silent)
40 {
41- int i;
42+ grub_size_t i;
43 char *line;
44 char *tmp;
45 int c;
46+ grub_size_t alloc_size;
47
48 i = 0;
49- line = grub_malloc (1 + i + sizeof('\0'));
50+ line = grub_malloc (1 + sizeof('\0'));
51 if (! line)
52 return NULL;
53
54@@ -59,8 +61,17 @@ grub_getline (int silent)
55 line[i] = (char) c;
56 if (!silent)
57 grub_printf ("%c", c);
58- i++;
59- tmp = grub_realloc (line, 1 + i + sizeof('\0'));
60+ if (grub_add (i, 1, &i))
61+ {
62+ grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
63+ return NULL;
64+ }
65+ if (grub_add (i, 1 + sizeof('\0'), &alloc_size))
66+ {
67+ grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
68+ return NULL;
69+ }
70+ tmp = grub_realloc (line, alloc_size);
71 if (! tmp)
72 {
73 grub_free (line);
diff --git a/meta/recipes-bsp/grub/files/CVE-2025-1118.patch b/meta/recipes-bsp/grub/files/CVE-2025-1118.patch
new file mode 100644
index 0000000000..e6906d909c
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/CVE-2025-1118.patch
@@ -0,0 +1,37 @@
1From 34824806ac6302f91e8cabaa41308eaced25725f Mon Sep 17 00:00:00 2001
2From: B Horn <b@horn.uk>
3Date: Thu, 18 Apr 2024 20:29:39 +0100
4Subject: [PATCH] commands/minicmd: Block the dump command in lockdown mode
5
6The dump enables a user to read memory which should not be possible
7in lockdown mode.
8
9Fixes: CVE-2025-1118
10
11Reported-by: B Horn <b@horn.uk>
12Reported-by: Jonathan Bar Or <jonathanbaror@gmail.com>
13Signed-off-by: B Horn <b@horn.uk>
14Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
15
16CVE: CVE-2025-1118
17Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=34824806ac6302f91e8cabaa41308eaced25725f]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 grub-core/commands/minicmd.c | 4 ++--
21 1 file changed, 2 insertions(+), 2 deletions(-)
22
23diff --git a/grub-core/commands/minicmd.c b/grub-core/commands/minicmd.c
24index 286290866..8c5ee3e60 100644
25--- a/grub-core/commands/minicmd.c
26+++ b/grub-core/commands/minicmd.c
27@@ -203,8 +203,8 @@ GRUB_MOD_INIT(minicmd)
28 grub_register_command ("help", grub_mini_cmd_help,
29 0, N_("Show this message."));
30 cmd_dump =
31- grub_register_command ("dump", grub_mini_cmd_dump,
32- N_("ADDR [SIZE]"), N_("Show memory contents."));
33+ grub_register_command_lockdown ("dump", grub_mini_cmd_dump,
34+ N_("ADDR [SIZE]"), N_("Show memory contents."));
35 cmd_rmmod =
36 grub_register_command ("rmmod", grub_mini_cmd_rmmod,
37 N_("MODULE"), N_("Remove a module."));
diff --git a/meta/recipes-bsp/grub/grub2.inc b/meta/recipes-bsp/grub/grub2.inc
index 54c0e9bdd5..7c83febaa2 100644
--- a/meta/recipes-bsp/grub/grub2.inc
+++ b/meta/recipes-bsp/grub/grub2.inc
@@ -19,16 +19,31 @@ SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
19 file://grub-module-explicitly-keeps-symbole-.module_license.patch \ 19 file://grub-module-explicitly-keeps-symbole-.module_license.patch \
20 file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \ 20 file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \
21 file://0001-RISC-V-Restore-the-typcast-to-long.patch \ 21 file://0001-RISC-V-Restore-the-typcast-to-long.patch \
22 file://0001-misc-Implement-grub_strlcpy.patch \
23 file://CVE-2024-45781.patch \
24 file://CVE-2024-45782_CVE-2024-56737.patch \
25 file://CVE-2024-45780.patch \
26 file://CVE-2024-45783.patch \
27 file://CVE-2025-0624.patch \
28 file://CVE-2024-45774.patch \
29 file://CVE-2024-45775.patch \
30 file://CVE-2025-0622-01.patch \
31 file://CVE-2025-0622-02.patch \
32 file://CVE-2025-0622-03.patch \
33 file://CVE-2024-45776.patch \
34 file://CVE-2024-45777.patch \
35 file://CVE-2025-0690.patch \
36 file://CVE-2025-1118.patch \
37 file://CVE-2024-45778_CVE-2024-45779.patch \
38 file://CVE-2025-0677_CVE-2025-0684_CVE-2025-0685_CVE-2025-0686_CVE-2025-0689.patch \
39 file://CVE-2025-0678_CVE-2025-1125.patch \
22" 40"
23 41
24SRC_URI[sha256sum] = "b30919fa5be280417c17ac561bb1650f60cfb80cc6237fa1e2b6f56154cb9c91" 42SRC_URI[sha256sum] = "b30919fa5be280417c17ac561bb1650f60cfb80cc6237fa1e2b6f56154cb9c91"
25 43
26CVE_STATUS[CVE-2019-14865] = "not-applicable-platform: applies only to RHEL" 44CVE_STATUS[CVE-2019-14865] = "not-applicable-platform: applies only to RHEL"
27CVE_STATUS[CVE-2021-46705] = "not-applicable-platform: Applies only to SUSE"
28CVE_STATUS[CVE-2023-4001] = "not-applicable-platform: Applies only to RHEL/Fedora" 45CVE_STATUS[CVE-2023-4001] = "not-applicable-platform: Applies only to RHEL/Fedora"
29CVE_STATUS[CVE-2024-1048] = "not-applicable-platform: Applies only to RHEL/Fedora" 46CVE_STATUS[CVE-2024-1048] = "not-applicable-platform: Applies only to RHEL/Fedora"
30CVE_STATUS[CVE-2023-4692] = "cpe-incorrect: Fixed in version 2.12 already"
31CVE_STATUS[CVE-2023-4693] = "cpe-incorrect: Fixed in version 2.12 already"
32 47
33DEPENDS = "flex-native bison-native gettext-native" 48DEPENDS = "flex-native bison-native gettext-native"
34 49
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2024-57254.patch b/meta/recipes-bsp/u-boot/files/CVE-2024-57254.patch
new file mode 100644
index 0000000000..be00121224
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2024-57254.patch
@@ -0,0 +1,47 @@
1From 3f9deb424ecd6ecd50f165b42f0b0290d83853f5 Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Fri, 2 Aug 2024 18:36:45 +0200
4Subject: [PATCH 1/8] squashfs: Fix integer overflow in sqfs_inode_size()
5
6A carefully crafted squashfs filesystem can exhibit an extremly large
7inode size and overflow the calculation in sqfs_inode_size().
8As a consequence, the squashfs driver will read from wrong locations.
9
10Fix by using __builtin_add_overflow() to detect the overflow.
11
12Signed-off-by: Richard Weinberger <richard@nod.at>
13Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
14
15CVE: CVE-2024-57254
16Upstream-Status: Backport [https://source.denx.de/u-boot/u-boot/-/commit/c8e929e5758999933f9e905049ef2bf3fe6b140d]
17Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
18---
19 fs/squashfs/sqfs_inode.c | 9 +++++++--
20 1 file changed, 7 insertions(+), 2 deletions(-)
21
22diff --git a/fs/squashfs/sqfs_inode.c b/fs/squashfs/sqfs_inode.c
23index d25cfb53..bb3ccd37 100644
24--- a/fs/squashfs/sqfs_inode.c
25+++ b/fs/squashfs/sqfs_inode.c
26@@ -78,11 +78,16 @@ int sqfs_inode_size(struct squashfs_base_inode *inode, u32 blk_size)
27
28 case SQFS_SYMLINK_TYPE:
29 case SQFS_LSYMLINK_TYPE: {
30+ int size;
31+
32 struct squashfs_symlink_inode *symlink =
33 (struct squashfs_symlink_inode *)inode;
34
35- return sizeof(*symlink) +
36- get_unaligned_le32(&symlink->symlink_size);
37+ if (__builtin_add_overflow(sizeof(*symlink),
38+ get_unaligned_le32(&symlink->symlink_size), &size))
39+ return -EINVAL;
40+
41+ return size;
42 }
43
44 case SQFS_BLKDEV_TYPE:
45--
462.34.1
47
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2024-57255.patch b/meta/recipes-bsp/u-boot/files/CVE-2024-57255.patch
new file mode 100644
index 0000000000..4ca72da554
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2024-57255.patch
@@ -0,0 +1,53 @@
1From 5d7ca74388544bf8c95e104517a9120e94bfe40d Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Fri, 2 Aug 2024 18:36:44 +0200
4Subject: [PATCH 2/8] squashfs: Fix integer overflow in sqfs_resolve_symlink()
5
6A carefully crafted squashfs filesystem can exhibit an inode size of 0xffffffff,
7as a consequence malloc() will do a zero allocation.
8Later in the function the inode size is again used for copying data.
9So an attacker can overwrite memory.
10Avoid the overflow by using the __builtin_add_overflow() helper.
11
12Signed-off-by: Richard Weinberger <richard@nod.at>
13Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
14
15CVE: CVE-2024-57255
16Upstream-Status: Backport [https://source.denx.de/u-boot/u-boot/-/commit/233945eba63e24061dffeeaeb7cd6fe985278356]
17Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
18---
19 fs/squashfs/sqfs.c | 10 ++++++----
20 1 file changed, 6 insertions(+), 4 deletions(-)
21
22diff --git a/fs/squashfs/sqfs.c b/fs/squashfs/sqfs.c
23index 1430e671..16a07c06 100644
24--- a/fs/squashfs/sqfs.c
25+++ b/fs/squashfs/sqfs.c
26@@ -422,8 +422,10 @@ static char *sqfs_resolve_symlink(struct squashfs_symlink_inode *sym,
27 char *resolved, *target;
28 u32 sz;
29
30- sz = get_unaligned_le32(&sym->symlink_size);
31- target = malloc(sz + 1);
32+ if (__builtin_add_overflow(get_unaligned_le32(&sym->symlink_size), 1, &sz))
33+ return NULL;
34+
35+ target = malloc(sz);
36 if (!target)
37 return NULL;
38
39@@ -431,9 +433,9 @@ static char *sqfs_resolve_symlink(struct squashfs_symlink_inode *sym,
40 * There is no trailling null byte in the symlink's target path, so a
41 * copy is made and a '\0' is added at its end.
42 */
43- target[sz] = '\0';
44+ target[sz - 1] = '\0';
45 /* Get target name (relative path) */
46- strncpy(target, sym->symlink, sz);
47+ strncpy(target, sym->symlink, sz - 1);
48
49 /* Relative -> absolute path conversion */
50 resolved = sqfs_get_abs_path(base_path, target);
51--
522.34.1
53
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2024-57256.patch b/meta/recipes-bsp/u-boot/files/CVE-2024-57256.patch
new file mode 100644
index 0000000000..78cf4ac225
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2024-57256.patch
@@ -0,0 +1,51 @@
1From 49cab731abe7a98db4ac16666e3b5ab3bc799282 Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Fri, 9 Aug 2024 11:54:28 +0200
4Subject: [PATCH 3/8] ext4: Fix integer overflow in ext4fs_read_symlink()
5
6While zalloc() takes a size_t type, adding 1 to the le32 variable
7will overflow.
8A carefully crafted ext4 filesystem can exhibit an inode size of 0xffffffff
9and as consequence zalloc() will do a zero allocation.
10
11Later in the function the inode size is again used for copying data.
12So an attacker can overwrite memory.
13
14Avoid the overflow by using the __builtin_add_overflow() helper.
15
16Signed-off-by: Richard Weinberger <richard@nod.at>
17
18CVE: CVE-2024-57256
19Upstream-Status: Backport [https://source.denx.de/u-boot/u-boot/-/commit/35f75d2a46e5859138c83a75cd2f4141c5479ab9]
20Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
21---
22 fs/ext4/ext4_common.c | 7 ++++++-
23 1 file changed, 6 insertions(+), 1 deletion(-)
24
25diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c
26index f50de7c0..a7798296 100644
27--- a/fs/ext4/ext4_common.c
28+++ b/fs/ext4/ext4_common.c
29@@ -2188,13 +2188,18 @@ static char *ext4fs_read_symlink(struct ext2fs_node *node)
30 struct ext2fs_node *diro = node;
31 int status;
32 loff_t actread;
33+ size_t alloc_size;
34
35 if (!diro->inode_read) {
36 status = ext4fs_read_inode(diro->data, diro->ino, &diro->inode);
37 if (status == 0)
38 return NULL;
39 }
40- symlink = zalloc(le32_to_cpu(diro->inode.size) + 1);
41+
42+ if (__builtin_add_overflow(le32_to_cpu(diro->inode.size), 1, &alloc_size))
43+ return NULL;
44+
45+ symlink = zalloc(alloc_size);
46 if (!symlink)
47 return NULL;
48
49--
502.34.1
51
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2024-57257.patch b/meta/recipes-bsp/u-boot/files/CVE-2024-57257.patch
new file mode 100644
index 0000000000..bfffcafa43
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2024-57257.patch
@@ -0,0 +1,227 @@
1From 4eb527c473068953f90ea65b33046a25140e0a89 Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Fri, 2 Aug 2024 18:36:47 +0200
4Subject: [PATCH 4/8] squashfs: Fix stack overflow while symlink resolving
5
6The squashfs driver blindly follows symlinks, and calls sqfs_size()
7recursively. So an attacker can create a crafted filesystem and with
8a deep enough nesting level a stack overflow can be achieved.
9
10Fix by limiting the nesting level to 8.
11
12Signed-off-by: Richard Weinberger <richard@nod.at>
13Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
14
15CVE: CVE-2024-57257
16Upstream-Status: Backport [https://source.denx.de/u-boot/u-boot/-/commit/4f5cc096bfd0a591f8a11e86999e3d90a9484c34]
17Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
18---
19 fs/squashfs/sqfs.c | 76 +++++++++++++++++++++++++++++++++++++---------
20 1 file changed, 61 insertions(+), 15 deletions(-)
21
22diff --git a/fs/squashfs/sqfs.c b/fs/squashfs/sqfs.c
23index 16a07c06..a5b7890e 100644
24--- a/fs/squashfs/sqfs.c
25+++ b/fs/squashfs/sqfs.c
26@@ -24,7 +24,12 @@
27 #include "sqfs_filesystem.h"
28 #include "sqfs_utils.h"
29
30+#define MAX_SYMLINK_NEST 8
31+
32 static struct squashfs_ctxt ctxt;
33+static int symlinknest;
34+
35+static int sqfs_readdir_nest(struct fs_dir_stream *fs_dirs, struct fs_dirent **dentp);
36
37 static int sqfs_disk_read(__u32 block, __u32 nr_blocks, void *buf)
38 {
39@@ -508,7 +513,7 @@ static int sqfs_search_dir(struct squashfs_dir_stream *dirs, char **token_list,
40 goto out;
41 }
42
43- while (!sqfs_readdir(dirsp, &dent)) {
44+ while (!sqfs_readdir_nest(dirsp, &dent)) {
45 ret = strcmp(dent->name, token_list[j]);
46 if (!ret)
47 break;
48@@ -533,6 +538,11 @@ static int sqfs_search_dir(struct squashfs_dir_stream *dirs, char **token_list,
49
50 /* Check for symbolic link and inode type sanity */
51 if (get_unaligned_le16(&dir->inode_type) == SQFS_SYMLINK_TYPE) {
52+ if (++symlinknest == MAX_SYMLINK_NEST) {
53+ ret = -ELOOP;
54+ goto out;
55+ }
56+
57 sym = (struct squashfs_symlink_inode *)table;
58 /* Get first j + 1 tokens */
59 path = sqfs_concat_tokens(token_list, j + 1);
60@@ -880,7 +890,7 @@ out:
61 return metablks_count;
62 }
63
64-int sqfs_opendir(const char *filename, struct fs_dir_stream **dirsp)
65+static int sqfs_opendir_nest(const char *filename, struct fs_dir_stream **dirsp)
66 {
67 unsigned char *inode_table = NULL, *dir_table = NULL;
68 int j, token_count = 0, ret = 0, metablks_count;
69@@ -975,7 +985,19 @@ out:
70 return ret;
71 }
72
73+int sqfs_opendir(const char *filename, struct fs_dir_stream **dirsp)
74+{
75+ symlinknest = 0;
76+ return sqfs_opendir_nest(filename, dirsp);
77+}
78+
79 int sqfs_readdir(struct fs_dir_stream *fs_dirs, struct fs_dirent **dentp)
80+{
81+ symlinknest = 0;
82+ return sqfs_readdir_nest(fs_dirs, dentp);
83+}
84+
85+static int sqfs_readdir_nest(struct fs_dir_stream *fs_dirs, struct fs_dirent **dentp)
86 {
87 struct squashfs_super_block *sblk = ctxt.sblk;
88 struct squashfs_dir_stream *dirs;
89@@ -1319,8 +1341,8 @@ static int sqfs_get_lregfile_info(struct squashfs_lreg_inode *lreg,
90 return datablk_count;
91 }
92
93-int sqfs_read(const char *filename, void *buf, loff_t offset, loff_t len,
94- loff_t *actread)
95+static int sqfs_read_nest(const char *filename, void *buf, loff_t offset,
96+ loff_t len, loff_t *actread)
97 {
98 char *dir = NULL, *fragment_block, *datablock = NULL;
99 char *fragment = NULL, *file = NULL, *resolved, *data;
100@@ -1350,11 +1372,11 @@ int sqfs_read(const char *filename, void *buf, loff_t offset, loff_t len,
101 }
102
103 /*
104- * sqfs_opendir will uncompress inode and directory tables, and will
105+ * sqfs_opendir_nest will uncompress inode and directory tables, and will
106 * return a pointer to the directory that contains the requested file.
107 */
108 sqfs_split_path(&file, &dir, filename);
109- ret = sqfs_opendir(dir, &dirsp);
110+ ret = sqfs_opendir_nest(dir, &dirsp);
111 if (ret) {
112 goto out;
113 }
114@@ -1362,7 +1384,7 @@ int sqfs_read(const char *filename, void *buf, loff_t offset, loff_t len,
115 dirs = (struct squashfs_dir_stream *)dirsp;
116
117 /* For now, only regular files are able to be loaded */
118- while (!sqfs_readdir(dirsp, &dent)) {
119+ while (!sqfs_readdir_nest(dirsp, &dent)) {
120 ret = strcmp(dent->name, file);
121 if (!ret)
122 break;
123@@ -1411,9 +1433,14 @@ int sqfs_read(const char *filename, void *buf, loff_t offset, loff_t len,
124 break;
125 case SQFS_SYMLINK_TYPE:
126 case SQFS_LSYMLINK_TYPE:
127+ if (++symlinknest == MAX_SYMLINK_NEST) {
128+ ret = -ELOOP;
129+ goto out;
130+ }
131+
132 symlink = (struct squashfs_symlink_inode *)ipos;
133 resolved = sqfs_resolve_symlink(symlink, filename);
134- ret = sqfs_read(resolved, buf, offset, len, actread);
135+ ret = sqfs_read_nest(resolved, buf, offset, len, actread);
136 free(resolved);
137 goto out;
138 case SQFS_BLKDEV_TYPE:
139@@ -1584,7 +1611,14 @@ out:
140 return ret;
141 }
142
143-int sqfs_size(const char *filename, loff_t *size)
144+int sqfs_read(const char *filename, void *buf, loff_t offset, loff_t len,
145+ loff_t *actread)
146+{
147+ symlinknest = 0;
148+ return sqfs_read_nest(filename, buf, offset, len, actread);
149+}
150+
151+static int sqfs_size_nest(const char *filename, loff_t *size)
152 {
153 struct squashfs_super_block *sblk = ctxt.sblk;
154 struct squashfs_symlink_inode *symlink;
155@@ -1600,10 +1634,10 @@ int sqfs_size(const char *filename, loff_t *size)
156
157 sqfs_split_path(&file, &dir, filename);
158 /*
159- * sqfs_opendir will uncompress inode and directory tables, and will
160+ * sqfs_opendir_nest will uncompress inode and directory tables, and will
161 * return a pointer to the directory that contains the requested file.
162 */
163- ret = sqfs_opendir(dir, &dirsp);
164+ ret = sqfs_opendir_nest(dir, &dirsp);
165 if (ret) {
166 ret = -EINVAL;
167 goto free_strings;
168@@ -1611,7 +1645,7 @@ int sqfs_size(const char *filename, loff_t *size)
169
170 dirs = (struct squashfs_dir_stream *)dirsp;
171
172- while (!sqfs_readdir(dirsp, &dent)) {
173+ while (!sqfs_readdir_nest(dirsp, &dent)) {
174 ret = strcmp(dent->name, file);
175 if (!ret)
176 break;
177@@ -1644,6 +1678,11 @@ int sqfs_size(const char *filename, loff_t *size)
178 break;
179 case SQFS_SYMLINK_TYPE:
180 case SQFS_LSYMLINK_TYPE:
181+ if (++symlinknest == MAX_SYMLINK_NEST) {
182+ *size = 0;
183+ return -ELOOP;
184+ }
185+
186 symlink = (struct squashfs_symlink_inode *)ipos;
187 resolved = sqfs_resolve_symlink(symlink, filename);
188 ret = sqfs_size(resolved, size);
189@@ -1683,10 +1722,11 @@ int sqfs_exists(const char *filename)
190
191 sqfs_split_path(&file, &dir, filename);
192 /*
193- * sqfs_opendir will uncompress inode and directory tables, and will
194+ * sqfs_opendir_nest will uncompress inode and directory tables, and will
195 * return a pointer to the directory that contains the requested file.
196 */
197- ret = sqfs_opendir(dir, &dirsp);
198+ symlinknest = 0;
199+ ret = sqfs_opendir_nest(dir, &dirsp);
200 if (ret) {
201 ret = -EINVAL;
202 goto free_strings;
203@@ -1694,7 +1734,7 @@ int sqfs_exists(const char *filename)
204
205 dirs = (struct squashfs_dir_stream *)dirsp;
206
207- while (!sqfs_readdir(dirsp, &dent)) {
208+ while (!sqfs_readdir_nest(dirsp, &dent)) {
209 ret = strcmp(dent->name, file);
210 if (!ret)
211 break;
212@@ -1711,6 +1751,12 @@ free_strings:
213 return ret == 0;
214 }
215
216+int sqfs_size(const char *filename, loff_t *size)
217+{
218+ symlinknest = 0;
219+ return sqfs_size_nest(filename, size);
220+}
221+
222 void sqfs_close(void)
223 {
224 sqfs_decompressor_cleanup(&ctxt);
225--
2262.34.1
227
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2024-57258-1.patch b/meta/recipes-bsp/u-boot/files/CVE-2024-57258-1.patch
new file mode 100644
index 0000000000..d33a4260ba
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2024-57258-1.patch
@@ -0,0 +1,47 @@
1From 50ab41c3628dedeca1a331dd86dd203b73faea74 Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Fri, 2 Aug 2024 12:08:45 +0200
4Subject: [PATCH 5/8] dlmalloc: Fix integer overflow in sbrk()
5
6Make sure that the new break is within mem_malloc_start
7and mem_malloc_end before making progress.
8ulong new = old + increment; can overflow for extremely large
9increment values and memset() can get wrongly called.
10
11Signed-off-by: Richard Weinberger <richard@nod.at>
12Reviewed-by: Simon Glass <sjg@chromium.org>
13
14CVE: CVE-2024-57258
15Upstream-Status: Backport [https://source.denx.de/u-boot/u-boot/-/commit/0a10b49206a29b4aa2f80233a3e53ca0466bb0b3]
16Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
17---
18 common/dlmalloc.c | 6 +++---
19 1 file changed, 3 insertions(+), 3 deletions(-)
20
21diff --git a/common/dlmalloc.c b/common/dlmalloc.c
22index de3f0422..bae2a27c 100644
23--- a/common/dlmalloc.c
24+++ b/common/dlmalloc.c
25@@ -591,6 +591,9 @@ void *sbrk(ptrdiff_t increment)
26 ulong old = mem_malloc_brk;
27 ulong new = old + increment;
28
29+ if ((new < mem_malloc_start) || (new > mem_malloc_end))
30+ return (void *)MORECORE_FAILURE;
31+
32 /*
33 * if we are giving memory back make sure we clear it out since
34 * we set MORECORE_CLEARS to 1
35@@ -598,9 +601,6 @@ void *sbrk(ptrdiff_t increment)
36 if (increment < 0)
37 memset((void *)new, 0, -increment);
38
39- if ((new < mem_malloc_start) || (new > mem_malloc_end))
40- return (void *)MORECORE_FAILURE;
41-
42 mem_malloc_brk = new;
43
44 return (void *)old;
45--
462.34.1
47
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2024-57258-2.patch b/meta/recipes-bsp/u-boot/files/CVE-2024-57258-2.patch
new file mode 100644
index 0000000000..688e2c64d8
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2024-57258-2.patch
@@ -0,0 +1,43 @@
1From db7c626204f488a802a2e58b7a788b11fde6be7d Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Fri, 2 Aug 2024 12:08:44 +0200
4Subject: [PATCH 6/8] dlmalloc: Fix integer overflow in request2size()
5
6req is of type size_t, casting it to long opens the door
7for an integer overflow.
8Values between LONG_MAX - (SIZE_SZ + MALLOC_ALIGN_MASK) - 1 and LONG_MAX
9cause and overflow such that request2size() returns MINSIZE.
10
11Fix by removing the cast.
12The origin of the cast is unclear, it's in u-boot and ppcboot since ever
13and predates the CVS history.
14Doug Lea's original dlmalloc implementation also doesn't have it.
15
16Signed-off-by: Richard Weinberger <richard@nod.at>
17Reviewed-by: Simon Glass <sjg@chromium.org>
18
19CVE: CVE-2024-57258
20Upstream-Status: Backport [https://source.denx.de/u-boot/u-boot/-/commit/8642b2178d2c4002c99a0b69a845a48f2ae2706f]
21Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
22---
23 common/dlmalloc.c | 4 ++--
24 1 file changed, 2 insertions(+), 2 deletions(-)
25
26diff --git a/common/dlmalloc.c b/common/dlmalloc.c
27index bae2a27c..1ac4ee9f 100644
28--- a/common/dlmalloc.c
29+++ b/common/dlmalloc.c
30@@ -379,8 +379,8 @@ nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
31 /* pad request bytes into a usable size */
32
33 #define request2size(req) \
34- (((long)((req) + (SIZE_SZ + MALLOC_ALIGN_MASK)) < \
35- (long)(MINSIZE + MALLOC_ALIGN_MASK)) ? MINSIZE : \
36+ ((((req) + (SIZE_SZ + MALLOC_ALIGN_MASK)) < \
37+ (MINSIZE + MALLOC_ALIGN_MASK)) ? MINSIZE : \
38 (((req) + (SIZE_SZ + MALLOC_ALIGN_MASK)) & ~(MALLOC_ALIGN_MASK)))
39
40 /* Check if m has acceptable alignment */
41--
422.34.1
43
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2024-57258-3.patch b/meta/recipes-bsp/u-boot/files/CVE-2024-57258-3.patch
new file mode 100644
index 0000000000..2c8a7c9d91
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2024-57258-3.patch
@@ -0,0 +1,40 @@
1From 37095a204127b60b5e00c4c5d435d6e48a6a1c51 Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Fri, 2 Aug 2024 12:08:43 +0200
4Subject: [PATCH 7/8] x86: Fix ptrdiff_t for x86_64
5
6sbrk() assumes ptrdiff_t is large enough to enlarge/shrink the heap
7by LONG_MIN/LONG_MAX.
8So, use the long type, also to match the rest of the Linux ecosystem.
9
10Signed-off-by: Richard Weinberger <richard@nod.at>
11Reviewed-by: Simon Glass <sjg@chromium.org>
12
13CVE: CVE-2024-57258
14Upstream-Status: Backport [https://source.denx.de/u-boot/u-boot/-/commit/c17b2a05dd50a3ba437e6373093a0d6a359cdee0]
15Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
16---
17 arch/x86/include/asm/posix_types.h | 3 ++-
18 1 file changed, 2 insertions(+), 1 deletion(-)
19
20diff --git a/arch/x86/include/asm/posix_types.h b/arch/x86/include/asm/posix_types.h
21index dbcea7f4..e1ed9bca 100644
22--- a/arch/x86/include/asm/posix_types.h
23+++ b/arch/x86/include/asm/posix_types.h
24@@ -20,11 +20,12 @@ typedef unsigned short __kernel_gid_t;
25 #if defined(__x86_64__)
26 typedef unsigned long __kernel_size_t;
27 typedef long __kernel_ssize_t;
28+typedef long __kernel_ptrdiff_t;
29 #else
30 typedef unsigned int __kernel_size_t;
31 typedef int __kernel_ssize_t;
32-#endif
33 typedef int __kernel_ptrdiff_t;
34+#endif
35 typedef long __kernel_time_t;
36 typedef long __kernel_suseconds_t;
37 typedef long __kernel_clock_t;
38--
392.34.1
40
diff --git a/meta/recipes-bsp/u-boot/files/CVE-2024-57259.patch b/meta/recipes-bsp/u-boot/files/CVE-2024-57259.patch
new file mode 100644
index 0000000000..fdf5fdfce4
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/CVE-2024-57259.patch
@@ -0,0 +1,41 @@
1From 2c08fe306c6cbc60ec4beb434c71e56bb7abb678 Mon Sep 17 00:00:00 2001
2From: Richard Weinberger <richard@nod.at>
3Date: Fri, 2 Aug 2024 22:05:09 +0200
4Subject: [PATCH 8/8] squashfs: Fix heap corruption in sqfs_search_dir()
5
6res needs to be large enough to store both strings rem and target,
7plus the path separator and the terminator.
8Currently the space for the path separator is not accounted, so
9the heap is corrupted by one byte.
10
11Signed-off-by: Richard Weinberger <richard@nod.at>
12Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
13
14CVE: CVE-2024-57259
15Upstream-Status: Backport [https://source.denx.de/u-boot/u-boot/-/commit/048d795bb5b3d9c5701b4855f5e74bcf6849bf5e]
16Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
17---
18 fs/squashfs/sqfs.c | 7 +++++--
19 1 file changed, 5 insertions(+), 2 deletions(-)
20
21diff --git a/fs/squashfs/sqfs.c b/fs/squashfs/sqfs.c
22index a5b7890e..1bd9b2a4 100644
23--- a/fs/squashfs/sqfs.c
24+++ b/fs/squashfs/sqfs.c
25@@ -563,8 +563,11 @@ static int sqfs_search_dir(struct squashfs_dir_stream *dirs, char **token_list,
26 ret = -ENOMEM;
27 goto out;
28 }
29- /* Concatenate remaining tokens and symlink's target */
30- res = malloc(strlen(rem) + strlen(target) + 1);
31+ /*
32+ * Concatenate remaining tokens and symlink's target.
33+ * Allocate enough space for rem, target, '/' and '\0'.
34+ */
35+ res = malloc(strlen(rem) + strlen(target) + 2);
36 if (!res) {
37 ret = -ENOMEM;
38 goto out;
39--
402.34.1
41
diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc
index 1f17bd7d0a..3a48b63c42 100644
--- a/meta/recipes-bsp/u-boot/u-boot-common.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-common.inc
@@ -14,7 +14,16 @@ PE = "1"
14# repo during parse 14# repo during parse
15SRCREV = "866ca972d6c3cabeaf6dbac431e8e08bb30b3c8e" 15SRCREV = "866ca972d6c3cabeaf6dbac431e8e08bb30b3c8e"
16 16
17SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master" 17SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master \
18 file://CVE-2024-57254.patch \
19 file://CVE-2024-57255.patch \
20 file://CVE-2024-57256.patch \
21 file://CVE-2024-57257.patch \
22 file://CVE-2024-57258-1.patch \
23 file://CVE-2024-57258-2.patch \
24 file://CVE-2024-57258-3.patch \
25 file://CVE-2024-57259.patch \
26"
18 27
19S = "${WORKDIR}/git" 28S = "${WORKDIR}/git"
20B = "${WORKDIR}/build" 29B = "${WORKDIR}/build"
diff --git a/meta/recipes-bsp/usbutils/usbutils/0001-usb-devices-Fix-usb-devices-with-busybox.patch b/meta/recipes-bsp/usbutils/usbutils/0001-usb-devices-Fix-usb-devices-with-busybox.patch
new file mode 100755
index 0000000000..dbe5d7c18b
--- /dev/null
+++ b/meta/recipes-bsp/usbutils/usbutils/0001-usb-devices-Fix-usb-devices-with-busybox.patch
@@ -0,0 +1,37 @@
1From da155d965a34b5c5770dc30fa52eb7ef405f3a30 Mon Sep 17 00:00:00 2001
2From: Teresa Remmet <t.remmet@phytec.de>
3Date: Thu, 5 Sep 2024 08:37:48 +0200
4Subject: [PATCH] usb-devices: Fix usb-devices with busybox
5
6The busybox find command is missing the -printf parameter leading to
7the error:
8
9find: unrecognized: -printf
10
11Replace the parameter with sed.
12
13This patch was originally created by Daniel Fancsali.
14
15Upstream-Status: Backport [https://github.com/gregkh/usbutils/commit/da155d965a34b5c5770dc30fa52eb7ef405f3a30]
16
17Signed-off-by: Teresa Remmet <t.remmet@phytec.de>
18---
19 usb-devices | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/usb-devices b/usb-devices
23index 5f60ad5a1ed0..51f48b4ad628 100755
24--- a/usb-devices
25+++ b/usb-devices
26@@ -192,7 +192,7 @@ if [ ! -d /sys/bus ]; then
27 exit 1
28 fi
29
30-for device in $(find /sys/bus/usb/devices -name 'usb*' -printf '%f\n' | sort -V)
31+for device in $(find /sys/bus/usb/devices -name 'usb*' | sed -E 's#^.*/##g' | sort -V)
32 do
33 print_device "/sys/bus/usb/devices/$device" 0 0 0
34 done
35--
362.34.1
37
diff --git a/meta/recipes-bsp/usbutils/usbutils_017.bb b/meta/recipes-bsp/usbutils/usbutils_017.bb
index a2e340ea4f..83d5c7287d 100644
--- a/meta/recipes-bsp/usbutils/usbutils_017.bb
+++ b/meta/recipes-bsp/usbutils/usbutils_017.bb
@@ -13,6 +13,7 @@ DEPENDS = "libusb1 virtual/libiconv udev"
13 13
14SRC_URI = "${KERNELORG_MIRROR}/linux/utils/usb/usbutils/usbutils-${PV}.tar.gz \ 14SRC_URI = "${KERNELORG_MIRROR}/linux/utils/usb/usbutils/usbutils-${PV}.tar.gz \
15 file://0001-usbutils.pc.in-Fix-Cflags-entry.patch \ 15 file://0001-usbutils.pc.in-Fix-Cflags-entry.patch \
16 file://0001-usb-devices-Fix-usb-devices-with-busybox.patch \
16 " 17 "
17SRC_URI[sha256sum] = "f704c4cb78a060db88b43aac6ebfd3d93c2c5cf1d6dd0e42936faaf00814ab00" 18SRC_URI[sha256sum] = "f704c4cb78a060db88b43aac6ebfd3d93c2c5cf1d6dd0e42936faaf00814ab00"
18 19
diff --git a/meta/recipes-connectivity/avahi/avahi_0.8.bb b/meta/recipes-connectivity/avahi/avahi_0.8.bb
index 1f18d4491d..1163c17e20 100644
--- a/meta/recipes-connectivity/avahi/avahi_0.8.bb
+++ b/meta/recipes-connectivity/avahi/avahi_0.8.bb
@@ -35,6 +35,7 @@ SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/avahi-${PV}.tar.gz \
35 file://CVE-2023-38471-2.patch \ 35 file://CVE-2023-38471-2.patch \
36 file://CVE-2023-38472.patch \ 36 file://CVE-2023-38472.patch \
37 file://CVE-2023-38473.patch \ 37 file://CVE-2023-38473.patch \
38 file://CVE-2024-52616.patch \
38 " 39 "
39 40
40GITHUB_BASE_URI = "https://github.com/avahi/avahi/releases/" 41GITHUB_BASE_URI = "https://github.com/avahi/avahi/releases/"
diff --git a/meta/recipes-connectivity/avahi/files/CVE-2024-52616.patch b/meta/recipes-connectivity/avahi/files/CVE-2024-52616.patch
new file mode 100644
index 0000000000..a156f98728
--- /dev/null
+++ b/meta/recipes-connectivity/avahi/files/CVE-2024-52616.patch
@@ -0,0 +1,104 @@
1From f8710bdc8b29ee1176fe3bfaeabebbda1b7a79f7 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
3Date: Mon, 11 Nov 2024 00:56:09 +0100
4Subject: [PATCH] Properly randomize query id of DNS packets
5
6CVE: CVE-2024-52616
7Upstream-Status: Backport [https://github.com/avahi/avahi/commit/f8710bdc8b29ee1176fe3bfaeabebbda1b7a79f7]
8
9Signed-off-by: Zhang Peng <peng.zhang1.cn@windriver.com>
10---
11 avahi-core/wide-area.c | 36 ++++++++++++++++++++++++++++--------
12 configure.ac | 3 ++-
13 2 files changed, 30 insertions(+), 9 deletions(-)
14
15diff --git a/avahi-core/wide-area.c b/avahi-core/wide-area.c
16index 971f5e714..00a15056e 100644
17--- a/avahi-core/wide-area.c
18+++ b/avahi-core/wide-area.c
19@@ -40,6 +40,13 @@
20 #include "addr-util.h"
21 #include "rr-util.h"
22
23+#ifdef HAVE_SYS_RANDOM_H
24+#include <sys/random.h>
25+#endif
26+#ifndef HAVE_GETRANDOM
27+# define getrandom(d, len, flags) (-1)
28+#endif
29+
30 #define CACHE_ENTRIES_MAX 500
31
32 typedef struct AvahiWideAreaCacheEntry AvahiWideAreaCacheEntry;
33@@ -84,8 +91,6 @@ struct AvahiWideAreaLookupEngine {
34 int fd_ipv4, fd_ipv6;
35 AvahiWatch *watch_ipv4, *watch_ipv6;
36
37- uint16_t next_id;
38-
39 /* Cache */
40 AVAHI_LLIST_HEAD(AvahiWideAreaCacheEntry, cache);
41 AvahiHashmap *cache_by_key;
42@@ -201,6 +206,26 @@ static void sender_timeout_callback(AvahiTimeEvent *e, void *userdata) {
43 avahi_time_event_update(e, avahi_elapse_time(&tv, 1000, 0));
44 }
45
46+static uint16_t get_random_uint16(void) {
47+ uint16_t next_id;
48+
49+ if (getrandom(&next_id, sizeof(next_id), 0) == -1)
50+ next_id = (uint16_t) rand();
51+ return next_id;
52+}
53+
54+static uint16_t avahi_wide_area_next_id(AvahiWideAreaLookupEngine *e) {
55+ uint16_t next_id;
56+
57+ next_id = get_random_uint16();
58+ while (find_lookup(e, next_id)) {
59+ /* This ID is already used, get new. */
60+ next_id = get_random_uint16();
61+ }
62+ return next_id;
63+}
64+
65+
66 AvahiWideAreaLookup *avahi_wide_area_lookup_new(
67 AvahiWideAreaLookupEngine *e,
68 AvahiKey *key,
69@@ -227,11 +252,7 @@ AvahiWideAreaLookup *avahi_wide_area_lookup_new(
70 /* If more than 65K wide area quries are issued simultaneously,
71 * this will break. This should be limited by some higher level */
72
73- for (;; e->next_id++)
74- if (!find_lookup(e, e->next_id))
75- break; /* This ID is not yet used. */
76-
77- l->id = e->next_id++;
78+ l->id = avahi_wide_area_next_id(e);
79
80 /* We keep the packet around in case we need to repeat our query */
81 l->packet = avahi_dns_packet_new(0);
82@@ -604,7 +625,6 @@ AvahiWideAreaLookupEngine *avahi_wide_area_engine_new(AvahiServer *s) {
83 e->watch_ipv6 = s->poll_api->watch_new(e->server->poll_api, e->fd_ipv6, AVAHI_WATCH_IN, socket_event, e);
84
85 e->n_dns_servers = e->current_dns_server = 0;
86- e->next_id = (uint16_t) rand();
87
88 /* Initialize cache */
89 AVAHI_LLIST_HEAD_INIT(AvahiWideAreaCacheEntry, e->cache);
90diff --git a/configure.ac b/configure.ac
91index a3211b80e..31bce3d76 100644
92--- a/configure.ac
93+++ b/configure.ac
94@@ -367,7 +367,8 @@ AC_FUNC_SELECT_ARGTYPES
95 # whether libc's malloc does too. (Same for realloc.)
96 #AC_FUNC_MALLOC
97 #AC_FUNC_REALLOC
98-AC_CHECK_FUNCS([gethostname memchr memmove memset mkdir select socket strchr strcspn strdup strerror strrchr strspn strstr uname setresuid setreuid setresgid setregid strcasecmp gettimeofday putenv strncasecmp strlcpy gethostbyname seteuid setegid setproctitle getprogname])
99+AC_CHECK_FUNCS([gethostname memchr memmove memset mkdir select socket strchr strcspn strdup strerror strrchr strspn strstr uname setresuid setreuid setresgid setregid strcasecmp gettimeofday putenv strncasecmp strlcpy gethostbyname seteuid setegid setproctitle getprogname getrandom])
100+AC_CHECK_HEADERS([sys/random.h])
101
102 AC_FUNC_CHOWN
103 AC_FUNC_STAT
104
diff --git a/meta/recipes-connectivity/bind/bind_9.18.28.bb b/meta/recipes-connectivity/bind/bind_9.18.33.bb
index 4b0948298e..2554a7bb5f 100644
--- a/meta/recipes-connectivity/bind/bind_9.18.28.bb
+++ b/meta/recipes-connectivity/bind/bind_9.18.33.bb
@@ -20,7 +20,7 @@ SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.xz \
20 file://0001-avoid-start-failure-with-bind-user.patch \ 20 file://0001-avoid-start-failure-with-bind-user.patch \
21 " 21 "
22 22
23SRC_URI[sha256sum] = "e7cce9a165f7b619eefc4832f0a8dc16b005d29e3890aed6008c506ea286a5e7" 23SRC_URI[sha256sum] = "fb373fac5ebbc41c645160afd5a9fb451918f6c0e69ab1d9474154e2b515de40"
24 24
25UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/" 25UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
26# follow the ESV versions divisible by 2 26# follow the ESV versions divisible by 2
diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc b/meta/recipes-connectivity/bluez5/bluez5.inc
index 3f2f096aac..53d8644159 100644
--- a/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -18,6 +18,7 @@ PACKAGECONFIG ??= "obex-profiles \
18 ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \ 18 ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
19 a2dp-profiles \ 19 a2dp-profiles \
20 avrcp-profiles \ 20 avrcp-profiles \
21 mcp-profiles \
21 network-profiles \ 22 network-profiles \
22 hid-profiles \ 23 hid-profiles \
23 hog-profiles \ 24 hog-profiles \
@@ -35,6 +36,7 @@ PACKAGECONFIG[nfc] = "--enable-nfc,--disable-nfc"
35PACKAGECONFIG[sap-profiles] = "--enable-sap,--disable-sap" 36PACKAGECONFIG[sap-profiles] = "--enable-sap,--disable-sap"
36PACKAGECONFIG[a2dp-profiles] = "--enable-a2dp,--disable-a2dp" 37PACKAGECONFIG[a2dp-profiles] = "--enable-a2dp,--disable-a2dp"
37PACKAGECONFIG[avrcp-profiles] = "--enable-avrcp,--disable-avrcp" 38PACKAGECONFIG[avrcp-profiles] = "--enable-avrcp,--disable-avrcp"
39PACKAGECONFIG[mcp-profiles] = "--enable-mcp,--disable-mcp"
38PACKAGECONFIG[network-profiles] = "--enable-network,--disable-network" 40PACKAGECONFIG[network-profiles] = "--enable-network,--disable-network"
39PACKAGECONFIG[hid-profiles] = "--enable-hid,--disable-hid" 41PACKAGECONFIG[hid-profiles] = "--enable-hid,--disable-hid"
40PACKAGECONFIG[hog-profiles] = "--enable-hog,--disable-hog" 42PACKAGECONFIG[hog-profiles] = "--enable-hog,--disable-hog"
@@ -54,6 +56,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
54 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \ 56 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \
55 file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \ 57 file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
56 file://0001-test-gatt-Fix-hung-issue.patch \ 58 file://0001-test-gatt-Fix-hung-issue.patch \
59 file://0001-adapter-Fix-up-address-type-when-loading-keys.patch \
60 file://toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch \
57 " 61 "
58S = "${WORKDIR}/bluez-${PV}" 62S = "${WORKDIR}/bluez-${PV}"
59 63
@@ -86,6 +90,14 @@ do_install:append() {
86 install -d ${D}${INIT_D_DIR} 90 install -d ${D}${INIT_D_DIR}
87 install -m 0755 ${WORKDIR}/init ${D}${INIT_D_DIR}/bluetooth 91 install -m 0755 ${WORKDIR}/init ${D}${INIT_D_DIR}/bluetooth
88 92
93 install -d ${D}${sysconfdir}/bluetooth/
94 if [ -f ${S}/profiles/network/network.conf ]; then
95 install -m 0644 ${S}/profiles/network/network.conf ${D}/${sysconfdir}/bluetooth/
96 fi
97 if [ -f ${S}/profiles/input/input.conf ]; then
98 install -m 0644 ${S}/profiles/input/input.conf ${D}/${sysconfdir}/bluetooth/
99 fi
100
89 if [ -f ${D}/${sysconfdir}/init.d/bluetooth ]; then 101 if [ -f ${D}/${sysconfdir}/init.d/bluetooth ]; then
90 sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}/${sysconfdir}/init.d/bluetooth 102 sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}/${sysconfdir}/init.d/bluetooth
91 fi 103 fi
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-adapter-Fix-up-address-type-when-loading-keys.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-adapter-Fix-up-address-type-when-loading-keys.patch
new file mode 100644
index 0000000000..a2c067b5fa
--- /dev/null
+++ b/meta/recipes-connectivity/bluez5/bluez5/0001-adapter-Fix-up-address-type-when-loading-keys.patch
@@ -0,0 +1,52 @@
1From 366a8c522b648f47147de4852c5c030d69b916b3 Mon Sep 17 00:00:00 2001
2From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
3Date: Wed, 28 Aug 2024 11:30:16 -0400
4Subject: [PATCH] adapter: Fix up address type when loading keys
5
6Due to kernel change 59b047bc9808
7("Bluetooth: MGMT/SMP: Fix address type when using SMP over BREDR/LE")
8some keys maybe store using the wrong/invalid address type as per MGMT
9API, so this attempts to fix them up.
10
11Fixes: https://github.com/bluez/bluez/issues/875
12Upstream-Status: Backport [366a8c522b648f47147de4852c5c030d69b916b3]
13Signed-off-by: Hiago De Franco <hiago.franco@toradex.com>
14---
15 src/adapter.c | 20 ++++++++++++++++++--
16 1 file changed, 18 insertions(+), 2 deletions(-)
17
18diff --git a/src/adapter.c b/src/adapter.c
19index 245de4456868..9f44bdefa5f4 100644
20--- a/src/adapter.c
21+++ b/src/adapter.c
22@@ -5017,12 +5017,28 @@ static void load_devices(struct btd_adapter *adapter)
23 goto free;
24 }
25
26- if (key_info)
27+ if (key_info) {
28+ /* Fix up address type if it was stored with the wrong
29+ * address type since Load Link Keys are only meant to
30+ * work with BR/EDR addresses as per MGMT documentation.
31+ */
32+ if (key_info->bdaddr_type != BDADDR_BREDR)
33+ key_info->bdaddr_type = BDADDR_BREDR;
34+
35 adapter->load_keys = g_slist_append(adapter->load_keys,
36 key_info);
37+ }
38+
39+ if (ltk_info) {
40+ /* Fix up address type if it was stored with the wrong
41+ * address type since Load Long Term Keys are only meant
42+ * to work with LE addresses as per MGMT documentation.
43+ */
44+ if (ltk_info->bdaddr_type == BDADDR_BREDR)
45+ ltk_info->bdaddr_type = BDADDR_LE_PUBLIC;
46
47- if (ltk_info)
48 ltks = g_slist_append(ltks, ltk_info);
49+ }
50
51 if (peripheral_ltk_info)
52 ltks = g_slist_append(ltks, peripheral_ltk_info);
diff --git a/meta/recipes-connectivity/bluez5/bluez5/toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch b/meta/recipes-connectivity/bluez5/bluez5/toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch
new file mode 100644
index 0000000000..f4e14be146
--- /dev/null
+++ b/meta/recipes-connectivity/bluez5/bluez5/toolsbtmgmt-fix-index-option-for-non-interactive-mode.patch
@@ -0,0 +1,29 @@
1From f00d5546c9e989dd68ce0de0190cd0e043b0f1f5 Mon Sep 17 00:00:00 2001
2From: Arjan Opmeer <arjan.opmeer@gmail.com>
3Date: Tue, 9 Jul 2024 13:55:41 +0200
4Subject: [PATCH] tools/btmgmt: Fix --index option for non-interactive mode
5
6In non-interactive mode the --index option does not work because the
7call to mgmt_set_index() is made after bt_shell_attach().
8
9Fixes: https://github.com/bluez/bluez/issues/893
10
11Upstream-Status: Backport [https://github.com/bluez/bluez/commit/f00d5546c9e989dd68ce0de0190cd0e043b0f1f5]
12---
13 tools/btmgmt.c | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/tools/btmgmt.c b/tools/btmgmt.c
17index 9b7f851bd8..436c2bb21f 100644
18--- a/tools/btmgmt.c
19+++ b/tools/btmgmt.c
20@@ -51,8 +51,8 @@ int main(int argc, char *argv[])
21 return EXIT_FAILURE;
22 }
23
24- bt_shell_attach(fileno(stdin));
25 mgmt_set_index(index_option);
26+ bt_shell_attach(fileno(stdin));
27 status = bt_shell_run();
28
29 mgmt_remove_submenu();
diff --git a/meta/recipes-connectivity/bluez5/bluez5_5.72.bb b/meta/recipes-connectivity/bluez5/bluez5_5.72.bb
index 9fda960ea7..d64286ef6e 100644
--- a/meta/recipes-connectivity/bluez5/bluez5_5.72.bb
+++ b/meta/recipes-connectivity/bluez5/bluez5_5.72.bb
@@ -32,6 +32,9 @@ NOINST_TOOLS_TESTING ?= " \
32 tools/rfcomm-tester \ 32 tools/rfcomm-tester \
33 tools/bnep-tester \ 33 tools/bnep-tester \
34 tools/userchan-tester \ 34 tools/userchan-tester \
35 tools/iso-tester \
36 tools/mesh-tester \
37 tools/ioctl-tester \
35" 38"
36 39
37# noinst programs in Makefile.tools that are conditional on TOOLS 40# noinst programs in Makefile.tools that are conditional on TOOLS
@@ -46,6 +49,7 @@ NOINST_TOOLS_BT ?= " \
46 tools/hcieventmask \ 49 tools/hcieventmask \
47 tools/hcisecfilter \ 50 tools/hcisecfilter \
48 tools/btinfo \ 51 tools/btinfo \
52 tools/btconfig \
49 tools/btsnoop \ 53 tools/btsnoop \
50 tools/btproxy \ 54 tools/btproxy \
51 tools/btiotest \ 55 tools/btiotest \
@@ -56,6 +60,8 @@ NOINST_TOOLS_BT ?= " \
56 tools/advtest \ 60 tools/advtest \
57 tools/seq2bseq \ 61 tools/seq2bseq \
58 tools/nokfw \ 62 tools/nokfw \
63 tools/rtlfw \
64 tools/bcmfw \
59 tools/create-image \ 65 tools/create-image \
60 tools/eddystone \ 66 tools/eddystone \
61 tools/ibeacon \ 67 tools/ibeacon \
@@ -65,5 +71,5 @@ NOINST_TOOLS_BT ?= " \
65 tools/check-selftest \ 71 tools/check-selftest \
66 tools/gatt-service \ 72 tools/gatt-service \
67 profiles/iap/iapd \ 73 profiles/iap/iapd \
68 ${@bb.utils.contains('PACKAGECONFIG', 'btpclient', 'tools/btpclient', '', d)} \ 74 ${@bb.utils.contains('PACKAGECONFIG', 'btpclient', 'tools/btpclient tools/btpclientctl', '', d)} \
69" 75"
diff --git a/meta/recipes-connectivity/connman/connman/CVE-2025-32366.patch b/meta/recipes-connectivity/connman/connman/CVE-2025-32366.patch
new file mode 100644
index 0000000000..0eb7360685
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman/CVE-2025-32366.patch
@@ -0,0 +1,41 @@
1From 8d3be0285f1d4667bfe85dba555c663eb3d704b4 Mon Sep 17 00:00:00 2001
2From: Yoonje Shin <ioerts@kookmin.ac.kr>
3Date: Mon, 12 May 2025 10:48:18 +0200
4Subject: [PATCH] dnsproxy: Address CVE-2025-32366 vulnerability
5
6In Connman parse_rr in dnsproxy.c has a memcpy length
7that depends on an RR RDLENGTH value (i.e., *rdlen=ntohs(rr->rdlen)
8and memcpy(response+offset,*end,*rdlen)). Here, rdlen may be larger
9than the amount of remaining packet data in the current state of
10parsing. As a result, values of stack memory locations may be sent
11over the network in a response.
12
13This patch adds a check to ensure that (*end + *rdlen) does not exceed
14the valid range. If the condition is violated, the function returns
15-EINVAL.
16
17CVE: CVE-2025-32366
18
19Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=8d3be0285f1d4667bfe85dba555c663eb3d704b4]
20
21Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
22---
23 src/dnsproxy.c | 3 +++
24 1 file changed, 3 insertions(+)
25
26diff --git a/src/dnsproxy.c b/src/dnsproxy.c
27index 1a5a4f3..50b2d55 100644
28--- a/src/dnsproxy.c
29+++ b/src/dnsproxy.c
30@@ -985,6 +985,9 @@ static int parse_rr(const unsigned char *buf, const unsigned char *start,
31 if ((offset + *rdlen) > *response_size)
32 return -ENOBUFS;
33
34+ if ((*end + *rdlen) > max)
35+ return -EINVAL;
36+
37 memcpy(response + offset, *end, *rdlen);
38
39 *end += *rdlen;
40--
412.40.0
diff --git a/meta/recipes-connectivity/connman/connman/CVE-2025-32743.patch b/meta/recipes-connectivity/connman/connman/CVE-2025-32743.patch
new file mode 100644
index 0000000000..b31c59aa70
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman/CVE-2025-32743.patch
@@ -0,0 +1,48 @@
1From d90b911f6760959bdf1393c39fe8d1118315490f Mon Sep 17 00:00:00 2001
2From: Praveen Kumar <praveen.kumar@windriver.com>
3Date: Thu, 24 Apr 2025 11:39:29 +0000
4Subject: [PATCH] dnsproxy: Fix NULL/empty lookup causing potential crash
5
6In ConnMan through 1.44, the lookup string in ns_resolv in dnsproxy.c
7can be NULL or an empty string when the TC (Truncated) bit is set in
8a DNS response. This allows attackers to cause a denial of service
9(application crash) or possibly execute arbitrary code, because those
10lookup values lead to incorrect length calculations and incorrect
11memcpy operations.
12
13This patch includes a check to make sure loookup value is valid before
14using it. This helps avoid unexpected value when the input is empty or
15incorrect.
16
17Fixes: CVE-2025-32743
18
19CVE: CVE-2025-32743
20
21Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=d90b911f6760959bdf1393c39fe8d1118315490f]
22
23Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
24---
25 src/dnsproxy.c | 7 ++++++-
26 1 file changed, 6 insertions(+), 1 deletion(-)
27
28diff --git a/src/dnsproxy.c b/src/dnsproxy.c
29index 7ebffbc..1a5a4f3 100644
30--- a/src/dnsproxy.c
31+++ b/src/dnsproxy.c
32@@ -1669,8 +1669,13 @@ static int ns_resolv(struct server_data *server, struct request_data *req,
33 gpointer request, gpointer name)
34 {
35 int sk = -1;
36+ int err;
37 const char *lookup = (const char *)name;
38- int err = ns_try_resolv_from_cache(req, request, lookup);
39+
40+ if (!lookup || strlen(lookup) == 0)
41+ return -EINVAL;
42+
43+ err = ns_try_resolv_from_cache(req, request, lookup);
44
45 if (err > 0)
46 /* cache hit */
47--
482.40.0
diff --git a/meta/recipes-connectivity/connman/connman_1.42.bb b/meta/recipes-connectivity/connman/connman_1.42.bb
index 91ab9895ac..9b3abbe258 100644
--- a/meta/recipes-connectivity/connman/connman_1.42.bb
+++ b/meta/recipes-connectivity/connman/connman_1.42.bb
@@ -7,6 +7,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
7 file://no-version-scripts.patch \ 7 file://no-version-scripts.patch \
8 file://0001-vpn-Adding-support-for-latest-pppd-2.5.0-release.patch \ 8 file://0001-vpn-Adding-support-for-latest-pppd-2.5.0-release.patch \
9 file://0001-src-log.c-Include-libgen.h-for-basename-API.patch \ 9 file://0001-src-log.c-Include-libgen.h-for-basename-API.patch \
10 file://CVE-2025-32743.patch \
11 file://CVE-2025-32366.patch \
10 " 12 "
11 13
12SRC_URI:append:libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch" 14SRC_URI:append:libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch"
diff --git a/meta/recipes-connectivity/kea/kea_2.4.1.bb b/meta/recipes-connectivity/kea/kea_2.4.2.bb
index fcdb4889d9..6bb7cb9164 100644
--- a/meta/recipes-connectivity/kea/kea_2.4.1.bb
+++ b/meta/recipes-connectivity/kea/kea_2.4.2.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "Kea is the next generation of DHCP software developed by ISC. It
3HOMEPAGE = "http://kea.isc.org" 3HOMEPAGE = "http://kea.isc.org"
4SECTION = "connectivity" 4SECTION = "connectivity"
5LICENSE = "MPL-2.0" 5LICENSE = "MPL-2.0"
6LIC_FILES_CHKSUM = "file://COPYING;md5=ea061fa0188838072c4248c1318ec131" 6LIC_FILES_CHKSUM = "file://COPYING;md5=ee16e7280a6cf2a1487717faf33190dc"
7 7
8DEPENDS = "boost log4cplus openssl" 8DEPENDS = "boost log4cplus openssl"
9 9
@@ -18,7 +18,7 @@ SRC_URI = "http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.gz \
18 file://fix_pid_keactrl.patch \ 18 file://fix_pid_keactrl.patch \
19 file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \ 19 file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \
20 " 20 "
21SRC_URI[sha256sum] = "815c61f5c271caa4a1db31dd656eb50a7f6ea973da3690f7c8581408e180131a" 21SRC_URI[sha256sum] = "6e82fb319d3b871c0d39bbd504f2cda0c66fa1262865872985fb4fb91b4eaafc"
22 22
23inherit autotools systemd update-rc.d upstream-version-is-even 23inherit autotools systemd update-rc.d upstream-version-is-even
24 24
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
index 0f5747cc6d..4d78312929 100644
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
@@ -66,34 +66,14 @@ start_nfsd(){
66 start-stop-daemon --start --exec "$NFS_NFSD" -- "$@" 66 start-stop-daemon --start --exec "$NFS_NFSD" -- "$@"
67 echo done 67 echo done
68} 68}
69delay_nfsd(){
70 for delay in 0 1 2 3 4 5 6 7 8 9
71 do
72 if pidof nfsd >/dev/null
73 then
74 echo -n .
75 sleep 1
76 else
77 return 0
78 fi
79 done
80 return 1
81}
82stop_nfsd(){ 69stop_nfsd(){
83 # WARNING: this kills any process with the executable
84 # name 'nfsd'.
85 echo -n 'stopping nfsd: ' 70 echo -n 'stopping nfsd: '
86 start-stop-daemon --stop --quiet --signal 1 --name nfsd 71 $NFS_NFSD 0
87 if delay_nfsd || { 72 if pidof nfsd
88 echo failed
89 echo ' using signal 9: '
90 start-stop-daemon --stop --quiet --signal 9 --name nfsd
91 delay_nfsd
92 }
93 then 73 then
94 echo done
95 else
96 echo failed 74 echo failed
75 else
76 echo done
97 fi 77 fi
98} 78}
99 79
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2023-4232.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2023-4232.patch
new file mode 100644
index 0000000000..516cbf779c
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2023-4232.patch
@@ -0,0 +1,31 @@
1From 2ff2da7ac374a790f8b2a0216bcb4e3126498225 Mon Sep 17 00:00:00 2001
2From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
3Date: Wed, 4 Dec 2024 10:18:52 +0200
4Subject: [PATCH] smsutil: check status report fits in buffer
5
6Fixes CVE-2023-4232
7
8CVE: CVE-2023-4232
9Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=2ff2da7ac374a790f8b2a0216bcb4e3126498225]
10Signed-off-by: Peter Marko <peter.marko@siemens.com>
11---
12 src/smsutil.c | 3 +++
13 1 file changed, 3 insertions(+)
14
15diff --git a/src/smsutil.c b/src/smsutil.c
16index ac89f16c..a706e26f 100644
17--- a/src/smsutil.c
18+++ b/src/smsutil.c
19@@ -1088,6 +1088,9 @@ static gboolean decode_status_report(const unsigned char *pdu, int len,
20 if ((len - offset) < expected)
21 return FALSE;
22
23+ if (expected > (int)sizeof(out->status_report.ud))
24+ return FALSE;
25+
26 memcpy(out->status_report.ud, pdu + offset, expected);
27 }
28
29--
302.30.2
31
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2023-4235.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2023-4235.patch
new file mode 100644
index 0000000000..059f9bbfee
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2023-4235.patch
@@ -0,0 +1,38 @@
1From 02aa0f9bad3d9e47a152fc045d0f51874d901d7e Mon Sep 17 00:00:00 2001
2From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
3Date: Wed, 4 Dec 2024 10:18:51 +0200
4Subject: [PATCH] smsutil: check deliver reports fit in buffer
5
6Fixes CVE-2023-4235
7
8CVE: CVE-2023-4235
9Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=02aa0f9bad3d9e47a152fc045d0f51874d901d7e]
10Signed-off-by: Peter Marko <peter.marko@siemens.com>
11---
12 src/smsutil.c | 6 ++++++
13 1 file changed, 6 insertions(+)
14
15diff --git a/src/smsutil.c b/src/smsutil.c
16index 484bfd0b..ac89f16c 100644
17--- a/src/smsutil.c
18+++ b/src/smsutil.c
19@@ -1240,10 +1240,16 @@ static gboolean decode_deliver_report(const unsigned char *pdu, int len,
20 return FALSE;
21
22 if (out->type == SMS_TYPE_DELIVER_REPORT_ERROR) {
23+ if (expected > (int) sizeof(out->deliver_err_report.ud))
24+ return FALSE;
25+
26 out->deliver_err_report.udl = udl;
27 memcpy(out->deliver_err_report.ud,
28 pdu + offset, expected);
29 } else {
30+ if (expected > (int) sizeof(out->deliver_ack_report.ud))
31+ return FALSE;
32+
33 out->deliver_ack_report.udl = udl;
34 memcpy(out->deliver_ack_report.ud,
35 pdu + offset, expected);
36--
372.30.2
38
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2024-7537.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7537.patch
new file mode 100644
index 0000000000..6e131121f2
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7537.patch
@@ -0,0 +1,59 @@
1From e6d8d526d5077c0b6ab459efeb6b882c28e0fdeb Mon Sep 17 00:00:00 2001
2From: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
3Date: Sun, 16 Mar 2025 12:26:42 +0200
4Subject: [PATCH] qmi: sms: Fix possible out-of-bounds read
5
6Fixes: CVE-2024-7537
7
8CVE: CVE-2024-7537
9Upstream-Status: Backport [https://web.git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=e6d8d526d5077c0b6ab459efeb6b882c28e0fdeb]
10Signed-off-by: Peter Marko <peter.marko@siemens.com>
11---
12 drivers/qmimodem/sms.c | 13 ++++++++++---
13 1 file changed, 10 insertions(+), 3 deletions(-)
14
15diff --git a/drivers/qmimodem/sms.c b/drivers/qmimodem/sms.c
16index 3e2bef6e..75863480 100644
17--- a/drivers/qmimodem/sms.c
18+++ b/drivers/qmimodem/sms.c
19@@ -467,6 +467,8 @@ static void get_msg_list_cb(struct qmi_result *result, void *user_data)
20 const struct qmi_wms_result_msg_list *list;
21 uint32_t cnt = 0;
22 uint16_t tmp;
23+ uint16_t length;
24+ size_t msg_size;
25
26 DBG("");
27
28@@ -476,7 +478,7 @@ static void get_msg_list_cb(struct qmi_result *result, void *user_data)
29 goto done;
30 }
31
32- list = qmi_result_get(result, QMI_WMS_RESULT_MSG_LIST, NULL);
33+ list = qmi_result_get(result, QMI_WMS_RESULT_MSG_LIST, &length);
34 if (list == NULL) {
35 DBG("Err: get msg list empty");
36 goto done;
37@@ -485,6 +487,13 @@ static void get_msg_list_cb(struct qmi_result *result, void *user_data)
38 cnt = GUINT32_FROM_LE(list->cnt);
39 DBG("msgs found %d", cnt);
40
41+ msg_size = cnt * sizeof(list->msg[0]);
42+
43+ if (length != sizeof(list->cnt) + msg_size) {
44+ DBG("Err: invalid msg list count");
45+ goto done;
46+ }
47+
48 for (tmp = 0; tmp < cnt; tmp++) {
49 DBG("unread type %d ndx %d", list->msg[tmp].type,
50 GUINT32_FROM_LE(list->msg[tmp].ndx));
51@@ -498,8 +507,6 @@ static void get_msg_list_cb(struct qmi_result *result, void *user_data)
52
53 /* save list and get 1st msg */
54 if (cnt) {
55- int msg_size = cnt * sizeof(list->msg[0]);
56-
57 data->msg_list = g_try_malloc0(sizeof(list->cnt) + msg_size);
58 if (data->msg_list == NULL)
59 goto done;
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2024-7539.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7539.patch
new file mode 100644
index 0000000000..7fcc620fd8
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7539.patch
@@ -0,0 +1,88 @@
1From 389e2344f86319265fb72ae590b470716e038fdc Mon Sep 17 00:00:00 2001
2From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
3Date: Tue, 17 Dec 2024 11:31:29 +0200
4Subject: [PATCH] ussd: ensure ussd content fits in buffers
5
6Fixes: CVE-2024-7539
7
8CVE: CVE-2024-7539
9Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=389e2344f86319265fb72ae590b470716e038fdc]
10Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
11---
12 drivers/atmodem/ussd.c | 5 ++++-
13 drivers/huaweimodem/ussd.c | 5 ++++-
14 drivers/speedupmodem/ussd.c | 5 ++++-
15 3 files changed, 12 insertions(+), 3 deletions(-)
16
17diff --git a/drivers/atmodem/ussd.c b/drivers/atmodem/ussd.c
18index aaf47b2..cee9bc5 100644
19--- a/drivers/atmodem/ussd.c
20+++ b/drivers/atmodem/ussd.c
21@@ -107,7 +107,7 @@ static void cusd_parse(GAtResult *result, struct ofono_ussd *ussd)
22 const char *content;
23 int dcs;
24 enum sms_charset charset;
25- unsigned char msg[160];
26+ unsigned char msg[160] = {0};
27 const unsigned char *msg_ptr = NULL;
28 long msg_len;
29
30@@ -127,6 +127,9 @@ static void cusd_parse(GAtResult *result, struct ofono_ussd *ussd)
31 if (!g_at_result_iter_next_number(&iter, &dcs))
32 dcs = 0;
33
34+ if (strlen(content) > sizeof(msg) * 2)
35+ goto out;
36+
37 if (!cbs_dcs_decode(dcs, NULL, NULL, &charset, NULL, NULL, NULL)) {
38 ofono_error("Unsupported USSD data coding scheme (%02x)", dcs);
39 status = 4; /* Not supported */
40diff --git a/drivers/huaweimodem/ussd.c b/drivers/huaweimodem/ussd.c
41index ffb9b2a..cfdb4ee 100644
42--- a/drivers/huaweimodem/ussd.c
43+++ b/drivers/huaweimodem/ussd.c
44@@ -52,7 +52,7 @@ static void cusd_parse(GAtResult *result, struct ofono_ussd *ussd)
45 int status;
46 int dcs = 0;
47 const char *content;
48- unsigned char msg[160];
49+ unsigned char msg[160] = {0};
50 const unsigned char *msg_ptr = NULL;
51 long msg_len;
52
53@@ -69,6 +69,9 @@ static void cusd_parse(GAtResult *result, struct ofono_ussd *ussd)
54
55 g_at_result_iter_next_number(&iter, &dcs);
56
57+ if (strlen(content) > sizeof(msg) * 2)
58+ goto out;
59+
60 msg_ptr = decode_hex_own_buf(content, -1, &msg_len, 0, msg);
61
62 out:
63diff --git a/drivers/speedupmodem/ussd.c b/drivers/speedupmodem/ussd.c
64index 44da8ed..33441c6 100644
65--- a/drivers/speedupmodem/ussd.c
66+++ b/drivers/speedupmodem/ussd.c
67@@ -51,7 +51,7 @@ static void cusd_parse(GAtResult *result, struct ofono_ussd *ussd)
68 int status;
69 int dcs = 0;
70 const char *content;
71- unsigned char msg[160];
72+ unsigned char msg[160] = {0};
73 const unsigned char *msg_ptr = NULL;
74 long msg_len;
75
76@@ -68,6 +68,9 @@ static void cusd_parse(GAtResult *result, struct ofono_ussd *ussd)
77
78 g_at_result_iter_next_number(&iter, &dcs);
79
80+ if (strlen(content) > sizeof(msg) * 2)
81+ goto out;
82+
83 msg_ptr = decode_hex_own_buf(content, -1, &msg_len, 0, msg);
84
85 out:
86--
872.25.1
88
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2024-7540_CVE-2024-7541_CVE-2024-7542.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7540_CVE-2024-7541_CVE-2024-7542.patch
new file mode 100644
index 0000000000..0b06e057e5
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7540_CVE-2024-7541_CVE-2024-7542.patch
@@ -0,0 +1,52 @@
1From 29ff6334b492504ace101be748b256e6953d2c2f Mon Sep 17 00:00:00 2001
2From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
3Date: Tue, 17 Dec 2024 11:31:28 +0200
4Subject: [PATCH] atmodem: sms: ensure buffer is initialized before use
5
6Fixes: CVE-2024-7540
7Fixes: CVE-2024-7541
8Fixes: CVE-2024-7542
9
10CVE: CVE-2024-7540
11CVE: CVE-2024-7541
12CVE: CVE-2024-7542
13Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=29ff6334b492504ace101be748b256e6953d2c2f]
14Signed-off-by: Peter Marko <peter.marko@siemens.com>
15---
16 drivers/atmodem/sms.c | 6 +++---
17 1 file changed, 3 insertions(+), 3 deletions(-)
18
19diff --git a/drivers/atmodem/sms.c b/drivers/atmodem/sms.c
20index d994856b..0668c631 100644
21--- a/drivers/atmodem/sms.c
22+++ b/drivers/atmodem/sms.c
23@@ -412,7 +412,7 @@ static void at_cmt_notify(GAtResult *result, gpointer user_data)
24 struct sms_data *data = ofono_sms_get_data(sms);
25 GAtResultIter iter;
26 const char *hexpdu;
27- unsigned char pdu[176];
28+ unsigned char pdu[176] = {0};
29 long pdu_len;
30 int tpdu_len;
31
32@@ -479,7 +479,7 @@ static void at_cmgr_notify(GAtResult *result, gpointer user_data)
33 struct sms_data *data = ofono_sms_get_data(sms);
34 GAtResultIter iter;
35 const char *hexpdu;
36- unsigned char pdu[176];
37+ unsigned char pdu[176] = {0};
38 long pdu_len;
39 int tpdu_len;
40
41@@ -661,7 +661,7 @@ static void at_cmgl_notify(GAtResult *result, gpointer user_data)
42 struct sms_data *data = ofono_sms_get_data(sms);
43 GAtResultIter iter;
44 const char *hexpdu;
45- unsigned char pdu[176];
46+ unsigned char pdu[176] = {0};
47 long pdu_len;
48 int tpdu_len;
49 int index;
50--
512.30.2
52
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2024-7543.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7543.patch
new file mode 100644
index 0000000000..e48579e59a
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7543.patch
@@ -0,0 +1,30 @@
1From 90e60ada012de42964214d8155260f5749d0dcc7 Mon Sep 17 00:00:00 2001
2From: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
3Date: Tue, 3 Dec 2024 21:43:50 +0200
4Subject: [PATCH] stkutil: Fix CVE-2024-7543
5
6CVE: CVE-2024-7543
7Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=90e60ada012de42964214d8155260f5749d0dcc7]
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 src/stkutil.c | 4 ++++
11 1 file changed, 4 insertions(+)
12
13diff --git a/src/stkutil.c b/src/stkutil.c
14index 4f31af4..fdd11ad 100644
15--- a/src/stkutil.c
16+++ b/src/stkutil.c
17@@ -1876,6 +1876,10 @@ static bool parse_dataobj_mms_reference(struct comprehension_tlv_iter *iter,
18
19 data = comprehension_tlv_iter_get_data(iter);
20 mr->len = len;
21+
22+ if (len > sizeof(mr->ref))
23+ return false;
24+
25 memcpy(mr->ref, data, len);
26
27 return true;
28--
292.25.1
30
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2024-7544.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7544.patch
new file mode 100644
index 0000000000..7984bc6487
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7544.patch
@@ -0,0 +1,30 @@
1From a240705a0d5d41eca6de4125ab2349ecde4c873a Mon Sep 17 00:00:00 2001
2From: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
3Date: Tue, 3 Dec 2024 21:43:49 +0200
4Subject: [PATCH] stkutil: Fix CVE-2024-7544
5
6CVE: CVE-2024-7544
7Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=a240705a0d5d41eca6de4125ab2349ecde4c873a]
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 src/stkutil.c | 4 ++++
11 1 file changed, 4 insertions(+)
12
13diff --git a/src/stkutil.c b/src/stkutil.c
14index fdd11ad..475caaa 100644
15--- a/src/stkutil.c
16+++ b/src/stkutil.c
17@@ -1898,6 +1898,10 @@ static bool parse_dataobj_mms_id(struct comprehension_tlv_iter *iter,
18
19 data = comprehension_tlv_iter_get_data(iter);
20 mi->len = len;
21+
22+ if (len > sizeof(mi->id))
23+ return false;
24+
25 memcpy(mi->id, data, len);
26
27 return true;
28--
292.25.1
30
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2024-7545.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7545.patch
new file mode 100644
index 0000000000..a3bf13a81e
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7545.patch
@@ -0,0 +1,32 @@
1From 556e14548c38c2b96d85881542046ee7ed750bb5 Mon Sep 17 00:00:00 2001
2From: Sicelo A. Mhlongo <absicsz@gmail.com>
3Date: Wed, Dec 4 12:07:34 2024 +0200
4Subject: [PATCH] stkutil: ensure data fits in buffer
5
6Fixes CVE-2024-7545
7
8CVE: CVE-2024-7545
9Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=556e14548c38c2b96d85881542046ee7ed750bb5]
10Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
11---
12 src/stkutil.c | 4 ++++
13 1 file changed, 4 insertions(+)
14
15diff --git a/src/stkutil.c b/src/stkutil.c
16index 475caaa..e1fd75c 100644
17--- a/src/stkutil.c
18+++ b/src/stkutil.c
19@@ -1938,6 +1938,10 @@ static bool parse_dataobj_mms_content_id(
20
21 data = comprehension_tlv_iter_get_data(iter);
22 mci->len = len;
23+
24+ if (len > sizeof(mci->id))
25+ return false;
26+
27 memcpy(mci->id, data, len);
28
29 return true;
30--
312.25.1
32
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2024-7546.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7546.patch
new file mode 100644
index 0000000000..808458be2f
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7546.patch
@@ -0,0 +1,30 @@
1From 79ea6677669e50b0bb9c231765adb4f81c375f63 Mon Sep 17 00:00:00 2001
2From: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
3Date: Tue, 3 Dec 2024 21:43:52 +0200
4Subject: [PATCH] Fix CVE-2024-7546
5
6CVE: CVE-2024-7546
7Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=79ea6677669e50b0bb9c231765adb4f81c375f63]
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 src/stkutil.c | 4 ++++
11 1 file changed, 4 insertions(+)
12
13diff --git a/src/stkutil.c b/src/stkutil.c
14index e1fd75c..88a715d 100644
15--- a/src/stkutil.c
16+++ b/src/stkutil.c
17@@ -1783,6 +1783,10 @@ static bool parse_dataobj_frame_layout(struct comprehension_tlv_iter *iter,
18
19 fl->layout = data[0];
20 fl->len = len - 1;
21+
22+ if (fl->len > sizeof(fl->size))
23+ return false;
24+
25 memcpy(fl->size, data + 1, fl->len);
26
27 return true;
28--
292.25.1
30
diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2024-7547.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7547.patch
new file mode 100644
index 0000000000..d4feee7f7f
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/CVE-2024-7547.patch
@@ -0,0 +1,29 @@
1From 305df050d02aea8532f7625d6642685aa530f9b0 Mon Sep 17 00:00:00 2001
2From: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
3Date: Tue, 3 Dec 2024 21:43:51 +0200
4Subject: [PATCH] Fix CVE-2024-7547
5
6CVE: CVE-2024-7547
7Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=305df050d02aea8532f7625d6642685aa530f9b0]
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 src/smsutil.c | 3 +++
11 1 file changed, 3 insertions(+)
12
13diff --git a/src/smsutil.c b/src/smsutil.c
14index def47e8..f79f59d 100644
15--- a/src/smsutil.c
16+++ b/src/smsutil.c
17@@ -1475,6 +1475,9 @@ static gboolean decode_command(const unsigned char *pdu, int len,
18 if ((len - offset) < out->command.cdl)
19 return FALSE;
20
21+ if (out->command.cdl > sizeof(out->command.cd))
22+ return FALSE;
23+
24 memcpy(out->command.cd, pdu + offset, out->command.cdl);
25
26 return TRUE;
27--
282.25.1
29
diff --git a/meta/recipes-connectivity/ofono/ofono_2.4.bb b/meta/recipes-connectivity/ofono/ofono_2.4.bb
index f8ade2b2f8..2cf6438117 100644
--- a/meta/recipes-connectivity/ofono/ofono_2.4.bb
+++ b/meta/recipes-connectivity/ofono/ofono_2.4.bb
@@ -16,6 +16,16 @@ SRC_URI = "\
16 file://CVE-2023-2794-0002.patch \ 16 file://CVE-2023-2794-0002.patch \
17 file://CVE-2023-2794-0003.patch \ 17 file://CVE-2023-2794-0003.patch \
18 file://CVE-2023-2794-0004.patch \ 18 file://CVE-2023-2794-0004.patch \
19 file://CVE-2024-7539.patch \
20 file://CVE-2024-7543.patch \
21 file://CVE-2024-7544.patch \
22 file://CVE-2024-7545.patch \
23 file://CVE-2024-7546.patch \
24 file://CVE-2024-7547.patch \
25 file://CVE-2024-7540_CVE-2024-7541_CVE-2024-7542.patch \
26 file://CVE-2023-4232.patch \
27 file://CVE-2023-4235.patch \
28 file://CVE-2024-7537.patch \
19" 29"
20SRC_URI[sha256sum] = "93580adc1afd1890dc516efb069de0c5cdfef014415256ddfb28ab172df2d11d" 30SRC_URI[sha256sum] = "93580adc1afd1890dc516efb069de0c5cdfef014415256ddfb28ab172df2d11d"
21 31
diff --git a/meta/recipes-connectivity/openssh/openssh/CVE-2025-26465.patch b/meta/recipes-connectivity/openssh/openssh/CVE-2025-26465.patch
new file mode 100644
index 0000000000..0a3cf1496b
--- /dev/null
+++ b/meta/recipes-connectivity/openssh/openssh/CVE-2025-26465.patch
@@ -0,0 +1,169 @@
1From 0832aac79517611dd4de93ad0a83577994d9c907 Mon Sep 17 00:00:00 2001
2From: "djm@openbsd.org" <djm@openbsd.org>
3Date: Tue, 18 Feb 2025 08:02:48 +0000
4Subject: [PATCH] upstream: Fix cases where error codes were not correctly set
5
6Reported by the Qualys Security Advisory team. ok markus@
7
8OpenBSD-Commit-ID: 7bcd4ffe0fa1e27ff98d451fb9c22f5fae6e610d
9
10CVE: CVE-2025-26465
11
12Upstream-Status: Backport [https://github.com/openssh/openssh-portable/commit/0832aac79517611dd4de93ad0a83577994d9c907]
13
14Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
15---
16 krl.c | 4 +++-
17 ssh-agent.c | 5 +++++
18 ssh-sk-client.c | 4 +++-
19 sshconnect2.c | 5 ++++-
20 sshsig.c | 1 +
21 5 files changed, 16 insertions(+), 3 deletions(-)
22
23diff --git a/krl.c b/krl.c
24index e2efdf0..0d0f695 100644
25--- a/krl.c
26+++ b/krl.c
27@@ -1,4 +1,4 @@
28-/* $OpenBSD: krl.c,v 1.59 2023/07/17 05:22:30 djm Exp $ */
29+/* $OpenBSD: krl.c,v 1.60 2025/02/18 08:02:48 djm Exp $ */
30 /*
31 * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
32 *
33@@ -674,6 +674,7 @@ revoked_certs_generate(struct revoked_certs *rc, struct sshbuf *buf)
34 break;
35 case KRL_SECTION_CERT_SERIAL_BITMAP:
36 if (rs->lo - bitmap_start > INT_MAX) {
37+ r = SSH_ERR_INVALID_FORMAT;
38 error_f("insane bitmap gap");
39 goto out;
40 }
41@@ -1059,6 +1060,7 @@ ssh_krl_from_blob(struct sshbuf *buf, struct ssh_krl **krlp)
42 }
43
44 if ((krl = ssh_krl_init()) == NULL) {
45+ r = SSH_ERR_ALLOC_FAIL;
46 error_f("alloc failed");
47 goto out;
48 }
49diff --git a/ssh-agent.c b/ssh-agent.c
50index b6a3f48..2d2c6fc 100644
51--- a/ssh-agent.c
52+++ b/ssh-agent.c
53@@ -1204,6 +1204,7 @@ parse_key_constraint_extension(struct sshbuf *m, char **sk_providerp,
54 "restrict-destination-v00@openssh.com") == 0) {
55 if (*dcsp != NULL) {
56 error_f("%s already set", ext_name);
57+ r = SSH_ERR_INVALID_FORMAT;
58 goto out;
59 }
60 if ((r = sshbuf_froms(m, &b)) != 0) {
61@@ -1213,6 +1214,7 @@ parse_key_constraint_extension(struct sshbuf *m, char **sk_providerp,
62 while (sshbuf_len(b) != 0) {
63 if (*ndcsp >= AGENT_MAX_DEST_CONSTRAINTS) {
64 error_f("too many %s constraints", ext_name);
65+ r = SSH_ERR_INVALID_FORMAT;
66 goto out;
67 }
68 *dcsp = xrecallocarray(*dcsp, *ndcsp, *ndcsp + 1,
69@@ -1230,6 +1232,7 @@ parse_key_constraint_extension(struct sshbuf *m, char **sk_providerp,
70 }
71 if (*certs != NULL) {
72 error_f("%s already set", ext_name);
73+ r = SSH_ERR_INVALID_FORMAT;
74 goto out;
75 }
76 if ((r = sshbuf_get_u8(m, &v)) != 0 ||
77@@ -1241,6 +1244,7 @@ parse_key_constraint_extension(struct sshbuf *m, char **sk_providerp,
78 while (sshbuf_len(b) != 0) {
79 if (*ncerts >= AGENT_MAX_EXT_CERTS) {
80 error_f("too many %s constraints", ext_name);
81+ r = SSH_ERR_INVALID_FORMAT;
82 goto out;
83 }
84 *certs = xrecallocarray(*certs, *ncerts, *ncerts + 1,
85@@ -1737,6 +1741,7 @@ process_ext_session_bind(SocketEntry *e)
86 /* record new key/sid */
87 if (e->nsession_ids >= AGENT_MAX_SESSION_IDS) {
88 error_f("too many session IDs recorded");
89+ r = -1;
90 goto out;
91 }
92 e->session_ids = xrecallocarray(e->session_ids, e->nsession_ids,
93diff --git a/ssh-sk-client.c b/ssh-sk-client.c
94index 321fe53..06fad22 100644
95--- a/ssh-sk-client.c
96+++ b/ssh-sk-client.c
97@@ -1,4 +1,4 @@
98-/* $OpenBSD: ssh-sk-client.c,v 1.12 2022/01/14 03:34:00 djm Exp $ */
99+/* $OpenBSD: ssh-sk-client.c,v 1.13 2025/02/18 08:02:48 djm Exp $ */
100 /*
101 * Copyright (c) 2019 Google LLC
102 *
103@@ -439,6 +439,7 @@ sshsk_load_resident(const char *provider_path, const char *device,
104 }
105 if ((srk = calloc(1, sizeof(*srk))) == NULL) {
106 error_f("calloc failed");
107+ r = SSH_ERR_ALLOC_FAIL;
108 goto out;
109 }
110 srk->key = key;
111@@ -450,6 +451,7 @@ sshsk_load_resident(const char *provider_path, const char *device,
112 if ((tmp = recallocarray(srks, nsrks, nsrks + 1,
113 sizeof(*srks))) == NULL) {
114 error_f("recallocarray keys failed");
115+ r = SSH_ERR_ALLOC_FAIL;
116 goto out;
117 }
118 debug_f("srks[%zu]: %s %s uidlen %zu", nsrks,
119diff --git a/sshconnect2.c b/sshconnect2.c
120index fab1e36..a5f92f0 100644
121--- a/sshconnect2.c
122+++ b/sshconnect2.c
123@@ -101,7 +101,7 @@ verify_host_key_callback(struct sshkey *hostkey, struct ssh *ssh)
124 options.required_rsa_size)) != 0)
125 fatal_r(r, "Bad server host key");
126 if (verify_host_key(xxx_host, xxx_hostaddr, hostkey,
127- xxx_conn_info) == -1)
128+ xxx_conn_info) != 0)
129 fatal("Host key verification failed.");
130 return 0;
131 }
132@@ -709,6 +709,7 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh)
133
134 if ((pktype = sshkey_type_from_name(pkalg)) == KEY_UNSPEC) {
135 debug_f("server sent unknown pkalg %s", pkalg);
136+ r = SSH_ERR_INVALID_FORMAT;
137 goto done;
138 }
139 if ((r = sshkey_from_blob(pkblob, blen, &key)) != 0) {
140@@ -719,6 +720,7 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh)
141 error("input_userauth_pk_ok: type mismatch "
142 "for decoded key (received %d, expected %d)",
143 key->type, pktype);
144+ r = SSH_ERR_INVALID_FORMAT;
145 goto done;
146 }
147
148@@ -738,6 +740,7 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh)
149 SSH_FP_DEFAULT);
150 error_f("server replied with unknown key: %s %s",
151 sshkey_type(key), fp == NULL ? "<ERROR>" : fp);
152+ r = SSH_ERR_INVALID_FORMAT;
153 goto done;
154 }
155 ident = format_identity(id);
156diff --git a/sshsig.c b/sshsig.c
157index d50d65f..1b7f40d 100644
158--- a/sshsig.c
159+++ b/sshsig.c
160@@ -874,6 +874,7 @@ cert_filter_principals(const char *path, u_long linenum,
161 }
162 if ((principals = sshbuf_dup_string(nprincipals)) == NULL) {
163 error_f("buffer error");
164+ r = SSH_ERR_ALLOC_FAIL;
165 goto out;
166 }
167 /* success */
168--
1692.40.0
diff --git a/meta/recipes-connectivity/openssh/openssh/CVE-2025-26466.patch b/meta/recipes-connectivity/openssh/openssh/CVE-2025-26466.patch
new file mode 100644
index 0000000000..27b2fa7143
--- /dev/null
+++ b/meta/recipes-connectivity/openssh/openssh/CVE-2025-26466.patch
@@ -0,0 +1,38 @@
1From 6ce00f0c2ecbb9f75023dbe627ee6460bcec78c2 Mon Sep 17 00:00:00 2001
2From: "djm@openbsd.org" <djm@openbsd.org>
3Date: Tue, 18 Feb 2025 08:02:12 +0000
4Subject: [PATCH] upstream: Don't reply to PING in preauth phase or during KEX
5
6Reported by the Qualys Security Advisory team. ok markus@
7
8OpenBSD-Commit-ID: c656ac4abd1504389d1733d85152044b15830217
9
10Upstream-Status: Backport [https://github.com/openssh/openssh-portable/commit/6ce00f0c2ecbb9f75023dbe627ee6460bcec78c2]
11CVE: CVE-2025-26466
12Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
13---
14 packet.c | 8 ++++++++
15 1 file changed, 8 insertions(+)
16
17diff --git a/packet.c b/packet.c
18index beb214f..aeab98c 100644
19--- a/packet.c
20+++ b/packet.c
21@@ -1773,6 +1773,14 @@ ssh_packet_read_poll_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
22 if ((r = sshpkt_get_string_direct(ssh, &d, &len)) != 0)
23 return r;
24 DBG(debug("Received SSH2_MSG_PING len %zu", len));
25+ if (!ssh->state->after_authentication) {
26+ DBG(debug("Won't reply to PING in preauth"));
27+ break;
28+ }
29+ if (ssh_packet_is_rekeying(ssh)) {
30+ DBG(debug("Won't reply to PING during KEX"));
31+ break;
32+ }
33 if ((r = sshpkt_start(ssh, SSH2_MSG_PONG)) != 0 ||
34 (r = sshpkt_put_string(ssh, d, len)) != 0 ||
35 (r = sshpkt_send(ssh)) != 0)
36--
372.25.1
38
diff --git a/meta/recipes-connectivity/openssh/openssh/CVE-2025-32728.patch b/meta/recipes-connectivity/openssh/openssh/CVE-2025-32728.patch
new file mode 100644
index 0000000000..72fc0073e8
--- /dev/null
+++ b/meta/recipes-connectivity/openssh/openssh/CVE-2025-32728.patch
@@ -0,0 +1,44 @@
1From fc86875e6acb36401dfc1dfb6b628a9d1460f367 Mon Sep 17 00:00:00 2001
2From: "djm@openbsd.org" <djm@openbsd.org>
3Date: Wed, 9 Apr 2025 07:00:03 +0000
4Subject: [PATCH] upstream: Fix logic error in DisableForwarding option. This
5 option
6
7was documented as disabling X11 and agent forwarding but it failed to do so.
8Spotted by Tim Rice.
9
10OpenBSD-Commit-ID: fffc89195968f7eedd2fc57f0b1f1ef3193f5ed1
11
12Upstream-Status: Backport [https://github.com/openssh/openssh-portable/commit/fc86875e6acb36401dfc1dfb6b628a9d1460f367]
13CVE: CVE-2025-32728
14Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
15---
16 session.c | 5 +++--
17 1 file changed, 3 insertions(+), 2 deletions(-)
18
19diff --git a/session.c b/session.c
20index aa342e8..eb932b8 100644
21--- a/session.c
22+++ b/session.c
23@@ -2191,7 +2191,8 @@ session_auth_agent_req(struct ssh *ssh, Session *s)
24 if ((r = sshpkt_get_end(ssh)) != 0)
25 sshpkt_fatal(ssh, r, "%s: parse packet", __func__);
26 if (!auth_opts->permit_agent_forwarding_flag ||
27- !options.allow_agent_forwarding) {
28+ !options.allow_agent_forwarding ||
29+ options.disable_forwarding) {
30 debug_f("agent forwarding disabled");
31 return 0;
32 }
33@@ -2586,7 +2587,7 @@ session_setup_x11fwd(struct ssh *ssh, Session *s)
34 ssh_packet_send_debug(ssh, "X11 forwarding disabled by key options.");
35 return 0;
36 }
37- if (!options.x11_forwarding) {
38+ if (!options.x11_forwarding || options.disable_forwarding) {
39 debug("X11 forwarding disabled in server configuration file.");
40 return 0;
41 }
42--
432.25.1
44
diff --git a/meta/recipes-connectivity/openssh/openssh_9.6p1.bb b/meta/recipes-connectivity/openssh/openssh_9.6p1.bb
index 3c507cf911..afcd50c7e6 100644
--- a/meta/recipes-connectivity/openssh/openssh_9.6p1.bb
+++ b/meta/recipes-connectivity/openssh/openssh_9.6p1.bb
@@ -29,6 +29,9 @@ SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar
29 file://CVE-2024-6387.patch \ 29 file://CVE-2024-6387.patch \
30 file://CVE-2024-39894.patch \ 30 file://CVE-2024-39894.patch \
31 file://0001-Fix-missing-header-for-systemd-notification.patch \ 31 file://0001-Fix-missing-header-for-systemd-notification.patch \
32 file://CVE-2025-26466.patch \
33 file://CVE-2025-26465.patch \
34 file://CVE-2025-32728.patch \
32 " 35 "
33SRC_URI[sha256sum] = "910211c07255a8c5ad654391b40ee59800710dd8119dd5362de09385aa7a777c" 36SRC_URI[sha256sum] = "910211c07255a8c5ad654391b40ee59800710dd8119dd5362de09385aa7a777c"
34 37
@@ -40,6 +43,7 @@ CVE_STATUS[CVE-2014-9278] = "not-applicable-platform: This CVE is specific to Op
40Red Hat Enterprise Linux 7 and when running in a Kerberos environment" 43Red Hat Enterprise Linux 7 and when running in a Kerberos environment"
41 44
42CVE_STATUS[CVE-2008-3844] = "not-applicable-platform: Only applies to some distributed RHEL binaries." 45CVE_STATUS[CVE-2008-3844] = "not-applicable-platform: Only applies to some distributed RHEL binaries."
46CVE_STATUS[CVE-2023-51767] = "upstream-wontfix: It was demonstrated on modified sshd and does not exist in upstream openssh https://bugzilla.mindrot.org/show_bug.cgi?id=3656#c1."
43 47
44PAM_SRC_URI = "file://sshd" 48PAM_SRC_URI = "file://sshd"
45 49
diff --git a/meta/recipes-connectivity/openssl/files/environment.d-openssl.sh b/meta/recipes-connectivity/openssl/files/environment.d-openssl.sh
index 6f23490c87..c635be8aca 100644
--- a/meta/recipes-connectivity/openssl/files/environment.d-openssl.sh
+++ b/meta/recipes-connectivity/openssl/files/environment.d-openssl.sh
@@ -1,5 +1,23 @@
1export OPENSSL_CONF="$OECORE_NATIVE_SYSROOT/usr/lib/ssl/openssl.cnf" 1export OPENSSL_CONF="$OECORE_NATIVE_SYSROOT/usr/lib/ssl/openssl.cnf"
2export SSL_CERT_DIR="$OECORE_NATIVE_SYSROOT/usr/lib/ssl/certs"
3export SSL_CERT_FILE="$OECORE_NATIVE_SYSROOT/usr/lib/ssl/certs/ca-certificates.crt"
4export OPENSSL_MODULES="$OECORE_NATIVE_SYSROOT/usr/lib/ossl-modules/" 2export OPENSSL_MODULES="$OECORE_NATIVE_SYSROOT/usr/lib/ossl-modules/"
5export OPENSSL_ENGINES="$OECORE_NATIVE_SYSROOT/usr/lib/engines-3" 3export OPENSSL_ENGINES="$OECORE_NATIVE_SYSROOT/usr/lib/engines-3"
4
5# Respect host env SSL_CERT_FILE/SSL_CERT_DIR first, then auto-detected host cert, then cert in buildtools
6# CAFILE/CAPATH is auto-deteced when source buildtools
7if [ -z "$SSL_CERT_FILE" ]; then
8 if [ -n "$CAFILE" ];then
9 export SSL_CERT_FILE="$CAFILE"
10 elif [ -e "${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt" ];then
11 export SSL_CERT_FILE="$OECORE_NATIVE_SYSROOT/usr/lib/ssl/certs/ca-certificates.crt"
12 fi
13fi
14
15if [ -z "$SSL_CERT_DIR" ]; then
16 if [ -n "$CAPATH" ];then
17 export SSL_CERT_DIR="$CAPATH"
18 elif [ -e "${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt" ];then
19 export SSL_CERT_DIR="$OECORE_NATIVE_SYSROOT/usr/lib/ssl/certs"
20 fi
21fi
22
23export BB_ENV_PASSTHROUGH_ADDITIONS="${BB_ENV_PASSTHROUGH_ADDITIONS:-} SSL_CERT_DIR SSL_CERT_FILE"
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-Added-handshake-history-reporting-when-test-fails.patch b/meta/recipes-connectivity/openssl/openssl/0001-Added-handshake-history-reporting-when-test-fails.patch
index 9baa0c2d75..b05d7abf7c 100644
--- a/meta/recipes-connectivity/openssl/openssl/0001-Added-handshake-history-reporting-when-test-fails.patch
+++ b/meta/recipes-connectivity/openssl/openssl/0001-Added-handshake-history-reporting-when-test-fails.patch
@@ -8,10 +8,10 @@ Upstream-Status: Submitted [https://github.com/openssl/openssl/pull/22481]
8Signed-off-by: William Lyu <William.Lyu@windriver.com> 8Signed-off-by: William Lyu <William.Lyu@windriver.com>
9Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> 9Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
10--- 10---
11 test/helpers/handshake.c | 139 +++++++++++++++++++++++++++++---------- 11 test/helpers/handshake.c | 137 +++++++++++++++++++++++++++++----------
12 test/helpers/handshake.h | 70 +++++++++++++++++++- 12 test/helpers/handshake.h | 70 +++++++++++++++++++-
13 test/ssl_test.c | 44 +++++++++++++ 13 test/ssl_test.c | 44 +++++++++++++
14 3 files changed, 218 insertions(+), 35 deletions(-) 14 3 files changed, 217 insertions(+), 34 deletions(-)
15 15
16diff --git a/test/helpers/handshake.c b/test/helpers/handshake.c 16diff --git a/test/helpers/handshake.c b/test/helpers/handshake.c
17index e0422469e4..ae2ad59dd4 100644 17index e0422469e4..ae2ad59dd4 100644
@@ -20,7 +20,7 @@ index e0422469e4..ae2ad59dd4 100644
20@@ -24,6 +24,102 @@ 20@@ -24,6 +24,102 @@
21 #include <netinet/sctp.h> 21 #include <netinet/sctp.h>
22 #endif 22 #endif
23 23
24+/* Shamelessly copied from test/helpers/ssl_test_ctx.c */ 24+/* Shamelessly copied from test/helpers/ssl_test_ctx.c */
25+/* Maps string names to various enumeration type */ 25+/* Maps string names to various enumeration type */
26+typedef struct { 26+typedef struct {
@@ -120,10 +120,10 @@ index e0422469e4..ae2ad59dd4 100644
120 HANDSHAKE_RESULT *HANDSHAKE_RESULT_new(void) 120 HANDSHAKE_RESULT *HANDSHAKE_RESULT_new(void)
121 { 121 {
122 HANDSHAKE_RESULT *ret; 122 HANDSHAKE_RESULT *ret;
123@@ -719,15 +815,6 @@ static void configure_handshake_ssl(SSL *server, SSL *client, 123@@ -725,15 +821,6 @@ static void configure_handshake_ssl(SSL *server, SSL *client,
124 SSL_set_post_handshake_auth(client, 1); 124 SSL_set_post_handshake_auth(client, 1);
125 } 125 }
126 126
127-/* The status for each connection phase. */ 127-/* The status for each connection phase. */
128-typedef enum { 128-typedef enum {
129- PEER_SUCCESS, 129- PEER_SUCCESS,
@@ -136,10 +136,10 @@ index e0422469e4..ae2ad59dd4 100644
136 /* An SSL object and associated read-write buffers. */ 136 /* An SSL object and associated read-write buffers. */
137 typedef struct peer_st { 137 typedef struct peer_st {
138 SSL *ssl; 138 SSL *ssl;
139@@ -1074,17 +1161,6 @@ static void do_shutdown_step(PEER *peer) 139@@ -1080,17 +1167,6 @@ static void do_shutdown_step(PEER *peer)
140 } 140 }
141 } 141 }
142 142
143-typedef enum { 143-typedef enum {
144- HANDSHAKE, 144- HANDSHAKE,
145- RENEG_APPLICATION_DATA, 145- RENEG_APPLICATION_DATA,
@@ -154,10 +154,10 @@ index e0422469e4..ae2ad59dd4 100644
154 static int renegotiate_op(const SSL_TEST_CTX *test_ctx) 154 static int renegotiate_op(const SSL_TEST_CTX *test_ctx)
155 { 155 {
156 switch (test_ctx->handshake_mode) { 156 switch (test_ctx->handshake_mode) {
157@@ -1162,19 +1238,6 @@ static void do_connect_step(const SSL_TEST_CTX *test_ctx, PEER *peer, 157@@ -1168,19 +1244,6 @@ static void do_connect_step(const SSL_TEST_CTX *test_ctx, PEER *peer,
158 } 158 }
159 } 159 }
160 160
161-typedef enum { 161-typedef enum {
162- /* Both parties succeeded. */ 162- /* Both parties succeeded. */
163- HANDSHAKE_SUCCESS, 163- HANDSHAKE_SUCCESS,
@@ -174,10 +174,10 @@ index e0422469e4..ae2ad59dd4 100644
174 /* 174 /*
175 * Determine the handshake outcome. 175 * Determine the handshake outcome.
176 * last_status: the status of the peer to have acted last. 176 * last_status: the status of the peer to have acted last.
177@@ -1539,6 +1602,10 @@ static HANDSHAKE_RESULT *do_handshake_internal( 177@@ -1545,6 +1608,10 @@ static HANDSHAKE_RESULT *do_handshake_internal(
178 178
179 start = time(NULL); 179 start = time(NULL);
180 180
181+ save_loop_history(&(ret->history), 181+ save_loop_history(&(ret->history),
182+ phase, status, server.status, client.status, 182+ phase, status, server.status, client.status,
183+ client_turn_count, client_turn); 183+ client_turn_count, client_turn);
@@ -185,10 +185,10 @@ index e0422469e4..ae2ad59dd4 100644
185 /* 185 /*
186 * Half-duplex handshake loop. 186 * Half-duplex handshake loop.
187 * Client and server speak to each other synchronously in the same process. 187 * Client and server speak to each other synchronously in the same process.
188@@ -1560,6 +1627,10 @@ static HANDSHAKE_RESULT *do_handshake_internal( 188@@ -1566,6 +1633,10 @@ static HANDSHAKE_RESULT *do_handshake_internal(
189 0 /* server went last */); 189 0 /* server went last */);
190 } 190 }
191 191
192+ save_loop_history(&(ret->history), 192+ save_loop_history(&(ret->history),
193+ phase, status, server.status, client.status, 193+ phase, status, server.status, client.status,
194+ client_turn_count, client_turn); 194+ client_turn_count, client_turn);
@@ -208,9 +208,9 @@ index 78b03f9f4b..b9967c2623 100644
208 * Licensed under the Apache License 2.0 (the "License"). You may not use 208 * Licensed under the Apache License 2.0 (the "License"). You may not use
209 * this file except in compliance with the License. You can obtain a copy 209 * this file except in compliance with the License. You can obtain a copy
210@@ -12,6 +12,11 @@ 210@@ -12,6 +12,11 @@
211 211
212 #include "ssl_test_ctx.h" 212 #include "ssl_test_ctx.h"
213 213
214+#define MAX_HANDSHAKE_HISTORY_ENTRY_BIT 4 214+#define MAX_HANDSHAKE_HISTORY_ENTRY_BIT 4
215+#define MAX_HANDSHAKE_HISTORY_ENTRY (1 << MAX_HANDSHAKE_HISTORY_ENTRY_BIT) 215+#define MAX_HANDSHAKE_HISTORY_ENTRY (1 << MAX_HANDSHAKE_HISTORY_ENTRY_BIT)
216+#define MAX_HANDSHAKE_HISTORY_ENTRY_IDX_MASK \ 216+#define MAX_HANDSHAKE_HISTORY_ENTRY_IDX_MASK \
@@ -222,7 +222,7 @@ index 78b03f9f4b..b9967c2623 100644
222@@ -22,6 +27,63 @@ typedef struct ctx_data_st { 222@@ -22,6 +27,63 @@ typedef struct ctx_data_st {
223 char *session_ticket_app_data; 223 char *session_ticket_app_data;
224 } CTX_DATA; 224 } CTX_DATA;
225 225
226+typedef enum { 226+typedef enum {
227+ HANDSHAKE, 227+ HANDSHAKE,
228+ RENEG_APPLICATION_DATA, 228+ RENEG_APPLICATION_DATA,
@@ -290,12 +290,12 @@ index 78b03f9f4b..b9967c2623 100644
290+ /* handshake loop history */ 290+ /* handshake loop history */
291+ HANDSHAKE_HISTORY history; 291+ HANDSHAKE_HISTORY history;
292 } HANDSHAKE_RESULT; 292 } HANDSHAKE_RESULT;
293 293
294 HANDSHAKE_RESULT *HANDSHAKE_RESULT_new(void); 294 HANDSHAKE_RESULT *HANDSHAKE_RESULT_new(void);
295@@ -95,4 +159,8 @@ int configure_handshake_ctx_for_srp(SSL_CTX *server_ctx, SSL_CTX *server2_ctx, 295@@ -95,4 +159,8 @@ int configure_handshake_ctx_for_srp(SSL_CTX *server_ctx, SSL_CTX *server2_ctx,
296 CTX_DATA *server2_ctx_data, 296 CTX_DATA *server2_ctx_data,
297 CTX_DATA *client_ctx_data); 297 CTX_DATA *client_ctx_data);
298 298
299+const char *handshake_connect_phase_name(connect_phase_t phase); 299+const char *handshake_connect_phase_name(connect_phase_t phase);
300+const char *handshake_status_name(handshake_status_t handshake_status); 300+const char *handshake_status_name(handshake_status_t handshake_status);
301+const char *handshake_peer_status_name(peer_status_t peer_status); 301+const char *handshake_peer_status_name(peer_status_t peer_status);
@@ -308,7 +308,7 @@ index ea608518f9..9d6b093c81 100644
308@@ -26,6 +26,44 @@ static OSSL_LIB_CTX *libctx = NULL; 308@@ -26,6 +26,44 @@ static OSSL_LIB_CTX *libctx = NULL;
309 /* Currently the section names are of the form test-<number>, e.g. test-15. */ 309 /* Currently the section names are of the form test-<number>, e.g. test-15. */
310 #define MAX_TESTCASE_NAME_LENGTH 100 310 #define MAX_TESTCASE_NAME_LENGTH 100
311 311
312+static void print_handshake_history(const HANDSHAKE_HISTORY *history) 312+static void print_handshake_history(const HANDSHAKE_HISTORY *history)
313+{ 313+{
314+ size_t first_idx; 314+ size_t first_idx;
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch b/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch
index 502a7aaf32..3f6ab97795 100644
--- a/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch
+++ b/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch
@@ -20,7 +20,7 @@ diff --git a/Configure b/Configure
20index 4569952..adf019b 100755 20index 4569952..adf019b 100755
21--- a/Configure 21--- a/Configure
22+++ b/Configure 22+++ b/Configure
23@@ -1422,16 +1422,6 @@ if ($target =~ /^mingw/ && `$config{CC} --target-help 2>&1` =~ m/-mno-cygwin/m) 23@@ -1485,16 +1485,6 @@ if ($target =~ /^mingw/ && `$config{CC} --target-help 2>&1` =~ m/-mno-cygwin/m)
24 push @{$config{shared_ldflag}}, "-mno-cygwin"; 24 push @{$config{shared_ldflag}}, "-mno-cygwin";
25 } 25 }
26 26
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch b/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch
index bafdbaa46f..ce2acb2462 100644
--- a/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch
+++ b/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch
@@ -38,7 +38,7 @@ Index: openssl-3.0.4/Configurations/unix-Makefile.tmpl
38=================================================================== 38===================================================================
39--- openssl-3.0.4.orig/Configurations/unix-Makefile.tmpl 39--- openssl-3.0.4.orig/Configurations/unix-Makefile.tmpl
40+++ openssl-3.0.4/Configurations/unix-Makefile.tmpl 40+++ openssl-3.0.4/Configurations/unix-Makefile.tmpl
41@@ -472,13 +472,23 @@ BIN_LDFLAGS={- join(' ', $target{bin_lfl 41@@ -481,13 +481,23 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
42 '$(CNF_LDFLAGS)', '$(LDFLAGS)') -} 42 '$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
43 BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) 43 BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
44 44
@@ -67,7 +67,7 @@ Index: openssl-3.0.4/crypto/build.info
67=================================================================== 67===================================================================
68--- openssl-3.0.4.orig/crypto/build.info 68--- openssl-3.0.4.orig/crypto/build.info
69+++ openssl-3.0.4/crypto/build.info 69+++ openssl-3.0.4/crypto/build.info
70@@ -109,7 +109,7 @@ DEFINE[../libcrypto]=$UPLINKDEF 70@@ -115,7 +115,7 @@ DEFINE[../libcrypto]=$UPLINKDEF
71 71
72 DEPEND[info.o]=buildinf.h 72 DEPEND[info.o]=buildinf.h
73 DEPEND[cversion.o]=buildinf.h 73 DEPEND[cversion.o]=buildinf.h
diff --git a/meta/recipes-connectivity/openssl/openssl/run-ptest b/meta/recipes-connectivity/openssl/openssl/run-ptest
index c89ec5afa1..cd29bb1446 100644
--- a/meta/recipes-connectivity/openssl/openssl/run-ptest
+++ b/meta/recipes-connectivity/openssl/openssl/run-ptest
@@ -1,12 +1,19 @@
1#!/bin/sh 1#!/bin/sh
2 2
3set -e 3set -eu
4 4
5# Optional arguments are 'list' to lists all tests, or the test name (base name 5# Optional arguments are 'list' to lists the tests, or the test name (base name
6# ie test_evp, not 03_test_evp.t). 6# ie test_evp, not 03_test_evp.t). Without any arguments we run all tests.
7
8if test $# -gt 0; then
9 TESTS=$*
10else
11 # Skip test_symbol_presence as this is for developers
12 TESTS="alltests -test_symbol_presence"
13fi
7 14
8export TOP=. 15export TOP=.
9# OPENSSL_ENGINES is relative from the test binaries 16# Run four jobs in parallel
10export OPENSSL_ENGINES=../engines 17export HARNESS_JOBS=4
11 18
12{ HARNESS_JOBS=4 perl ./test/run_tests.pl $* || echo "FAIL: openssl" ; } | sed -u -r -e '/(.*) \.*.ok/ s/^/PASS: /g' -r -e '/Dubious(.*)/ s/^/FAIL: /g' -e '/(.*) \.*.skipped: (.*)/ s/^/SKIP: /g' 19{ perl ./test/run_tests.pl $TESTS || echo "FAIL: openssl" ; } | sed -u -r -e '/(.*) \.*.ok/ s/^/PASS: /g' -r -e '/Dubious(.*)/ s/^/FAIL: /g' -e '/(.*) \.*.skipped: (.*)/ s/^/SKIP: /g'
diff --git a/meta/recipes-connectivity/openssl/openssl_3.2.3.bb b/meta/recipes-connectivity/openssl/openssl_3.2.4.bb
index 53139df40c..c4ad80e734 100644
--- a/meta/recipes-connectivity/openssl/openssl_3.2.3.bb
+++ b/meta/recipes-connectivity/openssl/openssl_3.2.4.bb
@@ -18,7 +18,7 @@ SRC_URI:append:class-nativesdk = " \
18 file://environment.d-openssl.sh \ 18 file://environment.d-openssl.sh \
19 " 19 "
20 20
21SRC_URI[sha256sum] = "52b5f1c6b8022bc5868c308c54fb77705e702d6c6f4594f99a0df216acf46239" 21SRC_URI[sha256sum] = "b23ad7fd9f73e43ad1767e636040e88ba7c9e5775bfa5618436a0dd2c17c3716"
22 22
23inherit lib_package multilib_header multilib_script ptest perlnative manpages 23inherit lib_package multilib_header multilib_script ptest perlnative manpages
24MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash" 24MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
@@ -186,44 +186,43 @@ do_install:append:class-nativesdk () {
186 186
187PTEST_BUILD_HOST_FILES += "configdata.pm" 187PTEST_BUILD_HOST_FILES += "configdata.pm"
188PTEST_BUILD_HOST_PATTERN = "perl_version =" 188PTEST_BUILD_HOST_PATTERN = "perl_version ="
189do_install_ptest () { 189do_install_ptest() {
190 install -d ${D}${PTEST_PATH}/test 190 install -m644 ${S}/Configure ${B}/configdata.pm ${D}${PTEST_PATH}
191 install -m755 ${B}/test/p_test.so ${D}${PTEST_PATH}/test 191 cp -rf ${S}/Configurations ${S}/external ${D}${PTEST_PATH}/
192 install -m755 ${B}/test/p_minimal.so ${D}${PTEST_PATH}/test
193 install -m755 ${B}/test/provider_internal_test.cnf ${D}${PTEST_PATH}/test
194
195 # Prune the build tree
196 rm -f ${B}/fuzz/*.* ${B}/test/*.*
197
198 cp ${S}/Configure ${B}/configdata.pm ${D}${PTEST_PATH}
199 sed 's|${S}|${PTEST_PATH}|g' -i ${D}${PTEST_PATH}/configdata.pm
200 cp -r ${S}/external ${B}/test ${S}/test ${B}/fuzz ${S}/util ${B}/util ${D}${PTEST_PATH}
201
202 # For test_shlibload
203 ln -s ${libdir}/libcrypto.so.1.1 ${D}${PTEST_PATH}/
204 ln -s ${libdir}/libssl.so.1.1 ${D}${PTEST_PATH}/
205 192
206 install -d ${D}${PTEST_PATH}/apps 193 install -d ${D}${PTEST_PATH}/apps
207 ln -s ${bindir}/openssl ${D}${PTEST_PATH}/apps 194 ln -s ${bindir}/openssl ${D}${PTEST_PATH}/apps
208 install -m644 ${S}/apps/*.pem ${S}/apps/*.srl ${S}/apps/openssl.cnf ${D}${PTEST_PATH}/apps
209 install -m755 ${B}/apps/CA.pl ${D}${PTEST_PATH}/apps
210
211 install -d ${D}${PTEST_PATH}/engines
212 install -m755 ${B}/engines/dasync.so ${D}${PTEST_PATH}/engines
213 install -m755 ${B}/engines/loader_attic.so ${D}${PTEST_PATH}/engines
214 install -m755 ${B}/engines/ossltest.so ${D}${PTEST_PATH}/engines
215
216 install -d ${D}${PTEST_PATH}/providers
217 install -m755 ${B}/providers/legacy.so ${D}${PTEST_PATH}/providers
218 195
219 install -d ${D}${PTEST_PATH}/Configurations 196 cd ${S}
220 cp -rf ${S}/Configurations/* ${D}${PTEST_PATH}/Configurations/ 197 find test/certs test/ct test/d2i-tests test/recipes test/ocsp-tests test/ssl-tests test/smime-certs -type f -exec install -m644 -D {} ${D}${PTEST_PATH}/{} \;
198 find apps test -name \*.cnf -exec install -m644 -D {} ${D}${PTEST_PATH}/{} \;
199 find apps test -name \*.der -exec install -m644 -D {} ${D}${PTEST_PATH}/{} \;
200 find apps test -name \*.pem -exec install -m644 -D {} ${D}${PTEST_PATH}/{} \;
201 find util -name \*.p[lm] -exec install -m644 -D {} ${D}${PTEST_PATH}/{} \;
202
203 cd ${B}
204 # Everything but .? (.o and .d)
205 find test -type f -name \*[^.]? -exec install -m755 -D {} ${D}${PTEST_PATH}/{} \;
206 find apps test -name \*.cnf -exec install -m644 -D {} ${D}${PTEST_PATH}/{} \;
207 find apps test -name \*.pem -exec install -m644 -D {} ${D}${PTEST_PATH}/{} \;
208 find apps test -name \*.srl -exec install -m644 -D {} ${D}${PTEST_PATH}/{} \;
209 install -m755 ${B}/util/*wrap.* ${D}${PTEST_PATH}/util/
210
211 install -m755 ${B}/apps/CA.pl ${D}${PTEST_PATH}/apps/
212 install -m755 ${S}/test/*.pl ${D}${PTEST_PATH}/test/
213 install -m755 ${S}/test/shibboleth.pfx ${D}${PTEST_PATH}/test/
214 install -m755 ${S}/test/*.bin ${D}${PTEST_PATH}/test/
215 install -m755 ${S}/test/dane*.in ${D}${PTEST_PATH}/test/
216 install -m755 ${S}/test/smcont*.txt ${D}${PTEST_PATH}/test/
217 install -m755 ${S}/test/ssl_test.tmpl ${D}${PTEST_PATH}/test/
218
219 sed 's|${S}|${PTEST_PATH}|g' -i ${D}${PTEST_PATH}/configdata.pm ${D}${PTEST_PATH}/util/wrap.pl
221 220
222 # seems to be needed with perl 5.32.1 221 install -d ${D}${PTEST_PATH}/engines
223 install -d ${D}${PTEST_PATH}/util/perl/recipes 222 install -m755 ${B}/engines/dasync.so ${D}${PTEST_PATH}/engines/
224 cp ${D}${PTEST_PATH}/test/recipes/tconversion.pl ${D}${PTEST_PATH}/util/perl/recipes/ 223 install -m755 ${B}/engines/ossltest.so ${D}${PTEST_PATH}/engines/
225 224 ln -s ${libdir}/engines-3/loader_attic.so ${D}${PTEST_PATH}/engines/
226 sed 's|${S}|${PTEST_PATH}|g' -i ${D}${PTEST_PATH}/util/wrap.pl 225 ln -s ${libdir}/ossl-modules/ ${D}${PTEST_PATH}/providers
227} 226}
228 227
229# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto 228# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto
@@ -250,7 +249,7 @@ CONFFILES:openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
250 249
251RRECOMMENDS:libcrypto += "openssl-conf ${PN}-ossl-module-legacy" 250RRECOMMENDS:libcrypto += "openssl-conf ${PN}-ossl-module-legacy"
252RDEPENDS:${PN}-misc = "perl" 251RDEPENDS:${PN}-misc = "perl"
253RDEPENDS:${PN}-ptest += "openssl-bin perl perl-modules bash sed" 252RDEPENDS:${PN}-ptest += "openssl-bin perl perl-modules bash sed openssl-engines openssl-ossl-module-legacy"
254 253
255RDEPENDS:${PN}-bin += "openssl-conf" 254RDEPENDS:${PN}-bin += "openssl-conf"
256 255
diff --git a/meta/recipes-connectivity/ppp/ppp/0001-Revert-lock-path-to-var-lock-435.patch b/meta/recipes-connectivity/ppp/ppp/0001-Revert-lock-path-to-var-lock-435.patch
new file mode 100644
index 0000000000..573eb413b0
--- /dev/null
+++ b/meta/recipes-connectivity/ppp/ppp/0001-Revert-lock-path-to-var-lock-435.patch
@@ -0,0 +1,63 @@
1From 99cbf5e269994482edaf64624be8b1c806f9587c Mon Sep 17 00:00:00 2001
2From: Dominique Martinet <asmadeus@codewreck.org>
3Date: Tue, 10 Oct 2023 10:05:50 +0900
4Subject: [PATCH] Revert lock path to /var/lock (#435)
5
6lock dir changed on linux from /var/lock to /run/pppd/lock with
7pppd-2.5.0, which makes pppd fail to start if the distribution does not
8pre-create the directory.
9
10This reverts it back to /var/lock.
11
12The paths for other OS should be identical as LOCALSTATEDIR should be
13/var, but also revert them back as well just in case.
14Since the variable is no longer used remove it from makefiles.
15
16Fixes: 66a8c74c3f73 ("Let ./configure control the paths for pppd")
17Fixes: #419
18
19Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
20Co-authored-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
21
22Upstream-Status: Backport [https://github.com/ppp-project/ppp/commit/99cbf5e269994482edaf64624be8b1c806f9587c]
23---
24 pppd/Makefile.am | 2 +-
25 pppd/pathnames.h | 6 +++---
26 2 files changed, 4 insertions(+), 4 deletions(-)
27
28diff --git a/pppd/Makefile.am b/pppd/Makefile.am
29index e5bedf2..7cb3005 100644
30--- a/pppd/Makefile.am
31+++ b/pppd/Makefile.am
32@@ -83,7 +83,7 @@ pppd_SOURCES = \
33 upap.c \
34 utils.c
35
36-pppd_CPPFLAGS = -DSYSCONFDIR=\"${sysconfdir}\" -DLOCALSTATEDIR=\"${localstatedir}\" -DPPPD_RUNTIME_DIR='"@PPPD_RUNTIME_DIR@"' -DPPPD_LOGFILE_DIR='"@PPPD_LOGFILE_DIR@"'
37+pppd_CPPFLAGS = -DSYSCONFDIR=\"${sysconfdir}\" -DPPPD_RUNTIME_DIR='"@PPPD_RUNTIME_DIR@"' -DPPPD_LOGFILE_DIR='"@PPPD_LOGFILE_DIR@"'
38 pppd_LDFLAGS =
39 pppd_LIBS =
40
41diff --git a/pppd/pathnames.h b/pppd/pathnames.h
42index de2fb68..12609a9 100644
43--- a/pppd/pathnames.h
44+++ b/pppd/pathnames.h
45@@ -120,12 +120,12 @@
46 #define PPP_PATH_PPPDB PPP_PATH_VARRUN "/pppd2.tdb"
47
48 #ifdef __linux__
49-#define PPP_PATH_LOCKDIR PPP_PATH_VARRUN "/lock"
50+#define PPP_PATH_LOCKDIR "/var/lock"
51 #else
52 #ifdef SVR4
53-#define PPP_PATH_LOCKDIR LOCALSTATEDIR "/spool/locks"
54+#define PPP_PATH_LOCKDIR "/var/spool/locks"
55 #else
56-#define PPP_PATH_LOCKDIR LOCALSTATEDIR "/spool/lock"
57+#define PPP_PATH_LOCKDIR "/var/spool/lock"
58 #endif
59 #endif
60
61--
622.43.0
63
diff --git a/meta/recipes-connectivity/ppp/ppp/CVE-2024-58250.patch b/meta/recipes-connectivity/ppp/ppp/CVE-2024-58250.patch
new file mode 100644
index 0000000000..55d36c5baa
--- /dev/null
+++ b/meta/recipes-connectivity/ppp/ppp/CVE-2024-58250.patch
@@ -0,0 +1,194 @@
1From 0a66ad22e54c72690ec2a29a019767c55c5281fc Mon Sep 17 00:00:00 2001
2From: Paul Mackerras <paulus@ozlabs.org>
3Date: Fri, 18 Oct 2024 20:22:57 +1100
4Subject: [PATCH] pppd: Remove passprompt plugin
5
6This is prompted by a number of factors:
7
8* It was more useful back in the dial-up days, but no-one uses dial-up
9 any more
10
11* In many cases there will be no terminal accessible to the prompter
12 program at the point where the prompter is run
13
14* The passwordfd plugin does much the same thing but does it more
15 cleanly and securely
16
17* The handling of privileges and file descriptors needs to be audited
18 thoroughly.
19
20Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
21
22CVE: CVE-2024-58250
23Upstream-Status: Backport [https://github.com/ppp-project/ppp/commit/0a66ad22e54c72690ec2a29a019767c55c5281fc]
24Signed-off-by: Peter Marko <peter.marko@siemens.com>
25---
26 pppd/plugins/Makefile.am | 6 +-
27 pppd/plugins/passprompt.c | 137 --------------------------------------
28 2 files changed, 1 insertion(+), 142 deletions(-)
29 delete mode 100644 pppd/plugins/passprompt.c
30
31diff --git a/pppd/plugins/Makefile.am b/pppd/plugins/Makefile.am
32index 2826148..9480d51 100644
33--- a/pppd/plugins/Makefile.am
34+++ b/pppd/plugins/Makefile.am
35@@ -1,4 +1,4 @@
36-pppd_plugin_LTLIBRARIES = minconn.la passprompt.la passwordfd.la winbind.la
37+pppd_plugin_LTLIBRARIES = minconn.la passwordfd.la winbind.la
38 pppd_plugindir = $(PPPD_PLUGIN_DIR)
39
40 PLUGIN_CPPFLAGS = -I${top_srcdir}
41@@ -8,10 +8,6 @@ minconn_la_CPPFLAGS = $(PLUGIN_CPPFLAGS)
42 minconn_la_LDFLAGS = $(PLUGIN_LDFLAGS)
43 minconn_la_SOURCES = minconn.c
44
45-passprompt_la_CPPFLAGS = $(PLUGIN_CPPFLAGS)
46-passprompt_la_LDFLAGS = $(PLUGIN_LDFLAGS)
47-passprompt_la_SOURCES = passprompt.c
48-
49 passwordfd_la_CPPFLAGS = $(PLUGIN_CPPFLAGS)
50 passwordfd_la_LDFLAGS = $(PLUGIN_LDFLAGS)
51 passwordfd_la_SOURCES = passwordfd.c
52diff --git a/pppd/plugins/passprompt.c b/pppd/plugins/passprompt.c
53deleted file mode 100644
54index 7779d51..0000000
55--- a/pppd/plugins/passprompt.c
56+++ /dev/null
57@@ -1,137 +0,0 @@
58-/*
59- * passprompt.c - pppd plugin to invoke an external PAP password prompter
60- *
61- * Copyright 1999 Paul Mackerras, Alan Curry.
62- *
63- * This program is free software; you can redistribute it and/or
64- * modify it under the terms of the GNU General Public License
65- * as published by the Free Software Foundation; either version
66- * 2 of the License, or (at your option) any later version.
67- */
68-
69-#include <errno.h>
70-#include <unistd.h>
71-#include <sys/wait.h>
72-#include <sys/param.h>
73-#include <limits.h>
74-#include <stdio.h>
75-#include <syslog.h>
76-#include <stdarg.h>
77-#include <stdint.h>
78-#include <stdbool.h>
79-#include <string.h>
80-
81-#include <pppd/pppd.h>
82-#include <pppd/upap.h>
83-#include <pppd/eap.h>
84-#include <pppd/options.h>
85-
86-char pppd_version[] = PPPD_VERSION;
87-
88-static char promptprog[PATH_MAX+1];
89-static int promptprog_refused = 0;
90-
91-static struct option options[] = {
92- { "promptprog", o_string, promptprog,
93- "External PAP password prompting program",
94- OPT_STATIC, NULL, PATH_MAX },
95- { NULL }
96-};
97-
98-static int promptpass(char *user, char *passwd)
99-{
100- int p[2];
101- pid_t kid;
102- int readgood, wstat, ret;
103- ssize_t red;
104-
105- if (promptprog_refused || promptprog[0] == 0 || access(promptprog, X_OK) < 0)
106- return -1; /* sorry, can't help */
107-
108- if (!passwd)
109- return 1;
110-
111- if (pipe(p)) {
112- warn("Can't make a pipe for %s", promptprog);
113- return 0;
114- }
115- if ((kid = fork()) == (pid_t) -1) {
116- warn("Can't fork to run %s", promptprog);
117- close(p[0]);
118- close(p[1]);
119- return 0;
120- }
121- if (!kid) {
122- /* we are the child, exec the program */
123- char *argv[5], fdstr[32];
124- ppp_sys_close();
125- closelog();
126- close(p[0]);
127- ret = seteuid(getuid());
128- if (ret != 0) {
129- warn("Couldn't set effective user id");
130- }
131- ret = setegid(getgid());
132- if (ret != 0) {
133- warn("Couldn't set effective user id");
134- }
135- sprintf(fdstr, "%d", p[1]);
136- argv[0] = promptprog;
137- argv[1] = strdup(user);
138- argv[2] = strdup(ppp_remote_name());
139- argv[3] = fdstr;
140- argv[4] = 0;
141- execv(*argv, argv);
142- _exit(127);
143- }
144-
145- /* we are the parent, read the password from the pipe */
146- close(p[1]);
147- readgood = 0;
148- do {
149- red = read(p[0], passwd + readgood, MAXSECRETLEN-1 - readgood);
150- if (red == 0)
151- break;
152- if (red < 0) {
153- if (errno == EINTR && !ppp_signaled(SIGTERM))
154- continue;
155- error("Can't read secret from %s: %m", promptprog);
156- readgood = -1;
157- break;
158- }
159- readgood += red;
160- } while (readgood < MAXSECRETLEN - 1);
161- close(p[0]);
162-
163- /* now wait for child to exit */
164- while (waitpid(kid, &wstat, 0) < 0) {
165- if (errno != EINTR || ppp_signaled(SIGTERM)) {
166- warn("error waiting for %s: %m", promptprog);
167- break;
168- }
169- }
170-
171- if (readgood < 0)
172- return 0;
173- passwd[readgood] = 0;
174- if (!WIFEXITED(wstat))
175- warn("%s terminated abnormally", promptprog);
176- if (WEXITSTATUS(wstat)) {
177- warn("%s exited with code %d", promptprog, WEXITSTATUS(wstat));
178- /* code when cancel was hit in the prompt prog */
179- if (WEXITSTATUS(wstat) == 128) {
180- promptprog_refused = 1;
181- }
182- return -1;
183- }
184- return 1;
185-}
186-
187-void plugin_init(void)
188-{
189- ppp_add_options(options);
190- pap_passwd_hook = promptpass;
191-#ifdef PPP_WITH_EAPTLS
192- eaptls_passwd_hook = promptpass;
193-#endif
194-}
diff --git a/meta/recipes-connectivity/ppp/ppp_2.5.0.bb b/meta/recipes-connectivity/ppp/ppp_2.5.0.bb
index 5f0c75de83..b50795109f 100644
--- a/meta/recipes-connectivity/ppp/ppp_2.5.0.bb
+++ b/meta/recipes-connectivity/ppp/ppp_2.5.0.bb
@@ -7,7 +7,6 @@ BUGTRACKER = "http://ppp.samba.org/cgi-bin/ppp-bugs"
7DEPENDS = "libpcap openssl virtual/crypt" 7DEPENDS = "libpcap openssl virtual/crypt"
8LICENSE = "BSD-3-Clause & BSD-3-Clause-Attribution & GPL-2.0-or-later & LGPL-2.0-or-later & PD & RSA-MD" 8LICENSE = "BSD-3-Clause & BSD-3-Clause-Attribution & GPL-2.0-or-later & LGPL-2.0-or-later & PD & RSA-MD"
9LIC_FILES_CHKSUM = "file://pppd/ccp.c;beginline=1;endline=29;md5=e2c43fe6e81ff77d87dc9c290a424dea \ 9LIC_FILES_CHKSUM = "file://pppd/ccp.c;beginline=1;endline=29;md5=e2c43fe6e81ff77d87dc9c290a424dea \
10 file://pppd/plugins/passprompt.c;beginline=1;endline=10;md5=3bcbcdbf0e369c9a3e0b8c8275b065d8 \
11 file://pppd/tdb.c;beginline=1;endline=27;md5=4ca3a9991b011038d085d6675ae7c4e6 \ 10 file://pppd/tdb.c;beginline=1;endline=27;md5=4ca3a9991b011038d085d6675ae7c4e6 \
12 file://chat/chat.c;beginline=1;endline=15;md5=0d374b8545ee5c62d7aff1acbd38add2" 11 file://chat/chat.c;beginline=1;endline=15;md5=0d374b8545ee5c62d7aff1acbd38add2"
13 12
@@ -23,6 +22,8 @@ SRC_URI = "https://download.samba.org/pub/${BPN}/${BP}.tar.gz \
23 file://ppp_on_boot \ 22 file://ppp_on_boot \
24 file://provider \ 23 file://provider \
25 file://ppp@.service \ 24 file://ppp@.service \
25 file://0001-Revert-lock-path-to-var-lock-435.patch \
26 file://CVE-2024-58250.patch \
26 " 27 "
27 28
28SRC_URI[sha256sum] = "5cae0e8075f8a1755f16ca290eb44e6b3545d3f292af4da65ecffe897de636ff" 29SRC_URI[sha256sum] = "5cae0e8075f8a1755f16ca290eb44e6b3545d3f292af4da65ecffe897de636ff"
diff --git a/meta/recipes-connectivity/socat/files/CVE-2024-54661.patch b/meta/recipes-connectivity/socat/files/CVE-2024-54661.patch
new file mode 100644
index 0000000000..3bf685ebd9
--- /dev/null
+++ b/meta/recipes-connectivity/socat/files/CVE-2024-54661.patch
@@ -0,0 +1,113 @@
1From 4ee1f31cf80019c5907876576d6dfd49368d660f Mon Sep 17 00:00:00 2001
2From: Gerhard Rieger <gerhard@dest-unreach.org>
3Date: Fri, 6 Dec 2024 11:42:09 +0100
4Subject: [PATCH] Version 1.8.0.2 - CVE-2024-54661: Arbitrary file overwrite in
5 readline.sh
6
7CVE: CVE-2024-54661
8Upstream-Status: Backport [https://repo.or.cz/socat.git/commitdiff/4ee1f31cf80019c5907876576d6dfd49368d660f]
9Signed-off-by: Peter Marko <peter.marko@siemens.com>
10---
11 readline.sh | 10 +++++++--
12 test.sh | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++
13 2 files changed, 71 insertions(+), 2 deletions(-)
14
15diff --git a/readline.sh b/readline.sh
16index b6f8438..1045303 100755
17--- a/readline.sh
18+++ b/readline.sh
19@@ -22,9 +22,15 @@ if [ "$withhistfile" ]; then
20 else
21 HISTOPT=
22 fi
23-mkdir -p /tmp/$USER || exit 1
24 #
25 #
26
27-exec socat -d readline"$HISTOPT",noecho='[Pp]assword:' exec:"$PROGRAM",sigint,pty,setsid,ctty,raw,echo=0,stderr 2>/tmp/$USER/stderr2
28+if test -w .; then
29+ STDERR=./socat-readline.${1##*/}.log
30+ rm -f $STDERR
31+else
32+ STDERR=/dev/null
33+fi
34+
35+exec socat -d readline"$HISTOPT",noecho='[Pp]assword:' exec:"$PROGRAM",sigint,pty,setsid,ctty,raw,echo=0,stderr 2>$STDERR
36
37diff --git a/test.sh b/test.sh
38index 46bebf8..5204ac7 100755
39--- a/test.sh
40+++ b/test.sh
41@@ -19154,6 +19154,69 @@ esac
42 N=$((N+1))
43
44
45+# Test the readline.sh file overwrite vulnerability
46+NAME=READLINE_SH_OVERWRITE
47+case "$TESTS" in
48+*%$N%*|*%functions%*|*%bugs%*|*%readline%*|*%security%*|*%$NAME%*)
49+TEST="$NAME: Test the readline.sh file overwrite vulnerability"
50+# Create a symlink /tmp/$USER/stderr2 pointing to a temporary file,
51+# run readline.sh
52+# When the temporary file is kept the test succeeded
53+if ! eval $NUMCOND; then :
54+elif ! cond=$(checkconds \
55+ "" \
56+ "" \
57+ "readline.sh" \
58+ "" \
59+ "" \
60+ "" \
61+ "" ); then
62+ $PRINTF "test $F_n $TEST... ${YELLOW}$cond${NORMAL}\n" $N
63+ numCANT=$((numCANT+1))
64+ listCANT="$listCANT $N"
65+ namesCANT="$namesCANT $NAME"
66+else
67+ tf="$td/test$N.file"
68+ te="$td/test$N.stderr"
69+ tdiff="$td/test$N.diff"
70+ da="test$N $(date) $RANDOM"
71+ echo "$da" >"$tf"
72+ ln -sf "$tf" /tmp/$USER/stderr2
73+ CMD0="readline.sh cat"
74+ printf "test $F_n $TEST... " $N
75+ $CMD0 </dev/null >/dev/null 2>"${te}0"
76+ rc0=$?
77+# if [ "$rc0" -ne 0 ]; then
78+# $PRINTF "$CANT (rc0=$rc0)\n"
79+# echo "$CMD0"
80+# cat "${te}0" >&2
81+# numCANT=$((numCANT+1))
82+# listCANT="$listCANT $N"
83+# namesCANT="$namesCANT $NAME"
84+# elif ! echo "$da" |diff - "$tf" >$tdiff; then
85+ if ! echo "$da" |diff - "$tf" >$tdiff; then
86+ $PRINTF "$FAILED (diff)\n"
87+ echo "$CMD0 &"
88+ cat "${te}0" >&2
89+ echo "// diff:" >&2
90+ cat "$tdiff" >&2
91+ numFAIL=$((numFAIL+1))
92+ listFAIL="$listFAIL $N"
93+ namesFAIL="$namesFAIL $NAME"
94+ else
95+ $PRINTF "$OK\n"
96+ if [ "$VERBOSE" ]; then echo "$CMD0 &"; fi
97+ if [ "$DEBUG" ]; then cat "${te}0" >&2; fi
98+ if [ "$VERBOSE" ]; then echo "$CMD1"; fi
99+ if [ "$DEBUG" ]; then cat "${te}1" >&2; fi
100+ numOK=$((numOK+1))
101+ listOK="$listOK $N"
102+ fi
103+fi # NUMCOND
104+ ;;
105+esac
106+N=$((N+1))
107+
108 # end of common tests
109
110 ##################################################################################
111--
1122.30.2
113
diff --git a/meta/recipes-connectivity/socat/socat_1.8.0.0.bb b/meta/recipes-connectivity/socat/socat_1.8.0.0.bb
index 912605c95c..bb39730005 100644
--- a/meta/recipes-connectivity/socat/socat_1.8.0.0.bb
+++ b/meta/recipes-connectivity/socat/socat_1.8.0.0.bb
@@ -11,6 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
11 11
12SRC_URI = "http://www.dest-unreach.org/socat/download/socat-${PV}.tar.bz2 \ 12SRC_URI = "http://www.dest-unreach.org/socat/download/socat-${PV}.tar.bz2 \
13 file://0001-fix-compile-procan.c-failed.patch \ 13 file://0001-fix-compile-procan.c-failed.patch \
14 file://CVE-2024-54661.patch \
14" 15"
15 16
16SRC_URI[sha256sum] = "e1de683dd22ee0e3a6c6bbff269abe18ab0c9d7eb650204f125155b9005faca7" 17SRC_URI[sha256sum] = "e1de683dd22ee0e3a6c6bbff269abe18ab0c9d7eb650204f125155b9005faca7"
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-SAE-Check-for-invalid-Rejected-Groups-element-length.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-SAE-Check-for-invalid-Rejected-Groups-element-length.patch
new file mode 100644
index 0000000000..5780f27f8b
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-SAE-Check-for-invalid-Rejected-Groups-element-length.patch
@@ -0,0 +1,52 @@
1From 364c2da8741f0979dae497551e70b94c0e6c8636 Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sun, 7 Jul 2024 11:46:49 +0300
4Subject: [PATCH 1/3] SAE: Check for invalid Rejected Groups element length
5 explicitly
6
7Instead of practically ignoring an odd octet at the end of the element,
8check for such invalid case explicitly. This is needed to avoid a
9potential group downgrade attack.
10
11Signed-off-by: Jouni Malinen <j@w1.fi>
12
13CVE: CVE-2024-3596
14Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=364c2da8741f0979dae497551e70b94c0e6c8636]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 src/ap/ieee802_11.c | 12 ++++++++++--
18 1 file changed, 10 insertions(+), 2 deletions(-)
19
20diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
21index db4104928..1a62e30cc 100644
22--- a/src/ap/ieee802_11.c
23+++ b/src/ap/ieee802_11.c
24@@ -1258,7 +1258,7 @@ static int check_sae_rejected_groups(struct hostapd_data *hapd,
25 struct sae_data *sae)
26 {
27 const struct wpabuf *groups;
28- size_t i, count;
29+ size_t i, count, len;
30 const u8 *pos;
31
32 if (!sae->tmp)
33@@ -1268,7 +1268,15 @@ static int check_sae_rejected_groups(struct hostapd_data *hapd,
34 return 0;
35
36 pos = wpabuf_head(groups);
37- count = wpabuf_len(groups) / 2;
38+ len = wpabuf_len(groups);
39+ if (len & 1) {
40+ wpa_printf(MSG_DEBUG,
41+ "SAE: Invalid length of the Rejected Groups element payload: %zu",
42+ len);
43+ return 1;
44+ }
45+
46+ count = len / 2;
47 for (i = 0; i < count; i++) {
48 int enabled;
49 u16 group;
50--
512.30.2
52
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-SAE-Check-for-invalid-Rejected-Groups-element-length.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-SAE-Check-for-invalid-Rejected-Groups-element-length.patch
new file mode 100644
index 0000000000..3e96ae9e2e
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0002-SAE-Check-for-invalid-Rejected-Groups-element-length.patch
@@ -0,0 +1,50 @@
1From 593a7c2f8c93edd6b552f2d42e28164464b4e6ff Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Tue, 9 Jul 2024 23:33:38 +0300
4Subject: [PATCH 2/3] SAE: Check for invalid Rejected Groups element length
5 explicitly on STA
6
7Instead of practically ignoring an odd octet at the end of the element,
8check for such invalid case explicitly. This is needed to avoid a
9potential group downgrade attack.
10
11Fixes: 444d76f74f65 ("SAE: Check that peer's rejected groups are not enabled")
12Signed-off-by: Jouni Malinen <j@w1.fi>
13
14Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=593a7c2f8c93edd6b552f2d42e28164464b4e6ff]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 wpa_supplicant/sme.c | 11 +++++++++--
18 1 file changed, 9 insertions(+), 2 deletions(-)
19
20diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c
21index 7f43216c6..c7289f6a8 100644
22--- a/wpa_supplicant/sme.c
23+++ b/wpa_supplicant/sme.c
24@@ -1222,14 +1222,21 @@ static int sme_sae_is_group_enabled(struct wpa_supplicant *wpa_s, int group)
25 static int sme_check_sae_rejected_groups(struct wpa_supplicant *wpa_s,
26 const struct wpabuf *groups)
27 {
28- size_t i, count;
29+ size_t i, count, len;
30 const u8 *pos;
31
32 if (!groups)
33 return 0;
34
35 pos = wpabuf_head(groups);
36- count = wpabuf_len(groups) / 2;
37+ len = wpabuf_len(groups);
38+ if (len & 1) {
39+ wpa_printf(MSG_DEBUG,
40+ "SAE: Invalid length of the Rejected Groups element payload: %zu",
41+ len);
42+ return 1;
43+ }
44+ count = len / 2;
45 for (i = 0; i < count; i++) {
46 int enabled;
47 u16 group;
48--
492.30.2
50
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0003-SAE-Reject-invalid-Rejected-Groups-element-in-the-pa.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0003-SAE-Reject-invalid-Rejected-Groups-element-in-the-pa.patch
new file mode 100644
index 0000000000..5e9e8bc01d
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0003-SAE-Reject-invalid-Rejected-Groups-element-in-the-pa.patch
@@ -0,0 +1,38 @@
1From 9716bf1160beb677e965d9e6475d6c9e162e8374 Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Tue, 9 Jul 2024 23:34:34 +0300
4Subject: [PATCH 3/3] SAE: Reject invalid Rejected Groups element in the parser
5
6There is no need to depend on all uses (i.e., both hostapd and
7wpa_supplicant) to verify that the length of the Rejected Groups field
8in the Rejected Groups element is valid (i.e., a multiple of two octets)
9since the common parser can reject the message when detecting this.
10
11Signed-off-by: Jouni Malinen <j@w1.fi>
12
13Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=9716bf1160beb677e965d9e6475d6c9e162e8374]
14Signed-off-by: Peter Marko <peter.marko@siemens.com>
15---
16 src/common/sae.c | 6 ++++++
17 1 file changed, 6 insertions(+)
18
19diff --git a/src/common/sae.c b/src/common/sae.c
20index c0f154e91..620bdf753 100644
21--- a/src/common/sae.c
22+++ b/src/common/sae.c
23@@ -2076,6 +2076,12 @@ static int sae_parse_rejected_groups(struct sae_data *sae,
24 return WLAN_STATUS_UNSPECIFIED_FAILURE;
25 epos++; /* skip ext ID */
26 len--;
27+ if (len & 1) {
28+ wpa_printf(MSG_DEBUG,
29+ "SAE: Invalid length of the Rejected Groups element payload: %u",
30+ len);
31+ return WLAN_STATUS_UNSPECIFIED_FAILURE;
32+ }
33
34 wpabuf_free(sae->tmp->peer_rejected_groups);
35 sae->tmp->peer_rejected_groups = wpabuf_alloc(len);
36--
372.30.2
38
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_00.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_00.patch
new file mode 100644
index 0000000000..7a8197d2b4
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_00.patch
@@ -0,0 +1,82 @@
1From 945acf3ef06a6c312927da4fa055693dbac432d1 Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sat, 2 Apr 2022 16:28:12 +0300
4Subject: [PATCH 1/9] ieee802_11_auth: Coding style cleanup - no string
5 constant splitting
6
7Signed-off-by: Jouni Malinen <j@w1.fi>
8
9Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=945acf3ef06a6c312927da4fa055693dbac432d1]
10Signed-off-by: Peter Marko <peter.marko@siemens.com>
11---
12 src/ap/ieee802_11_auth.c | 27 +++++++++++++++------------
13 1 file changed, 15 insertions(+), 12 deletions(-)
14
15diff --git a/src/ap/ieee802_11_auth.c b/src/ap/ieee802_11_auth.c
16index 783ee6dea..47cc625be 100644
17--- a/src/ap/ieee802_11_auth.c
18+++ b/src/ap/ieee802_11_auth.c
19@@ -267,16 +267,16 @@ int hostapd_allowed_address(struct hostapd_data *hapd, const u8 *addr,
20 os_get_reltime(&query->timestamp);
21 os_memcpy(query->addr, addr, ETH_ALEN);
22 if (hostapd_radius_acl_query(hapd, addr, query)) {
23- wpa_printf(MSG_DEBUG, "Failed to send Access-Request "
24- "for ACL query.");
25+ wpa_printf(MSG_DEBUG,
26+ "Failed to send Access-Request for ACL query.");
27 hostapd_acl_query_free(query);
28 return HOSTAPD_ACL_REJECT;
29 }
30
31 query->auth_msg = os_memdup(msg, len);
32 if (query->auth_msg == NULL) {
33- wpa_printf(MSG_ERROR, "Failed to allocate memory for "
34- "auth frame.");
35+ wpa_printf(MSG_ERROR,
36+ "Failed to allocate memory for auth frame.");
37 hostapd_acl_query_free(query);
38 return HOSTAPD_ACL_REJECT;
39 }
40@@ -467,19 +467,21 @@ hostapd_acl_recv_radius(struct radius_msg *msg, struct radius_msg *req,
41 if (query == NULL)
42 return RADIUS_RX_UNKNOWN;
43
44- wpa_printf(MSG_DEBUG, "Found matching Access-Request for RADIUS "
45- "message (id=%d)", query->radius_id);
46+ wpa_printf(MSG_DEBUG,
47+ "Found matching Access-Request for RADIUS message (id=%d)",
48+ query->radius_id);
49
50 if (radius_msg_verify(msg, shared_secret, shared_secret_len, req, 0)) {
51- wpa_printf(MSG_INFO, "Incoming RADIUS packet did not have "
52- "correct authenticator - dropped\n");
53+ wpa_printf(MSG_INFO,
54+ "Incoming RADIUS packet did not have correct authenticator - dropped");
55 return RADIUS_RX_INVALID_AUTHENTICATOR;
56 }
57
58 if (hdr->code != RADIUS_CODE_ACCESS_ACCEPT &&
59 hdr->code != RADIUS_CODE_ACCESS_REJECT) {
60- wpa_printf(MSG_DEBUG, "Unknown RADIUS message code %d to ACL "
61- "query", hdr->code);
62+ wpa_printf(MSG_DEBUG,
63+ "Unknown RADIUS message code %d to ACL query",
64+ hdr->code);
65 return RADIUS_RX_UNKNOWN;
66 }
67
68@@ -506,8 +508,9 @@ hostapd_acl_recv_radius(struct radius_msg *msg, struct radius_msg *req,
69 msg, RADIUS_ATTR_ACCT_INTERIM_INTERVAL,
70 &info->acct_interim_interval) == 0 &&
71 info->acct_interim_interval < 60) {
72- wpa_printf(MSG_DEBUG, "Ignored too small "
73- "Acct-Interim-Interval %d for STA " MACSTR,
74+ wpa_printf(MSG_DEBUG,
75+ "Ignored too small Acct-Interim-Interval %d for STA "
76+ MACSTR,
77 info->acct_interim_interval,
78 MAC2STR(query->addr));
79 info->acct_interim_interval = 0;
80--
812.30.2
82
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_01.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_01.patch
new file mode 100644
index 0000000000..dab2eedd6a
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_01.patch
@@ -0,0 +1,165 @@
1From adac846bd0e258a0aa50750bbd2b411fa0085c46 Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sat, 16 Mar 2024 11:11:44 +0200
4Subject: [PATCH 2/9] RADIUS: Allow Message-Authenticator attribute as the
5 first attribute
6
7If a Message-Authenticator attribute was already added to a RADIUS
8message, use that attribute instead of adding a new one when finishing
9message building. This allows the Message-Authenticator attribute to be
10placed as the first attribute in the message.
11
12Signed-off-by: Jouni Malinen <j@w1.fi>
13
14CVE: CVE-2024-3596
15Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=adac846bd0e258a0aa50750bbd2b411fa0085c46]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 src/radius/radius.c | 85 ++++++++++++++++++++++++++++-----------------
19 src/radius/radius.h | 1 +
20 2 files changed, 54 insertions(+), 32 deletions(-)
21
22diff --git a/src/radius/radius.c b/src/radius/radius.c
23index be16e27b9..2d2e00b5c 100644
24--- a/src/radius/radius.c
25+++ b/src/radius/radius.c
26@@ -364,25 +364,54 @@ void radius_msg_dump(struct radius_msg *msg)
27 }
28
29
30+u8 * radius_msg_add_msg_auth(struct radius_msg *msg)
31+{
32+ u8 auth[MD5_MAC_LEN];
33+ struct radius_attr_hdr *attr;
34+
35+ os_memset(auth, 0, MD5_MAC_LEN);
36+ attr = radius_msg_add_attr(msg, RADIUS_ATTR_MESSAGE_AUTHENTICATOR,
37+ auth, MD5_MAC_LEN);
38+ if (!attr) {
39+ wpa_printf(MSG_ERROR,
40+ "WARNING: Could not add Message-Authenticator");
41+ return NULL;
42+ }
43+
44+ return (u8 *) (attr + 1);
45+}
46+
47+
48+static u8 * radius_msg_auth_pos(struct radius_msg *msg)
49+{
50+ u8 *pos;
51+ size_t alen;
52+
53+ if (radius_msg_get_attr_ptr(msg, RADIUS_ATTR_MESSAGE_AUTHENTICATOR,
54+ &pos, &alen, NULL) == 0 &&
55+ alen == MD5_MAC_LEN) {
56+ /* Use already added Message-Authenticator attribute */
57+ return pos;
58+ }
59+
60+ /* Add a Message-Authenticator attribute */
61+ return radius_msg_add_msg_auth(msg);
62+}
63+
64+
65 int radius_msg_finish(struct radius_msg *msg, const u8 *secret,
66 size_t secret_len)
67 {
68 if (secret) {
69- u8 auth[MD5_MAC_LEN];
70- struct radius_attr_hdr *attr;
71+ u8 *pos;
72
73- os_memset(auth, 0, MD5_MAC_LEN);
74- attr = radius_msg_add_attr(msg,
75- RADIUS_ATTR_MESSAGE_AUTHENTICATOR,
76- auth, MD5_MAC_LEN);
77- if (attr == NULL) {
78- wpa_printf(MSG_WARNING, "RADIUS: Could not add "
79- "Message-Authenticator");
80+ pos = radius_msg_auth_pos(msg);
81+ if (!pos)
82 return -1;
83- }
84 msg->hdr->length = host_to_be16(wpabuf_len(msg->buf));
85- hmac_md5(secret, secret_len, wpabuf_head(msg->buf),
86- wpabuf_len(msg->buf), (u8 *) (attr + 1));
87+ if (hmac_md5(secret, secret_len, wpabuf_head(msg->buf),
88+ wpabuf_len(msg->buf), pos) < 0)
89+ return -1;
90 } else
91 msg->hdr->length = host_to_be16(wpabuf_len(msg->buf));
92
93@@ -398,23 +427,19 @@ int radius_msg_finish(struct radius_msg *msg, const u8 *secret,
94 int radius_msg_finish_srv(struct radius_msg *msg, const u8 *secret,
95 size_t secret_len, const u8 *req_authenticator)
96 {
97- u8 auth[MD5_MAC_LEN];
98- struct radius_attr_hdr *attr;
99 const u8 *addr[4];
100 size_t len[4];
101+ u8 *pos;
102
103- os_memset(auth, 0, MD5_MAC_LEN);
104- attr = radius_msg_add_attr(msg, RADIUS_ATTR_MESSAGE_AUTHENTICATOR,
105- auth, MD5_MAC_LEN);
106- if (attr == NULL) {
107- wpa_printf(MSG_ERROR, "WARNING: Could not add Message-Authenticator");
108+ pos = radius_msg_auth_pos(msg);
109+ if (!pos)
110 return -1;
111- }
112 msg->hdr->length = host_to_be16(wpabuf_len(msg->buf));
113 os_memcpy(msg->hdr->authenticator, req_authenticator,
114 sizeof(msg->hdr->authenticator));
115- hmac_md5(secret, secret_len, wpabuf_head(msg->buf),
116- wpabuf_len(msg->buf), (u8 *) (attr + 1));
117+ if (hmac_md5(secret, secret_len, wpabuf_head(msg->buf),
118+ wpabuf_len(msg->buf), pos) < 0)
119+ return -1;
120
121 /* ResponseAuth = MD5(Code+ID+Length+RequestAuth+Attributes+Secret) */
122 addr[0] = (u8 *) msg->hdr;
123@@ -442,21 +467,17 @@ int radius_msg_finish_das_resp(struct radius_msg *msg, const u8 *secret,
124 {
125 const u8 *addr[2];
126 size_t len[2];
127- u8 auth[MD5_MAC_LEN];
128- struct radius_attr_hdr *attr;
129+ u8 *pos;
130
131- os_memset(auth, 0, MD5_MAC_LEN);
132- attr = radius_msg_add_attr(msg, RADIUS_ATTR_MESSAGE_AUTHENTICATOR,
133- auth, MD5_MAC_LEN);
134- if (attr == NULL) {
135- wpa_printf(MSG_WARNING, "Could not add Message-Authenticator");
136+ pos = radius_msg_auth_pos(msg);
137+ if (!pos)
138 return -1;
139- }
140
141 msg->hdr->length = host_to_be16(wpabuf_len(msg->buf));
142 os_memcpy(msg->hdr->authenticator, req_hdr->authenticator, 16);
143- hmac_md5(secret, secret_len, wpabuf_head(msg->buf),
144- wpabuf_len(msg->buf), (u8 *) (attr + 1));
145+ if (hmac_md5(secret, secret_len, wpabuf_head(msg->buf),
146+ wpabuf_len(msg->buf), pos) < 0)
147+ return -1;
148
149 /* ResponseAuth = MD5(Code+ID+Length+RequestAuth+Attributes+Secret) */
150 addr[0] = wpabuf_head_u8(msg->buf);
151diff --git a/src/radius/radius.h b/src/radius/radius.h
152index fb8148180..6b9dfbca2 100644
153--- a/src/radius/radius.h
154+++ b/src/radius/radius.h
155@@ -240,6 +240,7 @@ struct wpabuf * radius_msg_get_buf(struct radius_msg *msg);
156 struct radius_msg * radius_msg_new(u8 code, u8 identifier);
157 void radius_msg_free(struct radius_msg *msg);
158 void radius_msg_dump(struct radius_msg *msg);
159+u8 * radius_msg_add_msg_auth(struct radius_msg *msg);
160 int radius_msg_finish(struct radius_msg *msg, const u8 *secret,
161 size_t secret_len);
162 int radius_msg_finish_srv(struct radius_msg *msg, const u8 *secret,
163--
1642.30.2
165
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_02.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_02.patch
new file mode 100644
index 0000000000..02e35bd6de
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_02.patch
@@ -0,0 +1,62 @@
1From 54abb0d3cf35894e7d86e3f7555e95b106306803 Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sat, 16 Mar 2024 11:13:32 +0200
4Subject: [PATCH 3/9] RADIUS server: Place Message-Authenticator attribute as
5 the first one
6
7Move the Message-Authenticator attribute to be the first attribute in
8the RADIUS messages. This mitigates certain MD5 attacks against
9RADIUS/UDP.
10
11Signed-off-by: Jouni Malinen <j@w1.fi>
12
13CVE: CVE-2024-3596
14Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=54abb0d3cf35894e7d86e3f7555e95b106306803]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 src/radius/radius_server.c | 15 +++++++++++++++
18 1 file changed, 15 insertions(+)
19
20diff --git a/src/radius/radius_server.c b/src/radius/radius_server.c
21index e02c21540..fa3691548 100644
22--- a/src/radius/radius_server.c
23+++ b/src/radius/radius_server.c
24@@ -920,6 +920,11 @@ radius_server_encapsulate_eap(struct radius_server_data *data,
25 return NULL;
26 }
27
28+ if (!radius_msg_add_msg_auth(msg)) {
29+ radius_msg_free(msg);
30+ return NULL;
31+ }
32+
33 sess_id = htonl(sess->sess_id);
34 if (code == RADIUS_CODE_ACCESS_CHALLENGE &&
35 !radius_msg_add_attr(msg, RADIUS_ATTR_STATE,
36@@ -1204,6 +1209,11 @@ radius_server_macacl(struct radius_server_data *data,
37 return NULL;
38 }
39
40+ if (!radius_msg_add_msg_auth(msg)) {
41+ radius_msg_free(msg);
42+ return NULL;
43+ }
44+
45 if (radius_msg_copy_attr(msg, request, RADIUS_ATTR_PROXY_STATE) < 0) {
46 RADIUS_DEBUG("Failed to copy Proxy-State attribute(s)");
47 radius_msg_free(msg);
48@@ -1253,6 +1263,11 @@ static int radius_server_reject(struct radius_server_data *data,
49 return -1;
50 }
51
52+ if (!radius_msg_add_msg_auth(msg)) {
53+ radius_msg_free(msg);
54+ return -1;
55+ }
56+
57 os_memset(&eapfail, 0, sizeof(eapfail));
58 eapfail.code = EAP_CODE_FAILURE;
59 eapfail.identifier = 0;
60--
612.30.2
62
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_03.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_03.patch
new file mode 100644
index 0000000000..c4aa40c811
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_03.patch
@@ -0,0 +1,37 @@
1From 689a248260c9708e6c92cd8635382725a29e34ca Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sat, 16 Mar 2024 11:16:12 +0200
4Subject: [PATCH 4/9] eapol_test: Move Message-Authenticator attribute to be
5 the first one
6
7Even if this is not strictly speaking necessary for mitigating certain
8RADIUS protocol attacks, be consistent with the RADIUS server behavior
9and move the Message-Authenticator attribute to be the first attribute
10in the message from RADIUS client.
11
12Signed-off-by: Jouni Malinen <j@w1.fi>
13
14CVE: CVE-2024-3596
15Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=689a248260c9708e6c92cd8635382725a29e34ca]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 wpa_supplicant/eapol_test.c | 3 +++
19 1 file changed, 3 insertions(+)
20
21diff --git a/wpa_supplicant/eapol_test.c b/wpa_supplicant/eapol_test.c
22index e256ac50e..57082e4b8 100644
23--- a/wpa_supplicant/eapol_test.c
24+++ b/wpa_supplicant/eapol_test.c
25@@ -194,6 +194,9 @@ static void ieee802_1x_encapsulate_radius(struct eapol_test_data *e,
26 return;
27 }
28
29+ if (!radius_msg_add_msg_auth(msg))
30+ goto fail;
31+
32 radius_msg_make_authenticator(msg);
33
34 hdr = (const struct eap_hdr *) eap;
35--
362.30.2
37
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_04.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_04.patch
new file mode 100644
index 0000000000..ce499ce8b6
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_04.patch
@@ -0,0 +1,52 @@
1From 37fe8e48ab44d44fe3cf5dd8f52cb0a10be0cd17 Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sat, 16 Mar 2024 11:22:43 +0200
4Subject: [PATCH 5/9] hostapd: Move Message-Authenticator attribute to be the
5 first one in req
6
7Even if this is not strictly speaking necessary for mitigating certain
8RADIUS protocol attacks, be consistent with the RADIUS server behavior
9and move the Message-Authenticator attribute to be the first attribute
10in the message from RADIUS client in hostapd.
11
12Signed-off-by: Jouni Malinen <j@w1.fi>
13
14CVE: CVE-2024-3596
15Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=37fe8e48ab44d44fe3cf5dd8f52cb0a10be0cd17]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 src/ap/ieee802_11_auth.c | 3 +++
19 src/ap/ieee802_1x.c | 3 +++
20 2 files changed, 6 insertions(+)
21
22diff --git a/src/ap/ieee802_11_auth.c b/src/ap/ieee802_11_auth.c
23index 47cc625be..2a950cf7f 100644
24--- a/src/ap/ieee802_11_auth.c
25+++ b/src/ap/ieee802_11_auth.c
26@@ -119,6 +119,9 @@ static int hostapd_radius_acl_query(struct hostapd_data *hapd, const u8 *addr,
27 goto fail;
28 }
29
30+ if (!radius_msg_add_msg_auth(msg))
31+ goto fail;
32+
33 os_snprintf(buf, sizeof(buf), RADIUS_ADDR_FORMAT, MAC2STR(addr));
34 if (!radius_msg_add_attr(msg, RADIUS_ATTR_USER_NAME, (u8 *) buf,
35 os_strlen(buf))) {
36diff --git a/src/ap/ieee802_1x.c b/src/ap/ieee802_1x.c
37index 753c88335..89e3dd30e 100644
38--- a/src/ap/ieee802_1x.c
39+++ b/src/ap/ieee802_1x.c
40@@ -702,6 +702,9 @@ void ieee802_1x_encapsulate_radius(struct hostapd_data *hapd,
41 goto fail;
42 }
43
44+ if (!radius_msg_add_msg_auth(msg))
45+ goto fail;
46+
47 if (sm->identity &&
48 !radius_msg_add_attr(msg, RADIUS_ATTR_USER_NAME,
49 sm->identity, sm->identity_len)) {
50--
512.30.2
52
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_05.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_05.patch
new file mode 100644
index 0000000000..44113afd4a
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_05.patch
@@ -0,0 +1,51 @@
1From f54157077f799d84ce26bed6ad6b01c4a16e31cf Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sat, 16 Mar 2024 11:26:58 +0200
4Subject: [PATCH 6/9] RADIUS DAS: Move Message-Authenticator attribute to be
5 the first one
6
7Even if this might not be strictly speaking necessary for mitigating
8certain RADIUS protocol attacks, be consistent with the RADIUS server
9behavior and move the Message-Authenticator attribute to be the first
10attribute in the RADIUS DAS responses from hostapd.
11
12Signed-off-by: Jouni Malinen <j@w1.fi>
13
14CVE: CVE-2024-3596
15Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=f54157077f799d84ce26bed6ad6b01c4a16e31cf]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 src/radius/radius_das.c | 10 ++++++++++
19 1 file changed, 10 insertions(+)
20
21diff --git a/src/radius/radius_das.c b/src/radius/radius_das.c
22index aaa3fc267..8d7c9b4c4 100644
23--- a/src/radius/radius_das.c
24+++ b/src/radius/radius_das.c
25@@ -177,6 +177,11 @@ fail:
26 if (reply == NULL)
27 return NULL;
28
29+ if (!radius_msg_add_msg_auth(reply)) {
30+ radius_msg_free(reply);
31+ return NULL;
32+ }
33+
34 if (error) {
35 if (!radius_msg_add_attr_int32(reply, RADIUS_ATTR_ERROR_CAUSE,
36 error)) {
37@@ -368,6 +373,11 @@ fail:
38 if (!reply)
39 return NULL;
40
41+ if (!radius_msg_add_msg_auth(reply)) {
42+ radius_msg_free(reply);
43+ return NULL;
44+ }
45+
46 if (error &&
47 !radius_msg_add_attr_int32(reply, RADIUS_ATTR_ERROR_CAUSE, error)) {
48 radius_msg_free(reply);
49--
502.30.2
51
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_06.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_06.patch
new file mode 100644
index 0000000000..9a284b5261
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_06.patch
@@ -0,0 +1,46 @@
1From 934b0c3a45ce0726560ccefbd992a9d385c36385 Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sat, 16 Mar 2024 11:31:37 +0200
4Subject: [PATCH 7/9] Require Message-Authenticator in Access-Reject even
5 without EAP-Message
6
7Do not allow the exception for missing Message-Authenticator in
8Access-Reject without EAP-Message. While such exception is allowed in
9RADIUS definition, there is no strong reason to maintain this since
10Access-Reject is supposed to include EAP-Message and even if it doesn't,
11discarding Access-Reject will result in the connection not completing.
12
13Signed-off-by: Jouni Malinen <j@w1.fi>
14
15CVE: CVE-2024-3596
16Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=934b0c3a45ce0726560ccefbd992a9d385c36385]
17Signed-off-by: Peter Marko <peter.marko@siemens.com>
18---
19 src/ap/ieee802_1x.c | 11 +----------
20 1 file changed, 1 insertion(+), 10 deletions(-)
21
22diff --git a/src/ap/ieee802_1x.c b/src/ap/ieee802_1x.c
23index 89e3dd30e..6e7b75128 100644
24--- a/src/ap/ieee802_1x.c
25+++ b/src/ap/ieee802_1x.c
26@@ -1939,16 +1939,7 @@ ieee802_1x_receive_auth(struct radius_msg *msg, struct radius_msg *req,
27 }
28 sta = sm->sta;
29
30- /* RFC 2869, Ch. 5.13: valid Message-Authenticator attribute MUST be
31- * present when packet contains an EAP-Message attribute */
32- if (hdr->code == RADIUS_CODE_ACCESS_REJECT &&
33- radius_msg_get_attr(msg, RADIUS_ATTR_MESSAGE_AUTHENTICATOR, NULL,
34- 0) < 0 &&
35- radius_msg_get_attr(msg, RADIUS_ATTR_EAP_MESSAGE, NULL, 0) < 0) {
36- wpa_printf(MSG_DEBUG,
37- "Allowing RADIUS Access-Reject without Message-Authenticator since it does not include EAP-Message");
38- } else if (radius_msg_verify(msg, shared_secret, shared_secret_len,
39- req, 1)) {
40+ if (radius_msg_verify(msg, shared_secret, shared_secret_len, req, 1)) {
41 wpa_printf(MSG_INFO,
42 "Incoming RADIUS packet did not have correct Message-Authenticator - dropped");
43 return RADIUS_RX_INVALID_AUTHENTICATOR;
44--
452.30.2
46
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_07.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_07.patch
new file mode 100644
index 0000000000..177c6f81e6
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_07.patch
@@ -0,0 +1,67 @@
1From 58097123ec5ea6f8276b38cb9b07669ec368a6c1 Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sun, 17 Mar 2024 10:42:56 +0200
4Subject: [PATCH 8/9] RADIUS: Require Message-Authenticator attribute in MAC
5 ACL cases
6
7hostapd required Message-Authenticator attribute to be included in EAP
8authentication cases, but that requirement was not in place for MAC ACL
9cases. Start requiring Message-Authenticator attribute for MAC ACL by
10default. Unlike the EAP case, this can still be disabled with
11radius_require_message_authenticator=1 to maintain compatibility with
12some RADIUS servers when used in a network where the connection to such
13a server is secure.
14
15Signed-off-by: Jouni Malinen <j@w1.fi>
16
17CVE: CVE-2024-3596
18Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=58097123ec5ea6f8276b38cb9b07669ec368a6c1]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 src/ap/ap_config.c | 1 +
22 src/ap/ap_config.h | 1 +
23 src/ap/ieee802_11_auth.c | 4 +++-
24 5 files changed, 19 insertions(+), 1 deletion(-)
25
26diff --git a/src/ap/ap_config.c b/src/ap/ap_config.c
27index 86b6e097c..cf497a180 100644
28--- a/src/ap/ap_config.c
29+++ b/src/ap/ap_config.c
30@@ -120,6 +120,7 @@ void hostapd_config_defaults_bss(struct hostapd_bss_config *bss)
31 #endif /* CONFIG_IEEE80211R_AP */
32
33 bss->radius_das_time_window = 300;
34+ bss->radius_require_message_authenticator = 1;
35
36 bss->anti_clogging_threshold = 5;
37 bss->sae_sync = 5;
38diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
39index 49cd3168a..22ad617f4 100644
40--- a/src/ap/ap_config.h
41+++ b/src/ap/ap_config.h
42@@ -302,6 +302,7 @@ struct hostapd_bss_config {
43 struct hostapd_ip_addr own_ip_addr;
44 char *nas_identifier;
45 struct hostapd_radius_servers *radius;
46+ int radius_require_message_authenticator;
47 int acct_interim_interval;
48 int radius_request_cui;
49 struct hostapd_radius_attr *radius_auth_req_attr;
50diff --git a/src/ap/ieee802_11_auth.c b/src/ap/ieee802_11_auth.c
51index 2a950cf7f..dab9bcde3 100644
52--- a/src/ap/ieee802_11_auth.c
53+++ b/src/ap/ieee802_11_auth.c
54@@ -474,7 +474,9 @@ hostapd_acl_recv_radius(struct radius_msg *msg, struct radius_msg *req,
55 "Found matching Access-Request for RADIUS message (id=%d)",
56 query->radius_id);
57
58- if (radius_msg_verify(msg, shared_secret, shared_secret_len, req, 0)) {
59+ if (radius_msg_verify(
60+ msg, shared_secret, shared_secret_len, req,
61+ hapd->conf->radius_require_message_authenticator)) {
62 wpa_printf(MSG_INFO,
63 "Incoming RADIUS packet did not have correct authenticator - dropped");
64 return RADIUS_RX_INVALID_AUTHENTICATOR;
65--
662.30.2
67
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_08.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_08.patch
new file mode 100644
index 0000000000..e23d1e0047
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2024-3596_08.patch
@@ -0,0 +1,47 @@
1From f302d9f9646704cce745734af21d540baa0da65f Mon Sep 17 00:00:00 2001
2From: Jouni Malinen <j@w1.fi>
3Date: Sun, 17 Mar 2024 10:47:58 +0200
4Subject: [PATCH 9/9] RADIUS: Check Message-Authenticator if it is present even
5 if not required
6
7Always check the Message-Authenticator attribute in a received RADIUS
8message if it is present. Previously, this would have been skipped if
9the attribute was not required to be present.
10
11Signed-off-by: Jouni Malinen <j@w1.fi>
12
13CVE: CVE-2024-3596
14Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/?id=f302d9f9646704cce745734af21d540baa0da65f]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 src/radius/radius.c | 14 ++++++++++++++
18 1 file changed, 14 insertions(+)
19
20diff --git a/src/radius/radius.c b/src/radius/radius.c
21index 2d2e00b5c..a0e3ce399 100644
22--- a/src/radius/radius.c
23+++ b/src/radius/radius.c
24@@ -879,6 +879,20 @@ int radius_msg_verify(struct radius_msg *msg, const u8 *secret,
25 return 1;
26 }
27
28+ if (!auth) {
29+ u8 *pos;
30+ size_t alen;
31+
32+ if (radius_msg_get_attr_ptr(msg,
33+ RADIUS_ATTR_MESSAGE_AUTHENTICATOR,
34+ &pos, &alen, NULL) == 0) {
35+ /* Check the Message-Authenticator attribute since it
36+ * was included even if we are configured to not
37+ * require it. */
38+ auth = 1;
39+ }
40+ }
41+
42 if (auth &&
43 radius_msg_verify_msg_auth(msg, secret, secret_len,
44 sent_msg->hdr->authenticator)) {
45--
462.30.2
47
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bb b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bb
index 22028ce957..c1a4383b47 100644
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bb
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.10.bb
@@ -19,6 +19,18 @@ SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \
19 file://0002-Fix-removal-of-wpa_passphrase-on-make-clean.patch \ 19 file://0002-Fix-removal-of-wpa_passphrase-on-make-clean.patch \
20 file://0001-Install-wpa_passphrase-when-not-disabled.patch \ 20 file://0001-Install-wpa_passphrase-when-not-disabled.patch \
21 file://0001-PEAP-client-Update-Phase-2-authentication-requiremen.patch \ 21 file://0001-PEAP-client-Update-Phase-2-authentication-requiremen.patch \
22 file://CVE-2024-3596_00.patch \
23 file://CVE-2024-3596_01.patch \
24 file://CVE-2024-3596_02.patch \
25 file://CVE-2024-3596_03.patch \
26 file://CVE-2024-3596_04.patch \
27 file://CVE-2024-3596_05.patch \
28 file://CVE-2024-3596_06.patch \
29 file://CVE-2024-3596_07.patch \
30 file://CVE-2024-3596_08.patch \
31 file://0001-SAE-Check-for-invalid-Rejected-Groups-element-length.patch \
32 file://0002-SAE-Check-for-invalid-Rejected-Groups-element-length.patch \
33 file://0003-SAE-Reject-invalid-Rejected-Groups-element-in-the-pa.patch \
22 " 34 "
23SRC_URI[sha256sum] = "20df7ae5154b3830355f8ab4269123a87affdea59fe74fe9292a91d0d7e17b2f" 35SRC_URI[sha256sum] = "20df7ae5154b3830355f8ab4269123a87affdea59fe74fe9292a91d0d7e17b2f"
24 36
@@ -32,6 +44,8 @@ PACKAGECONFIG[openssl] = ",,openssl"
32 44
33CVE_PRODUCT = "wpa_supplicant" 45CVE_PRODUCT = "wpa_supplicant"
34 46
47CVE_STATUS[CVE-2024-5290] = "not-applicable-platform: this only affects Ubuntu and other platforms patching wpa-supplicant"
48
35EXTRA_OEMAKE = "'LIBDIR=${libdir}' 'INCDIR=${includedir}' 'BINDIR=${sbindir}'" 49EXTRA_OEMAKE = "'LIBDIR=${libdir}' 'INCDIR=${includedir}' 'BINDIR=${sbindir}'"
36 50
37do_configure () { 51do_configure () {
diff --git a/meta/recipes-core/base-files/base-files_3.0.14.bb b/meta/recipes-core/base-files/base-files_3.0.14.bb
index 9fab53ce63..5d13b6249d 100644
--- a/meta/recipes-core/base-files/base-files_3.0.14.bb
+++ b/meta/recipes-core/base-files/base-files_3.0.14.bb
@@ -70,29 +70,6 @@ hostname = "${MACHINE}"
70 70
71BASEFILESISSUEINSTALL ?= "do_install_basefilesissue" 71BASEFILESISSUEINSTALL ?= "do_install_basefilesissue"
72 72
73# In previous versions of base-files, /run was a softlink to /var/run and the
74# directory was located in /var/volatlie/run. Also, /var/lock was a softlink
75# to /var/volatile/lock which is where the real directory was located. Now,
76# /run and /run/lock are the real directories. If we are upgrading, we may
77# need to remove the symbolic links first before we create the directories.
78# Otherwise the directory creation will fail and we will have circular symbolic
79# links.
80#
81pkg_preinst:${PN} () {
82 #!/bin/sh -e
83 if [ x"$D" = "x" ]; then
84 if [ -h "/var/lock" ]; then
85 # Remove the symbolic link
86 rm -f /var/lock
87 fi
88
89 if [ -h "/run" ]; then
90 # Remove the symbolic link
91 rm -f /run
92 fi
93 fi
94}
95
96do_install () { 73do_install () {
97 for d in ${dirs555}; do 74 for d in ${dirs555}; do
98 install -m 0555 -d ${D}$d 75 install -m 0555 -d ${D}$d
diff --git a/meta/recipes-core/coreutils/coreutils/CVE-2025-5278.patch b/meta/recipes-core/coreutils/coreutils/CVE-2025-5278.patch
new file mode 100644
index 0000000000..41be1635b5
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils/CVE-2025-5278.patch
@@ -0,0 +1,112 @@
1From 8763c305c29d0abb7e2be4695212b42917d054b2 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
3Date: Tue, 20 May 2025 16:03:44 +0100
4Subject: [PATCH] sort: fix buffer under-read (CWE-127)
5
6* src/sort.c (begfield): Check pointer adjustment
7to avoid Out-of-range pointer offset (CWE-823).
8(limfield): Likewise.
9* tests/sort/sort-field-limit.sh: Add a new test,
10which triggers with ASAN or Valgrind.
11* tests/local.mk: Reference the new test.
12* NEWS: Mention bug fix introduced in v7.2 (2009).
13Fixes https://bugs.gnu.org/78507
14
15CVE: CVE-2025-5278
16
17Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/coreutils.git/commit/?id=8c9602e3a145e9596dc1a63c6ed67865814b6633]
18
19Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
20---
21 src/sort.c | 12 ++++++++++--
22 tests/local.mk | 1 +
23 tests/sort/sort-field-limit.sh | 35 ++++++++++++++++++++++++++++++++++
24 3 files changed, 46 insertions(+), 2 deletions(-)
25 create mode 100755 tests/sort/sort-field-limit.sh
26
27diff --git a/src/sort.c b/src/sort.c
28index b10183b6f..7af1a2512 100644
29--- a/src/sort.c
30+++ b/src/sort.c
31@@ -1644,7 +1644,11 @@ begfield (struct line const *line, struct keyfield const *key)
32 ++ptr;
33
34 /* Advance PTR by SCHAR (if possible), but no further than LIM. */
35- ptr = MIN (lim, ptr + schar);
36+ size_t remaining_bytes = lim - ptr;
37+ if (schar < remaining_bytes)
38+ ptr += schar;
39+ else
40+ ptr = lim;
41
42 return ptr;
43 }
44@@ -1746,7 +1750,11 @@ limfield (struct line const *line, struct keyfield const *key)
45 ++ptr;
46
47 /* Advance PTR by ECHAR (if possible), but no further than LIM. */
48- ptr = MIN (lim, ptr + echar);
49+ size_t remaining_bytes = lim - ptr;
50+ if (echar < remaining_bytes)
51+ ptr += echar;
52+ else
53+ ptr = lim;
54 }
55
56 return ptr;
57diff --git a/tests/local.mk b/tests/local.mk
58index 4da6756ac..642d225fa 100644
59--- a/tests/local.mk
60+++ b/tests/local.mk
61@@ -388,6 +388,7 @@ all_tests = \
62 tests/sort/sort-debug-keys.sh \
63 tests/sort/sort-debug-warn.sh \
64 tests/sort/sort-discrim.sh \
65+ tests/sort/sort-field-limit.sh \
66 tests/sort/sort-files0-from.pl \
67 tests/sort/sort-float.sh \
68 tests/sort/sort-h-thousands-sep.sh \
69diff --git a/tests/sort/sort-field-limit.sh b/tests/sort/sort-field-limit.sh
70new file mode 100755
71index 000000000..52d8e1d17
72--- /dev/null
73+++ b/tests/sort/sort-field-limit.sh
74@@ -0,0 +1,35 @@
75+#!/bin/sh
76+# From 7.2-9.7, this would trigger an out of bounds mem read
77+
78+# Copyright (C) 2025 Free Software Foundation, Inc.
79+
80+# This program is free software: you can redistribute it and/or modify
81+# it under the terms of the GNU General Public License as published by
82+# the Free Software Foundation, either version 3 of the License, or
83+# (at your option) any later version.
84+
85+# This program is distributed in the hope that it will be useful,
86+# but WITHOUT ANY WARRANTY; without even the implied warranty of
87+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
88+# GNU General Public License for more details.
89+
90+# You should have received a copy of the GNU General Public License
91+# along with this program. If not, see <https://www.gnu.org/licenses/>.
92+
93+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
94+print_ver_ sort
95+getlimits_
96+
97+# This issue triggers with valgrind or ASAN
98+valgrind --error-exitcode=1 sort --version 2>/dev/null &&
99+ VALGRIND='valgrind --error-exitcode=1'
100+
101+{ printf '%s\n' aa bb; } > in || framework_failure_
102+
103+_POSIX2_VERSION=200809 $VALGRIND sort +0.${SIZE_MAX}R in > out || fail=1
104+compare in out || fail=1
105+
106+_POSIX2_VERSION=200809 $VALGRIND sort +1 -1.${SIZE_MAX}R in > out || fail=1
107+compare in out || fail=1
108+
109+Exit $fail
110--
1112.34.1
112
diff --git a/meta/recipes-core/coreutils/coreutils_9.4.bb b/meta/recipes-core/coreutils/coreutils_9.4.bb
index 62ecdea6ec..caed1f8c49 100644
--- a/meta/recipes-core/coreutils/coreutils_9.4.bb
+++ b/meta/recipes-core/coreutils/coreutils_9.4.bb
@@ -18,6 +18,7 @@ SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
18 file://0001-local.mk-fix-cross-compiling-problem.patch \ 18 file://0001-local.mk-fix-cross-compiling-problem.patch \
19 file://0001-posixtm-pacify-clang-18.patch \ 19 file://0001-posixtm-pacify-clang-18.patch \
20 file://CVE-2024-0684.patch \ 20 file://CVE-2024-0684.patch \
21 file://CVE-2025-5278.patch \
21 file://run-ptest \ 22 file://run-ptest \
22 " 23 "
23SRC_URI[sha256sum] = "ea613a4cf44612326e917201bbbcdfbd301de21ffc3b59b6e5c07e040b275e52" 24SRC_URI[sha256sum] = "ea613a4cf44612326e917201bbbcdfbd301de21ffc3b59b6e5c07e040b275e52"
diff --git a/meta/recipes-core/dropbear/dropbear/0007-Don-t-close-channels-when-a-PID-hasn-t-started.patch b/meta/recipes-core/dropbear/dropbear/0007-Don-t-close-channels-when-a-PID-hasn-t-started.patch
new file mode 100644
index 0000000000..dff6534027
--- /dev/null
+++ b/meta/recipes-core/dropbear/dropbear/0007-Don-t-close-channels-when-a-PID-hasn-t-started.patch
@@ -0,0 +1,45 @@
1From 5c34e70b80e5fc539f96e029b56b95cdee556010 Mon Sep 17 00:00:00 2001
2From: Matt Johnston <matt@ucc.asn.au>
3Date: Sun, 8 Sep 2024 11:07:41 +0200
4Subject: Don't close channels when a PID hasn't started
5
6If check_close() ran prior to a server channel exec/shell
7request, it would send a close immediately.
8This fix changes it to exclude write_fd==FD_UNINIT from
9being closed there.
10
11When a channel was closed by the time shell/exec request
12was received, then data sent hits an assertion.
13This fixes #321 on Github.
14
15The "pid == 0" check was initially added to avoid waiting
16to close a channel when a process has never been launched
17(which is correct), but that isn't correct in the case
18of the closed-fd test.
19
20Fixes: 8e6f73e879ca ("- Remove "flushing" handling for exited processes)
21
22Upstream-Status: Backport [https://github.com/mkj/dropbear/commit/71521d1b78706a70d3570b860e65234cefdc8c81]
23
24Signed-off-by: Florian Kreutzer <florian.kreutzer.oss@rohde-schwarz.com>
25---
26 common-channel.c | 3 ++-
27 1 file changed, 2 insertions(+), 1 deletion(-)
28
29diff --git a/common-channel.c b/common-channel.c
30index be5b57f..9926972 100644
31--- a/common-channel.c
32+++ b/common-channel.c
33@@ -317,7 +317,8 @@ static void check_close(struct Channel *channel) {
34
35 if ((channel->recv_eof && !write_pending(channel))
36 /* have a server "session" and child has exited */
37- || (channel->type->check_close && close_allowed)) {
38+ || (channel->writefd != FD_UNINIT
39+ && channel->type->check_close && close_allowed)) {
40 close_chan_fd(channel, channel->writefd, SHUT_WR);
41 }
42
43--
442.34.1
45
diff --git a/meta/recipes-core/dropbear/dropbear/CVE-2023-48795.patch b/meta/recipes-core/dropbear/dropbear/CVE-2023-48795.patch
new file mode 100644
index 0000000000..64b0405473
--- /dev/null
+++ b/meta/recipes-core/dropbear/dropbear/CVE-2023-48795.patch
@@ -0,0 +1,234 @@
1From 6e43be5c7b99dbee49dc72b6f989f29fdd7e9356 Mon Sep 17 00:00:00 2001
2From: Matt Johnston <matt@ucc.asn.au>
3Date: Mon, 20 Nov 2023 14:02:47 +0800
4Subject: [PATCH] Implement Strict KEX mode
5
6As specified by OpenSSH with kex-strict-c-v00@openssh.com and
7kex-strict-s-v00@openssh.com.
8
9CVE: CVE-2023-48795
10Upstream-Status: Backport [https://github.com/mkj/dropbear/commit/6e43be5c7b99dbee49dc72b6f989f29fdd7e9356]
11
12Signed-off-by: Peter Marko <peter.marko@siemens.com>
13---
14 cli-session.c | 11 +++++++++++
15 common-algo.c | 6 ++++++
16 common-kex.c | 26 +++++++++++++++++++++++++-
17 kex.h | 3 +++
18 process-packet.c | 34 +++++++++++++++++++---------------
19 ssh.h | 4 ++++
20 svr-session.c | 3 +++
21 7 files changed, 71 insertions(+), 16 deletions(-)
22
23diff --git a/cli-session.c b/cli-session.c
24index 5981b24..d261c8f 100644
25--- a/cli-session.c
26+++ b/cli-session.c
27@@ -46,6 +46,7 @@ static void cli_finished(void) ATTRIB_NORETURN;
28 static void recv_msg_service_accept(void);
29 static void cli_session_cleanup(void);
30 static void recv_msg_global_request_cli(void);
31+static void cli_algos_initialise(void);
32
33 struct clientsession cli_ses; /* GLOBAL */
34
35@@ -117,6 +118,7 @@ void cli_session(int sock_in, int sock_out, struct dropbear_progress_connection
36 }
37
38 chaninitialise(cli_chantypes);
39+ cli_algos_initialise();
40
41 /* Set up cli_ses vars */
42 cli_session_init(proxy_cmd_pid);
43@@ -487,3 +489,12 @@ void cli_dropbear_log(int priority, const char* format, va_list param) {
44 fflush(stderr);
45 }
46
47+static void cli_algos_initialise(void) {
48+ algo_type *algo;
49+ for (algo = sshkex; algo->name; algo++) {
50+ if (strcmp(algo->name, SSH_STRICT_KEX_S) == 0) {
51+ algo->usable = 0;
52+ }
53+ }
54+}
55+
56diff --git a/common-algo.c b/common-algo.c
57index 378f0ca..f9d46eb 100644
58--- a/common-algo.c
59+++ b/common-algo.c
60@@ -307,6 +307,12 @@ algo_type sshkex[] = {
61 /* Set unusable by svr_algos_initialise() */
62 {SSH_EXT_INFO_C, 0, NULL, 1, NULL},
63 #endif
64+#endif
65+#if DROPBEAR_CLIENT
66+ {SSH_STRICT_KEX_C, 0, NULL, 1, NULL},
67+#endif
68+#if DROPBEAR_SERVER
69+ {SSH_STRICT_KEX_S, 0, NULL, 1, NULL},
70 #endif
71 {NULL, 0, NULL, 0, NULL}
72 };
73diff --git a/common-kex.c b/common-kex.c
74index ac88442..8e33b12 100644
75--- a/common-kex.c
76+++ b/common-kex.c
77@@ -183,6 +183,10 @@ void send_msg_newkeys() {
78 gen_new_keys();
79 switch_keys();
80
81+ if (ses.kexstate.strict_kex) {
82+ ses.transseq = 0;
83+ }
84+
85 TRACE(("leave send_msg_newkeys"))
86 }
87
88@@ -193,7 +197,11 @@ void recv_msg_newkeys() {
89
90 ses.kexstate.recvnewkeys = 1;
91 switch_keys();
92-
93+
94+ if (ses.kexstate.strict_kex) {
95+ ses.recvseq = 0;
96+ }
97+
98 TRACE(("leave recv_msg_newkeys"))
99 }
100
101@@ -550,6 +558,10 @@ void recv_msg_kexinit() {
102
103 ses.kexstate.recvkexinit = 1;
104
105+ if (ses.kexstate.strict_kex && !ses.kexstate.donefirstkex && ses.recvseq != 1) {
106+ dropbear_exit("First packet wasn't kexinit");
107+ }
108+
109 TRACE(("leave recv_msg_kexinit"))
110 }
111
112@@ -859,6 +871,18 @@ static void read_kex_algos() {
113 }
114 #endif
115
116+ if (!ses.kexstate.donefirstkex) {
117+ const char* strict_name;
118+ if (IS_DROPBEAR_CLIENT) {
119+ strict_name = SSH_STRICT_KEX_S;
120+ } else {
121+ strict_name = SSH_STRICT_KEX_C;
122+ }
123+ if (buf_has_algo(ses.payload, strict_name) == DROPBEAR_SUCCESS) {
124+ ses.kexstate.strict_kex = 1;
125+ }
126+ }
127+
128 algo = buf_match_algo(ses.payload, sshkex, kexguess2, &goodguess);
129 allgood &= goodguess;
130 if (algo == NULL || algo->data == NULL) {
131diff --git a/kex.h b/kex.h
132index 77cf21a..7fcc3c2 100644
133--- a/kex.h
134+++ b/kex.h
135@@ -83,6 +83,9 @@ struct KEXState {
136
137 unsigned our_first_follows_matches : 1;
138
139+ /* Boolean indicating that strict kex mode is in use */
140+ unsigned int strict_kex;
141+
142 time_t lastkextime; /* time of the last kex */
143 unsigned int datatrans; /* data transmitted since last kex */
144 unsigned int datarecv; /* data received since last kex */
145diff --git a/process-packet.c b/process-packet.c
146index 9454160..133a152 100644
147--- a/process-packet.c
148+++ b/process-packet.c
149@@ -44,6 +44,7 @@ void process_packet() {
150
151 unsigned char type;
152 unsigned int i;
153+ unsigned int first_strict_kex = ses.kexstate.strict_kex && !ses.kexstate.donefirstkex;
154 time_t now;
155
156 TRACE2(("enter process_packet"))
157@@ -54,22 +55,24 @@ void process_packet() {
158 now = monotonic_now();
159 ses.last_packet_time_keepalive_recv = now;
160
161- /* These packets we can receive at any time */
162- switch(type) {
163
164- case SSH_MSG_IGNORE:
165- goto out;
166- case SSH_MSG_DEBUG:
167- goto out;
168+ if (type == SSH_MSG_DISCONNECT) {
169+ /* Allowed at any time */
170+ dropbear_close("Disconnect received");
171+ }
172
173- case SSH_MSG_UNIMPLEMENTED:
174- /* debugging XXX */
175- TRACE(("SSH_MSG_UNIMPLEMENTED"))
176- goto out;
177-
178- case SSH_MSG_DISCONNECT:
179- /* TODO cleanup? */
180- dropbear_close("Disconnect received");
181+ /* These packets may be received at any time,
182+ except during first kex with strict kex */
183+ if (!first_strict_kex) {
184+ switch(type) {
185+ case SSH_MSG_IGNORE:
186+ goto out;
187+ case SSH_MSG_DEBUG:
188+ goto out;
189+ case SSH_MSG_UNIMPLEMENTED:
190+ TRACE(("SSH_MSG_UNIMPLEMENTED"))
191+ goto out;
192+ }
193 }
194
195 /* Ignore these packet types so that keepalives don't interfere with
196@@ -98,7 +101,8 @@ void process_packet() {
197 if (type >= 1 && type <= 49
198 && type != SSH_MSG_SERVICE_REQUEST
199 && type != SSH_MSG_SERVICE_ACCEPT
200- && type != SSH_MSG_KEXINIT)
201+ && type != SSH_MSG_KEXINIT
202+ && !first_strict_kex)
203 {
204 TRACE(("unknown allowed packet during kexinit"))
205 recv_unimplemented();
206diff --git a/ssh.h b/ssh.h
207index 1b4fec6..ef3efdc 100644
208--- a/ssh.h
209+++ b/ssh.h
210@@ -100,6 +100,10 @@
211 #define SSH_EXT_INFO_C "ext-info-c"
212 #define SSH_SERVER_SIG_ALGS "server-sig-algs"
213
214+/* OpenSSH strict KEX feature */
215+#define SSH_STRICT_KEX_S "kex-strict-s-v00@openssh.com"
216+#define SSH_STRICT_KEX_C "kex-strict-c-v00@openssh.com"
217+
218 /* service types */
219 #define SSH_SERVICE_USERAUTH "ssh-userauth"
220 #define SSH_SERVICE_USERAUTH_LEN 12
221diff --git a/svr-session.c b/svr-session.c
222index 769f073..a538e2c 100644
223--- a/svr-session.c
224+++ b/svr-session.c
225@@ -370,6 +370,9 @@ static void svr_algos_initialise(void) {
226 algo->usable = 0;
227 }
228 #endif
229+ if (strcmp(algo->name, SSH_STRICT_KEX_C) == 0) {
230+ algo->usable = 0;
231+ }
232 }
233 }
234
diff --git a/meta/recipes-core/dropbear/dropbear_2022.83.bb b/meta/recipes-core/dropbear/dropbear_2022.83.bb
index 528eff1a10..772e08eaed 100644
--- a/meta/recipes-core/dropbear/dropbear_2022.83.bb
+++ b/meta/recipes-core/dropbear/dropbear_2022.83.bb
@@ -14,6 +14,7 @@ RCONFLICTS:${PN} = "openssh-sshd openssh"
14 14
15SRC_URI = "http://matt.ucc.asn.au/dropbear/releases/dropbear-${PV}.tar.bz2 \ 15SRC_URI = "http://matt.ucc.asn.au/dropbear/releases/dropbear-${PV}.tar.bz2 \
16 file://0001-urandom-xauth-changes-to-options.h.patch \ 16 file://0001-urandom-xauth-changes-to-options.h.patch \
17 file://0007-Don-t-close-channels-when-a-PID-hasn-t-started.patch \
17 file://init \ 18 file://init \
18 file://dropbearkey.service \ 19 file://dropbearkey.service \
19 file://dropbear@.service \ 20 file://dropbear@.service \
@@ -22,6 +23,7 @@ SRC_URI = "http://matt.ucc.asn.au/dropbear/releases/dropbear-${PV}.tar.bz2 \
22 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \ 23 ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
23 ${@bb.utils.contains('PACKAGECONFIG', 'disable-weak-ciphers', 'file://dropbear-disable-weak-ciphers.patch', '', d)} \ 24 ${@bb.utils.contains('PACKAGECONFIG', 'disable-weak-ciphers', 'file://dropbear-disable-weak-ciphers.patch', '', d)} \
24 file://CVE-2023-36328.patch \ 25 file://CVE-2023-36328.patch \
26 file://CVE-2023-48795.patch \
25 " 27 "
26 28
27SRC_URI[sha256sum] = "bc5a121ffbc94b5171ad5ebe01be42746d50aa797c9549a4639894a16749443b" 29SRC_URI[sha256sum] = "bc5a121ffbc94b5171ad5ebe01be42746d50aa797c9549a4639894a16749443b"
diff --git a/meta/recipes-core/expat/expat/0001-tests-Cover-indirect-entity-recursion.patch b/meta/recipes-core/expat/expat/0001-tests-Cover-indirect-entity-recursion.patch
new file mode 100644
index 0000000000..802d762787
--- /dev/null
+++ b/meta/recipes-core/expat/expat/0001-tests-Cover-indirect-entity-recursion.patch
@@ -0,0 +1,103 @@
1From 3d5fdbb44e80ed789e4f6510542d77d6284fbd0e Mon Sep 17 00:00:00 2001
2From: Sebastian Pipping <sebastian@pipping.org>
3Date: Sat, 23 Nov 2024 14:20:21 +0100
4Subject: [PATCH] tests: Cover indirect entity recursion
5
6Upstream-Status: Backport [https://github.com/libexpat/libexpat/commit/3d5fdbb44e80ed789e4f6510542d77d6284fbd0e]
7Signed-off-by: Peter Marko <peter.marko@siemens.com>
8---
9 expat/tests/basic_tests.c | 74 +++++++++++++++++++++++++++++++++++++++
10 1 file changed, 74 insertions(+)
11
12diff --git a/expat/tests/basic_tests.c b/expat/tests/basic_tests.c
13index d38b8fd1..d2306772 100644
14--- a/expat/tests/basic_tests.c
15+++ b/expat/tests/basic_tests.c
16@@ -1202,6 +1202,79 @@ START_TEST(test_wfc_no_recursive_entity_refs) {
17 }
18 END_TEST
19
20+START_TEST(test_no_indirectly_recursive_entity_refs) {
21+ struct TestCase {
22+ const char *doc;
23+ bool usesParameterEntities;
24+ };
25+
26+ const struct TestCase cases[] = {
27+ // general entity + character data
28+ {"<!DOCTYPE a [\n"
29+ " <!ENTITY e1 '&e2;'>\n"
30+ " <!ENTITY e2 '&e1;'>\n"
31+ "]><a>&e2;</a>\n",
32+ false},
33+
34+ // general entity + attribute value
35+ {"<!DOCTYPE a [\n"
36+ " <!ENTITY e1 '&e2;'>\n"
37+ " <!ENTITY e2 '&e1;'>\n"
38+ "]><a k1='&e2;' />\n",
39+ false},
40+
41+ // parameter entity
42+ {"<!DOCTYPE doc [\n"
43+ " <!ENTITY % p1 '&#37;p2;'>\n"
44+ " <!ENTITY % p2 '&#37;p1;'>\n"
45+ " <!ENTITY % define_g \"<!ENTITY g '&#37;p2;'>\">\n"
46+ " %define_g;\n"
47+ "]>\n"
48+ "<doc/>\n",
49+ true},
50+ };
51+ for (size_t i = 0; i < sizeof(cases) / sizeof(cases[0]); i++) {
52+ const char *const doc = cases[i].doc;
53+ const bool usesParameterEntities = cases[i].usesParameterEntities;
54+
55+ set_subtest("[%i] %s", (int)i, doc);
56+
57+#ifdef XML_DTD // both GE and DTD
58+ const bool rejection_expected = true;
59+#elif XML_GE == 1 // GE but not DTD
60+ const bool rejection_expected = ! usesParameterEntities;
61+#else // neither DTD nor GE
62+ const bool rejection_expected = false;
63+#endif
64+
65+ XML_Parser parser = XML_ParserCreate(NULL);
66+
67+#ifdef XML_DTD
68+ if (usesParameterEntities) {
69+ assert_true(
70+ XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS)
71+ == 1);
72+ }
73+#else
74+ UNUSED_P(usesParameterEntities);
75+#endif // XML_DTD
76+
77+ const enum XML_Status status
78+ = _XML_Parse_SINGLE_BYTES(parser, doc, (int)strlen(doc),
79+ /*isFinal*/ XML_TRUE);
80+
81+ if (rejection_expected) {
82+ assert_true(status == XML_STATUS_ERROR);
83+ assert_true(XML_GetErrorCode(parser) == XML_ERROR_RECURSIVE_ENTITY_REF);
84+ } else {
85+ assert_true(status == XML_STATUS_OK);
86+ }
87+
88+ XML_ParserFree(parser);
89+ }
90+}
91+END_TEST
92+
93 START_TEST(test_recursive_external_parameter_entity_2) {
94 struct TestCase {
95 const char *doc;
96@@ -5969,6 +6042,7 @@ make_basic_test_case(Suite *s) {
97 tcase_add_test(tc_basic, test_not_standalone_handler_reject);
98 tcase_add_test(tc_basic, test_not_standalone_handler_accept);
99 tcase_add_test__if_xml_ge(tc_basic, test_wfc_no_recursive_entity_refs);
100+ tcase_add_test(tc_basic, test_no_indirectly_recursive_entity_refs);
101 tcase_add_test__ifdef_xml_dtd(tc_basic, test_ext_entity_invalid_parse);
102 tcase_add_test__if_xml_ge(tc_basic, test_dtd_default_handling);
103 tcase_add_test(tc_basic, test_dtd_attr_handling);
diff --git a/meta/recipes-core/expat/expat/CVE-2024-8176-01.patch b/meta/recipes-core/expat/expat/CVE-2024-8176-01.patch
new file mode 100644
index 0000000000..dc8a520161
--- /dev/null
+++ b/meta/recipes-core/expat/expat/CVE-2024-8176-01.patch
@@ -0,0 +1,1477 @@
1From 3f924a715cfa97e70df1c24334d2d728973d1020 Mon Sep 17 00:00:00 2001
2From: Peter Marko <peter.marko@siemens.com>
3Date: Mon, 17 Mar 2025 20:41:24 +0100
4Subject: [PATCH] [CVE-2024-8176] Resolve the recursion during entity
5 processing to prevent stack overflow (fixes #893)
6
7Fixes #893
8
9CVE: CVE-2024-8176
10Upstream-Status: Backport [https://github.com/libexpat/libexpat/pull/973]
11Signed-off-by: Peter Marko <peter.marko@siemens.com>
12---
13 expat/Changes | 29 +-
14 expat/lib/xmlparse.c | 564 ++++++++++++++++++++++++++++----------
15 expat/tests/alloc_tests.c | 27 ++
16 expat/tests/basic_tests.c | 247 +++++++++++++++--
17 expat/tests/handlers.c | 14 +
18 expat/tests/handlers.h | 5 +
19 expat/tests/misc_tests.c | 43 +++
20 7 files changed, 751 insertions(+), 178 deletions(-)
21
22diff --git a/expat/Changes b/expat/Changes
23index aa19f70a..8c5db88c 100644
24--- a/expat/Changes
25+++ b/expat/Changes
26@@ -11,7 +11,6 @@
27 !! The following topics need *additional skilled C developers* to progress !!
28 !! in a timely manner or at all (loosely ordered by descending priority): !!
29 !! !!
30-!! - <blink>fixing a complex non-public security issue</blink>, !!
31 !! - teaming up on researching and fixing future security reports and !!
32 !! ClusterFuzz findings with few-days-max response times in communication !!
33 !! in order to (1) have a sound fix ready before the end of a 90 days !!
34@@ -30,6 +29,34 @@
35 !! THANK YOU! Sebastian Pipping -- Berlin, 2024-03-09 !!
36 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
37
38+Patches:
39+ Security fixes:
40+ #893 #??? CVE-2024-8176 -- Fix crash from chaining a large number
41+ of entities caused by stack overflow by resolving use of
42+ recursion, for all three uses of entities:
43+ - general entities in character data ("<e>&g1;</e>")
44+ - general entities in attribute values ("<e k1='&g1;'/>")
45+ - parameter entities ("%p1;")
46+ Known impact is (reliable and easy) denial of service:
47+ CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/E:H/RL:O/RC:C
48+ (Base Score: 7.5, Temporal Score: 7.2)
49+ Please note that a layer of compression around XML can
50+ significantly reduce the minimum attack payload size.
51+
52+ Special thanks to:
53+ Alexander Gieringer
54+ Berkay Eren Ürün
55+ Jann Horn
56+ Sebastian Andrzej Siewior
57+ Snild Dolkow
58+ Thomas Pröll
59+ Tomas Korbar
60+ and
61+ Google Project Zero
62+ Linutronix
63+ Red Hat
64+ Siemens
65+
66 Release 2.6.4 Wed November 6 2024
67 Security fixes:
68 #915 CVE-2024-50602 -- Fix crash within function XML_ResumeParser
69diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c
70index a4e091e7..473c791d 100644
71--- a/expat/lib/xmlparse.c
72+++ b/expat/lib/xmlparse.c
73@@ -39,7 +39,7 @@
74 Copyright (c) 2022 Sean McBride <sean@rogue-research.com>
75 Copyright (c) 2023 Owain Davies <owaind@bath.edu>
76 Copyright (c) 2023-2024 Sony Corporation / Snild Dolkow <snild@sony.com>
77- Copyright (c) 2024 Berkay Eren Ürün <berkay.ueruen@siemens.com>
78+ Copyright (c) 2024-2025 Berkay Eren Ürün <berkay.ueruen@siemens.com>
79 Copyright (c) 2024 Hanno Böck <hanno@gentoo.org>
80 Licensed under the MIT license:
81
82@@ -325,6 +325,10 @@ typedef struct {
83 const XML_Char *publicId;
84 const XML_Char *notation;
85 XML_Bool open;
86+ XML_Bool hasMore; /* true if entity has not been completely processed */
87+ /* An entity can be open while being already completely processed (hasMore ==
88+ XML_FALSE). The reason is the delayed closing of entities until their inner
89+ entities are processed and closed */
90 XML_Bool is_param;
91 XML_Bool is_internal; /* true if declared in internal subset outside PE */
92 } ENTITY;
93@@ -415,6 +419,12 @@ typedef struct {
94 int *scaffIndex;
95 } DTD;
96
97+enum EntityType {
98+ ENTITY_INTERNAL,
99+ ENTITY_ATTRIBUTE,
100+ ENTITY_VALUE,
101+};
102+
103 typedef struct open_internal_entity {
104 const char *internalEventPtr;
105 const char *internalEventEndPtr;
106@@ -422,6 +432,7 @@ typedef struct open_internal_entity {
107 ENTITY *entity;
108 int startTagLevel;
109 XML_Bool betweenDecl; /* WFC: PE Between Declarations */
110+ enum EntityType type;
111 } OPEN_INTERNAL_ENTITY;
112
113 enum XML_Account {
114@@ -481,8 +492,8 @@ static enum XML_Error doProlog(XML_Parser parser, const ENCODING *enc,
115 const char *next, const char **nextPtr,
116 XML_Bool haveMore, XML_Bool allowClosingDoctype,
117 enum XML_Account account);
118-static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity,
119- XML_Bool betweenDecl);
120+static enum XML_Error processEntity(XML_Parser parser, ENTITY *entity,
121+ XML_Bool betweenDecl, enum EntityType type);
122 static enum XML_Error doContent(XML_Parser parser, int startTagLevel,
123 const ENCODING *enc, const char *start,
124 const char *end, const char **endPtr,
125@@ -513,18 +524,22 @@ static enum XML_Error storeAttributeValue(XML_Parser parser,
126 const char *ptr, const char *end,
127 STRING_POOL *pool,
128 enum XML_Account account);
129-static enum XML_Error appendAttributeValue(XML_Parser parser,
130- const ENCODING *enc,
131- XML_Bool isCdata, const char *ptr,
132- const char *end, STRING_POOL *pool,
133- enum XML_Account account);
134+static enum XML_Error
135+appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
136+ const char *ptr, const char *end, STRING_POOL *pool,
137+ enum XML_Account account, const char **nextPtr);
138 static ATTRIBUTE_ID *getAttributeId(XML_Parser parser, const ENCODING *enc,
139 const char *start, const char *end);
140 static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType);
141 #if XML_GE == 1
142 static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc,
143 const char *start, const char *end,
144- enum XML_Account account);
145+ enum XML_Account account,
146+ const char **nextPtr);
147+static enum XML_Error callStoreEntityValue(XML_Parser parser,
148+ const ENCODING *enc,
149+ const char *start, const char *end,
150+ enum XML_Account account);
151 #else
152 static enum XML_Error storeSelfEntityValue(XML_Parser parser, ENTITY *entity);
153 #endif
154@@ -709,6 +724,10 @@ struct XML_ParserStruct {
155 const char *m_positionPtr;
156 OPEN_INTERNAL_ENTITY *m_openInternalEntities;
157 OPEN_INTERNAL_ENTITY *m_freeInternalEntities;
158+ OPEN_INTERNAL_ENTITY *m_openAttributeEntities;
159+ OPEN_INTERNAL_ENTITY *m_freeAttributeEntities;
160+ OPEN_INTERNAL_ENTITY *m_openValueEntities;
161+ OPEN_INTERNAL_ENTITY *m_freeValueEntities;
162 XML_Bool m_defaultExpandInternalEntities;
163 int m_tagLevel;
164 ENTITY *m_declEntity;
165@@ -756,6 +775,7 @@ struct XML_ParserStruct {
166 ACCOUNTING m_accounting;
167 ENTITY_STATS m_entity_stats;
168 #endif
169+ XML_Bool m_reenter;
170 };
171
172 #define MALLOC(parser, s) (parser->m_mem.malloc_fcn((s)))
173@@ -1028,7 +1048,29 @@ callProcessor(XML_Parser parser, const char *start, const char *end,
174 #if defined(XML_TESTING)
175 g_bytesScanned += (unsigned)have_now;
176 #endif
177- const enum XML_Error ret = parser->m_processor(parser, start, end, endPtr);
178+ // Run in a loop to eliminate dangerous recursion depths
179+ enum XML_Error ret;
180+ *endPtr = start;
181+ while (1) {
182+ // Use endPtr as the new start in each iteration, since it will
183+ // be set to the next start point by m_processor.
184+ ret = parser->m_processor(parser, *endPtr, end, endPtr);
185+
186+ // Make parsing status (and in particular XML_SUSPENDED) take
187+ // precedence over re-enter flag when they disagree
188+ if (parser->m_parsingStatus.parsing != XML_PARSING) {
189+ parser->m_reenter = XML_FALSE;
190+ }
191+
192+ if (! parser->m_reenter) {
193+ break;
194+ }
195+
196+ parser->m_reenter = XML_FALSE;
197+ if (ret != XML_ERROR_NONE)
198+ return ret;
199+ }
200+
201 if (ret == XML_ERROR_NONE) {
202 // if we consumed nothing, remember what we had on this parse attempt.
203 if (*endPtr == start) {
204@@ -1139,6 +1181,8 @@ parserCreate(const XML_Char *encodingName,
205 parser->m_freeBindingList = NULL;
206 parser->m_freeTagList = NULL;
207 parser->m_freeInternalEntities = NULL;
208+ parser->m_freeAttributeEntities = NULL;
209+ parser->m_freeValueEntities = NULL;
210
211 parser->m_groupSize = 0;
212 parser->m_groupConnector = NULL;
213@@ -1241,6 +1285,8 @@ parserInit(XML_Parser parser, const XML_Char *encodingName) {
214 parser->m_eventEndPtr = NULL;
215 parser->m_positionPtr = NULL;
216 parser->m_openInternalEntities = NULL;
217+ parser->m_openAttributeEntities = NULL;
218+ parser->m_openValueEntities = NULL;
219 parser->m_defaultExpandInternalEntities = XML_TRUE;
220 parser->m_tagLevel = 0;
221 parser->m_tagStack = NULL;
222@@ -1251,6 +1297,8 @@ parserInit(XML_Parser parser, const XML_Char *encodingName) {
223 parser->m_unknownEncodingData = NULL;
224 parser->m_parentParser = NULL;
225 parser->m_parsingStatus.parsing = XML_INITIALIZED;
226+ // Reentry can only be triggered inside m_processor calls
227+ parser->m_reenter = XML_FALSE;
228 #ifdef XML_DTD
229 parser->m_isParamEntity = XML_FALSE;
230 parser->m_useForeignDTD = XML_FALSE;
231@@ -1310,6 +1358,24 @@ XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) {
232 openEntity->next = parser->m_freeInternalEntities;
233 parser->m_freeInternalEntities = openEntity;
234 }
235+ /* move m_openAttributeEntities to m_freeAttributeEntities (i.e. same task but
236+ * for attributes) */
237+ openEntityList = parser->m_openAttributeEntities;
238+ while (openEntityList) {
239+ OPEN_INTERNAL_ENTITY *openEntity = openEntityList;
240+ openEntityList = openEntity->next;
241+ openEntity->next = parser->m_freeAttributeEntities;
242+ parser->m_freeAttributeEntities = openEntity;
243+ }
244+ /* move m_openValueEntities to m_freeValueEntities (i.e. same task but
245+ * for value entities) */
246+ openEntityList = parser->m_openValueEntities;
247+ while (openEntityList) {
248+ OPEN_INTERNAL_ENTITY *openEntity = openEntityList;
249+ openEntityList = openEntity->next;
250+ openEntity->next = parser->m_freeValueEntities;
251+ parser->m_freeValueEntities = openEntity;
252+ }
253 moveToFreeBindingList(parser, parser->m_inheritedBindings);
254 FREE(parser, parser->m_unknownEncodingMem);
255 if (parser->m_unknownEncodingRelease)
256@@ -1323,6 +1389,19 @@ XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) {
257 return XML_TRUE;
258 }
259
260+static XML_Bool
261+parserBusy(XML_Parser parser) {
262+ switch (parser->m_parsingStatus.parsing) {
263+ case XML_PARSING:
264+ case XML_SUSPENDED:
265+ return XML_TRUE;
266+ case XML_INITIALIZED:
267+ case XML_FINISHED:
268+ default:
269+ return XML_FALSE;
270+ }
271+}
272+
273 enum XML_Status XMLCALL
274 XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) {
275 if (parser == NULL)
276@@ -1331,8 +1410,7 @@ XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) {
277 XXX There's no way for the caller to determine which of the
278 XXX possible error cases caused the XML_STATUS_ERROR return.
279 */
280- if (parser->m_parsingStatus.parsing == XML_PARSING
281- || parser->m_parsingStatus.parsing == XML_SUSPENDED)
282+ if (parserBusy(parser))
283 return XML_STATUS_ERROR;
284
285 /* Get rid of any previous encoding name */
286@@ -1569,7 +1647,34 @@ XML_ParserFree(XML_Parser parser) {
287 entityList = entityList->next;
288 FREE(parser, openEntity);
289 }
290-
291+ /* free m_openAttributeEntities and m_freeAttributeEntities */
292+ entityList = parser->m_openAttributeEntities;
293+ for (;;) {
294+ OPEN_INTERNAL_ENTITY *openEntity;
295+ if (entityList == NULL) {
296+ if (parser->m_freeAttributeEntities == NULL)
297+ break;
298+ entityList = parser->m_freeAttributeEntities;
299+ parser->m_freeAttributeEntities = NULL;
300+ }
301+ openEntity = entityList;
302+ entityList = entityList->next;
303+ FREE(parser, openEntity);
304+ }
305+ /* free m_openValueEntities and m_freeValueEntities */
306+ entityList = parser->m_openValueEntities;
307+ for (;;) {
308+ OPEN_INTERNAL_ENTITY *openEntity;
309+ if (entityList == NULL) {
310+ if (parser->m_freeValueEntities == NULL)
311+ break;
312+ entityList = parser->m_freeValueEntities;
313+ parser->m_freeValueEntities = NULL;
314+ }
315+ openEntity = entityList;
316+ entityList = entityList->next;
317+ FREE(parser, openEntity);
318+ }
319 destroyBindings(parser->m_freeBindingList, parser);
320 destroyBindings(parser->m_inheritedBindings, parser);
321 poolDestroy(&parser->m_tempPool);
322@@ -1611,8 +1716,7 @@ XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) {
323 return XML_ERROR_INVALID_ARGUMENT;
324 #ifdef XML_DTD
325 /* block after XML_Parse()/XML_ParseBuffer() has been called */
326- if (parser->m_parsingStatus.parsing == XML_PARSING
327- || parser->m_parsingStatus.parsing == XML_SUSPENDED)
328+ if (parserBusy(parser))
329 return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING;
330 parser->m_useForeignDTD = useDTD;
331 return XML_ERROR_NONE;
332@@ -1627,8 +1731,7 @@ XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) {
333 if (parser == NULL)
334 return;
335 /* block after XML_Parse()/XML_ParseBuffer() has been called */
336- if (parser->m_parsingStatus.parsing == XML_PARSING
337- || parser->m_parsingStatus.parsing == XML_SUSPENDED)
338+ if (parserBusy(parser))
339 return;
340 parser->m_ns_triplets = do_nst ? XML_TRUE : XML_FALSE;
341 }
342@@ -1897,8 +2000,7 @@ XML_SetParamEntityParsing(XML_Parser parser,
343 if (parser == NULL)
344 return 0;
345 /* block after XML_Parse()/XML_ParseBuffer() has been called */
346- if (parser->m_parsingStatus.parsing == XML_PARSING
347- || parser->m_parsingStatus.parsing == XML_SUSPENDED)
348+ if (parserBusy(parser))
349 return 0;
350 #ifdef XML_DTD
351 parser->m_paramEntityParsing = peParsing;
352@@ -1915,8 +2017,7 @@ XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) {
353 if (parser->m_parentParser)
354 return XML_SetHashSalt(parser->m_parentParser, hash_salt);
355 /* block after XML_Parse()/XML_ParseBuffer() has been called */
356- if (parser->m_parsingStatus.parsing == XML_PARSING
357- || parser->m_parsingStatus.parsing == XML_SUSPENDED)
358+ if (parserBusy(parser))
359 return 0;
360 parser->m_hash_secret_salt = hash_salt;
361 return 1;
362@@ -2230,6 +2331,11 @@ XML_GetBuffer(XML_Parser parser, int len) {
363 return parser->m_bufferEnd;
364 }
365
366+static void
367+triggerReenter(XML_Parser parser) {
368+ parser->m_reenter = XML_TRUE;
369+}
370+
371 enum XML_Status XMLCALL
372 XML_StopParser(XML_Parser parser, XML_Bool resumable) {
373 if (parser == NULL)
374@@ -2704,8 +2810,9 @@ static enum XML_Error PTRCALL
375 contentProcessor(XML_Parser parser, const char *start, const char *end,
376 const char **endPtr) {
377 enum XML_Error result = doContent(
378- parser, 0, parser->m_encoding, start, end, endPtr,
379- (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT);
380+ parser, parser->m_parentParser ? 1 : 0, parser->m_encoding, start, end,
381+ endPtr, (XML_Bool)! parser->m_parsingStatus.finalBuffer,
382+ XML_ACCOUNT_DIRECT);
383 if (result == XML_ERROR_NONE) {
384 if (! storeRawNames(parser))
385 return XML_ERROR_NO_MEMORY;
386@@ -2793,6 +2900,11 @@ externalEntityInitProcessor3(XML_Parser parser, const char *start,
387 return XML_ERROR_NONE;
388 case XML_FINISHED:
389 return XML_ERROR_ABORTED;
390+ case XML_PARSING:
391+ if (parser->m_reenter) {
392+ return XML_ERROR_UNEXPECTED_STATE; // LCOV_EXCL_LINE
393+ }
394+ /* Fall through */
395 default:
396 start = next;
397 }
398@@ -2966,7 +3078,7 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
399 reportDefault(parser, enc, s, next);
400 break;
401 }
402- result = processInternalEntity(parser, entity, XML_FALSE);
403+ result = processEntity(parser, entity, XML_FALSE, ENTITY_INTERNAL);
404 if (result != XML_ERROR_NONE)
405 return result;
406 } else if (parser->m_externalEntityRefHandler) {
407@@ -3092,7 +3204,9 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
408 }
409 if ((parser->m_tagLevel == 0)
410 && (parser->m_parsingStatus.parsing != XML_FINISHED)) {
411- if (parser->m_parsingStatus.parsing == XML_SUSPENDED)
412+ if (parser->m_parsingStatus.parsing == XML_SUSPENDED
413+ || (parser->m_parsingStatus.parsing == XML_PARSING
414+ && parser->m_reenter))
415 parser->m_processor = epilogProcessor;
416 else
417 return epilogProcessor(parser, next, end, nextPtr);
418@@ -3153,7 +3267,9 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
419 }
420 if ((parser->m_tagLevel == 0)
421 && (parser->m_parsingStatus.parsing != XML_FINISHED)) {
422- if (parser->m_parsingStatus.parsing == XML_SUSPENDED)
423+ if (parser->m_parsingStatus.parsing == XML_SUSPENDED
424+ || (parser->m_parsingStatus.parsing == XML_PARSING
425+ && parser->m_reenter))
426 parser->m_processor = epilogProcessor;
427 else
428 return epilogProcessor(parser, next, end, nextPtr);
429@@ -3293,6 +3409,12 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
430 return XML_ERROR_NONE;
431 case XML_FINISHED:
432 return XML_ERROR_ABORTED;
433+ case XML_PARSING:
434+ if (parser->m_reenter) {
435+ *nextPtr = next;
436+ return XML_ERROR_NONE;
437+ }
438+ /* Fall through */
439 default:;
440 }
441 }
442@@ -4217,6 +4339,11 @@ doCdataSection(XML_Parser parser, const ENCODING *enc, const char **startPtr,
443 return XML_ERROR_NONE;
444 case XML_FINISHED:
445 return XML_ERROR_ABORTED;
446+ case XML_PARSING:
447+ if (parser->m_reenter) {
448+ return XML_ERROR_UNEXPECTED_STATE; // LCOV_EXCL_LINE
449+ }
450+ /* Fall through */
451 default:;
452 }
453 }
454@@ -4549,7 +4676,7 @@ entityValueInitProcessor(XML_Parser parser, const char *s, const char *end,
455 }
456 /* found end of entity value - can store it now */
457 return storeEntityValue(parser, parser->m_encoding, s, end,
458- XML_ACCOUNT_DIRECT);
459+ XML_ACCOUNT_DIRECT, NULL);
460 } else if (tok == XML_TOK_XML_DECL) {
461 enum XML_Error result;
462 result = processXmlDecl(parser, 0, start, next);
463@@ -4676,7 +4803,7 @@ entityValueProcessor(XML_Parser parser, const char *s, const char *end,
464 break;
465 }
466 /* found end of entity value - can store it now */
467- return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT);
468+ return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT, NULL);
469 }
470 start = next;
471 }
472@@ -5119,9 +5246,9 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end,
473 #if XML_GE == 1
474 // This will store the given replacement text in
475 // parser->m_declEntity->textPtr.
476- enum XML_Error result
477- = storeEntityValue(parser, enc, s + enc->minBytesPerChar,
478- next - enc->minBytesPerChar, XML_ACCOUNT_NONE);
479+ enum XML_Error result = callStoreEntityValue(
480+ parser, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar,
481+ XML_ACCOUNT_NONE);
482 if (parser->m_declEntity) {
483 parser->m_declEntity->textPtr = poolStart(&dtd->entityValuePool);
484 parser->m_declEntity->textLen
485@@ -5546,7 +5673,7 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end,
486 enum XML_Error result;
487 XML_Bool betweenDecl
488 = (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE);
489- result = processInternalEntity(parser, entity, betweenDecl);
490+ result = processEntity(parser, entity, betweenDecl, ENTITY_INTERNAL);
491 if (result != XML_ERROR_NONE)
492 return result;
493 handleDefault = XML_FALSE;
494@@ -5751,6 +5878,12 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end,
495 return XML_ERROR_NONE;
496 case XML_FINISHED:
497 return XML_ERROR_ABORTED;
498+ case XML_PARSING:
499+ if (parser->m_reenter) {
500+ *nextPtr = next;
501+ return XML_ERROR_NONE;
502+ }
503+ /* Fall through */
504 default:
505 s = next;
506 tok = XmlPrologTok(enc, s, end, &next);
507@@ -5825,21 +5958,49 @@ epilogProcessor(XML_Parser parser, const char *s, const char *end,
508 return XML_ERROR_NONE;
509 case XML_FINISHED:
510 return XML_ERROR_ABORTED;
511+ case XML_PARSING:
512+ if (parser->m_reenter) {
513+ return XML_ERROR_UNEXPECTED_STATE; // LCOV_EXCL_LINE
514+ }
515+ /* Fall through */
516 default:;
517 }
518 }
519 }
520
521 static enum XML_Error
522-processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl) {
523- const char *textStart, *textEnd;
524- const char *next;
525- enum XML_Error result;
526- OPEN_INTERNAL_ENTITY *openEntity;
527+processEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl,
528+ enum EntityType type) {
529+ OPEN_INTERNAL_ENTITY *openEntity, **openEntityList, **freeEntityList;
530+ switch (type) {
531+ case ENTITY_INTERNAL:
532+ parser->m_processor = internalEntityProcessor;
533+ openEntityList = &parser->m_openInternalEntities;
534+ freeEntityList = &parser->m_freeInternalEntities;
535+ break;
536+ case ENTITY_ATTRIBUTE:
537+ openEntityList = &parser->m_openAttributeEntities;
538+ freeEntityList = &parser->m_freeAttributeEntities;
539+ break;
540+ case ENTITY_VALUE:
541+ openEntityList = &parser->m_openValueEntities;
542+ freeEntityList = &parser->m_freeValueEntities;
543+ break;
544+ /* default case serves merely as a safety net in case of a
545+ * wrong entityType. Therefore we exclude the following lines
546+ * from the test coverage.
547+ *
548+ * LCOV_EXCL_START
549+ */
550+ default:
551+ // Should not reach here
552+ assert(0);
553+ /* LCOV_EXCL_STOP */
554+ }
555
556- if (parser->m_freeInternalEntities) {
557- openEntity = parser->m_freeInternalEntities;
558- parser->m_freeInternalEntities = openEntity->next;
559+ if (*freeEntityList) {
560+ openEntity = *freeEntityList;
561+ *freeEntityList = openEntity->next;
562 } else {
563 openEntity
564 = (OPEN_INTERNAL_ENTITY *)MALLOC(parser, sizeof(OPEN_INTERNAL_ENTITY));
565@@ -5847,55 +6008,34 @@ processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl) {
566 return XML_ERROR_NO_MEMORY;
567 }
568 entity->open = XML_TRUE;
569+ entity->hasMore = XML_TRUE;
570 #if XML_GE == 1
571 entityTrackingOnOpen(parser, entity, __LINE__);
572 #endif
573 entity->processed = 0;
574- openEntity->next = parser->m_openInternalEntities;
575- parser->m_openInternalEntities = openEntity;
576+ openEntity->next = *openEntityList;
577+ *openEntityList = openEntity;
578 openEntity->entity = entity;
579+ openEntity->type = type;
580 openEntity->startTagLevel = parser->m_tagLevel;
581 openEntity->betweenDecl = betweenDecl;
582 openEntity->internalEventPtr = NULL;
583 openEntity->internalEventEndPtr = NULL;
584- textStart = (const char *)entity->textPtr;
585- textEnd = (const char *)(entity->textPtr + entity->textLen);
586- /* Set a safe default value in case 'next' does not get set */
587- next = textStart;
588
589- if (entity->is_param) {
590- int tok
591- = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next);
592- result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd,
593- tok, next, &next, XML_FALSE, XML_FALSE,
594- XML_ACCOUNT_ENTITY_EXPANSION);
595- } else {
596- result = doContent(parser, parser->m_tagLevel, parser->m_internalEncoding,
597- textStart, textEnd, &next, XML_FALSE,
598- XML_ACCOUNT_ENTITY_EXPANSION);
599+ // Only internal entities make use of the reenter flag
600+ // therefore no need to set it for other entity types
601+ if (type == ENTITY_INTERNAL) {
602+ triggerReenter(parser);
603 }
604-
605- if (result == XML_ERROR_NONE) {
606- if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) {
607- entity->processed = (int)(next - textStart);
608- parser->m_processor = internalEntityProcessor;
609- } else if (parser->m_openInternalEntities->entity == entity) {
610-#if XML_GE == 1
611- entityTrackingOnClose(parser, entity, __LINE__);
612-#endif /* XML_GE == 1 */
613- entity->open = XML_FALSE;
614- parser->m_openInternalEntities = openEntity->next;
615- /* put openEntity back in list of free instances */
616- openEntity->next = parser->m_freeInternalEntities;
617- parser->m_freeInternalEntities = openEntity;
618- }
619- }
620- return result;
621+ return XML_ERROR_NONE;
622 }
623
624 static enum XML_Error PTRCALL
625 internalEntityProcessor(XML_Parser parser, const char *s, const char *end,
626 const char **nextPtr) {
627+ UNUSED_P(s);
628+ UNUSED_P(end);
629+ UNUSED_P(nextPtr);
630 ENTITY *entity;
631 const char *textStart, *textEnd;
632 const char *next;
633@@ -5905,68 +6045,67 @@ internalEntityProcessor(XML_Parser parser, const char *s, const char *end,
634 return XML_ERROR_UNEXPECTED_STATE;
635
636 entity = openEntity->entity;
637- textStart = ((const char *)entity->textPtr) + entity->processed;
638- textEnd = (const char *)(entity->textPtr + entity->textLen);
639- /* Set a safe default value in case 'next' does not get set */
640- next = textStart;
641
642- if (entity->is_param) {
643- int tok
644- = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next);
645- result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd,
646- tok, next, &next, XML_FALSE, XML_TRUE,
647- XML_ACCOUNT_ENTITY_EXPANSION);
648- } else {
649- result = doContent(parser, openEntity->startTagLevel,
650- parser->m_internalEncoding, textStart, textEnd, &next,
651- XML_FALSE, XML_ACCOUNT_ENTITY_EXPANSION);
652- }
653+ // This will return early
654+ if (entity->hasMore) {
655+ textStart = ((const char *)entity->textPtr) + entity->processed;
656+ textEnd = (const char *)(entity->textPtr + entity->textLen);
657+ /* Set a safe default value in case 'next' does not get set */
658+ next = textStart;
659
660- if (result != XML_ERROR_NONE)
661- return result;
662+ if (entity->is_param) {
663+ int tok
664+ = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next);
665+ result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd,
666+ tok, next, &next, XML_FALSE, XML_FALSE,
667+ XML_ACCOUNT_ENTITY_EXPANSION);
668+ } else {
669+ result = doContent(parser, openEntity->startTagLevel,
670+ parser->m_internalEncoding, textStart, textEnd, &next,
671+ XML_FALSE, XML_ACCOUNT_ENTITY_EXPANSION);
672+ }
673+
674+ if (result != XML_ERROR_NONE)
675+ return result;
676+ // Check if entity is complete, if not, mark down how much of it is
677+ // processed
678+ if (textEnd != next
679+ && (parser->m_parsingStatus.parsing == XML_SUSPENDED
680+ || (parser->m_parsingStatus.parsing == XML_PARSING
681+ && parser->m_reenter))) {
682+ entity->processed = (int)(next - (const char *)entity->textPtr);
683+ return result;
684+ }
685
686- if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) {
687- entity->processed = (int)(next - (const char *)entity->textPtr);
688+ // Entity is complete. We cannot close it here since we need to first
689+ // process its possible inner entities (which are added to the
690+ // m_openInternalEntities during doProlog or doContent calls above)
691+ entity->hasMore = XML_FALSE;
692+ triggerReenter(parser);
693 return result;
694- }
695+ } // End of entity processing, "if" block will return here
696
697+ // Remove fully processed openEntity from open entity list.
698 #if XML_GE == 1
699 entityTrackingOnClose(parser, entity, __LINE__);
700 #endif
701+ // openEntity is m_openInternalEntities' head, as we set it at the start of
702+ // this function and we skipped doProlog and doContent calls with hasMore set
703+ // to false. This means we can directly remove the head of
704+ // m_openInternalEntities
705+ assert(parser->m_openInternalEntities == openEntity);
706 entity->open = XML_FALSE;
707- parser->m_openInternalEntities = openEntity->next;
708+ parser->m_openInternalEntities = parser->m_openInternalEntities->next;
709+
710 /* put openEntity back in list of free instances */
711 openEntity->next = parser->m_freeInternalEntities;
712 parser->m_freeInternalEntities = openEntity;
713
714- // If there are more open entities we want to stop right here and have the
715- // upcoming call to XML_ResumeParser continue with entity content, or it would
716- // be ignored altogether.
717- if (parser->m_openInternalEntities != NULL
718- && parser->m_parsingStatus.parsing == XML_SUSPENDED) {
719- return XML_ERROR_NONE;
720- }
721-
722- if (entity->is_param) {
723- int tok;
724- parser->m_processor = prologProcessor;
725- tok = XmlPrologTok(parser->m_encoding, s, end, &next);
726- return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr,
727- (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE,
728- XML_ACCOUNT_DIRECT);
729- } else {
730- parser->m_processor = contentProcessor;
731- /* see externalEntityContentProcessor vs contentProcessor */
732- result = doContent(parser, parser->m_parentParser ? 1 : 0,
733- parser->m_encoding, s, end, nextPtr,
734- (XML_Bool)! parser->m_parsingStatus.finalBuffer,
735- XML_ACCOUNT_DIRECT);
736- if (result == XML_ERROR_NONE) {
737- if (! storeRawNames(parser))
738- return XML_ERROR_NO_MEMORY;
739- }
740- return result;
741+ if (parser->m_openInternalEntities == NULL) {
742+ parser->m_processor = entity->is_param ? prologProcessor : contentProcessor;
743 }
744+ triggerReenter(parser);
745+ return XML_ERROR_NONE;
746 }
747
748 static enum XML_Error PTRCALL
749@@ -5982,8 +6121,70 @@ static enum XML_Error
750 storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
751 const char *ptr, const char *end, STRING_POOL *pool,
752 enum XML_Account account) {
753- enum XML_Error result
754- = appendAttributeValue(parser, enc, isCdata, ptr, end, pool, account);
755+ const char *next = ptr;
756+ enum XML_Error result = XML_ERROR_NONE;
757+
758+ while (1) {
759+ if (! parser->m_openAttributeEntities) {
760+ result = appendAttributeValue(parser, enc, isCdata, next, end, pool,
761+ account, &next);
762+ } else {
763+ OPEN_INTERNAL_ENTITY *const openEntity = parser->m_openAttributeEntities;
764+ if (! openEntity)
765+ return XML_ERROR_UNEXPECTED_STATE;
766+
767+ ENTITY *const entity = openEntity->entity;
768+ const char *const textStart
769+ = ((const char *)entity->textPtr) + entity->processed;
770+ const char *const textEnd
771+ = (const char *)(entity->textPtr + entity->textLen);
772+ /* Set a safe default value in case 'next' does not get set */
773+ const char *nextInEntity = textStart;
774+ if (entity->hasMore) {
775+ result = appendAttributeValue(
776+ parser, parser->m_internalEncoding, isCdata, textStart, textEnd,
777+ pool, XML_ACCOUNT_ENTITY_EXPANSION, &nextInEntity);
778+ if (result != XML_ERROR_NONE)
779+ break;
780+ // Check if entity is complete, if not, mark down how much of it is
781+ // processed. A XML_SUSPENDED check here is not required as
782+ // appendAttributeValue will never suspend the parser.
783+ if (textEnd != nextInEntity) {
784+ entity->processed
785+ = (int)(nextInEntity - (const char *)entity->textPtr);
786+ continue;
787+ }
788+
789+ // Entity is complete. We cannot close it here since we need to first
790+ // process its possible inner entities (which are added to the
791+ // m_openAttributeEntities during appendAttributeValue)
792+ entity->hasMore = XML_FALSE;
793+ continue;
794+ } // End of entity processing, "if" block skips the rest
795+
796+ // Remove fully processed openEntity from open entity list.
797+#if XML_GE == 1
798+ entityTrackingOnClose(parser, entity, __LINE__);
799+#endif
800+ // openEntity is m_openAttributeEntities' head, since we set it at the
801+ // start of this function and because we skipped appendAttributeValue call
802+ // with hasMore set to false. This means we can directly remove the head
803+ // of m_openAttributeEntities
804+ assert(parser->m_openAttributeEntities == openEntity);
805+ entity->open = XML_FALSE;
806+ parser->m_openAttributeEntities = parser->m_openAttributeEntities->next;
807+
808+ /* put openEntity back in list of free instances */
809+ openEntity->next = parser->m_freeAttributeEntities;
810+ parser->m_freeAttributeEntities = openEntity;
811+ }
812+
813+ // Break if an error occurred or there is nothing left to process
814+ if (result || (parser->m_openAttributeEntities == NULL && end == next)) {
815+ break;
816+ }
817+ }
818+
819 if (result)
820 return result;
821 if (! isCdata && poolLength(pool) && poolLastChar(pool) == 0x20)
822@@ -5996,7 +6197,7 @@ storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
823 static enum XML_Error
824 appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
825 const char *ptr, const char *end, STRING_POOL *pool,
826- enum XML_Account account) {
827+ enum XML_Account account, const char **nextPtr) {
828 DTD *const dtd = parser->m_dtd; /* save one level of indirection */
829 #ifndef XML_DTD
830 UNUSED_P(account);
831@@ -6014,6 +6215,9 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
832 #endif
833 switch (tok) {
834 case XML_TOK_NONE:
835+ if (nextPtr) {
836+ *nextPtr = next;
837+ }
838 return XML_ERROR_NONE;
839 case XML_TOK_INVALID:
840 if (enc == parser->m_encoding)
841@@ -6154,21 +6358,11 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
842 return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF;
843 } else {
844 enum XML_Error result;
845- const XML_Char *textEnd = entity->textPtr + entity->textLen;
846- entity->open = XML_TRUE;
847-#if XML_GE == 1
848- entityTrackingOnOpen(parser, entity, __LINE__);
849-#endif
850- result = appendAttributeValue(parser, parser->m_internalEncoding,
851- isCdata, (const char *)entity->textPtr,
852- (const char *)textEnd, pool,
853- XML_ACCOUNT_ENTITY_EXPANSION);
854-#if XML_GE == 1
855- entityTrackingOnClose(parser, entity, __LINE__);
856-#endif
857- entity->open = XML_FALSE;
858- if (result)
859- return result;
860+ result = processEntity(parser, entity, XML_FALSE, ENTITY_ATTRIBUTE);
861+ if ((result == XML_ERROR_NONE) && (nextPtr != NULL)) {
862+ *nextPtr = next;
863+ }
864+ return result;
865 }
866 } break;
867 default:
868@@ -6197,7 +6391,7 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
869 static enum XML_Error
870 storeEntityValue(XML_Parser parser, const ENCODING *enc,
871 const char *entityTextPtr, const char *entityTextEnd,
872- enum XML_Account account) {
873+ enum XML_Account account, const char **nextPtr) {
874 DTD *const dtd = parser->m_dtd; /* save one level of indirection */
875 STRING_POOL *pool = &(dtd->entityValuePool);
876 enum XML_Error result = XML_ERROR_NONE;
877@@ -6215,8 +6409,9 @@ storeEntityValue(XML_Parser parser, const ENCODING *enc,
878 return XML_ERROR_NO_MEMORY;
879 }
880
881+ const char *next;
882 for (;;) {
883- const char *next
884+ next
885 = entityTextPtr; /* XmlEntityValueTok doesn't always set the last arg */
886 int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next);
887
888@@ -6278,16 +6473,8 @@ storeEntityValue(XML_Parser parser, const ENCODING *enc,
889 } else
890 dtd->keepProcessing = dtd->standalone;
891 } else {
892- entity->open = XML_TRUE;
893- entityTrackingOnOpen(parser, entity, __LINE__);
894- result = storeEntityValue(
895- parser, parser->m_internalEncoding, (const char *)entity->textPtr,
896- (const char *)(entity->textPtr + entity->textLen),
897- XML_ACCOUNT_ENTITY_EXPANSION);
898- entityTrackingOnClose(parser, entity, __LINE__);
899- entity->open = XML_FALSE;
900- if (result)
901- goto endEntityValue;
902+ result = processEntity(parser, entity, XML_FALSE, ENTITY_VALUE);
903+ goto endEntityValue;
904 }
905 break;
906 }
907@@ -6375,6 +6562,81 @@ endEntityValue:
908 # ifdef XML_DTD
909 parser->m_prologState.inEntityValue = oldInEntityValue;
910 # endif /* XML_DTD */
911+ // If 'nextPtr' is given, it should be updated during the processing
912+ if (nextPtr != NULL) {
913+ *nextPtr = next;
914+ }
915+ return result;
916+}
917+
918+static enum XML_Error
919+callStoreEntityValue(XML_Parser parser, const ENCODING *enc,
920+ const char *entityTextPtr, const char *entityTextEnd,
921+ enum XML_Account account) {
922+ const char *next = entityTextPtr;
923+ enum XML_Error result = XML_ERROR_NONE;
924+ while (1) {
925+ if (! parser->m_openValueEntities) {
926+ result
927+ = storeEntityValue(parser, enc, next, entityTextEnd, account, &next);
928+ } else {
929+ OPEN_INTERNAL_ENTITY *const openEntity = parser->m_openValueEntities;
930+ if (! openEntity)
931+ return XML_ERROR_UNEXPECTED_STATE;
932+
933+ ENTITY *const entity = openEntity->entity;
934+ const char *const textStart
935+ = ((const char *)entity->textPtr) + entity->processed;
936+ const char *const textEnd
937+ = (const char *)(entity->textPtr + entity->textLen);
938+ /* Set a safe default value in case 'next' does not get set */
939+ const char *nextInEntity = textStart;
940+ if (entity->hasMore) {
941+ result = storeEntityValue(parser, parser->m_internalEncoding, textStart,
942+ textEnd, XML_ACCOUNT_ENTITY_EXPANSION,
943+ &nextInEntity);
944+ if (result != XML_ERROR_NONE)
945+ break;
946+ // Check if entity is complete, if not, mark down how much of it is
947+ // processed. A XML_SUSPENDED check here is not required as
948+ // appendAttributeValue will never suspend the parser.
949+ if (textEnd != nextInEntity) {
950+ entity->processed
951+ = (int)(nextInEntity - (const char *)entity->textPtr);
952+ continue;
953+ }
954+
955+ // Entity is complete. We cannot close it here since we need to first
956+ // process its possible inner entities (which are added to the
957+ // m_openValueEntities during storeEntityValue)
958+ entity->hasMore = XML_FALSE;
959+ continue;
960+ } // End of entity processing, "if" block skips the rest
961+
962+ // Remove fully processed openEntity from open entity list.
963+# if XML_GE == 1
964+ entityTrackingOnClose(parser, entity, __LINE__);
965+# endif
966+ // openEntity is m_openValueEntities' head, since we set it at the
967+ // start of this function and because we skipped storeEntityValue call
968+ // with hasMore set to false. This means we can directly remove the head
969+ // of m_openValueEntities
970+ assert(parser->m_openValueEntities == openEntity);
971+ entity->open = XML_FALSE;
972+ parser->m_openValueEntities = parser->m_openValueEntities->next;
973+
974+ /* put openEntity back in list of free instances */
975+ openEntity->next = parser->m_freeValueEntities;
976+ parser->m_freeValueEntities = openEntity;
977+ }
978+
979+ // Break if an error occurred or there is nothing left to process
980+ if (result
981+ || (parser->m_openValueEntities == NULL && entityTextEnd == next)) {
982+ break;
983+ }
984+ }
985+
986 return result;
987 }
988
989diff --git a/expat/tests/alloc_tests.c b/expat/tests/alloc_tests.c
990index e5d46ebe..12ea3b2a 100644
991--- a/expat/tests/alloc_tests.c
992+++ b/expat/tests/alloc_tests.c
993@@ -19,6 +19,7 @@
994 Copyright (c) 2020 Tim Gates <tim.gates@iress.com>
995 Copyright (c) 2021 Donghee Na <donghee.na@python.org>
996 Copyright (c) 2023 Sony Corporation / Snild Dolkow <snild@sony.com>
997+ Copyright (c) 2025 Berkay Eren Ürün <berkay.ueruen@siemens.com>
998 Licensed under the MIT license:
999
1000 Permission is hereby granted, free of charge, to any person obtaining
1001@@ -450,6 +451,31 @@ START_TEST(test_alloc_internal_entity) {
1002 }
1003 END_TEST
1004
1005+START_TEST(test_alloc_parameter_entity) {
1006+ const char *text = "<!DOCTYPE foo ["
1007+ "<!ENTITY % param1 \"<!ENTITY internal 'some_text'>\">"
1008+ "%param1;"
1009+ "]> <foo>&internal;content</foo>";
1010+ int i;
1011+ const int alloc_test_max_repeats = 30;
1012+
1013+ for (i = 0; i < alloc_test_max_repeats; i++) {
1014+ g_allocation_count = i;
1015+ XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
1016+ if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE)
1017+ != XML_STATUS_ERROR)
1018+ break;
1019+ alloc_teardown();
1020+ alloc_setup();
1021+ }
1022+ g_allocation_count = -1;
1023+ if (i == 0)
1024+ fail("Parameter entity processed despite duff allocator");
1025+ if (i == alloc_test_max_repeats)
1026+ fail("Parameter entity not processed at max allocation count");
1027+}
1028+END_TEST
1029+
1030 /* Test the robustness against allocation failure of element handling
1031 * Based on test_dtd_default_handling().
1032 */
1033@@ -2079,6 +2105,7 @@ make_alloc_test_case(Suite *s) {
1034 tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_external_entity);
1035 tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_ext_entity_set_encoding);
1036 tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_internal_entity);
1037+ tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_parameter_entity);
1038 tcase_add_test__ifdef_xml_dtd(tc_alloc, test_alloc_dtd_default_handling);
1039 tcase_add_test(tc_alloc, test_alloc_explicit_encoding);
1040 tcase_add_test(tc_alloc, test_alloc_set_base);
1041diff --git a/expat/tests/basic_tests.c b/expat/tests/basic_tests.c
1042index d2306772..29be32cf 100644
1043--- a/expat/tests/basic_tests.c
1044+++ b/expat/tests/basic_tests.c
1045@@ -10,7 +10,7 @@
1046 Copyright (c) 2003 Greg Stein <gstein@users.sourceforge.net>
1047 Copyright (c) 2005-2007 Steven Solie <steven@solie.ca>
1048 Copyright (c) 2005-2012 Karl Waclawek <karl@waclawek.net>
1049- Copyright (c) 2016-2024 Sebastian Pipping <sebastian@pipping.org>
1050+ Copyright (c) 2016-2025 Sebastian Pipping <sebastian@pipping.org>
1051 Copyright (c) 2017-2022 Rhodri James <rhodri@wildebeest.org.uk>
1052 Copyright (c) 2017 Joe Orton <jorton@redhat.com>
1053 Copyright (c) 2017 José Gutiérrez de la Concha <jose@zeroc.com>
1054@@ -19,6 +19,7 @@
1055 Copyright (c) 2020 Tim Gates <tim.gates@iress.com>
1056 Copyright (c) 2021 Donghee Na <donghee.na@python.org>
1057 Copyright (c) 2023-2024 Sony Corporation / Snild Dolkow <snild@sony.com>
1058+ Copyright (c) 2024-2025 Berkay Eren Ürün <berkay.ueruen@siemens.com>
1059 Licensed under the MIT license:
1060
1061 Permission is hereby granted, free of charge, to any person obtaining
1062@@ -1233,44 +1234,58 @@ START_TEST(test_no_indirectly_recursive_entity_refs) {
1063 "<doc/>\n",
1064 true},
1065 };
1066+ const XML_Bool reset_or_not[] = {XML_TRUE, XML_FALSE};
1067+
1068 for (size_t i = 0; i < sizeof(cases) / sizeof(cases[0]); i++) {
1069- const char *const doc = cases[i].doc;
1070- const bool usesParameterEntities = cases[i].usesParameterEntities;
1071+ for (size_t j = 0; j < sizeof(reset_or_not) / sizeof(reset_or_not[0]);
1072+ j++) {
1073+ const XML_Bool reset_wanted = reset_or_not[j];
1074+ const char *const doc = cases[i].doc;
1075+ const bool usesParameterEntities = cases[i].usesParameterEntities;
1076
1077- set_subtest("[%i] %s", (int)i, doc);
1078+ set_subtest("[%i,reset=%i] %s", (int)i, (int)j, doc);
1079
1080 #ifdef XML_DTD // both GE and DTD
1081- const bool rejection_expected = true;
1082+ const bool rejection_expected = true;
1083 #elif XML_GE == 1 // GE but not DTD
1084- const bool rejection_expected = ! usesParameterEntities;
1085+ const bool rejection_expected = ! usesParameterEntities;
1086 #else // neither DTD nor GE
1087- const bool rejection_expected = false;
1088+ const bool rejection_expected = false;
1089 #endif
1090
1091- XML_Parser parser = XML_ParserCreate(NULL);
1092+ XML_Parser parser = XML_ParserCreate(NULL);
1093
1094 #ifdef XML_DTD
1095- if (usesParameterEntities) {
1096- assert_true(
1097- XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS)
1098- == 1);
1099- }
1100+ if (usesParameterEntities) {
1101+ assert_true(
1102+ XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS)
1103+ == 1);
1104+ }
1105 #else
1106- UNUSED_P(usesParameterEntities);
1107+ UNUSED_P(usesParameterEntities);
1108 #endif // XML_DTD
1109
1110- const enum XML_Status status
1111- = _XML_Parse_SINGLE_BYTES(parser, doc, (int)strlen(doc),
1112- /*isFinal*/ XML_TRUE);
1113+ const enum XML_Status status
1114+ = _XML_Parse_SINGLE_BYTES(parser, doc, (int)strlen(doc),
1115+ /*isFinal*/ XML_TRUE);
1116
1117- if (rejection_expected) {
1118- assert_true(status == XML_STATUS_ERROR);
1119- assert_true(XML_GetErrorCode(parser) == XML_ERROR_RECURSIVE_ENTITY_REF);
1120- } else {
1121- assert_true(status == XML_STATUS_OK);
1122+ if (rejection_expected) {
1123+ assert_true(status == XML_STATUS_ERROR);
1124+ assert_true(XML_GetErrorCode(parser) == XML_ERROR_RECURSIVE_ENTITY_REF);
1125+ } else {
1126+ assert_true(status == XML_STATUS_OK);
1127+ }
1128+
1129+ if (reset_wanted) {
1130+ // This covers free'ing of (eventually) all three open entity lists by
1131+ // XML_ParserReset.
1132+ XML_ParserReset(parser, NULL);
1133+ }
1134+
1135+ // This covers free'ing of (eventually) all three open entity lists by
1136+ // XML_ParserFree (unless XML_ParserReset has already done that above).
1137+ XML_ParserFree(parser);
1138 }
1139-
1140- XML_ParserFree(parser);
1141 }
1142 }
1143 END_TEST
1144@@ -4033,7 +4048,7 @@ START_TEST(test_skipped_null_loaded_ext_entity) {
1145 = {"<!ENTITY % pe1 SYSTEM 'http://example.org/two.ent'>\n"
1146 "<!ENTITY % pe2 '%pe1;'>\n"
1147 "%pe2;\n",
1148- external_entity_null_loader};
1149+ external_entity_null_loader, NULL};
1150
1151 XML_SetUserData(g_parser, &test_data);
1152 XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
1153@@ -4051,7 +4066,7 @@ START_TEST(test_skipped_unloaded_ext_entity) {
1154 = {"<!ENTITY % pe1 SYSTEM 'http://example.org/two.ent'>\n"
1155 "<!ENTITY % pe2 '%pe1;'>\n"
1156 "%pe2;\n",
1157- NULL};
1158+ NULL, NULL};
1159
1160 XML_SetUserData(g_parser, &test_data);
1161 XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
1162@@ -5351,6 +5366,151 @@ START_TEST(test_pool_integrity_with_unfinished_attr) {
1163 }
1164 END_TEST
1165
1166+/* Test a possible early return location in internalEntityProcessor */
1167+START_TEST(test_entity_ref_no_elements) {
1168+ const char *const text = "<!DOCTYPE foo [\n"
1169+ "<!ENTITY e1 \"test\">\n"
1170+ "]> <foo>&e1;"; // intentionally missing newline
1171+
1172+ XML_Parser parser = XML_ParserCreate(NULL);
1173+ assert_true(_XML_Parse_SINGLE_BYTES(parser, text, (int)strlen(text), XML_TRUE)
1174+ == XML_STATUS_ERROR);
1175+ assert_true(XML_GetErrorCode(parser) == XML_ERROR_NO_ELEMENTS);
1176+ XML_ParserFree(parser);
1177+}
1178+END_TEST
1179+
1180+/* Tests if chained entity references lead to unbounded recursion */
1181+START_TEST(test_deep_nested_entity) {
1182+ const size_t N_LINES = 60000;
1183+ const size_t SIZE_PER_LINE = 50;
1184+
1185+ char *const text = (char *)malloc((N_LINES + 4) * SIZE_PER_LINE);
1186+ if (text == NULL) {
1187+ fail("malloc failed");
1188+ }
1189+
1190+ char *textPtr = text;
1191+
1192+ // Create the XML
1193+ textPtr += snprintf(textPtr, SIZE_PER_LINE,
1194+ "<!DOCTYPE foo [\n"
1195+ " <!ENTITY s0 'deepText'>\n");
1196+
1197+ for (size_t i = 1; i < N_LINES; ++i) {
1198+ textPtr += snprintf(textPtr, SIZE_PER_LINE, " <!ENTITY s%lu '&s%lu;'>\n",
1199+ (long unsigned)i, (long unsigned)(i - 1));
1200+ }
1201+
1202+ snprintf(textPtr, SIZE_PER_LINE, "]> <foo>&s%lu;</foo>\n",
1203+ (long unsigned)(N_LINES - 1));
1204+
1205+ const XML_Char *const expected = XCS("deepText");
1206+
1207+ CharData storage;
1208+ CharData_Init(&storage);
1209+
1210+ XML_Parser parser = XML_ParserCreate(NULL);
1211+
1212+ XML_SetCharacterDataHandler(parser, accumulate_characters);
1213+ XML_SetUserData(parser, &storage);
1214+
1215+ if (_XML_Parse_SINGLE_BYTES(parser, text, (int)strlen(text), XML_TRUE)
1216+ == XML_STATUS_ERROR)
1217+ xml_failure(parser);
1218+
1219+ CharData_CheckXMLChars(&storage, expected);
1220+ XML_ParserFree(parser);
1221+ free(text);
1222+}
1223+END_TEST
1224+
1225+/* Tests if chained entity references in attributes
1226+lead to unbounded recursion */
1227+START_TEST(test_deep_nested_attribute_entity) {
1228+ const size_t N_LINES = 60000;
1229+ const size_t SIZE_PER_LINE = 100;
1230+
1231+ char *const text = (char *)malloc((N_LINES + 4) * SIZE_PER_LINE);
1232+ if (text == NULL) {
1233+ fail("malloc failed");
1234+ }
1235+
1236+ char *textPtr = text;
1237+
1238+ // Create the XML
1239+ textPtr += snprintf(textPtr, SIZE_PER_LINE,
1240+ "<!DOCTYPE foo [\n"
1241+ " <!ENTITY s0 'deepText'>\n");
1242+
1243+ for (size_t i = 1; i < N_LINES; ++i) {
1244+ textPtr += snprintf(textPtr, SIZE_PER_LINE, " <!ENTITY s%lu '&s%lu;'>\n",
1245+ (long unsigned)i, (long unsigned)(i - 1));
1246+ }
1247+
1248+ snprintf(textPtr, SIZE_PER_LINE, "]> <foo name='&s%lu;'>mainText</foo>\n",
1249+ (long unsigned)(N_LINES - 1));
1250+
1251+ AttrInfo doc_info[] = {{XCS("name"), XCS("deepText")}, {NULL, NULL}};
1252+ ElementInfo info[] = {{XCS("foo"), 1, NULL, NULL}, {NULL, 0, NULL, NULL}};
1253+ info[0].attributes = doc_info;
1254+
1255+ XML_Parser parser = XML_ParserCreate(NULL);
1256+ ParserAndElementInfo parserPlusElemenInfo = {parser, info};
1257+
1258+ XML_SetStartElementHandler(parser, counting_start_element_handler);
1259+ XML_SetUserData(parser, &parserPlusElemenInfo);
1260+
1261+ if (_XML_Parse_SINGLE_BYTES(parser, text, (int)strlen(text), XML_TRUE)
1262+ == XML_STATUS_ERROR)
1263+ xml_failure(parser);
1264+
1265+ XML_ParserFree(parser);
1266+ free(text);
1267+}
1268+END_TEST
1269+
1270+START_TEST(test_deep_nested_entity_delayed_interpretation) {
1271+ const size_t N_LINES = 70000;
1272+ const size_t SIZE_PER_LINE = 100;
1273+
1274+ char *const text = (char *)malloc((N_LINES + 4) * SIZE_PER_LINE);
1275+ if (text == NULL) {
1276+ fail("malloc failed");
1277+ }
1278+
1279+ char *textPtr = text;
1280+
1281+ // Create the XML
1282+ textPtr += snprintf(textPtr, SIZE_PER_LINE,
1283+ "<!DOCTYPE foo [\n"
1284+ " <!ENTITY %% s0 'deepText'>\n");
1285+
1286+ for (size_t i = 1; i < N_LINES; ++i) {
1287+ textPtr += snprintf(textPtr, SIZE_PER_LINE,
1288+ " <!ENTITY %% s%lu '&#37;s%lu;'>\n", (long unsigned)i,
1289+ (long unsigned)(i - 1));
1290+ }
1291+
1292+ snprintf(textPtr, SIZE_PER_LINE,
1293+ " <!ENTITY %% define_g \"<!ENTITY g '&#37;s%lu;'>\">\n"
1294+ " %%define_g;\n"
1295+ "]>\n"
1296+ "<foo/>\n",
1297+ (long unsigned)(N_LINES - 1));
1298+
1299+ XML_Parser parser = XML_ParserCreate(NULL);
1300+
1301+ XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
1302+ if (_XML_Parse_SINGLE_BYTES(parser, text, (int)strlen(text), XML_TRUE)
1303+ == XML_STATUS_ERROR)
1304+ xml_failure(parser);
1305+
1306+ XML_ParserFree(parser);
1307+ free(text);
1308+}
1309+END_TEST
1310+
1311 START_TEST(test_nested_entity_suspend) {
1312 const char *const text = "<!DOCTYPE a [\n"
1313 " <!ENTITY e1 '<!--e1-->'>\n"
1314@@ -5381,6 +5541,35 @@ START_TEST(test_nested_entity_suspend) {
1315 }
1316 END_TEST
1317
1318+START_TEST(test_nested_entity_suspend_2) {
1319+ const char *const text = "<!DOCTYPE doc [\n"
1320+ " <!ENTITY ge1 'head1Ztail1'>\n"
1321+ " <!ENTITY ge2 'head2&ge1;tail2'>\n"
1322+ " <!ENTITY ge3 'head3&ge2;tail3'>\n"
1323+ "]>\n"
1324+ "<doc>&ge3;</doc>";
1325+ const XML_Char *const expected = XCS("head3") XCS("head2") XCS("head1")
1326+ XCS("Z") XCS("tail1") XCS("tail2") XCS("tail3");
1327+ CharData storage;
1328+ CharData_Init(&storage);
1329+ XML_Parser parser = XML_ParserCreate(NULL);
1330+ ParserPlusStorage parserPlusStorage = {parser, &storage};
1331+
1332+ XML_SetCharacterDataHandler(parser, accumulate_char_data_and_suspend);
1333+ XML_SetUserData(parser, &parserPlusStorage);
1334+
1335+ enum XML_Status status = XML_Parse(parser, text, (int)strlen(text), XML_TRUE);
1336+ while (status == XML_STATUS_SUSPENDED) {
1337+ status = XML_ResumeParser(parser);
1338+ }
1339+ if (status != XML_STATUS_OK)
1340+ xml_failure(parser);
1341+
1342+ CharData_CheckXMLChars(&storage, expected);
1343+ XML_ParserFree(parser);
1344+}
1345+END_TEST
1346+
1347 /* Regression test for quadratic parsing on large tokens */
1348 START_TEST(test_big_tokens_scale_linearly) {
1349 const struct {
1350@@ -6221,7 +6410,13 @@ make_basic_test_case(Suite *s) {
1351 tcase_add_test(tc_basic, test_empty_element_abort);
1352 tcase_add_test__ifdef_xml_dtd(tc_basic,
1353 test_pool_integrity_with_unfinished_attr);
1354+ tcase_add_test__if_xml_ge(tc_basic, test_entity_ref_no_elements);
1355+ tcase_add_test__if_xml_ge(tc_basic, test_deep_nested_entity);
1356+ tcase_add_test__if_xml_ge(tc_basic, test_deep_nested_attribute_entity);
1357+ tcase_add_test__if_xml_ge(tc_basic,
1358+ test_deep_nested_entity_delayed_interpretation);
1359 tcase_add_test__if_xml_ge(tc_basic, test_nested_entity_suspend);
1360+ tcase_add_test__if_xml_ge(tc_basic, test_nested_entity_suspend_2);
1361 tcase_add_test(tc_basic, test_big_tokens_scale_linearly);
1362 tcase_add_test(tc_basic, test_set_reparse_deferral);
1363 tcase_add_test(tc_basic, test_reparse_deferral_is_inherited);
1364diff --git a/expat/tests/handlers.c b/expat/tests/handlers.c
1365index 0211985f..f15029e3 100644
1366--- a/expat/tests/handlers.c
1367+++ b/expat/tests/handlers.c
1368@@ -1882,6 +1882,20 @@ accumulate_entity_decl(void *userData, const XML_Char *entityName,
1369 CharData_AppendXMLChars(storage, XCS("\n"), 1);
1370 }
1371
1372+void XMLCALL
1373+accumulate_char_data_and_suspend(void *userData, const XML_Char *s, int len) {
1374+ ParserPlusStorage *const parserPlusStorage = (ParserPlusStorage *)userData;
1375+
1376+ CharData_AppendXMLChars(parserPlusStorage->storage, s, len);
1377+
1378+ for (int i = 0; i < len; i++) {
1379+ if (s[i] == 'Z') {
1380+ XML_StopParser(parserPlusStorage->parser, /*resumable=*/XML_TRUE);
1381+ break;
1382+ }
1383+ }
1384+}
1385+
1386 void XMLCALL
1387 accumulate_start_element(void *userData, const XML_Char *name,
1388 const XML_Char **atts) {
1389diff --git a/expat/tests/handlers.h b/expat/tests/handlers.h
1390index 8850bb94..4d6a08d5 100644
1391--- a/expat/tests/handlers.h
1392+++ b/expat/tests/handlers.h
1393@@ -325,6 +325,7 @@ extern int XMLCALL external_entity_devaluer(XML_Parser parser,
1394 typedef struct ext_hdlr_data {
1395 const char *parse_text;
1396 XML_ExternalEntityRefHandler handler;
1397+ CharData *storage;
1398 } ExtHdlrData;
1399
1400 extern int XMLCALL external_entity_oneshot_loader(XML_Parser parser,
1401@@ -569,6 +570,10 @@ extern void XMLCALL accumulate_entity_decl(
1402 const XML_Char *systemId, const XML_Char *publicId,
1403 const XML_Char *notationName);
1404
1405+extern void XMLCALL accumulate_char_data_and_suspend(void *userData,
1406+ const XML_Char *s,
1407+ int len);
1408+
1409 extern void XMLCALL accumulate_start_element(void *userData,
1410 const XML_Char *name,
1411 const XML_Char **atts);
1412diff --git a/expat/tests/misc_tests.c b/expat/tests/misc_tests.c
1413index 9afe0922..f9a78f66 100644
1414--- a/expat/tests/misc_tests.c
1415+++ b/expat/tests/misc_tests.c
1416@@ -59,6 +59,9 @@
1417 #include "handlers.h"
1418 #include "misc_tests.h"
1419
1420+void XMLCALL accumulate_characters_ext_handler(void *userData,
1421+ const XML_Char *s, int len);
1422+
1423 /* Test that a failure to allocate the parser structure fails gracefully */
1424 START_TEST(test_misc_alloc_create_parser) {
1425 XML_Memory_Handling_Suite memsuite = {duff_allocator, realloc, free};
1426@@ -519,6 +522,45 @@ START_TEST(test_misc_stopparser_rejects_unstarted_parser) {
1427 }
1428 END_TEST
1429
1430+/* Adaptation of accumulate_characters that takes ExtHdlrData input to work with
1431+ * test_renter_loop_finite_content below */
1432+void XMLCALL
1433+accumulate_characters_ext_handler(void *userData, const XML_Char *s, int len) {
1434+ ExtHdlrData *const test_data = (ExtHdlrData *)userData;
1435+ CharData_AppendXMLChars(test_data->storage, s, len);
1436+}
1437+
1438+/* Test that internalEntityProcessor does not re-enter forever;
1439+ * based on files tests/xmlconf/xmltest/valid/ext-sa/012.{xml,ent} */
1440+START_TEST(test_renter_loop_finite_content) {
1441+ CharData storage;
1442+ CharData_Init(&storage);
1443+ const char *const text = "<!DOCTYPE doc [\n"
1444+ "<!ENTITY e1 '&e2;'>\n"
1445+ "<!ENTITY e2 '&e3;'>\n"
1446+ "<!ENTITY e3 SYSTEM '012.ent'>\n"
1447+ "<!ENTITY e4 '&e5;'>\n"
1448+ "<!ENTITY e5 '(e5)'>\n"
1449+ "<!ELEMENT doc (#PCDATA)>\n"
1450+ "]>\n"
1451+ "<doc>&e1;</doc>\n";
1452+ ExtHdlrData test_data = {"&e4;\n", external_entity_null_loader, &storage};
1453+ const XML_Char *const expected = XCS("(e5)\n");
1454+
1455+ XML_Parser parser = XML_ParserCreate(NULL);
1456+ assert_true(parser != NULL);
1457+ XML_SetUserData(parser, &test_data);
1458+ XML_SetExternalEntityRefHandler(parser, external_entity_oneshot_loader);
1459+ XML_SetCharacterDataHandler(parser, accumulate_characters_ext_handler);
1460+ if (_XML_Parse_SINGLE_BYTES(parser, text, (int)strlen(text), XML_TRUE)
1461+ == XML_STATUS_ERROR)
1462+ xml_failure(parser);
1463+
1464+ CharData_CheckXMLChars(&storage, expected);
1465+ XML_ParserFree(parser);
1466+}
1467+END_TEST
1468+
1469 void
1470 make_miscellaneous_test_case(Suite *s) {
1471 TCase *tc_misc = tcase_create("miscellaneous tests");
1472@@ -545,4 +587,5 @@ make_miscellaneous_test_case(Suite *s) {
1473 tcase_add_test(tc_misc, test_misc_char_handler_stop_without_leak);
1474 tcase_add_test(tc_misc, test_misc_resumeparser_not_crashing);
1475 tcase_add_test(tc_misc, test_misc_stopparser_rejects_unstarted_parser);
1476+ tcase_add_test__if_xml_ge(tc_misc, test_renter_loop_finite_content);
1477 }
diff --git a/meta/recipes-core/expat/expat/CVE-2024-8176-02.patch b/meta/recipes-core/expat/expat/CVE-2024-8176-02.patch
new file mode 100644
index 0000000000..a22ace3be6
--- /dev/null
+++ b/meta/recipes-core/expat/expat/CVE-2024-8176-02.patch
@@ -0,0 +1,248 @@
1From 5f7af592557495a99e7badaf5c03362a20650156 Mon Sep 17 00:00:00 2001
2From: Peter Marko <peter.marko@siemens.com>
3Date: Thu, 27 Mar 2025 20:28:26 +0100
4Subject: [PATCH] Stop updating event pointer on exit for reentry (fixes #980)
5 #989
6
7Fixes #980
8
9CVE: CVE-2024-8176
10Upstream-Status: Backport [https://github.com/libexpat/libexpat/pull/989]
11Signed-off-by: Peter Marko <peter.marko@siemens.com>
12---
13 expat/Changes | 15 ++++++++++++
14 expat/lib/xmlparse.c | 12 ++++++---
15 expat/tests/common.c | 25 +++++++++++++++++++
16 expat/tests/common.h | 2 ++
17 expat/tests/misc_tests.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++
18 5 files changed, 112 insertions(+), 3 deletions(-)
19
20diff --git a/expat/Changes b/expat/Changes
21index 8c5db88c..7ba33497 100644
22--- a/expat/Changes
23+++ b/expat/Changes
24@@ -30,6 +30,21 @@
25 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26
27 Patches:
28+ Bug fixes:
29+ #980 #989 Restore event pointer behavior from Expat 2.6.4
30+ (that the fix to CVE-2024-8176 changed in 2.7.0);
31+ affected API functions are:
32+ - XML_GetCurrentByteCount
33+ - XML_GetCurrentByteIndex
34+ - XML_GetCurrentColumnNumber
35+ - XML_GetCurrentLineNumber
36+ - XML_GetInputContext
37+
38+ Special thanks to:
39+ Berkay Eren Ürün
40+ and
41+ Perl XML::Parser
42+
43 Security fixes:
44 #893 #??? CVE-2024-8176 -- Fix crash from chaining a large number
45 of entities caused by stack overflow by resolving use of
46diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c
47index 473c791d..c6085d38 100644
48--- a/expat/lib/xmlparse.c
49+++ b/expat/lib/xmlparse.c
50@@ -3402,12 +3402,13 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
51 break;
52 /* LCOV_EXCL_STOP */
53 }
54- *eventPP = s = next;
55 switch (parser->m_parsingStatus.parsing) {
56 case XML_SUSPENDED:
57+ *eventPP = next;
58 *nextPtr = next;
59 return XML_ERROR_NONE;
60 case XML_FINISHED:
61+ *eventPP = next;
62 return XML_ERROR_ABORTED;
63 case XML_PARSING:
64 if (parser->m_reenter) {
65@@ -3416,6 +3417,7 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
66 }
67 /* Fall through */
68 default:;
69+ *eventPP = s = next;
70 }
71 }
72 /* not reached */
73@@ -4332,12 +4334,13 @@ doCdataSection(XML_Parser parser, const ENCODING *enc, const char **startPtr,
74 /* LCOV_EXCL_STOP */
75 }
76
77- *eventPP = s = next;
78 switch (parser->m_parsingStatus.parsing) {
79 case XML_SUSPENDED:
80+ *eventPP = next;
81 *nextPtr = next;
82 return XML_ERROR_NONE;
83 case XML_FINISHED:
84+ *eventPP = next;
85 return XML_ERROR_ABORTED;
86 case XML_PARSING:
87 if (parser->m_reenter) {
88@@ -4345,6 +4348,7 @@ doCdataSection(XML_Parser parser, const ENCODING *enc, const char **startPtr,
89 }
90 /* Fall through */
91 default:;
92+ *eventPP = s = next;
93 }
94 }
95 /* not reached */
96@@ -5951,12 +5955,13 @@ epilogProcessor(XML_Parser parser, const char *s, const char *end,
97 default:
98 return XML_ERROR_JUNK_AFTER_DOC_ELEMENT;
99 }
100- parser->m_eventPtr = s = next;
101 switch (parser->m_parsingStatus.parsing) {
102 case XML_SUSPENDED:
103+ parser->m_eventPtr = next;
104 *nextPtr = next;
105 return XML_ERROR_NONE;
106 case XML_FINISHED:
107+ parser->m_eventPtr = next;
108 return XML_ERROR_ABORTED;
109 case XML_PARSING:
110 if (parser->m_reenter) {
111@@ -5964,6 +5969,7 @@ epilogProcessor(XML_Parser parser, const char *s, const char *end,
112 }
113 /* Fall through */
114 default:;
115+ parser->m_eventPtr = s = next;
116 }
117 }
118 }
119diff --git a/expat/tests/common.c b/expat/tests/common.c
120index 3aea8d74..b267dbb3 100644
121--- a/expat/tests/common.c
122+++ b/expat/tests/common.c
123@@ -42,6 +42,8 @@
124 */
125
126 #include <assert.h>
127+#include <errno.h>
128+#include <stdint.h> // for SIZE_MAX
129 #include <stdio.h>
130 #include <string.h>
131
132@@ -294,3 +296,26 @@ duff_reallocator(void *ptr, size_t size) {
133 g_reallocation_count--;
134 return realloc(ptr, size);
135 }
136+
137+// Portable remake of strndup(3) for C99; does not care about space efficiency
138+char *
139+portable_strndup(const char *s, size_t n) {
140+ if ((s == NULL) || (n == SIZE_MAX)) {
141+ errno = EINVAL;
142+ return NULL;
143+ }
144+
145+ char *const buffer = (char *)malloc(n + 1);
146+ if (buffer == NULL) {
147+ errno = ENOMEM;
148+ return NULL;
149+ }
150+
151+ errno = 0;
152+
153+ memcpy(buffer, s, n);
154+
155+ buffer[n] = '\0';
156+
157+ return buffer;
158+}
159diff --git a/expat/tests/common.h b/expat/tests/common.h
160index bc4c7da6..88711308 100644
161--- a/expat/tests/common.h
162+++ b/expat/tests/common.h
163@@ -146,6 +146,8 @@ extern void *duff_allocator(size_t size);
164
165 extern void *duff_reallocator(void *ptr, size_t size);
166
167+extern char *portable_strndup(const char *s, size_t n);
168+
169 #endif /* XML_COMMON_H */
170
171 #ifdef __cplusplus
172diff --git a/expat/tests/misc_tests.c b/expat/tests/misc_tests.c
173index f9a78f66..2b9f793b 100644
174--- a/expat/tests/misc_tests.c
175+++ b/expat/tests/misc_tests.c
176@@ -561,6 +561,66 @@ START_TEST(test_renter_loop_finite_content) {
177 }
178 END_TEST
179
180+// Inspired by function XML_OriginalString of Perl's XML::Parser
181+static char *
182+dup_original_string(XML_Parser parser) {
183+ const int byte_count = XML_GetCurrentByteCount(parser);
184+
185+ assert_true(byte_count >= 0);
186+
187+ int offset = -1;
188+ int size = -1;
189+
190+ const char *const context = XML_GetInputContext(parser, &offset, &size);
191+
192+#if XML_CONTEXT_BYTES > 0
193+ assert_true(context != NULL);
194+ assert_true(offset >= 0);
195+ assert_true(size >= 0);
196+ return portable_strndup(context + offset, byte_count);
197+#else
198+ assert_true(context == NULL);
199+ return NULL;
200+#endif
201+}
202+
203+static void
204+on_characters_issue_980(void *userData, const XML_Char *s, int len) {
205+ (void)s;
206+ (void)len;
207+ XML_Parser parser = (XML_Parser)userData;
208+
209+ char *const original_string = dup_original_string(parser);
210+
211+#if XML_CONTEXT_BYTES > 0
212+ assert_true(original_string != NULL);
213+ assert_true(strcmp(original_string, "&draft.day;") == 0);
214+ free(original_string);
215+#else
216+ assert_true(original_string == NULL);
217+#endif
218+}
219+
220+START_TEST(test_misc_expected_event_ptr_issue_980) {
221+ // NOTE: This is a tiny subset of sample "REC-xml-19980210.xml"
222+ // from Perl's XML::Parser
223+ const char *const doc = "<!DOCTYPE day [\n"
224+ " <!ENTITY draft.day '10'>\n"
225+ "]>\n"
226+ "<day>&draft.day;</day>\n";
227+
228+ XML_Parser parser = XML_ParserCreate(NULL);
229+ XML_SetUserData(parser, parser);
230+ XML_SetCharacterDataHandler(parser, on_characters_issue_980);
231+
232+ assert_true(_XML_Parse_SINGLE_BYTES(parser, doc, (int)strlen(doc),
233+ /*isFinal=*/XML_TRUE)
234+ == XML_STATUS_OK);
235+
236+ XML_ParserFree(parser);
237+}
238+END_TEST
239+
240 void
241 make_miscellaneous_test_case(Suite *s) {
242 TCase *tc_misc = tcase_create("miscellaneous tests");
243@@ -588,4 +648,5 @@ make_miscellaneous_test_case(Suite *s) {
244 tcase_add_test(tc_misc, test_misc_resumeparser_not_crashing);
245 tcase_add_test(tc_misc, test_misc_stopparser_rejects_unstarted_parser);
246 tcase_add_test__if_xml_ge(tc_misc, test_renter_loop_finite_content);
247+ tcase_add_test(tc_misc, test_misc_expected_event_ptr_issue_980);
248 }
diff --git a/meta/recipes-core/expat/expat_2.6.3.bb b/meta/recipes-core/expat/expat_2.6.4.bb
index 5ae694a004..ab0b1d54c1 100644
--- a/meta/recipes-core/expat/expat_2.6.3.bb
+++ b/meta/recipes-core/expat/expat_2.6.4.bb
@@ -10,12 +10,15 @@ VERSION_TAG = "${@d.getVar('PV').replace('.', '_')}"
10 10
11SRC_URI = "${GITHUB_BASE_URI}/download/R_${VERSION_TAG}/expat-${PV}.tar.bz2 \ 11SRC_URI = "${GITHUB_BASE_URI}/download/R_${VERSION_TAG}/expat-${PV}.tar.bz2 \
12 file://run-ptest \ 12 file://run-ptest \
13 file://0001-tests-Cover-indirect-entity-recursion.patch;striplevel=2 \
14 file://CVE-2024-8176-01.patch;striplevel=2 \
15 file://CVE-2024-8176-02.patch;striplevel=2 \
13 " 16 "
14 17
15GITHUB_BASE_URI = "https://github.com/libexpat/libexpat/releases/" 18GITHUB_BASE_URI = "https://github.com/libexpat/libexpat/releases/"
16UPSTREAM_CHECK_REGEX = "releases/tag/R_(?P<pver>.+)" 19UPSTREAM_CHECK_REGEX = "releases/tag/R_(?P<pver>.+)"
17 20
18SRC_URI[sha256sum] = "b8baef92f328eebcf731f4d18103951c61fa8c8ec21d5ff4202fb6f2198aeb2d" 21SRC_URI[sha256sum] = "8dc480b796163d4436e6f1352e71800a774f73dbae213f1860b60607d2a83ada"
19 22
20EXTRA_OECMAKE:class-native += "-DEXPAT_BUILD_DOCS=OFF" 23EXTRA_OECMAKE:class-native += "-DEXPAT_BUILD_DOCS=OFF"
21 24
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2024-52533.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2024-52533.patch
new file mode 100644
index 0000000000..3a06a9d782
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2024-52533.patch
@@ -0,0 +1,49 @@
1From ec0b708b981af77fef8e4bbb603cde4de4cd2e29 Mon Sep 17 00:00:00 2001
2From: Michael Catanzaro <mcatanzaro@redhat.com>
3Date: Thu, 19 Sep 2024 18:35:53 +0100
4Subject: [PATCH] gsocks4aproxy: Fix a single byte buffer overflow in connect
5 messages
6
7`SOCKS4_CONN_MSG_LEN` failed to account for the length of the final nul
8byte in the connect message, which is an addition in SOCKSv4a vs
9SOCKSv4.
10
11This means that the buffer for building and transmitting the connect
12message could be overflowed if the username and hostname are both
13`SOCKS4_MAX_LEN` (255) bytes long.
14
15Proxy configurations are normally statically configured, so the username
16is very unlikely to be near its maximum length, and hence this overflow
17is unlikely to be triggered in practice.
18
19(Commit message by Philip Withnall, diagnosis and fix by Michael
20Catanzaro.)
21
22Fixes: #3461
23
24Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/ec0b708b981af77fef8e4bbb603cde4de4cd2e29]
25CVE: CVE-2024-52533
26Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
27---
28 gio/gsocks4aproxy.c | 4 ++--
29 1 file changed, 2 insertions(+), 2 deletions(-)
30
31diff --git a/gio/gsocks4aproxy.c b/gio/gsocks4aproxy.c
32index 3dad118eb7..b3146d08fd 100644
33--- a/gio/gsocks4aproxy.c
34+++ b/gio/gsocks4aproxy.c
35@@ -79,9 +79,9 @@ g_socks4a_proxy_init (GSocks4aProxy *proxy)
36 * +----+----+----+----+----+----+----+----+----+----+....+----+------+....+------+
37 * | VN | CD | DSTPORT | DSTIP | USERID |NULL| HOST | | NULL |
38 * +----+----+----+----+----+----+----+----+----+----+....+----+------+....+------+
39- * 1 1 2 4 variable 1 variable
40+ * 1 1 2 4 variable 1 variable 1
41 */
42-#define SOCKS4_CONN_MSG_LEN (9 + SOCKS4_MAX_LEN * 2)
43+#define SOCKS4_CONN_MSG_LEN (10 + SOCKS4_MAX_LEN * 2)
44 static gint
45 set_connect_msg (guint8 *msg,
46 const gchar *hostname,
47--
48GitLab
49
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-01.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-01.patch
new file mode 100644
index 0000000000..b7b05b6595
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-01.patch
@@ -0,0 +1,57 @@
1From fe6af80931c35fafc6a2cd0651b6de052d1bffae Mon Sep 17 00:00:00 2001
2From: Philip Withnall <pwithnall@gnome.org>
3Date: Tue, 18 Feb 2025 16:44:58 +0000
4Subject: [PATCH 1/6] gdatetime: Fix integer overflow when parsing very long
5 ISO8601 inputs
6
7This will only happen with invalid (or maliciously invalid) potential
8ISO8601 strings, but `g_date_time_new_from_iso8601()` needs to be robust
9against that.
10
11Prevent `length` overflowing by correctly defining it as a `size_t`.
12Similarly for `date_length`, but additionally track its validity in a
13boolean rather than as its sign.
14
15Spotted by chamalsl as #YWH-PGM9867-43.
16
17Signed-off-by: Philip Withnall <pwithnall@gnome.org>
18
19CVE: CVE-2025-3360
20Upstream-Status: Backport [https://github.com/GNOME/glib/commit/fe6af80931c35fafc6a2cd0651b6de052d1bffae]
21Signed-off-by: Peter Marko <peter.marko@siemens.com>
22---
23 glib/gdatetime.c | 12 ++++++++----
24 1 file changed, 8 insertions(+), 4 deletions(-)
25
26diff --git a/glib/gdatetime.c b/glib/gdatetime.c
27index ad9c190b6..b33db2c20 100644
28--- a/glib/gdatetime.c
29+++ b/glib/gdatetime.c
30@@ -1497,7 +1497,8 @@ parse_iso8601_time (const gchar *text, gsize length,
31 GDateTime *
32 g_date_time_new_from_iso8601 (const gchar *text, GTimeZone *default_tz)
33 {
34- gint length, date_length = -1;
35+ size_t length, date_length = 0;
36+ gboolean date_length_set = FALSE;
37 gint hour = 0, minute = 0;
38 gdouble seconds = 0.0;
39 GTimeZone *tz = NULL;
40@@ -1508,11 +1509,14 @@ g_date_time_new_from_iso8601 (const gchar *text, GTimeZone *default_tz)
41 /* Count length of string and find date / time separator ('T', 't', or ' ') */
42 for (length = 0; text[length] != '\0'; length++)
43 {
44- if (date_length < 0 && (text[length] == 'T' || text[length] == 't' || text[length] == ' '))
45- date_length = length;
46+ if (!date_length_set && (text[length] == 'T' || text[length] == 't' || text[length] == ' '))
47+ {
48+ date_length = length;
49+ date_length_set = TRUE;
50+ }
51 }
52
53- if (date_length < 0)
54+ if (!date_length_set)
55 return NULL;
56
57 if (!parse_iso8601_time (text + date_length + 1, length - (date_length + 1),
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-02.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-02.patch
new file mode 100644
index 0000000000..55f3ab126e
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-02.patch
@@ -0,0 +1,53 @@
1From 495c85278f9638fdf3ebf002c759e1bdccebaf2f Mon Sep 17 00:00:00 2001
2From: Philip Withnall <pwithnall@gnome.org>
3Date: Tue, 18 Feb 2025 16:51:36 +0000
4Subject: [PATCH 2/6] gdatetime: Fix potential integer overflow in timezone
5 offset handling
6
7This one is much harder to trigger than the one in the previous commit,
8but mixing `gssize` and `gsize` always runs the risk of the former
9overflowing for very (very very) long input strings.
10
11Avoid that possibility by not using the sign of the `tz_offset` to
12indicate its validity, and instead using the return value of the
13function.
14
15Signed-off-by: Philip Withnall <pwithnall@gnome.org>
16
17CVE: CVE-2025-3360
18Upstream-Status: Backport [https://github.com/GNOME/glib/commit/495c85278f9638fdf3ebf002c759e1bdccebaf2f]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 glib/gdatetime.c | 8 +++++---
22 1 file changed, 5 insertions(+), 3 deletions(-)
23
24diff --git a/glib/gdatetime.c b/glib/gdatetime.c
25index b33db2c20..792c2ed15 100644
26--- a/glib/gdatetime.c
27+++ b/glib/gdatetime.c
28@@ -1346,8 +1346,10 @@ parse_iso8601_date (const gchar *text, gsize length,
29 return FALSE;
30 }
31
32+/* Value returned in tz_offset is valid if and only if the function return value
33+ * is non-NULL. */
34 static GTimeZone *
35-parse_iso8601_timezone (const gchar *text, gsize length, gssize *tz_offset)
36+parse_iso8601_timezone (const gchar *text, gsize length, size_t *tz_offset)
37 {
38 gint i, tz_length, offset_hours, offset_minutes;
39 gint offset_sign = 1;
40@@ -1415,11 +1417,11 @@ static gboolean
41 parse_iso8601_time (const gchar *text, gsize length,
42 gint *hour, gint *minute, gdouble *seconds, GTimeZone **tz)
43 {
44- gssize tz_offset = -1;
45+ size_t tz_offset = 0;
46
47 /* Check for timezone suffix */
48 *tz = parse_iso8601_timezone (text, length, &tz_offset);
49- if (tz_offset >= 0)
50+ if (*tz != NULL)
51 length = tz_offset;
52
53 /* hh:mm:ss(.sss) */
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-03.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-03.patch
new file mode 100644
index 0000000000..fbefc262d4
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-03.patch
@@ -0,0 +1,36 @@
1From 5e8a3c19fcad2936dc5e070cf0767a5c5af907c5 Mon Sep 17 00:00:00 2001
2From: Philip Withnall <pwithnall@gnome.org>
3Date: Tue, 18 Feb 2025 16:55:18 +0000
4Subject: [PATCH 3/6] gdatetime: Track timezone length as an unsigned size_t
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9It’s guaranteed to be in (0, length] by the calculations above.
10
11This avoids the possibility of integer overflow through `gssize` not
12being as big as `size_t`.
13
14Signed-off-by: Philip Withnall <pwithnall@gnome.org>
15
16CVE: CVE-2025-3360
17Upstream-Status: Backport [https://github.com/GNOME/glib/commit/5e8a3c19fcad2936dc5e070cf0767a5c5af907c5]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 glib/gdatetime.c | 3 ++-
21 1 file changed, 2 insertions(+), 1 deletion(-)
22
23diff --git a/glib/gdatetime.c b/glib/gdatetime.c
24index 792c2ed15..6335bcbe2 100644
25--- a/glib/gdatetime.c
26+++ b/glib/gdatetime.c
27@@ -1351,7 +1351,8 @@ parse_iso8601_date (const gchar *text, gsize length,
28 static GTimeZone *
29 parse_iso8601_timezone (const gchar *text, gsize length, size_t *tz_offset)
30 {
31- gint i, tz_length, offset_hours, offset_minutes;
32+ size_t tz_length;
33+ gint i, offset_hours, offset_minutes;
34 gint offset_sign = 1;
35 GTimeZone *tz;
36
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-04.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-04.patch
new file mode 100644
index 0000000000..ce4fa53f26
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-04.patch
@@ -0,0 +1,76 @@
1From 804a3957720449dcfac601da96bd5f5db2b71ef1 Mon Sep 17 00:00:00 2001
2From: Philip Withnall <pwithnall@gnome.org>
3Date: Tue, 18 Feb 2025 17:07:24 +0000
4Subject: [PATCH 4/6] gdatetime: Factor out some string pointer arithmetic
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Makes the following code a little clearer, but doesn’t introduce any
10functional changes.
11
12Signed-off-by: Philip Withnall <pwithnall@gnome.org>
13
14CVE: CVE-2025-3360
15Upstream-Status: Backport [https://github.com/GNOME/glib/commit/804a3957720449dcfac601da96bd5f5db2b71ef1]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 glib/gdatetime.c | 18 ++++++++++--------
19 1 file changed, 10 insertions(+), 8 deletions(-)
20
21diff --git a/glib/gdatetime.c b/glib/gdatetime.c
22index 6335bcbe2..de5dd7af0 100644
23--- a/glib/gdatetime.c
24+++ b/glib/gdatetime.c
25@@ -1355,6 +1355,7 @@ parse_iso8601_timezone (const gchar *text, gsize length, size_t *tz_offset)
26 gint i, offset_hours, offset_minutes;
27 gint offset_sign = 1;
28 GTimeZone *tz;
29+ const char *tz_start;
30
31 /* UTC uses Z suffix */
32 if (length > 0 && text[length - 1] == 'Z')
33@@ -1372,34 +1373,35 @@ parse_iso8601_timezone (const gchar *text, gsize length, size_t *tz_offset)
34 }
35 if (i < 0)
36 return NULL;
37+ tz_start = text + i;
38 tz_length = length - i;
39
40 /* +hh:mm or -hh:mm */
41- if (tz_length == 6 && text[i+3] == ':')
42+ if (tz_length == 6 && tz_start[3] == ':')
43 {
44- if (!get_iso8601_int (text + i + 1, 2, &offset_hours) ||
45- !get_iso8601_int (text + i + 4, 2, &offset_minutes))
46+ if (!get_iso8601_int (tz_start + 1, 2, &offset_hours) ||
47+ !get_iso8601_int (tz_start + 4, 2, &offset_minutes))
48 return NULL;
49 }
50 /* +hhmm or -hhmm */
51 else if (tz_length == 5)
52 {
53- if (!get_iso8601_int (text + i + 1, 2, &offset_hours) ||
54- !get_iso8601_int (text + i + 3, 2, &offset_minutes))
55+ if (!get_iso8601_int (tz_start + 1, 2, &offset_hours) ||
56+ !get_iso8601_int (tz_start + 3, 2, &offset_minutes))
57 return NULL;
58 }
59 /* +hh or -hh */
60 else if (tz_length == 3)
61 {
62- if (!get_iso8601_int (text + i + 1, 2, &offset_hours))
63+ if (!get_iso8601_int (tz_start + 1, 2, &offset_hours))
64 return NULL;
65 offset_minutes = 0;
66 }
67 else
68 return NULL;
69
70- *tz_offset = i;
71- tz = g_time_zone_new_identifier (text + i);
72+ *tz_offset = tz_start - text;
73+ tz = g_time_zone_new_identifier (tz_start);
74
75 /* Double-check that the GTimeZone matches our interpretation of the timezone.
76 * This can fail because our interpretation is less strict than (for example)
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-05.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-05.patch
new file mode 100644
index 0000000000..22415cc6a3
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-05.patch
@@ -0,0 +1,57 @@
1From 4c56ff80344e0d8796eb2307091f7b24ec198aa9 Mon Sep 17 00:00:00 2001
2From: Philip Withnall <pwithnall@gnome.org>
3Date: Tue, 18 Feb 2025 17:28:33 +0000
4Subject: [PATCH 5/6] gdatetime: Factor out an undersized variable
5
6For long input strings, it would have been possible for `i` to overflow.
7Avoid that problem by using the `tz_length` instead, so that we count up
8rather than down.
9
10This commit introduces no functional changes (outside of changing
11undefined behaviour), and can be verified using the identity
12`i === length - tz_length`.
13
14Signed-off-by: Philip Withnall <pwithnall@gnome.org>
15
16CVE: CVE-2025-3360
17Upstream-Status: Backport [https://github.com/GNOME/glib/commit/4c56ff80344e0d8796eb2307091f7b24ec198aa9]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 glib/gdatetime.c | 13 ++++++-------
21 1 file changed, 6 insertions(+), 7 deletions(-)
22
23diff --git a/glib/gdatetime.c b/glib/gdatetime.c
24index de5dd7af0..2f8c864a1 100644
25--- a/glib/gdatetime.c
26+++ b/glib/gdatetime.c
27@@ -1352,7 +1352,7 @@ static GTimeZone *
28 parse_iso8601_timezone (const gchar *text, gsize length, size_t *tz_offset)
29 {
30 size_t tz_length;
31- gint i, offset_hours, offset_minutes;
32+ gint offset_hours, offset_minutes;
33 gint offset_sign = 1;
34 GTimeZone *tz;
35 const char *tz_start;
36@@ -1365,16 +1365,15 @@ parse_iso8601_timezone (const gchar *text, gsize length, size_t *tz_offset)
37 }
38
39 /* Look for '+' or '-' of offset */
40- for (i = length - 1; i >= 0; i--)
41- if (text[i] == '+' || text[i] == '-')
42+ for (tz_length = 1; tz_length <= length; tz_length++)
43+ if (text[length - tz_length] == '+' || text[length - tz_length] == '-')
44 {
45- offset_sign = text[i] == '-' ? -1 : 1;
46+ offset_sign = text[length - tz_length] == '-' ? -1 : 1;
47 break;
48 }
49- if (i < 0)
50+ if (tz_length > length)
51 return NULL;
52- tz_start = text + i;
53- tz_length = length - i;
54+ tz_start = text + length - tz_length;
55
56 /* +hh:mm or -hh:mm */
57 if (tz_length == 6 && tz_start[3] == ':')
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-06.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-06.patch
new file mode 100644
index 0000000000..249e09f0bc
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-3360-06.patch
@@ -0,0 +1,50 @@
1From 7f6d81130ec05406a8820bc753ed03859e88daea Mon Sep 17 00:00:00 2001
2From: Philip Withnall <pwithnall@gnome.org>
3Date: Tue, 18 Feb 2025 18:20:56 +0000
4Subject: [PATCH 6/6] tests: Add some missing GDateTime ISO8601 parsing tests
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9This improves test coverage, adding coverage for some lines which I
10spotted were not covered while testing the preceding commits.
11
12It doesn’t directly test the preceding commits, though.
13
14Signed-off-by: Philip Withnall <pwithnall@gnome.org>
15
16CVE: CVE-2025-3360
17Upstream-Status: Backport [https://github.com/GNOME/glib/commit/7f6d81130ec05406a8820bc753ed03859e88daea]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 glib/tests/gdatetime.c | 17 +++++++++++++++++
21 1 file changed, 17 insertions(+)
22
23diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c
24index 9e1acd097..94dd028a3 100644
25--- a/glib/tests/gdatetime.c
26+++ b/glib/tests/gdatetime.c
27@@ -859,6 +859,23 @@ test_GDateTime_new_from_iso8601 (void)
28 * NaN */
29 dt = g_date_time_new_from_iso8601 ("0005306 000001,666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666600080000-00", NULL);
30 g_assert_null (dt);
31+
32+ /* Various invalid timezone offsets which look like they could be in
33+ * `+hh:mm`, `-hh:mm`, `+hhmm`, `-hhmm`, `+hh` or `-hh` format */
34+ dt = g_date_time_new_from_iso8601 ("2025-02-18T18:14:00+01:xx", NULL);
35+ g_assert_null (dt);
36+ dt = g_date_time_new_from_iso8601 ("2025-02-18T18:14:00+xx:00", NULL);
37+ g_assert_null (dt);
38+ dt = g_date_time_new_from_iso8601 ("2025-02-18T18:14:00+xx:xx", NULL);
39+ g_assert_null (dt);
40+ dt = g_date_time_new_from_iso8601 ("2025-02-18T18:14:00+01xx", NULL);
41+ g_assert_null (dt);
42+ dt = g_date_time_new_from_iso8601 ("2025-02-18T18:14:00+xx00", NULL);
43+ g_assert_null (dt);
44+ dt = g_date_time_new_from_iso8601 ("2025-02-18T18:14:00+xxxx", NULL);
45+ g_assert_null (dt);
46+ dt = g_date_time_new_from_iso8601 ("2025-02-18T18:14:00+xx", NULL);
47+ g_assert_null (dt);
48 }
49
50 typedef struct {
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-01.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-01.patch
new file mode 100644
index 0000000000..f99c4de7e1
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-01.patch
@@ -0,0 +1,120 @@
1From cc647f9e46d55509a93498af19659baf9c80f2e3 Mon Sep 17 00:00:00 2001
2From: Michael Catanzaro <mcatanzaro@redhat.com>
3Date: Thu, 10 Apr 2025 10:57:20 -0500
4Subject: [PATCH 1/2] gstring: carefully handle gssize parameters
5
6Wherever we use gssize to allow passing -1, we need to ensure we don't
7overflow the value by assigning a gsize to it without checking if the
8size exceeds the maximum gssize. The safest way to do this is to just
9use normal gsize everywhere instead and use gssize only for the
10parameter.
11
12Our computers don't have enough RAM to write tests for this. I tried
13forcing string->len to high values for test purposes, but this isn't
14valid and will just cause out of bounds reads/writes due to
15string->allocated_len being unexpectedly small, so I don't think we can
16test this easily.
17
18CVE: CVE-2025-4373
19
20Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/cc647f9e46d55509a93498af19659baf9c80f2e3]
21
22Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
23---
24 glib/gstring.c | 36 +++++++++++++++++++++++-------------
25 1 file changed, 23 insertions(+), 13 deletions(-)
26
27diff --git a/glib/gstring.c b/glib/gstring.c
28index 9f04144..d016b65 100644
29--- a/glib/gstring.c
30+++ b/glib/gstring.c
31@@ -490,8 +490,9 @@ g_string_insert_len (GString *string,
32 return string;
33
34 if (len < 0)
35- len = strlen (val);
36- len_unsigned = len;
37+ len_unsigned = strlen (val);
38+ else
39+ len_unsigned = len;
40
41 if (pos < 0)
42 pos_unsigned = string->len;
43@@ -788,10 +789,12 @@ g_string_insert_c (GString *string,
44 g_string_maybe_expand (string, 1);
45
46 if (pos < 0)
47- pos = string->len;
48+ pos_unsigned = string->len;
49 else
50- g_return_val_if_fail ((gsize) pos <= string->len, string);
51- pos_unsigned = pos;
52+ {
53+ pos_unsigned = pos;
54+ g_return_val_if_fail (pos_unsigned <= string->len, string);
55+ }
56
57 /* If not just an append, move the old stuff */
58 if (pos_unsigned < string->len)
59@@ -824,6 +827,7 @@ g_string_insert_unichar (GString *string,
60 gssize pos,
61 gunichar wc)
62 {
63+ gsize pos_unsigned;
64 gint charlen, first, i;
65 gchar *dest;
66
67@@ -865,15 +869,18 @@ g_string_insert_unichar (GString *string,
68 g_string_maybe_expand (string, charlen);
69
70 if (pos < 0)
71- pos = string->len;
72+ pos_unsigned = string->len;
73 else
74- g_return_val_if_fail ((gsize) pos <= string->len, string);
75+ {
76+ pos_unsigned = pos;
77+ g_return_val_if_fail (pos_unsigned <= string->len, string);
78+ }
79
80 /* If not just an append, move the old stuff */
81- if ((gsize) pos < string->len)
82- memmove (string->str + pos + charlen, string->str + pos, string->len - pos);
83+ if (pos_unsigned < string->len)
84+ memmove (string->str + pos_unsigned + charlen, string->str + pos_unsigned, string->len - pos_unsigned);
85
86- dest = string->str + pos;
87+ dest = string->str + pos_unsigned;
88 /* Code copied from g_unichar_to_utf() */
89 for (i = charlen - 1; i > 0; --i)
90 {
91@@ -931,6 +938,7 @@ g_string_overwrite_len (GString *string,
92 const gchar *val,
93 gssize len)
94 {
95+ gssize len_unsigned;
96 gsize end;
97
98 g_return_val_if_fail (string != NULL, NULL);
99@@ -942,14 +950,16 @@ g_string_overwrite_len (GString *string,
100 g_return_val_if_fail (pos <= string->len, string);
101
102 if (len < 0)
103- len = strlen (val);
104+ len_unsigned = strlen (val);
105+ else
106+ len_unsigned = len;
107
108- end = pos + len;
109+ end = pos + len_unsigned;
110
111 if (end > string->len)
112 g_string_maybe_expand (string, end - string->len);
113
114- memcpy (string->str + pos, val, len);
115+ memcpy (string->str + pos, val, len_unsigned);
116
117 if (end > string->len)
118 {
119--
1202.40.0
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-02.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-02.patch
new file mode 100644
index 0000000000..ea586c90dc
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2025-4373-02.patch
@@ -0,0 +1,29 @@
1From 4d435bb4809793c445846db8fb87e3c9184c4703 Mon Sep 17 00:00:00 2001
2From: Peter Bloomfield <peterbloomfield@bellsouth.net>
3Date: Fri, 11 Apr 2025 05:52:33 +0000
4Subject: [PATCH 2/2] gstring: Make len_unsigned unsigned
5
6CVE: CVE-2025-4373
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/commit/4d435bb4809793c445846db8fb87e3c9184c4703]
9
10Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
11---
12 glib/gstring.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/glib/gstring.c b/glib/gstring.c
16index d016b65..d9ad0c3 100644
17--- a/glib/gstring.c
18+++ b/glib/gstring.c
19@@ -938,7 +938,7 @@ g_string_overwrite_len (GString *string,
20 const gchar *val,
21 gssize len)
22 {
23- gssize len_unsigned;
24+ gsize len_unsigned;
25 gsize end;
26
27 g_return_val_if_fail (string != NULL, NULL);
28--
292.40.0
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0001.patch b/meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0001.patch
new file mode 100644
index 0000000000..1997f88f12
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0001.patch
@@ -0,0 +1,72 @@
1From 39af934b11ec7bb8f943ba963919816266a3316e Mon Sep 17 00:00:00 2001
2From: "Rebecca N. Palmer" <rebecca_palmer@zoho.com>
3Date: Fri, 11 Oct 2024 09:38:52 +0100
4Subject: [PATCH 1/3] gdatetime test: Do not assume PST8PDT was always exactly
5 -8/-7
6
7In newer tzdata, it is an alias for America/Los_Angeles, which has a
8slightly different meaning: DST did not exist there before 1883. As a
9result, we can no longer hard-code the knowledge that interval 0 is
10standard time and interval 1 is summer time, and instead we need to look
11up the correct intervals from known timestamps.
12
13Resolves: https://gitlab.gnome.org/GNOME/glib/-/issues/3502
14Bug-Debian: https://bugs.debian.org/1084190
15[smcv: expand commit message, fix whitespace]
16Signed-off-by: Simon McVittie <smcv@debian.org>
17
18Upstream-Status: Backport
19[https://github.com/GNOME/glib/commit/c0619f08e6c608fd6464d2f0c6970ef0bbfb9ecf]
20
21Signed-off-by: Jinfeng Wang <jinfeng.wang.cn@windriver.com>
22---
23 glib/tests/gdatetime.c | 22 ++++++++++++++++------
24 1 file changed, 16 insertions(+), 6 deletions(-)
25
26diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c
27index 141263b66..cfe00906d 100644
28--- a/glib/tests/gdatetime.c
29+++ b/glib/tests/gdatetime.c
30@@ -2625,6 +2625,7 @@ test_posix_parse (void)
31 {
32 GTimeZone *tz;
33 GDateTime *gdt1, *gdt2;
34+ gint i1, i2;
35
36 /* Check that an unknown zone name falls back to UTC. */
37 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
38@@ -2648,16 +2649,25 @@ test_posix_parse (void)
39
40 /* This fails rules_from_identifier on Unix (though not on Windows)
41 * but passes anyway because PST8PDT is a zone name.
42+ *
43+ * Intervals i1 and i2 (rather than 0 and 1) are needed because in
44+ * recent tzdata, PST8PDT may be an alias for America/Los_Angeles,
45+ * and hence be aware that DST has not always existed.
46+ * https://bugs.debian.org/1084190
47 */
48 tz = g_time_zone_new_identifier ("PST8PDT");
49 g_assert_nonnull (tz);
50 g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "PST8PDT");
51- g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 0), ==, "PST");
52- g_assert_cmpint (g_time_zone_get_offset (tz, 0), ==, - 8 * 3600);
53- g_assert (!g_time_zone_is_dst (tz, 0));
54- g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 1), ==, "PDT");
55- g_assert_cmpint (g_time_zone_get_offset (tz, 1), ==,- 7 * 3600);
56- g_assert (g_time_zone_is_dst (tz, 1));
57+ /* a date in winter = non-DST */
58+ i1 = g_time_zone_find_interval (tz, G_TIME_TYPE_STANDARD, 0);
59+ /* approximately 6 months in seconds, i.e. a date in summer = DST */
60+ i2 = g_time_zone_find_interval (tz, G_TIME_TYPE_DAYLIGHT, 15000000);
61+ g_assert_cmpstr (g_time_zone_get_abbreviation (tz, i1), ==, "PST");
62+ g_assert_cmpint (g_time_zone_get_offset (tz, i1), ==, - 8 * 3600);
63+ g_assert (!g_time_zone_is_dst (tz, i1));
64+ g_assert_cmpstr (g_time_zone_get_abbreviation (tz, i2), ==, "PDT");
65+ g_assert_cmpint (g_time_zone_get_offset (tz, i2), ==,- 7 * 3600);
66+ g_assert (g_time_zone_is_dst (tz, i2));
67 g_time_zone_unref (tz);
68
69 tz = g_time_zone_new_identifier ("PST8PDT6:32:15");
70--
712.34.1
72
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0002.patch b/meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0002.patch
new file mode 100644
index 0000000000..b3d11b5076
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0002.patch
@@ -0,0 +1,65 @@
1From 27eb6eb01d5752c201dd2ec02f656463d12ebee0 Mon Sep 17 00:00:00 2001
2From: Simon McVittie <smcv@debian.org>
3Date: Fri, 18 Oct 2024 11:03:19 +0100
4Subject: [PATCH 2/3] gdatetime test: Try to make PST8PDT test more obviously
5 correct
6
7Instead of using timestamp 0 as a magic number (in this case interpreted
8as 1970-01-01T00:00:00-08:00), calculate a timestamp from a recent
9year/month/day in winter, in this case 2024-01-01T00:00:00-08:00.
10
11Similarly, instead of using a timestamp 15 million seconds later
12(1970-06-23T15:40:00-07:00), calculate a timestamp from a recent
13year/month/day in summer, in this case 2024-07-01T00:00:00-07:00.
14
15Signed-off-by: Simon McVittie <smcv@debian.org>
16
17Upstream-Status: Backport
18[https://github.com/GNOME/glib/commit/30e9cfa5733003cd1079e0e9e8a4bff1a191171a]
19
20Signed-off-by: Jinfeng Wang <jinfeng.wang.cn@windriver.com>
21---
22 glib/tests/gdatetime.c | 15 +++++++--------
23 1 file changed, 7 insertions(+), 8 deletions(-)
24
25diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c
26index cfe00906d..22aa5112a 100644
27--- a/glib/tests/gdatetime.c
28+++ b/glib/tests/gdatetime.c
29@@ -2649,19 +2649,16 @@ test_posix_parse (void)
30
31 /* This fails rules_from_identifier on Unix (though not on Windows)
32 * but passes anyway because PST8PDT is a zone name.
33- *
34- * Intervals i1 and i2 (rather than 0 and 1) are needed because in
35- * recent tzdata, PST8PDT may be an alias for America/Los_Angeles,
36- * and hence be aware that DST has not always existed.
37- * https://bugs.debian.org/1084190
38 */
39 tz = g_time_zone_new_identifier ("PST8PDT");
40 g_assert_nonnull (tz);
41 g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "PST8PDT");
42 /* a date in winter = non-DST */
43- i1 = g_time_zone_find_interval (tz, G_TIME_TYPE_STANDARD, 0);
44- /* approximately 6 months in seconds, i.e. a date in summer = DST */
45- i2 = g_time_zone_find_interval (tz, G_TIME_TYPE_DAYLIGHT, 15000000);
46+ gdt1 = g_date_time_new (tz, 2024, 1, 1, 0, 0, 0);
47+ i1 = g_time_zone_find_interval (tz, G_TIME_TYPE_STANDARD, g_date_time_to_unix (gdt1));
48+ /* a date in summer = DST */
49+ gdt2 = g_date_time_new (tz, 2024, 7, 1, 0, 0, 0);
50+ i2 = g_time_zone_find_interval (tz, G_TIME_TYPE_DAYLIGHT, g_date_time_to_unix (gdt2));
51 g_assert_cmpstr (g_time_zone_get_abbreviation (tz, i1), ==, "PST");
52 g_assert_cmpint (g_time_zone_get_offset (tz, i1), ==, - 8 * 3600);
53 g_assert (!g_time_zone_is_dst (tz, i1));
54@@ -2669,6 +2666,8 @@ test_posix_parse (void)
55 g_assert_cmpint (g_time_zone_get_offset (tz, i2), ==,- 7 * 3600);
56 g_assert (g_time_zone_is_dst (tz, i2));
57 g_time_zone_unref (tz);
58+ g_date_time_unref (gdt1);
59+ g_date_time_unref (gdt2);
60
61 tz = g_time_zone_new_identifier ("PST8PDT6:32:15");
62 #ifdef G_OS_WIN32
63--
642.34.1
65
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0003.patch b/meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0003.patch
new file mode 100644
index 0000000000..b9afad15c5
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/gdatetime-test-fail-0003.patch
@@ -0,0 +1,63 @@
1From 9dd5e9f49620f13a3eaf2b862b7aa3c680953f01 Mon Sep 17 00:00:00 2001
2From: Simon McVittie <smcv@debian.org>
3Date: Fri, 18 Oct 2024 11:23:42 +0100
4Subject: [PATCH 3/3] gdatetime test: Fall back if legacy System V PST8PDT is
5 not available
6
7On recent versions of Debian, PST8PDT is part of the tzdata-legacy
8package, which is not always installed and might disappear in future.
9Successfully tested with and without tzdata-legacy on Debian unstable.
10
11Signed-off-by: Simon McVittie <smcv@debian.org>
12
13Upstream-Status: Backport
14[https://github.com/GNOME/glib/commit/fe2699369f79981dcf913af4cfd98b342b84a9c1]
15
16Signed-off-by: Jinfeng Wang <jinfeng.wang.cn@windriver.com>
17---
18 glib/tests/gdatetime.c | 19 +++++++++++++++++--
19 1 file changed, 17 insertions(+), 2 deletions(-)
20
21diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c
22index 22aa5112a..4e963b171 100644
23--- a/glib/tests/gdatetime.c
24+++ b/glib/tests/gdatetime.c
25@@ -2626,6 +2626,7 @@ test_posix_parse (void)
26 GTimeZone *tz;
27 GDateTime *gdt1, *gdt2;
28 gint i1, i2;
29+ const char *expect_id;
30
31 /* Check that an unknown zone name falls back to UTC. */
32 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
33@@ -2648,11 +2649,25 @@ test_posix_parse (void)
34 g_time_zone_unref (tz);
35
36 /* This fails rules_from_identifier on Unix (though not on Windows)
37- * but passes anyway because PST8PDT is a zone name.
38+ * but can pass anyway because PST8PDT is a legacy System V zone name.
39 */
40 tz = g_time_zone_new_identifier ("PST8PDT");
41+ expect_id = "PST8PDT";
42+
43+#ifndef G_OS_WIN32
44+ /* PST8PDT is in tzdata's "backward" set, packaged as tzdata-legacy and
45+ * not always present in some OSs; fall back to the equivalent geographical
46+ * name if the "backward" time zones are absent. */
47+ if (tz == NULL)
48+ {
49+ g_test_message ("Legacy PST8PDT time zone not available, falling back");
50+ tz = g_time_zone_new_identifier ("America/Los_Angeles");
51+ expect_id = "America/Los_Angeles";
52+ }
53+#endif
54+
55 g_assert_nonnull (tz);
56- g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "PST8PDT");
57+ g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, expect_id);
58 /* a date in winter = non-DST */
59 gdt1 = g_date_time_new (tz, 2024, 1, 1, 0, 0, 0);
60 i1 = g_time_zone_find_interval (tz, G_TIME_TYPE_STANDARD, g_date_time_to_unix (gdt1));
61--
622.34.1
63
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb
index 1a4278b1bc..e1a3b57270 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb
+++ b/meta/recipes-core/glib-2.0/glib-2.0_2.78.6.bb
@@ -17,8 +17,20 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
17 file://0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch \ 17 file://0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch \
18 file://memory-monitor.patch \ 18 file://memory-monitor.patch \
19 file://skip-timeout.patch \ 19 file://skip-timeout.patch \
20 file://CVE-2024-52533.patch \
21 file://gdatetime-test-fail-0001.patch \
22 file://gdatetime-test-fail-0002.patch \
23 file://gdatetime-test-fail-0003.patch \
24 file://CVE-2025-3360-01.patch \
25 file://CVE-2025-3360-02.patch \
26 file://CVE-2025-3360-03.patch \
27 file://CVE-2025-3360-04.patch \
28 file://CVE-2025-3360-05.patch \
29 file://CVE-2025-3360-06.patch \
30 file://CVE-2025-4373-01.patch \
31 file://CVE-2025-4373-02.patch \
20 " 32 "
21SRC_URI:append:class-native = " file://relocate-modules.patch \ 33SRC_URI:append:class-native = " file://relocate-modules.patch \
22 file://0001-meson.build-do-not-enable-pidfd-features-on-native-g.patch \ 34 file://0001-meson.build-do-not-enable-pidfd-features-on-native-g.patch \
23 " 35 "
24 36
diff --git a/meta/recipes-core/glibc/glibc-version.inc b/meta/recipes-core/glibc/glibc-version.inc
index 955b22bc38..0130613936 100644
--- a/meta/recipes-core/glibc/glibc-version.inc
+++ b/meta/recipes-core/glibc/glibc-version.inc
@@ -1,6 +1,6 @@
1SRCBRANCH ?= "release/2.39/master" 1SRCBRANCH ?= "release/2.39/master"
2PV = "2.39+git" 2PV = "2.39+git"
3SRCREV_glibc ?= "e8f521709731ce3ae8d6f1eca30135d5c0606f02" 3SRCREV_glibc ?= "06a70769fd0b2e1f2a3085ad50ab620282bd77b3"
4SRCREV_localedef ?= "fab74f31b3811df543e24b6de47efdf45b538abc" 4SRCREV_localedef ?= "fab74f31b3811df543e24b6de47efdf45b538abc"
5 5
6GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git;protocol=https" 6GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git;protocol=https"
diff --git a/meta/recipes-core/glibc/glibc-y2038-tests_2.39.bb b/meta/recipes-core/glibc/glibc-y2038-tests_2.39.bb
deleted file mode 100644
index be49ca4cb7..0000000000
--- a/meta/recipes-core/glibc/glibc-y2038-tests_2.39.bb
+++ /dev/null
@@ -1,119 +0,0 @@
1require glibc_${PV}.bb
2require glibc-tests.inc
3
4inherit ptest features_check
5REQUIRED_DISTRO_FEATURES = "ptest"
6
7SRC_URI += "\
8 file://run-ptest \
9"
10
11SUMMARY = "glibc tests using time32/time64 interfaces to be run with ptest for the purpose of checking y2038 compatiblity"
12
13# Erase some variables already set by glibc_${PV}
14python __anonymous() {
15 # Remove packages provided by glibc build, we only need a subset of them
16 d.setVar("PACKAGES", "${PN} ${PN}-ptest")
17
18 d.setVar("PROVIDES", "${PN} ${PN}-ptest")
19
20 bbclassextend = d.getVar("BBCLASSEXTEND").replace("nativesdk", "").strip()
21 d.setVar("BBCLASSEXTEND", bbclassextend)
22 d.setVar("RRECOMMENDS", "")
23 d.setVar("SYSTEMD_SERVICE:nscd", "")
24 d.setVar("SYSTEMD_PACKAGES", "")
25}
26
27# Remove any leftovers from original glibc recipe
28RPROVIDES:${PN} = "${PN}"
29RRECOMMENDS:${PN} = ""
30RDEPENDS:${PN} = "glibc libgcc sed bash"
31RDEPENDS:${PN}-ptest = "${PN}"
32DEPENDS += "sed"
33
34export oe_srcdir="${exec_prefix}/src/debug/glibc/${PV}/"
35
36# Just build tests for target - do not run them
37do_check:append () {
38 oe_runmake -i check run-built-tests=no
39}
40addtask do_check after do_compile before do_install_ptest_base
41
42glibc_strip_build_directory () {
43 # Delete all non executable files from build directory
44 find ${B} ! -executable -type f -delete
45
46 # Remove build dynamic libraries and links to them as
47 # those are already installed in the target device
48 find ${B} -type f -name "*.so" -delete
49 find ${B} -type l -name "*.so*" -delete
50
51 # Remove headers (installed with glibc)
52 find ${B} -type f -name "*.h" -delete
53
54 find ${B} -type f -name "isomac" -delete
55 find ${B} -type f -name "annexc" -delete
56}
57
58do_install_ptest_base () {
59 glibc_strip_build_directory
60
61 ls -r ${B}/*/*-time64 > ${B}/tst_time64
62
63 # Remove '-time64' suffix - those tests are also time related
64 sed -e "s/-time64$//" ${B}/tst_time64 > ${B}/tst_time_tmp
65 tst_time=$(cat ${B}/tst_time_tmp ${B}/tst_time64)
66
67 rm ${B}/tst_time_tmp ${B}/tst_time64
68 echo "${tst_time}"
69
70 # Install build test programs to the image
71 install -d ${D}${PTEST_PATH}/tests/glibc-ptest/
72
73 for f in "${tst_time}"
74 do
75 cp -r ${f} ${D}${PTEST_PATH}/tests/glibc-ptest/
76 done
77
78 install -d ${D}${PTEST_PATH}
79 cp ${WORKDIR}/run-ptest ${D}${PTEST_PATH}/
80
81}
82
83# The datadir directory is required to allow core (and reused)
84# glibc cleanup function to finish correctly, as this directory
85# is not created for ptests
86stash_locale_package_cleanup:prepend () {
87 mkdir -p ${PKGD}${datadir}
88}
89
90stash_locale_sysroot_cleanup:prepend () {
91 mkdir -p ${SYSROOT_DESTDIR}${datadir}
92}
93
94# Prevent the do_package() task to set 'libc6' prefix
95# for glibc tests related packages
96python populate_packages:prepend () {
97 if d.getVar('DEBIAN_NAMES'):
98 d.setVar('DEBIAN_NAMES', '')
99}
100
101FILES:${PN} = "${PTEST_PATH}/* /usr/src/debug/${PN}/*"
102
103EXCLUDE_FROM_SHLIBS = "1"
104
105# Install debug data in .debug and sources in /usr/src/debug
106# It is more handy to have _all_ the sources and symbols in one
107# place (package) as this recipe will be used for validation and
108# debugging.
109PACKAGE_DEBUG_SPLIT_STYLE = ".debug"
110
111# glibc test cases violate by default some Yocto/OE checks (staticdev,
112# textrel)
113# 'debug-files' - add everything (including debug) into one package
114# (no need to install/build *-src package)
115INSANE_SKIP:${PN} += "staticdev textrel debug-files rpaths"
116
117deltask do_stash_locale
118do_install[noexec] = "1"
119do_populate_sysroot[noexec] = "1"
diff --git a/meta/recipes-core/glibc/glibc/0001-stdlib-Add-single-threaded-fast-path-to-rand.patch b/meta/recipes-core/glibc/glibc/0001-stdlib-Add-single-threaded-fast-path-to-rand.patch
new file mode 100644
index 0000000000..736fc51f38
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0001-stdlib-Add-single-threaded-fast-path-to-rand.patch
@@ -0,0 +1,47 @@
1From 4f54b0dfc16dbe0df86afccb90e447df5f7f571e Mon Sep 17 00:00:00 2001
2From: Wilco Dijkstra <wilco.dijkstra@arm.com>
3Date: Mon, 18 Mar 2024 15:18:20 +0000
4Subject: [PATCH] stdlib: Add single-threaded fast path to rand()
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Improve performance of rand() and __random() by adding a single-threaded
10fast path. Bench-random-lock shows about 5x speedup on Neoverse V1.
11
12Upstream-Status: Backport [be0cfd848d9ad7378800d6302bc11467cf2b514f]
13
14Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
15Signed-off-by: Haixiao Yan <haixiao.yan.cn@windriver.com>
16---
17 stdlib/random.c | 7 +++++++
18 1 file changed, 7 insertions(+)
19
20diff --git a/stdlib/random.c b/stdlib/random.c
21index 17cc61ba8f55..5d482a857065 100644
22--- a/stdlib/random.c
23+++ b/stdlib/random.c
24@@ -51,6 +51,7 @@
25 SUCH DAMAGE.*/
26
27 #include <libc-lock.h>
28+#include <sys/single_threaded.h>
29 #include <limits.h>
30 #include <stddef.h>
31 #include <stdlib.h>
32@@ -288,6 +289,12 @@ __random (void)
33 {
34 int32_t retval;
35
36+ if (SINGLE_THREAD_P)
37+ {
38+ (void) __random_r (&unsafe_state, &retval);
39+ return retval;
40+ }
41+
42 __libc_lock_lock (lock);
43
44 (void) __random_r (&unsafe_state, &retval);
45--
462.34.1
47
diff --git a/meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch b/meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
index 9bdfa76318..411ca55d9f 100644
--- a/meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
+++ b/meta/recipes-core/glibc/glibc/0016-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
@@ -14,6 +14,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
14 sysdeps/aarch64/bits/wordsize.h | 11 +++++++++-- 14 sysdeps/aarch64/bits/wordsize.h | 11 +++++++++--
15 sysdeps/arm/bits/wordsize.h | 22 +--------------------- 15 sysdeps/arm/bits/wordsize.h | 22 +---------------------
16 2 files changed, 10 insertions(+), 23 deletions(-) 16 2 files changed, 10 insertions(+), 23 deletions(-)
17 mode change 100644 => 120000 sysdeps/arm/bits/wordsize.h
17 18
18diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/aarch64/bits/wordsize.h 19diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/aarch64/bits/wordsize.h
19index 118e59172d..ff86359fe8 100644 20index 118e59172d..ff86359fe8 100644
diff --git a/meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch b/meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch
index b527ddffc8..9e27a51e41 100644
--- a/meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch
+++ b/meta/recipes-core/glibc/glibc/0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch
@@ -17,7 +17,7 @@ diff --git a/support/Makefile b/support/Makefile
17index 362a51f882..56d2b37058 100644 17index 362a51f882..56d2b37058 100644
18--- a/support/Makefile 18--- a/support/Makefile
19+++ b/support/Makefile 19+++ b/support/Makefile
20@@ -228,9 +228,9 @@ libsupport-inhibit-o += .o 20@@ -229,9 +229,9 @@ libsupport-inhibit-o += .o
21 endif 21 endif
22 22
23 CFLAGS-support_paths.c = \ 23 CFLAGS-support_paths.c = \
diff --git a/meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch b/meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch
index c0a467fcec..7c44acb013 100644
--- a/meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch
+++ b/meta/recipes-core/glibc/glibc/0023-qemu-stale-process.patch
@@ -22,16 +22,16 @@ diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefil
22 tst-sigtimedwait \ 22 tst-sigtimedwait \
23 tst-sync_file_range \ 23 tst-sync_file_range \
24 tst-sysconf-iov_max \ 24 tst-sysconf-iov_max \
25@@ -233,6 +232,8 @@ 25@@ -234,6 +233,8 @@ tests += \
26 tst-timerfd \ 26 tst-timerfd \
27 tst-ttyname-direct \ 27 tst-ttyname-direct \
28 tst-ttyname-namespace \ 28 tst-ttyname-namespace \
29+ # Skip this test to avoid stale qemu process 29+ # Skip this test to avoid stale qemu process
30+ # tst-scm_rights \ 30+ # tst-scm_rights \
31 # tests 31 # tests
32 32
33 # process_madvise requires CAP_SYS_ADMIN. 33 # process_madvise requires CAP_SYS_ADMIN.
34@@ -270,9 +271,10 @@ 34@@ -271,9 +272,10 @@ tests-time64 += \
35 tst-ntp_gettimex-time64 \ 35 tst-ntp_gettimex-time64 \
36 tst-ppoll-time64 \ 36 tst-ppoll-time64 \
37 tst-prctl-time64 \ 37 tst-prctl-time64 \
@@ -41,5 +41,5 @@ diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefil
41+ # Skip this test to avoid stale qemu process 41+ # Skip this test to avoid stale qemu process
42+ # tst-scm_rights-time64 \ 42+ # tst-scm_rights-time64 \
43 # tests-time64 43 # tests-time64
44 44
45 tests-clone-internal = \ 45 tests-clone-internal = \
diff --git a/meta/recipes-core/glibc/glibc/run-ptest b/meta/recipes-core/glibc/glibc/run-ptest
deleted file mode 100755
index cb71c75682..0000000000
--- a/meta/recipes-core/glibc/glibc/run-ptest
+++ /dev/null
@@ -1,37 +0,0 @@
1#!/bin/bash
2# ptest script for glibc - to run time related tests to
3# facilitate Y2038 validation
4# Run with 'ptest-runner glibc-tests'
5
6output() {
7 retcode=$?
8 if [ $retcode -eq 0 ]
9 then echo "PASS: $i"
10 elif [ $retcode -eq 77 ]
11 then echo "SKIP: $i"
12 else echo "FAIL: $i"
13 fi
14}
15
16# Allow altering time on the target
17export GLIBC_TEST_ALLOW_TIME_SETTING="1"
18
19tst_time64=$(ls -r ${PWD}/tests/glibc-ptest/*-time64)
20
21# Remove '-time64' suffix - those tests are also time
22# related
23tst_time_tmp=$(sed -e "s/-time64$//" <<< ${tst_time64})
24
25# Do not run tests supporting only 32 bit time
26#for i in ${tst_time_tmp}
27#do
28# $i >/dev/null 2>&1
29# output
30#done
31
32# Run tests supporting only 64 bit time
33for i in ${tst_time64}
34do
35 $i >/dev/null 2>&1
36 output
37done
diff --git a/meta/recipes-core/glibc/glibc_2.39.bb b/meta/recipes-core/glibc/glibc_2.39.bb
index 2484ae1cd9..c87eb76f41 100644
--- a/meta/recipes-core/glibc/glibc_2.39.bb
+++ b/meta/recipes-core/glibc/glibc_2.39.bb
@@ -17,7 +17,8 @@ Allows for ASLR bypass so can bypass some hardening, not an exploit in itself, m
17easier access for another. 'ASLR bypass itself is not a vulnerability.'" 17easier access for another. 'ASLR bypass itself is not a vulnerability.'"
18 18
19CVE_STATUS_GROUPS += "CVE_STATUS_STABLE_BACKPORTS" 19CVE_STATUS_GROUPS += "CVE_STATUS_STABLE_BACKPORTS"
20CVE_STATUS_STABLE_BACKPORTS = "CVE-2024-2961 CVE-2024-33599 CVE-2024-33600 CVE-2024-33601 CVE-2024-33602" 20CVE_STATUS_STABLE_BACKPORTS = "CVE-2024-2961 CVE-2024-33599 CVE-2024-33600 CVE-2024-33601 CVE-2024-33602 CVE-2025-0395 \
21 CVE-2025-4802 CVE-2025-5702"
21CVE_STATUS_STABLE_BACKPORTS[status] = "cpe-stable-backport: fix available in used git hash" 22CVE_STATUS_STABLE_BACKPORTS[status] = "cpe-stable-backport: fix available in used git hash"
22 23
23DEPENDS += "gperf-native bison-native" 24DEPENDS += "gperf-native bison-native"
@@ -53,6 +54,7 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
53 file://0021-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \ 54 file://0021-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \
54 file://0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch \ 55 file://0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch \
55 file://0023-qemu-stale-process.patch \ 56 file://0023-qemu-stale-process.patch \
57 file://0001-stdlib-Add-single-threaded-fast-path-to-rand.patch \
56" 58"
57S = "${WORKDIR}/git" 59S = "${WORKDIR}/git"
58B = "${WORKDIR}/build-${TARGET_SYS}" 60B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/meta/recipes-core/images/build-appliance-image_15.0.0.bb
index 9c29cf600d..fc942e3565 100644
--- a/meta/recipes-core/images/build-appliance-image_15.0.0.bb
+++ b/meta/recipes-core/images/build-appliance-image_15.0.0.bb
@@ -26,7 +26,7 @@ inherit core-image setuptools3 features_check
26 26
27REQUIRED_DISTRO_FEATURES += "xattr" 27REQUIRED_DISTRO_FEATURES += "xattr"
28 28
29SRCREV ?= "bf88a67b45235236d6655dce604e632eb94a813c" 29SRCREV ?= "1c462cc39e557276861323b7adcef4fedbdf75e9"
30SRC_URI = "git://git.yoctoproject.org/poky;branch=scarthgap \ 30SRC_URI = "git://git.yoctoproject.org/poky;branch=scarthgap \
31 file://Yocto_Build_Appliance.vmx \ 31 file://Yocto_Build_Appliance.vmx \
32 file://Yocto_Build_Appliance.vmxf \ 32 file://Yocto_Build_Appliance.vmxf \
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/functions b/meta/recipes-core/initscripts/initscripts-1.0/functions
index 35aebd4a55..7fc19c808b 100755
--- a/meta/recipes-core/initscripts/initscripts-1.0/functions
+++ b/meta/recipes-core/initscripts/initscripts-1.0/functions
@@ -92,3 +92,24 @@ passed() {
92 echo -n -e "${BRACKET}[${SUCCESS} PASS ${BRACKET}]${NORMAL}" 92 echo -n -e "${BRACKET}[${SUCCESS} PASS ${BRACKET}]${NORMAL}"
93 return $rc 93 return $rc
94} 94}
95
96log_success_msg()
97{
98 echo -n $@
99 success
100 echo
101}
102
103log_failure_msg()
104{
105 echo -n $@
106 failure
107 echo
108}
109
110log_warning_msg()
111{
112 echo -n $@
113 warning
114 echo
115}
diff --git a/meta/recipes-core/initscripts/initscripts_1.0.bb b/meta/recipes-core/initscripts/initscripts_1.0.bb
index e61ac554f3..56ee65ac5b 100644
--- a/meta/recipes-core/initscripts/initscripts_1.0.bb
+++ b/meta/recipes-core/initscripts/initscripts_1.0.bb
@@ -53,7 +53,6 @@ RDEPENDS:${PN} = "initd-functions \
53# Recommend pn-functions so that it will be a preferred default provider for initd-functions 53# Recommend pn-functions so that it will be a preferred default provider for initd-functions
54RRECOMMENDS:${PN} = "${PN}-functions" 54RRECOMMENDS:${PN} = "${PN}-functions"
55RPROVIDES:${PN}-functions = "initd-functions" 55RPROVIDES:${PN}-functions = "initd-functions"
56RCONFLICTS:${PN}-functions = "lsbinitscripts"
57FILES:${PN}-functions = "${sysconfdir}/init.d/functions*" 56FILES:${PN}-functions = "${sysconfdir}/init.d/functions*"
58FILES:${PN}-sushell = "${base_sbindir}/sushell" 57FILES:${PN}-sushell = "${base_sbindir}/sushell"
59 58
diff --git a/meta/recipes-core/libxml/libxml2/CVE-2025-32414.patch b/meta/recipes-core/libxml/libxml2/CVE-2025-32414.patch
new file mode 100644
index 0000000000..97bf75f059
--- /dev/null
+++ b/meta/recipes-core/libxml/libxml2/CVE-2025-32414.patch
@@ -0,0 +1,74 @@
1From d7657811964eac1cb9743bb98649278ad948f0d2 Mon Sep 17 00:00:00 2001
2From: Maks Verver <maks@verver.ch>
3Date: Tue, 8 Apr 2025 13:13:55 +0200
4Subject: [PATCH] [CVE-2025-32414] python: Read at most len/4 characters.
5
6Fixes #889 by reserving space in the buffer for UTF-8 encoding of text.
7
8CVE: CVE-2025-32414
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/d7657811964eac1cb9743bb98649278ad948f0d2]
10Signed-off-by: Peter Marko <peter.marko@siemens.com>
11---
12 python/libxml.c | 28 ++++++++++++++++++----------
13 1 file changed, 18 insertions(+), 10 deletions(-)
14
15diff --git a/python/libxml.c b/python/libxml.c
16index 1fe8d685..2bf14078 100644
17--- a/python/libxml.c
18+++ b/python/libxml.c
19@@ -248,7 +248,9 @@ xmlPythonFileReadRaw (void * context, char * buffer, int len) {
20
21 file = (PyObject *) context;
22 if (file == NULL) return(-1);
23- ret = PyObject_CallMethod(file, (char *) "read", (char *) "(i)", len);
24+ /* When read() returns a string, the length is in characters not bytes, so
25+ request at most len / 4 characters to leave space for UTF-8 encoding. */
26+ ret = PyObject_CallMethod(file, (char *) "read", (char *) "(i)", len / 4);
27 if (ret == NULL) {
28 printf("xmlPythonFileReadRaw: result is NULL\n");
29 return(-1);
30@@ -283,10 +285,12 @@ xmlPythonFileReadRaw (void * context, char * buffer, int len) {
31 Py_DECREF(ret);
32 return(-1);
33 }
34- if (lenread > len)
35- memcpy(buffer, data, len);
36- else
37- memcpy(buffer, data, lenread);
38+ if (lenread < 0 || lenread > len) {
39+ printf("xmlPythonFileReadRaw: invalid lenread\n");
40+ Py_DECREF(ret);
41+ return(-1);
42+ }
43+ memcpy(buffer, data, lenread);
44 Py_DECREF(ret);
45 return(lenread);
46 }
47@@ -310,7 +314,9 @@ xmlPythonFileRead (void * context, char * buffer, int len) {
48
49 file = (PyObject *) context;
50 if (file == NULL) return(-1);
51- ret = PyObject_CallMethod(file, (char *) "io_read", (char *) "(i)", len);
52+ /* When io_read() returns a string, the length is in characters not bytes, so
53+ request at most len / 4 characters to leave space for UTF-8 encoding. */
54+ ret = PyObject_CallMethod(file, (char *) "io_read", (char *) "(i)", len / 4);
55 if (ret == NULL) {
56 printf("xmlPythonFileRead: result is NULL\n");
57 return(-1);
58@@ -345,10 +351,12 @@ xmlPythonFileRead (void * context, char * buffer, int len) {
59 Py_DECREF(ret);
60 return(-1);
61 }
62- if (lenread > len)
63- memcpy(buffer, data, len);
64- else
65- memcpy(buffer, data, lenread);
66+ if (lenread < 0 || lenread > len) {
67+ printf("xmlPythonFileRead: invalid lenread\n");
68+ Py_DECREF(ret);
69+ return(-1);
70+ }
71+ memcpy(buffer, data, lenread);
72 Py_DECREF(ret);
73 return(lenread);
74 }
diff --git a/meta/recipes-core/libxml/libxml2/CVE-2025-32415.patch b/meta/recipes-core/libxml/libxml2/CVE-2025-32415.patch
new file mode 100644
index 0000000000..d8ff654a23
--- /dev/null
+++ b/meta/recipes-core/libxml/libxml2/CVE-2025-32415.patch
@@ -0,0 +1,39 @@
1From 384cc7c182fc00c6d5e2ab4b5e3671b2e3f93c84 Mon Sep 17 00:00:00 2001
2From: Nick Wellnhofer <wellnhofer@aevum.de>
3Date: Sun, 6 Apr 2025 12:41:11 +0200
4Subject: [PATCH] [CVE-2025-32415] schemas: Fix heap buffer overflow in
5 xmlSchemaIDCFillNodeTables
6
7Don't use local variable which could contain a stale value.
8
9Fixes #890.
10
11CVE: CVE-2025-32415
12Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/384cc7c182fc00c6d5e2ab4b5e3671b2e3f93c84]
13Signed-off-by: Peter Marko <peter.marko@siemens.com>
14---
15 xmlschemas.c | 4 ++--
16 1 file changed, 2 insertions(+), 2 deletions(-)
17
18diff --git a/xmlschemas.c b/xmlschemas.c
19index 28b14bd4..428e3c82 100644
20--- a/xmlschemas.c
21+++ b/xmlschemas.c
22@@ -23324,7 +23324,7 @@ xmlSchemaIDCFillNodeTables(xmlSchemaValidCtxtPtr vctxt,
23 j++;
24 } while (j < nbDupls);
25 }
26- if (nbNodeTable) {
27+ if (bind->nbNodes) {
28 j = 0;
29 do {
30 if (nbFields == 1) {
31@@ -23375,7 +23375,7 @@ xmlSchemaIDCFillNodeTables(xmlSchemaValidCtxtPtr vctxt,
32
33 next_node_table_entry:
34 j++;
35- } while (j < nbNodeTable);
36+ } while (j < bind->nbNodes);
37 }
38 /*
39 * If everything is fine, then add the IDC target-node to
diff --git a/meta/recipes-core/libxml/libxml2_2.12.8.bb b/meta/recipes-core/libxml/libxml2_2.12.10.bb
index fb103f0273..2eea65732b 100644
--- a/meta/recipes-core/libxml/libxml2_2.12.8.bb
+++ b/meta/recipes-core/libxml/libxml2_2.12.10.bb
@@ -18,9 +18,11 @@ inherit gnomebase
18SRC_URI += "http://www.w3.org/XML/Test/xmlts20130923.tar;subdir=${BP};name=testtar \ 18SRC_URI += "http://www.w3.org/XML/Test/xmlts20130923.tar;subdir=${BP};name=testtar \
19 file://run-ptest \ 19 file://run-ptest \
20 file://install-tests.patch \ 20 file://install-tests.patch \
21 file://CVE-2025-32414.patch \
22 file://CVE-2025-32415.patch \
21 " 23 "
22 24
23SRC_URI[archive.sha256sum] = "43ad877b018bc63deb2468d71f95219c2fac196876ef36d1bee51d226173ec93" 25SRC_URI[archive.sha256sum] = "c3d8c0c34aa39098f66576fe51969db12a5100b956233dc56506f7a8679be995"
24SRC_URI[testtar.sha256sum] = "c6b2d42ee50b8b236e711a97d68e6c4b5c8d83e69a2be4722379f08702ea7273" 26SRC_URI[testtar.sha256sum] = "c6b2d42ee50b8b236e711a97d68e6c4b5c8d83e69a2be4722379f08702ea7273"
25 27
26# Disputed as a security issue, but fixed in d39f780 28# Disputed as a security issue, but fixed in d39f780
diff --git a/meta/recipes-core/meta/buildtools-tarball.bb b/meta/recipes-core/meta/buildtools-tarball.bb
index e2ce5b3ecf..8e78169e23 100644
--- a/meta/recipes-core/meta/buildtools-tarball.bb
+++ b/meta/recipes-core/meta/buildtools-tarball.bb
@@ -73,12 +73,6 @@ create_sdk_files:append () {
73 touch $script 73 touch $script
74 echo 'export PATH="${SDKPATHNATIVE}${bindir_nativesdk}:${SDKPATHNATIVE}${sbindir_nativesdk}:${SDKPATHNATIVE}${base_bindir_nativesdk}:${SDKPATHNATIVE}${base_sbindir_nativesdk}:$PATH"' >> $script 74 echo 'export PATH="${SDKPATHNATIVE}${bindir_nativesdk}:${SDKPATHNATIVE}${sbindir_nativesdk}:${SDKPATHNATIVE}${base_bindir_nativesdk}:${SDKPATHNATIVE}${base_sbindir_nativesdk}:$PATH"' >> $script
75 echo 'export OECORE_NATIVE_SYSROOT="${SDKPATHNATIVE}"' >> $script 75 echo 'export OECORE_NATIVE_SYSROOT="${SDKPATHNATIVE}"' >> $script
76 if [ -e "${SDK_OUTPUT}${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt" ]; then
77 echo 'export GIT_SSL_CAINFO="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
78 echo 'export SSL_CERT_FILE="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
79 echo 'export REQUESTS_CA_BUNDLE="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
80 echo 'export CURL_CA_BUNDLE="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
81 fi
82 echo 'HOST_PKG_PATH=$(command -p pkg-config --variable=pc_path pkg-config 2>/dev/null)' >>$script 76 echo 'HOST_PKG_PATH=$(command -p pkg-config --variable=pc_path pkg-config 2>/dev/null)' >>$script
83 echo 'export PKG_CONFIG_LIBDIR=${SDKPATHNATIVE}/${libdir}/pkgconfig:${SDKPATHNATIVE}/${datadir}/pkgconfig:${HOST_PKG_PATH:-/usr/lib/pkgconfig:/usr/share/pkgconfig}' >>$script 77 echo 'export PKG_CONFIG_LIBDIR=${SDKPATHNATIVE}/${libdir}/pkgconfig:${SDKPATHNATIVE}/${datadir}/pkgconfig:${HOST_PKG_PATH:-/usr/lib/pkgconfig:/usr/share/pkgconfig}' >>$script
84 echo 'unset HOST_PKG_PATH' 78 echo 'unset HOST_PKG_PATH'
@@ -86,14 +80,35 @@ create_sdk_files:append () {
86 toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${SDK_SYS} 80 toolchain_create_sdk_version ${SDK_OUTPUT}/${SDKPATH}/version-${SDK_SYS}
87 81
88 cat >> $script <<EOF 82 cat >> $script <<EOF
83# Detect host ca file/path, export for envfile to use
84# /etc/ssl/certs/ca-certificates.crt Debian systems
85# /etc/pki/tls/certs/ca-bundle.crt Fedora systems
86# /etc/ssl/ca-bundle.pem Suse systems
87export CAFILE
88export CAPATH
89for a in /etc/ssl/certs/ca-certificates.crt \
90 /etc/pki/tls/certs/ca-bundle.crt \
91 /etc/ssl/ca-bundle.pem ; do
92 if test -f "\$a"; then
93 CAFILE="\$a"
94 break
95 fi
96done
97
98a="/etc/ssl/certs"
99if test -d "\$a" && ls "\$a"/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].0 >/dev/null 2>/dev/null; then
100 CAPATH="\$a"
101fi
102
89if [ -d "\$OECORE_NATIVE_SYSROOT/environment-setup.d" ]; then 103if [ -d "\$OECORE_NATIVE_SYSROOT/environment-setup.d" ]; then
90 for envfile in \$OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do 104 for envfile in \$OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do
91 . \$envfile 105 . \$envfile
92 done 106 done
93fi 107fi
108
94# We have to unset this else it can confuse oe-selftest and other tools 109# We have to unset this else it can confuse oe-selftest and other tools
95# which may also use the overlapping namespace. 110# which may also use the overlapping namespace.
96unset OECORE_NATIVE_SYSROOT 111unset OECORE_NATIVE_SYSROOT CAFILE CAPATH
97EOF 112EOF
98 113
99 if [ "${SDKMACHINE}" = "i686" ]; then 114 if [ "${SDKMACHINE}" = "i686" ]; then
diff --git a/meta/recipes-core/meta/cve-update-nvd2-native.bb b/meta/recipes-core/meta/cve-update-nvd2-native.bb
index 1901641965..945bd1d927 100644
--- a/meta/recipes-core/meta/cve-update-nvd2-native.bb
+++ b/meta/recipes-core/meta/cve-update-nvd2-native.bb
@@ -8,7 +8,6 @@ INHIBIT_DEFAULT_DEPS = "1"
8 8
9inherit native 9inherit native
10 10
11deltask do_unpack
12deltask do_patch 11deltask do_patch
13deltask do_configure 12deltask do_configure
14deltask do_compile 13deltask do_compile
@@ -35,7 +34,9 @@ CVE_DB_INCR_UPDATE_AGE_THRES ?= "10368000"
35# Number of attempts for each http query to nvd server before giving up 34# Number of attempts for each http query to nvd server before giving up
36CVE_DB_UPDATE_ATTEMPTS ?= "5" 35CVE_DB_UPDATE_ATTEMPTS ?= "5"
37 36
38CVE_DB_TEMP_FILE ?= "${CVE_CHECK_DB_DIR}/temp_nvdcve_2.db" 37CVE_CHECK_DB_DLDIR_FILE ?= "${DL_DIR}/CVE_CHECK/${CVE_CHECK_DB_FILENAME}"
38CVE_CHECK_DB_DLDIR_LOCK ?= "${CVE_CHECK_DB_DLDIR_FILE}.lock"
39CVE_CHECK_DB_TEMP_FILE ?= "${CVE_CHECK_DB_FILE}.tmp"
39 40
40python () { 41python () {
41 if not bb.data.inherits_class("cve-check", d): 42 if not bb.data.inherits_class("cve-check", d):
@@ -52,9 +53,9 @@ python do_fetch() {
52 53
53 bb.utils.export_proxies(d) 54 bb.utils.export_proxies(d)
54 55
55 db_file = d.getVar("CVE_CHECK_DB_FILE") 56 db_file = d.getVar("CVE_CHECK_DB_DLDIR_FILE")
56 db_dir = os.path.dirname(db_file) 57 db_dir = os.path.dirname(db_file)
57 db_tmp_file = d.getVar("CVE_DB_TEMP_FILE") 58 db_tmp_file = d.getVar("CVE_CHECK_DB_TEMP_FILE")
58 59
59 cleanup_db_download(db_file, db_tmp_file) 60 cleanup_db_download(db_file, db_tmp_file)
60 # By default let's update the whole database (since time 0) 61 # By default let's update the whole database (since time 0)
@@ -67,6 +68,8 @@ python do_fetch() {
67 update_interval = int(d.getVar("CVE_DB_UPDATE_INTERVAL")) 68 update_interval = int(d.getVar("CVE_DB_UPDATE_INTERVAL"))
68 if update_interval < 0: 69 if update_interval < 0:
69 bb.note("CVE database update skipped") 70 bb.note("CVE database update skipped")
71 if not os.path.exists(db_file):
72 bb.error("CVE database %s not present, database fetch/update skipped" % db_file)
70 return 73 return
71 if time.time() - os.path.getmtime(db_file) < update_interval: 74 if time.time() - os.path.getmtime(db_file) < update_interval:
72 bb.note("CVE database recently updated, skipping") 75 bb.note("CVE database recently updated, skipping")
@@ -76,7 +79,11 @@ python do_fetch() {
76 except OSError: 79 except OSError:
77 pass 80 pass
78 81
82 if bb.utils.to_boolean(d.getVar("BB_NO_NETWORK")):
83 bb.error("BB_NO_NETWORK attempted to disable fetch, this recipe uses CVE_DB_UPDATE_INTERVAL to control download, set to '-1' to disable fetch or update")
84
79 bb.utils.mkdirhier(db_dir) 85 bb.utils.mkdirhier(db_dir)
86 bb.utils.mkdirhier(os.path.dirname(db_tmp_file))
80 if os.path.exists(db_file): 87 if os.path.exists(db_file):
81 shutil.copy2(db_file, db_tmp_file) 88 shutil.copy2(db_file, db_tmp_file)
82 89
@@ -89,10 +96,16 @@ python do_fetch() {
89 os.remove(db_tmp_file) 96 os.remove(db_tmp_file)
90} 97}
91 98
92do_fetch[lockfiles] += "${CVE_CHECK_DB_FILE_LOCK}" 99do_fetch[lockfiles] += "${CVE_CHECK_DB_DLDIR_LOCK}"
93do_fetch[file-checksums] = "" 100do_fetch[file-checksums] = ""
94do_fetch[vardeps] = "" 101do_fetch[vardeps] = ""
95 102
103python do_unpack() {
104 import shutil
105 shutil.copyfile(d.getVar("CVE_CHECK_DB_DLDIR_FILE"), d.getVar("CVE_CHECK_DB_FILE"))
106}
107do_unpack[lockfiles] += "${CVE_CHECK_DB_DLDIR_LOCK} ${CVE_CHECK_DB_FILE_LOCK}"
108
96def cleanup_db_download(db_file, db_tmp_file): 109def cleanup_db_download(db_file, db_tmp_file):
97 """ 110 """
98 Cleanup the download space from possible failed downloads 111 Cleanup the download space from possible failed downloads
@@ -216,6 +229,11 @@ def update_db_file(db_tmp_file, d, database_time):
216 # We haven't managed to download data 229 # We haven't managed to download data
217 return False 230 return False
218 231
232 # hack for json5 style responses
233 if raw_data[-3:] == ',]}':
234 bb.note("Removing trailing ',' from nvd response")
235 raw_data = raw_data[:-3] + ']}'
236
219 data = json.loads(raw_data) 237 data = json.loads(raw_data)
220 238
221 index = data["startIndex"] 239 index = data["startIndex"]
@@ -247,7 +265,7 @@ def initialize_db(conn):
247 c.execute("CREATE TABLE IF NOT EXISTS META (YEAR INTEGER UNIQUE, DATE TEXT)") 265 c.execute("CREATE TABLE IF NOT EXISTS META (YEAR INTEGER UNIQUE, DATE TEXT)")
248 266
249 c.execute("CREATE TABLE IF NOT EXISTS NVD (ID TEXT UNIQUE, SUMMARY TEXT, \ 267 c.execute("CREATE TABLE IF NOT EXISTS NVD (ID TEXT UNIQUE, SUMMARY TEXT, \
250 SCOREV2 TEXT, SCOREV3 TEXT, MODIFIED INTEGER, VECTOR TEXT, VECTORSTRING TEXT)") 268 SCOREV2 TEXT, SCOREV3 TEXT, SCOREV4 TEXT, MODIFIED INTEGER, VECTOR TEXT, VECTORSTRING TEXT)")
251 269
252 c.execute("CREATE TABLE IF NOT EXISTS PRODUCTS (ID TEXT, \ 270 c.execute("CREATE TABLE IF NOT EXISTS PRODUCTS (ID TEXT, \
253 VENDOR TEXT, PRODUCT TEXT, VERSION_START TEXT, OPERATOR_START TEXT, \ 271 VENDOR TEXT, PRODUCT TEXT, VERSION_START TEXT, OPERATOR_START TEXT, \
@@ -323,7 +341,7 @@ def update_db(conn, elt):
323 accessVector = None 341 accessVector = None
324 vectorString = None 342 vectorString = None
325 cveId = elt['cve']['id'] 343 cveId = elt['cve']['id']
326 if elt['cve']['vulnStatus'] == "Rejected": 344 if elt['cve'].get('vulnStatus') == "Rejected":
327 c = conn.cursor() 345 c = conn.cursor()
328 c.execute("delete from PRODUCTS where ID = ?;", [cveId]) 346 c.execute("delete from PRODUCTS where ID = ?;", [cveId])
329 c.execute("delete from NVD where ID = ?;", [cveId]) 347 c.execute("delete from NVD where ID = ?;", [cveId])
@@ -353,12 +371,18 @@ def update_db(conn, elt):
353 cvssv3 = cvssv3 or elt['cve']['metrics']['cvssMetricV31'][0]['cvssData']['baseScore'] 371 cvssv3 = cvssv3 or elt['cve']['metrics']['cvssMetricV31'][0]['cvssData']['baseScore']
354 except KeyError: 372 except KeyError:
355 pass 373 pass
374 cvssv3 = cvssv3 or 0.0
375 try:
376 accessVector = accessVector or elt['cve']['metrics']['cvssMetricV40'][0]['cvssData']['attackVector']
377 vectorString = vectorString or elt['cve']['metrics']['cvssMetricV40'][0]['cvssData']['vectorString']
378 cvssv4 = elt['cve']['metrics']['cvssMetricV40'][0]['cvssData']['baseScore']
379 except KeyError:
380 cvssv4 = 0.0
356 accessVector = accessVector or "UNKNOWN" 381 accessVector = accessVector or "UNKNOWN"
357 vectorString = vectorString or "UNKNOWN" 382 vectorString = vectorString or "UNKNOWN"
358 cvssv3 = cvssv3 or 0.0
359 383
360 conn.execute("insert or replace into NVD values (?, ?, ?, ?, ?, ?, ?)", 384 conn.execute("insert or replace into NVD values (?, ?, ?, ?, ?, ?, ?, ?)",
361 [cveId, cveDesc, cvssv2, cvssv3, date, accessVector, vectorString]).close() 385 [cveId, cveDesc, cvssv2, cvssv3, cvssv4, date, accessVector, vectorString]).close()
362 386
363 try: 387 try:
364 # Remove any pre-existing CVE configuration. Even for partial database 388 # Remove any pre-existing CVE configuration. Even for partial database
diff --git a/meta/recipes-core/meta/meta-ide-support.bb b/meta/recipes-core/meta/meta-ide-support.bb
index d85aa120c0..7ed422ce4d 100644
--- a/meta/recipes-core/meta/meta-ide-support.bb
+++ b/meta/recipes-core/meta/meta-ide-support.bb
@@ -1,6 +1,7 @@
1SUMMARY = "Integrated Development Environment support" 1SUMMARY = "Integrated Development Environment support"
2DESCRIPTION = "Meta package for ensuring the build directory contains all appropriate toolchain packages for using an IDE" 2DESCRIPTION = "Meta package for ensuring the build directory contains all appropriate toolchain packages for using an IDE"
3LICENSE = "MIT" 3LICENSE = "MIT"
4PACKAGE_ARCH = "${MACHINE_ARCH}"
4 5
5DEPENDS = "virtual/libc gdb-cross-${TARGET_ARCH} qemu-native qemu-helper-native unfs3-native cmake-native autoconf-native automake-native meson-native intltool-native pkgconfig-native" 6DEPENDS = "virtual/libc gdb-cross-${TARGET_ARCH} qemu-native qemu-helper-native unfs3-native cmake-native autoconf-native automake-native meson-native intltool-native pkgconfig-native"
6RM_WORK_EXCLUDE += "${PN}" 7RM_WORK_EXCLUDE += "${PN}"
diff --git a/meta/recipes-core/meta/meta-world-pkgdata.bb b/meta/recipes-core/meta/meta-world-pkgdata.bb
index 0438bf6138..954675f383 100644
--- a/meta/recipes-core/meta/meta-world-pkgdata.bb
+++ b/meta/recipes-core/meta/meta-world-pkgdata.bb
@@ -27,6 +27,7 @@ python do_collect_packagedata() {
27 oe.copy_buildsystem.generate_locked_sigs(sigfile, d) 27 oe.copy_buildsystem.generate_locked_sigs(sigfile, d)
28} 28}
29 29
30inherit nopackages
30deltask do_fetch 31deltask do_fetch
31deltask do_unpack 32deltask do_unpack
32deltask do_patch 33deltask do_patch
diff --git a/meta/recipes-core/ovmf/ovmf/0001-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch b/meta/recipes-core/ovmf/ovmf/0001-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch
new file mode 100644
index 0000000000..264820138f
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0001-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch
@@ -0,0 +1,51 @@
1From 150ea3ea4c821b133a782eeb33ef2a9c8fd8d7c3 Mon Sep 17 00:00:00 2001
2From: Hongxu Jia <hongxu.jia@windriver.com>
3Date: Fri, 22 Nov 2024 13:05:57 +0800
4Subject: [PATCH] MdeModulePkg: Potential UINT32 overflow in S3 ResumeCount
5
6REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4677
7
8Attacker able to modify physical memory and ResumeCount.
9System will crash/DoS when ResumeCount reaches its MAX_UINT32.
10
11Cc: Zhiguang Liu <zhiguang.liu@intel.com>
12Cc: Dandan Bi <dandan.bi@intel.com>
13Cc: Liming Gao <gaoliming@byosoft.com.cn>
14
15Signed-off-by: Pakkirisamy ShanmugavelX <shanmugavelx.pakkirisamy@intel.com>
16Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
17
18CVE: CVE-2024-1298
19Upstream-Status: Backport [https://github.com/tianocore/edk2/commit/284dbac43da752ee34825c8b3f6f9e8281cb5a19]
20Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
21---
22 .../FirmwarePerformancePei.c | 12 ++++++++----
23 1 file changed, 8 insertions(+), 4 deletions(-)
24
25diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c
26index 2f2b2a8..2ba9215 100644
27--- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c
28+++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei.c
29@@ -112,11 +112,15 @@ FpdtStatusCodeListenerPei (
30 //
31 S3ResumeTotal = MultU64x32 (AcpiS3ResumeRecord->AverageResume, AcpiS3ResumeRecord->ResumeCount);
32 AcpiS3ResumeRecord->ResumeCount++;
33- AcpiS3ResumeRecord->AverageResume = DivU64x32 (S3ResumeTotal + AcpiS3ResumeRecord->FullResume, AcpiS3ResumeRecord->ResumeCount);
34+ if (AcpiS3ResumeRecord->ResumeCount > 0) {
35+ AcpiS3ResumeRecord->AverageResume = DivU64x32 (S3ResumeTotal + AcpiS3ResumeRecord->FullResume, AcpiS3ResumeRecord->ResumeCount);
36+ DEBUG ((DEBUG_INFO, "\nFPDT: S3 Resume Performance - AverageResume = 0x%x\n", AcpiS3ResumeRecord->AverageResume));
37+ } else {
38+ DEBUG ((DEBUG_ERROR, "\nFPDT: S3 ResumeCount reaches the MAX_UINT32 value. S3 ResumeCount record reset to Zero."));
39+ }
40
41- DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - ResumeCount = %d\n", AcpiS3ResumeRecord->ResumeCount));
42- DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - FullResume = %ld\n", AcpiS3ResumeRecord->FullResume));
43- DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - AverageResume = %ld\n", AcpiS3ResumeRecord->AverageResume));
44+ DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - ResumeCount = 0x%x\n", AcpiS3ResumeRecord->ResumeCount));
45+ DEBUG ((DEBUG_INFO, "FPDT: S3 Resume Performance - FullResume = 0x%x\n", AcpiS3ResumeRecord->FullResume));
46
47 //
48 // Update S3 Suspend Performance Record.
49--
502.34.1
51
diff --git a/meta/recipes-core/ovmf/ovmf/0001-MdePkg-Fix-overflow-issue-in-BasePeCoffLib.patch b/meta/recipes-core/ovmf/ovmf/0001-MdePkg-Fix-overflow-issue-in-BasePeCoffLib.patch
new file mode 100644
index 0000000000..c6e15c5069
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0001-MdePkg-Fix-overflow-issue-in-BasePeCoffLib.patch
@@ -0,0 +1,36 @@
1From 5f7bd3f3c4747d5bb2733f017f8c5b93b63a74e3 Mon Sep 17 00:00:00 2001
2From: Doug Flick <dougflick@microsoft.com>
3Date: Fri, 22 Nov 2024 13:03:33 +0800
4Subject: [PATCH] MdePkg: Fix overflow issue in BasePeCoffLib
5
6The RelocDir->Size is a UINT32 value, and RelocDir->VirtualAddress is
7also a UINT32 value. The current code does not check for overflow when
8adding RelocDir->Size to RelocDir->VirtualAddress. This patch adds a
9check to ensure that the addition does not overflow.
10
11Signed-off-by: Doug Flick <dougflick@microsoft.com>
12Authored-by: sriraamx gobichettipalayam <sri..@intel.com>
13
14CVE: CVE-2024-38796
15Upstream-Status: Backport [https://github.com/tianocore/edk2/commit/c95233b8525ca6828921affd1496146cff262e65]
16Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
17---
18 MdePkg/Library/BasePeCoffLib/BasePeCoff.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
22index 86ff2e7..128090d 100644
23--- a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
24+++ b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
25@@ -1054,7 +1054,7 @@ PeCoffLoaderRelocateImage (
26 RelocDir = &Hdr.Te->DataDirectory[0];
27 }
28
29- if ((RelocDir != NULL) && (RelocDir->Size > 0)) {
30+ if ((RelocDir != NULL) && (RelocDir->Size > 0) && (RelocDir->Size - 1 < MAX_UINT32 - RelocDir->VirtualAddress)) {
31 RelocBase = (EFI_IMAGE_BASE_RELOCATION *)PeCoffLoaderImageAddress (ImageContext, RelocDir->VirtualAddress, TeStrippedOffset);
32 RelocBaseEnd = (EFI_IMAGE_BASE_RELOCATION *)PeCoffLoaderImageAddress (
33 ImageContext,
34--
352.34.1
36
diff --git a/meta/recipes-core/ovmf/ovmf_git.bb b/meta/recipes-core/ovmf/ovmf_git.bb
index 35ca8d1834..319f03a8d2 100644
--- a/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/meta/recipes-core/ovmf/ovmf_git.bb
@@ -24,6 +24,8 @@ SRC_URI = "gitsm://github.com/tianocore/edk2.git;branch=master;protocol=https \
24 file://0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch \ 24 file://0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch \
25 file://0003-debug-prefix-map.patch \ 25 file://0003-debug-prefix-map.patch \
26 file://0004-reproducible.patch \ 26 file://0004-reproducible.patch \
27 file://0001-MdePkg-Fix-overflow-issue-in-BasePeCoffLib.patch \
28 file://0001-MdeModulePkg-Potential-UINT32-overflow-in-S3-ResumeC.patch \
27 " 29 "
28 30
29PV = "edk2-stable202402" 31PV = "edk2-stable202402"
@@ -223,6 +225,7 @@ do_compile:class-target() {
223 225
224do_install:class-native() { 226do_install:class-native() {
225 install -d ${D}/${bindir}/edk2_basetools 227 install -d ${D}/${bindir}/edk2_basetools
228 find ${S}/BaseTools -name \*.pyc -exec rm -rf \{\} \;
226 cp -r ${S}/BaseTools ${D}/${bindir}/${EDK_TOOLS_DIR} 229 cp -r ${S}/BaseTools ${D}/${bindir}/${EDK_TOOLS_DIR}
227} 230}
228 231
diff --git a/meta/recipes-core/systemd/systemd-boot-native_255.4.bb b/meta/recipes-core/systemd/systemd-boot-native_255.21.bb
index 73db59b14e..73db59b14e 100644
--- a/meta/recipes-core/systemd/systemd-boot-native_255.4.bb
+++ b/meta/recipes-core/systemd/systemd-boot-native_255.21.bb
diff --git a/meta/recipes-core/systemd/systemd-boot_255.4.bb b/meta/recipes-core/systemd/systemd-boot_255.21.bb
index 4ee25ee72f..397316fe9b 100644
--- a/meta/recipes-core/systemd/systemd-boot_255.4.bb
+++ b/meta/recipes-core/systemd/systemd-boot_255.21.bb
@@ -3,7 +3,7 @@ FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemd:"
3 3
4require conf/image-uefi.conf 4require conf/image-uefi.conf
5 5
6DEPENDS = "intltool-native libcap util-linux gperf-native python3-jinja2-native python3-pyelftools-native" 6DEPENDS = "libcap util-linux gperf-native python3-jinja2-native python3-pyelftools-native"
7 7
8inherit meson pkgconfig gettext 8inherit meson pkgconfig gettext
9inherit deploy 9inherit deploy
diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
index a35db5091e..28392b6b09 100644
--- a/meta/recipes-core/systemd/systemd.inc
+++ b/meta/recipes-core/systemd/systemd.inc
@@ -15,7 +15,7 @@ LICENSE:libsystemd = "LGPL-2.1-or-later"
15LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \ 15LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
16 file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c" 16 file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
17 17
18SRCREV = "387a14a7b67b8b76adaed4175e14bb7e39b2f738" 18SRCREV = "70500d37992a01d3275b1c414c3ed161d6f91f9e"
19SRCBRANCH = "v255-stable" 19SRCBRANCH = "v255-stable"
20SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}" 20SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH}"
21 21
diff --git a/meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch b/meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch
index 2aa5dee6b5..22f0468460 100644
--- a/meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch
+++ b/meta/recipes-core/systemd/systemd/0001-missing_type.h-add-comparison_fn_t.patch
@@ -1,7 +1,7 @@
1From 01195eb9f7d59139fb45df506ac6b3968c14a57f Mon Sep 17 00:00:00 2001 1From b270af4c086d254758fdcd1d294b15a555a4b3ea Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 13:55:12 +0800 3Date: Mon, 25 Feb 2019 13:55:12 +0800
4Subject: [PATCH 01/22] missing_type.h: add comparison_fn_t 4Subject: [PATCH] missing_type.h: add comparison_fn_t
5 5
6Make it work with musl where comparison_fn_t and is not provided. 6Make it work with musl where comparison_fn_t and is not provided.
7 7
@@ -56,6 +56,3 @@ index ae91534198..7f67eea38b 100644
56 56
57 const char * const catalog_file_dirs[] = { 57 const char * const catalog_file_dirs[] = {
58 "/usr/local/lib/systemd/catalog/", 58 "/usr/local/lib/systemd/catalog/",
59--
602.34.1
61
diff --git a/meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch b/meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch
index 900a931632..6cce960299 100644
--- a/meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch
+++ b/meta/recipes-core/systemd/systemd/0002-add-fallback-parse_printf_format-implementation.patch
@@ -1,7 +1,7 @@
1From 872b72739e62123867ce6c4f82aa37de24cc3f75 Mon Sep 17 00:00:00 2001 1From 0660aea3d7c8058d73c9f7b2971f4daf35dd7a32 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Sat, 22 May 2021 20:26:24 +0200 3Date: Sat, 22 May 2021 20:26:24 +0200
4Subject: [PATCH 02/22] add fallback parse_printf_format implementation 4Subject: [PATCH] add fallback parse_printf_format implementation
5 5
6Upstream-Status: Inappropriate [musl specific] 6Upstream-Status: Inappropriate [musl specific]
7 7
@@ -22,10 +22,10 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
22 create mode 100644 src/basic/parse-printf-format.h 22 create mode 100644 src/basic/parse-printf-format.h
23 23
24diff --git a/meson.build b/meson.build 24diff --git a/meson.build b/meson.build
25index 7419e2b0b0..01fd3ffc19 100644 25index 8c16c1c5c0..408d2ab80a 100644
26--- a/meson.build 26--- a/meson.build
27+++ b/meson.build 27+++ b/meson.build
28@@ -725,6 +725,7 @@ endif 28@@ -732,6 +732,7 @@ endif
29 foreach header : ['crypt.h', 29 foreach header : ['crypt.h',
30 'linux/memfd.h', 30 'linux/memfd.h',
31 'linux/vm_sockets.h', 31 'linux/vm_sockets.h',
@@ -34,7 +34,7 @@ index 7419e2b0b0..01fd3ffc19 100644
34 'threads.h', 34 'threads.h',
35 'valgrind/memcheck.h', 35 'valgrind/memcheck.h',
36diff --git a/src/basic/meson.build b/src/basic/meson.build 36diff --git a/src/basic/meson.build b/src/basic/meson.build
37index d7450d8b44..c3e3daf4bd 100644 37index 111253e3a5..bdaa2fc5e4 100644
38--- a/src/basic/meson.build 38--- a/src/basic/meson.build
39+++ b/src/basic/meson.build 39+++ b/src/basic/meson.build
40@@ -183,6 +183,11 @@ endforeach 40@@ -183,6 +183,11 @@ endforeach
@@ -429,6 +429,3 @@ index be23b2fe75..69a2eb6404 100644
429 429
430 #define SNDBUF_SIZE (8*1024*1024) 430 #define SNDBUF_SIZE (8*1024*1024)
431 431
432--
4332.34.1
434
diff --git a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
index be231cf6b2..4472dda2e8 100644
--- a/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
+++ b/meta/recipes-core/systemd/systemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
@@ -1,8 +1,8 @@
1From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 2001 1From edc39fe19419120f70341cd50d4d097a514ac9cb Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Thu, 21 Feb 2019 16:23:24 +0800 3Date: Thu, 21 Feb 2019 16:23:24 +0800
4Subject: [PATCH 1/2] binfmt: Don't install dependency links at install time 4Subject: [PATCH] binfmt: Don't install dependency links at install time for
5 for the binfmt services 5 the binfmt services
6 6
7use [Install] blocks so that they get created when the service is enabled 7use [Install] blocks so that they get created when the service is enabled
8like a traditional service. 8like a traditional service.
@@ -74,6 +74,3 @@ index 6861c76674..531e9fbd90 100644
74+ 74+
75+[Install] 75+[Install]
76+WantedBy=sysinit.target 76+WantedBy=sysinit.target
77--
782.34.1
79
diff --git a/meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch b/meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch
index 5595b5bc23..715a0c7ec8 100644
--- a/meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch
+++ b/meta/recipes-core/systemd/systemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch
@@ -1,7 +1,10 @@
1From 87f1d38f40c5fe9cadf2b2de442473e4e5605788 Mon Sep 17 00:00:00 2001 1From c728a728cd54c372162f5447aa94921efb0c35f0 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 14:18:21 +0800 3Date: Mon, 25 Feb 2019 14:18:21 +0800
4Subject: [PATCH 03/22] src/basic/missing.h: check for missing strndupa 4Subject: [PATCH] src/basic/missing.h: check for missing strndupa
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
5 8
6include missing.h for definition of strndupa 9include missing.h for definition of strndupa
7 10
@@ -20,6 +23,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
20[Rebased for v254] 23[Rebased for v254]
21Signed-off-by: Chen Qi <Qi.Chen@windriver.com> 24Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
22[Rebased for v255.1] 25[Rebased for v255.1]
26Signed-off-by: Guðni Már Gilbert <gudni.m.g@gmail.com>
27[Rebased for v255.14]
23--- 28---
24 meson.build | 1 + 29 meson.build | 1 +
25 src/backlight/backlight.c | 1 + 30 src/backlight/backlight.c | 1 +
@@ -75,10 +80,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
75 51 files changed, 62 insertions(+) 80 51 files changed, 62 insertions(+)
76 81
77diff --git a/meson.build b/meson.build 82diff --git a/meson.build b/meson.build
78index 01fd3ffc19..61a872b753 100644 83index 408d2ab80a..2c00b7047f 100644
79--- a/meson.build 84--- a/meson.build
80+++ b/meson.build 85+++ b/meson.build
81@@ -567,6 +567,7 @@ foreach ident : ['secure_getenv', '__secure_getenv'] 86@@ -572,6 +572,7 @@ foreach ident : ['secure_getenv', '__secure_getenv']
82 endforeach 87 endforeach
83 88
84 foreach ident : [ 89 foreach ident : [
@@ -87,7 +92,7 @@ index 01fd3ffc19..61a872b753 100644
87 ['gettid', '''#include <sys/types.h> 92 ['gettid', '''#include <sys/types.h>
88 #include <unistd.h>'''], 93 #include <unistd.h>'''],
89diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c 94diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
90index 5ac9f904a9..99d5122dd7 100644 95index b2032adaa5..ee9201826d 100644
91--- a/src/backlight/backlight.c 96--- a/src/backlight/backlight.c
92+++ b/src/backlight/backlight.c 97+++ b/src/backlight/backlight.c
93@@ -20,6 +20,7 @@ 98@@ -20,6 +20,7 @@
@@ -99,7 +104,7 @@ index 5ac9f904a9..99d5122dd7 100644
99 #define PCI_CLASS_GRAPHICS_CARD 0x30000 104 #define PCI_CLASS_GRAPHICS_CARD 0x30000
100 105
101diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c 106diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
102index 18b16ecc0e..d2be79622f 100644 107index e978bd3eff..d08c903c3b 100644
103--- a/src/basic/cgroup-util.c 108--- a/src/basic/cgroup-util.c
104+++ b/src/basic/cgroup-util.c 109+++ b/src/basic/cgroup-util.c
105@@ -38,6 +38,7 @@ 110@@ -38,6 +38,7 @@
@@ -111,7 +116,7 @@ index 18b16ecc0e..d2be79622f 100644
111 static int cg_enumerate_items(const char *controller, const char *path, FILE **ret, const char *item) { 116 static int cg_enumerate_items(const char *controller, const char *path, FILE **ret, const char *item) {
112 _cleanup_free_ char *fs = NULL; 117 _cleanup_free_ char *fs = NULL;
113diff --git a/src/basic/env-util.c b/src/basic/env-util.c 118diff --git a/src/basic/env-util.c b/src/basic/env-util.c
114index d3bf73385f..16b17358ca 100644 119index a97651d7af..09fa601250 100644
115--- a/src/basic/env-util.c 120--- a/src/basic/env-util.c
116+++ b/src/basic/env-util.c 121+++ b/src/basic/env-util.c
117@@ -19,6 +19,7 @@ 122@@ -19,6 +19,7 @@
@@ -123,7 +128,7 @@ index d3bf73385f..16b17358ca 100644
123 /* We follow bash for the character set. Different shells have different rules. */ 128 /* We follow bash for the character set. Different shells have different rules. */
124 #define VALID_BASH_ENV_NAME_CHARS \ 129 #define VALID_BASH_ENV_NAME_CHARS \
125diff --git a/src/basic/log.c b/src/basic/log.c 130diff --git a/src/basic/log.c b/src/basic/log.c
126index 1470611a75..9924ec2b9a 100644 131index ade6c8b089..0ba68b2119 100644
127--- a/src/basic/log.c 132--- a/src/basic/log.c
128+++ b/src/basic/log.c 133+++ b/src/basic/log.c
129@@ -40,6 +40,7 @@ 134@@ -40,6 +40,7 @@
@@ -167,7 +172,7 @@ index c770e5ed32..1fd8816cd0 100644
167 int mkdirat_safe_internal( 172 int mkdirat_safe_internal(
168 int dir_fd, 173 int dir_fd,
169diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c 174diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
170index bf67f7e01a..409f8d8a73 100644 175index 51fbe4ed84..26626c1499 100644
171--- a/src/basic/mountpoint-util.c 176--- a/src/basic/mountpoint-util.c
172+++ b/src/basic/mountpoint-util.c 177+++ b/src/basic/mountpoint-util.c
173@@ -18,6 +18,7 @@ 178@@ -18,6 +18,7 @@
@@ -191,7 +196,7 @@ index 0430e33e40..f3728de026 100644
191 int parse_boolean(const char *v) { 196 int parse_boolean(const char *v) {
192 if (!v) 197 if (!v)
193diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c 198diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c
194index 4e3d59fc56..726e240df0 100644 199index d76705bd4b..149fb249d0 100644
195--- a/src/basic/path-lookup.c 200--- a/src/basic/path-lookup.c
196+++ b/src/basic/path-lookup.c 201+++ b/src/basic/path-lookup.c
197@@ -16,6 +16,7 @@ 202@@ -16,6 +16,7 @@
@@ -239,7 +244,7 @@ index d7cfcd9105..6cb0ddf575 100644
239 int procfs_get_pid_max(uint64_t *ret) { 244 int procfs_get_pid_max(uint64_t *ret) {
240 _cleanup_free_ char *value = NULL; 245 _cleanup_free_ char *value = NULL;
241diff --git a/src/basic/time-util.c b/src/basic/time-util.c 246diff --git a/src/basic/time-util.c b/src/basic/time-util.c
242index f9014dc560..1d7840a5b5 100644 247index 0c2d739977..5c150806a0 100644
243--- a/src/basic/time-util.c 248--- a/src/basic/time-util.c
244+++ b/src/basic/time-util.c 249+++ b/src/basic/time-util.c
245@@ -27,6 +27,7 @@ 250@@ -27,6 +27,7 @@
@@ -251,7 +256,7 @@ index f9014dc560..1d7840a5b5 100644
251 static clockid_t map_clock_id(clockid_t c) { 256 static clockid_t map_clock_id(clockid_t c) {
252 257
253diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c 258diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c
254index 0c0b4f23c7..68fe5ca509 100644 259index 12dfdf76fa..e66332519a 100644
255--- a/src/boot/bless-boot.c 260--- a/src/boot/bless-boot.c
256+++ b/src/boot/bless-boot.c 261+++ b/src/boot/bless-boot.c
257@@ -22,6 +22,7 @@ 262@@ -22,6 +22,7 @@
@@ -263,7 +268,7 @@ index 0c0b4f23c7..68fe5ca509 100644
263 static char **arg_path = NULL; 268 static char **arg_path = NULL;
264 269
265diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c 270diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
266index 4237e694c0..05f9d9d9a9 100644 271index b3baf03afc..7404784a01 100644
267--- a/src/core/dbus-cgroup.c 272--- a/src/core/dbus-cgroup.c
268+++ b/src/core/dbus-cgroup.c 273+++ b/src/core/dbus-cgroup.c
269@@ -25,6 +25,7 @@ 274@@ -25,6 +25,7 @@
@@ -275,7 +280,7 @@ index 4237e694c0..05f9d9d9a9 100644
275 280
276 BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", CGroupTasksMax, cgroup_tasks_max_resolve); 281 BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", CGroupTasksMax, cgroup_tasks_max_resolve);
277diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c 282diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
278index 4daa1cefd3..2c77901471 100644 283index 71b07a6ec1..174a94e8a0 100644
279--- a/src/core/dbus-execute.c 284--- a/src/core/dbus-execute.c
280+++ b/src/core/dbus-execute.c 285+++ b/src/core/dbus-execute.c
281@@ -42,6 +42,7 @@ 286@@ -42,6 +42,7 @@
@@ -287,10 +292,10 @@ index 4daa1cefd3..2c77901471 100644
287 BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_exec_output, exec_output, ExecOutput); 292 BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_exec_output, exec_output, ExecOutput);
288 static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_exec_input, exec_input, ExecInput); 293 static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_exec_input, exec_input, ExecInput);
289diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c 294diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c
290index d680a64268..e59f48103e 100644 295index 7bb026af48..a86128e40c 100644
291--- a/src/core/dbus-util.c 296--- a/src/core/dbus-util.c
292+++ b/src/core/dbus-util.c 297+++ b/src/core/dbus-util.c
293@@ -9,6 +9,7 @@ 298@@ -10,6 +10,7 @@
294 #include "unit-printf.h" 299 #include "unit-printf.h"
295 #include "user-util.h" 300 #include "user-util.h"
296 #include "unit.h" 301 #include "unit.h"
@@ -299,7 +304,7 @@ index d680a64268..e59f48103e 100644
299 int bus_property_get_triggered_unit( 304 int bus_property_get_triggered_unit(
300 sd_bus *bus, 305 sd_bus *bus,
301diff --git a/src/core/execute.c b/src/core/execute.c 306diff --git a/src/core/execute.c b/src/core/execute.c
302index ef0bf88687..bd3da0c401 100644 307index aa179fd57e..1ee9f4526b 100644
303--- a/src/core/execute.c 308--- a/src/core/execute.c
304+++ b/src/core/execute.c 309+++ b/src/core/execute.c
305@@ -72,6 +72,7 @@ 310@@ -72,6 +72,7 @@
@@ -323,7 +328,7 @@ index b8e3f7aadd..8ce8ca68d8 100644
323 #if HAVE_KMOD 328 #if HAVE_KMOD
324 #include "module-util.h" 329 #include "module-util.h"
325diff --git a/src/core/service.c b/src/core/service.c 330diff --git a/src/core/service.c b/src/core/service.c
326index b9eb40c555..268fe7573b 100644 331index d0353ae461..7f98f5ee45 100644
327--- a/src/core/service.c 332--- a/src/core/service.c
328+++ b/src/core/service.c 333+++ b/src/core/service.c
329@@ -45,6 +45,7 @@ 334@@ -45,6 +45,7 @@
@@ -347,7 +352,7 @@ index 7e0c98cb7d..978a7f5874 100644
347 #define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL) /* 1 MiB */ 352 #define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL) /* 1 MiB */
348 #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */ 353 #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */
349diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c 354diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
350index 016f3baa7f..b1def81313 100644 355index e7caf510ba..79b252cad7 100644
351--- a/src/fstab-generator/fstab-generator.c 356--- a/src/fstab-generator/fstab-generator.c
352+++ b/src/fstab-generator/fstab-generator.c 357+++ b/src/fstab-generator/fstab-generator.c
353@@ -37,6 +37,7 @@ 358@@ -37,6 +37,7 @@
@@ -359,7 +364,7 @@ index 016f3baa7f..b1def81313 100644
359 typedef enum MountPointFlags { 364 typedef enum MountPointFlags {
360 MOUNT_NOAUTO = 1 << 0, 365 MOUNT_NOAUTO = 1 << 0,
361diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c 366diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c
362index da0f20d3ce..f22ce41908 100644 367index 2d380bc7a7..d3f5612728 100644
363--- a/src/journal-remote/journal-remote-main.c 368--- a/src/journal-remote/journal-remote-main.c
364+++ b/src/journal-remote/journal-remote-main.c 369+++ b/src/journal-remote/journal-remote-main.c
365@@ -27,6 +27,7 @@ 370@@ -27,6 +27,7 @@
@@ -371,7 +376,7 @@ index da0f20d3ce..f22ce41908 100644
371 #define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-remote.pem" 376 #define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-remote.pem"
372 #define CERT_FILE CERTIFICATE_ROOT "/certs/journal-remote.pem" 377 #define CERT_FILE CERTIFICATE_ROOT "/certs/journal-remote.pem"
373diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c 378diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
374index 7f3dcd56a4..41b7cbaaf1 100644 379index f52ed03dd0..3fa708a906 100644
375--- a/src/journal/journalctl.c 380--- a/src/journal/journalctl.c
376+++ b/src/journal/journalctl.c 381+++ b/src/journal/journalctl.c
377@@ -77,6 +77,7 @@ 382@@ -77,6 +77,7 @@
@@ -383,7 +388,7 @@ index 7f3dcd56a4..41b7cbaaf1 100644
383 #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE) 388 #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
384 #define PROCESS_INOTIFY_INTERVAL 1024 /* Every 1,024 messages processed */ 389 #define PROCESS_INOTIFY_INTERVAL 1024 /* Every 1,024 messages processed */
385diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c 390diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
386index ff0228081f..9066fcb133 100644 391index ab8b06896d..43f9131205 100644
387--- a/src/libsystemd/sd-bus/bus-message.c 392--- a/src/libsystemd/sd-bus/bus-message.c
388+++ b/src/libsystemd/sd-bus/bus-message.c 393+++ b/src/libsystemd/sd-bus/bus-message.c
389@@ -19,6 +19,7 @@ 394@@ -19,6 +19,7 @@
@@ -407,7 +412,7 @@ index c25c40ff37..57a5da704f 100644
407 static int node_vtable_get_userdata( 412 static int node_vtable_get_userdata(
408 sd_bus *bus, 413 sd_bus *bus,
409diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c 414diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
410index 3c59d0d615..746922d46f 100644 415index 5ade8e99aa..7553cf319d 100644
411--- a/src/libsystemd/sd-bus/bus-socket.c 416--- a/src/libsystemd/sd-bus/bus-socket.c
412+++ b/src/libsystemd/sd-bus/bus-socket.c 417+++ b/src/libsystemd/sd-bus/bus-socket.c
413@@ -29,6 +29,7 @@ 418@@ -29,6 +29,7 @@
@@ -419,7 +424,7 @@ index 3c59d0d615..746922d46f 100644
419 #define SNDBUF_SIZE (8*1024*1024) 424 #define SNDBUF_SIZE (8*1024*1024)
420 425
421diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c 426diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
422index 4a0259f8bb..aaa90d2223 100644 427index b32cd6c6a0..cc484454e0 100644
423--- a/src/libsystemd/sd-bus/sd-bus.c 428--- a/src/libsystemd/sd-bus/sd-bus.c
424+++ b/src/libsystemd/sd-bus/sd-bus.c 429+++ b/src/libsystemd/sd-bus/sd-bus.c
425@@ -46,6 +46,7 @@ 430@@ -46,6 +46,7 @@
@@ -443,7 +448,7 @@ index d988588de0..458df8df9a 100644
443 #define MAX_SIZE (2*1024*1024) 448 #define MAX_SIZE (2*1024*1024)
444 449
445diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c 450diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c
446index 6b9ff0a4ed..4a5027ad0f 100644 451index acabec699f..8115d3784a 100644
447--- a/src/libsystemd/sd-journal/sd-journal.c 452--- a/src/libsystemd/sd-journal/sd-journal.c
448+++ b/src/libsystemd/sd-journal/sd-journal.c 453+++ b/src/libsystemd/sd-journal/sd-journal.c
449@@ -44,6 +44,7 @@ 454@@ -44,6 +44,7 @@
@@ -455,7 +460,7 @@ index 6b9ff0a4ed..4a5027ad0f 100644
455 #define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC) 460 #define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC)
456 461
457diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c 462diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
458index b8da266e27..4bb8dd9496 100644 463index bf45974ca5..2cb7e930c0 100644
459--- a/src/login/pam_systemd.c 464--- a/src/login/pam_systemd.c
460+++ b/src/login/pam_systemd.c 465+++ b/src/login/pam_systemd.c
461@@ -35,6 +35,7 @@ 466@@ -35,6 +35,7 @@
@@ -467,19 +472,19 @@ index b8da266e27..4bb8dd9496 100644
467 #include "parse-util.h" 472 #include "parse-util.h"
468 #include "path-util.h" 473 #include "path-util.h"
469diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c 474diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
470index 48527a2c73..9777fe0561 100644 475index e5f78a3b99..4833de2009 100644
471--- a/src/network/generator/network-generator.c 476--- a/src/network/generator/network-generator.c
472+++ b/src/network/generator/network-generator.c 477+++ b/src/network/generator/network-generator.c
473@@ -14,6 +14,7 @@ 478@@ -15,6 +15,7 @@
474 #include "string-table.h"
475 #include "string-util.h" 479 #include "string-util.h"
476 #include "strv.h" 480 #include "strv.h"
481 #include "vlan-util.h"
477+#include "missing_stdlib.h" 482+#include "missing_stdlib.h"
478 483
479 /* 484 /*
480 # .network 485 # .network
481diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c 486diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c
482index 161b1c1c70..ba1c459f78 100644 487index 2bb034eb22..c9837b8d79 100644
483--- a/src/nspawn/nspawn-settings.c 488--- a/src/nspawn/nspawn-settings.c
484+++ b/src/nspawn/nspawn-settings.c 489+++ b/src/nspawn/nspawn-settings.c
485@@ -16,6 +16,7 @@ 490@@ -16,6 +16,7 @@
@@ -503,10 +508,10 @@ index c64e79bdff..eda26b0b9a 100644
503 static void setup_logging_once(void) { 508 static void setup_logging_once(void) {
504 static pthread_once_t once = PTHREAD_ONCE_INIT; 509 static pthread_once_t once = PTHREAD_ONCE_INIT;
505diff --git a/src/portable/portable.c b/src/portable/portable.c 510diff --git a/src/portable/portable.c b/src/portable/portable.c
506index d4b448a627..bb26623565 100644 511index 4aced8c391..6f426e0e51 100644
507--- a/src/portable/portable.c 512--- a/src/portable/portable.c
508+++ b/src/portable/portable.c 513+++ b/src/portable/portable.c
509@@ -40,6 +40,7 @@ 514@@ -42,6 +42,7 @@
510 #include "strv.h" 515 #include "strv.h"
511 #include "tmpfile-util.h" 516 #include "tmpfile-util.h"
512 #include "user-util.h" 517 #include "user-util.h"
@@ -515,7 +520,7 @@ index d4b448a627..bb26623565 100644
515 /* Markers used in the first line of our 20-portable.conf unit file drop-in to determine, that a) the unit file was 520 /* Markers used in the first line of our 20-portable.conf unit file drop-in to determine, that a) the unit file was
516 * dropped there by the portable service logic and b) for which image it was dropped there. */ 521 * dropped there by the portable service logic and b) for which image it was dropped there. */
517diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c 522diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c
518index afa537f160..32ccee4ae5 100644 523index 64b829e5e6..3a06758848 100644
519--- a/src/resolve/resolvectl.c 524--- a/src/resolve/resolvectl.c
520+++ b/src/resolve/resolvectl.c 525+++ b/src/resolve/resolvectl.c
521@@ -48,6 +48,7 @@ 526@@ -48,6 +48,7 @@
@@ -551,7 +556,7 @@ index 8b462b5627..183ce1c18e 100644
551 struct CGroupInfo { 556 struct CGroupInfo {
552 char *cgroup_path; 557 char *cgroup_path;
553diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c 558diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c
554index 4ee9706847..30c8084847 100644 559index 50de98941f..d47beccb0b 100644
555--- a/src/shared/bus-unit-util.c 560--- a/src/shared/bus-unit-util.c
556+++ b/src/shared/bus-unit-util.c 561+++ b/src/shared/bus-unit-util.c
557@@ -50,6 +50,7 @@ 562@@ -50,6 +50,7 @@
@@ -587,7 +592,7 @@ index b41c9b06ca..e69050a507 100644
587 int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) { 592 int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) {
588 const char *n; 593 const char *n;
589diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c 594diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
590index 83e9834bbf..74eaae6f5e 100644 595index bb0536e48a..11cc1315d8 100644
591--- a/src/shared/journal-importer.c 596--- a/src/shared/journal-importer.c
592+++ b/src/shared/journal-importer.c 597+++ b/src/shared/journal-importer.c
593@@ -16,6 +16,7 @@ 598@@ -16,6 +16,7 @@
@@ -599,7 +604,7 @@ index 83e9834bbf..74eaae6f5e 100644
599 enum { 604 enum {
600 IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */ 605 IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */
601diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c 606diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
602index a5d04003bd..10392c132d 100644 607index 0a31be382f..92d629e7e0 100644
603--- a/src/shared/logs-show.c 608--- a/src/shared/logs-show.c
604+++ b/src/shared/logs-show.c 609+++ b/src/shared/logs-show.c
605@@ -41,6 +41,7 @@ 610@@ -41,6 +41,7 @@
@@ -611,7 +616,7 @@ index a5d04003bd..10392c132d 100644
611 /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */ 616 /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
612 #define PRINT_LINE_THRESHOLD 3 617 #define PRINT_LINE_THRESHOLD 3
613diff --git a/src/shared/pager.c b/src/shared/pager.c 618diff --git a/src/shared/pager.c b/src/shared/pager.c
614index 19deefab56..6b6d0af1a0 100644 619index 41dd7bffdc..9ca45d8b91 100644
615--- a/src/shared/pager.c 620--- a/src/shared/pager.c
616+++ b/src/shared/pager.c 621+++ b/src/shared/pager.c
617@@ -25,6 +25,7 @@ 622@@ -25,6 +25,7 @@
@@ -683,7 +688,7 @@ index ed22c8b679..19ebe20237 100644
683 UdevEvent *udev_event_new(sd_device *dev, usec_t exec_delay_usec, sd_netlink *rtnl, int log_level) { 688 UdevEvent *udev_event_new(sd_device *dev, usec_t exec_delay_usec, sd_netlink *rtnl, int log_level) {
684 UdevEvent *event; 689 UdevEvent *event;
685diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c 690diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
686index 5f12002394..febe345b4c 100644 691index c242549654..e5b8df5c2d 100644
687--- a/src/udev/udev-rules.c 692--- a/src/udev/udev-rules.c
688+++ b/src/udev/udev-rules.c 693+++ b/src/udev/udev-rules.c
689@@ -41,6 +41,7 @@ 694@@ -41,6 +41,7 @@
@@ -694,6 +699,3 @@ index 5f12002394..febe345b4c 100644
694 699
695 #define RULES_DIRS ((const char* const*) CONF_PATHS_STRV("udev/rules.d")) 700 #define RULES_DIRS ((const char* const*) CONF_PATHS_STRV("udev/rules.d"))
696 701
697--
6982.34.1
699
diff --git a/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch b/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
index 15877bea88..19eaf9170d 100644
--- a/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
+++ b/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
@@ -1,8 +1,7 @@
1From 5325ab5813617f35f03806ec420829dde7104387 Mon Sep 17 00:00:00 2001 1From 674232187bf337c31a6528b4d241eafeb27ac85e Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 14:56:21 +0800 3Date: Mon, 25 Feb 2019 14:56:21 +0800
4Subject: [PATCH 04/22] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not 4Subject: [PATCH] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not defined
5 defined
6 5
7If the standard library doesn't provide brace 6If the standard library doesn't provide brace
8expansion users just won't get it. 7expansion users just won't get it.
@@ -115,7 +114,7 @@ index 9b3e73cce0..3790ba3be5 100644
115 114
116 (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL); 115 (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL);
117diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c 116diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
118index 230ec09b97..2cc5f391d7 100644 117index d22fa3b3c7..3471f98add 100644
119--- a/src/tmpfiles/tmpfiles.c 118--- a/src/tmpfiles/tmpfiles.c
120+++ b/src/tmpfiles/tmpfiles.c 119+++ b/src/tmpfiles/tmpfiles.c
121@@ -73,6 +73,12 @@ 120@@ -73,6 +73,12 @@
@@ -131,7 +130,7 @@ index 230ec09b97..2cc5f391d7 100644
131 /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates 130 /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
132 * them in the file system. This is intended to be used to create 131 * them in the file system. This is intended to be used to create
133 * properly owned directories beneath /tmp, /var/tmp, /run, which are 132 * properly owned directories beneath /tmp, /var/tmp, /run, which are
134@@ -2434,7 +2440,9 @@ finish: 133@@ -2426,7 +2432,9 @@ finish:
135 134
136 static int glob_item(Context *c, Item *i, action_t action) { 135 static int glob_item(Context *c, Item *i, action_t action) {
137 _cleanup_globfree_ glob_t g = { 136 _cleanup_globfree_ glob_t g = {
@@ -141,7 +140,7 @@ index 230ec09b97..2cc5f391d7 100644
141 }; 140 };
142 int r = 0, k; 141 int r = 0, k;
143 142
144@@ -2461,7 +2469,9 @@ static int glob_item_recursively( 143@@ -2453,7 +2461,9 @@ static int glob_item_recursively(
145 fdaction_t action) { 144 fdaction_t action) {
146 145
147 _cleanup_globfree_ glob_t g = { 146 _cleanup_globfree_ glob_t g = {
@@ -151,6 +150,3 @@ index 230ec09b97..2cc5f391d7 100644
151 }; 150 };
152 int r = 0, k; 151 int r = 0, k;
153 152
154--
1552.34.1
156
diff --git a/meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch b/meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch
index a1dfca22cd..dbd94d473d 100644
--- a/meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0005-add-missing-FTW_-macros-for-musl.patch
@@ -1,7 +1,7 @@
1From dad7f897c0de654fa5592fda3e90f874639849f9 Mon Sep 17 00:00:00 2001 1From cdaafa37983753d309d2b37f8262e71f95798e52 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 15:00:06 +0800 3Date: Mon, 25 Feb 2019 15:00:06 +0800
4Subject: [PATCH 05/22] add missing FTW_ macros for musl 4Subject: [PATCH] add missing FTW_ macros for musl
5 5
6This is to avoid build failures like below for musl. 6This is to avoid build failures like below for musl.
7 7
@@ -39,6 +39,3 @@ index 8684d064ec..70fc2b5376 100644
39 39
40 static char **list_nftw = NULL; 40 static char **list_nftw = NULL;
41 41
42--
432.34.1
44
diff --git a/meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch b/meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch
index 4be14b72ec..09ffbcb70a 100644
--- a/meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch
+++ b/meta/recipes-core/systemd/systemd/0006-Use-uintmax_t-for-handling-rlim_t.patch
@@ -1,7 +1,7 @@
1From 96e975a2412a20e5f80bd3ab144057d275eb8597 Mon Sep 17 00:00:00 2001 1From 8c33fe6338c448dca8533b9d3f9933e2794bda61 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 15:12:41 +0800 3Date: Mon, 25 Feb 2019 15:12:41 +0800
4Subject: [PATCH 06/22] Use uintmax_t for handling rlim_t 4Subject: [PATCH] Use uintmax_t for handling rlim_t
5 5
6PRIu{32,64} is not right format to represent rlim_t type 6PRIu{32,64} is not right format to represent rlim_t type
7therefore use %ju and typecast the rlim_t variables to 7therefore use %ju and typecast the rlim_t variables to
@@ -86,10 +86,10 @@ index c1f0b2b974..61c5412582 100644
86 return 1; 86 return 1;
87 } 87 }
88diff --git a/src/core/execute.c b/src/core/execute.c 88diff --git a/src/core/execute.c b/src/core/execute.c
89index bd3da0c401..df1870fd2f 100644 89index 1ee9f4526b..cb29799afb 100644
90--- a/src/core/execute.c 90--- a/src/core/execute.c
91+++ b/src/core/execute.c 91+++ b/src/core/execute.c
92@@ -1045,9 +1045,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) { 92@@ -1043,9 +1043,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
93 for (unsigned i = 0; i < RLIM_NLIMITS; i++) 93 for (unsigned i = 0; i < RLIM_NLIMITS; i++)
94 if (c->rlimit[i]) { 94 if (c->rlimit[i]) {
95 fprintf(f, "%sLimit%s: " RLIM_FMT "\n", 95 fprintf(f, "%sLimit%s: " RLIM_FMT "\n",
@@ -101,6 +101,3 @@ index bd3da0c401..df1870fd2f 100644
101 } 101 }
102 102
103 if (c->ioprio_set) { 103 if (c->ioprio_set) {
104--
1052.34.1
106
diff --git a/meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
index 8d6084239e..563f033b0d 100644
--- a/meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
+++ b/meta/recipes-core/systemd/systemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
@@ -1,7 +1,7 @@
1From 4842cff4f1329f0b5034b529d56f8ad1f234ac4c Mon Sep 17 00:00:00 2001 1From 68ab3364c0fe1073bba3adf02add7108de80a17c Mon Sep 17 00:00:00 2001
2From: Andre McCurdy <armccurdy@gmail.com> 2From: Andre McCurdy <armccurdy@gmail.com>
3Date: Tue, 10 Oct 2017 14:33:30 -0700 3Date: Tue, 10 Oct 2017 14:33:30 -0700
4Subject: [PATCH 07/22] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat() 4Subject: [PATCH] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
5 5
6Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right 6Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right
7thing to do and it's not portable (not supported by musl). See: 7thing to do and it's not portable (not supported by musl). See:
@@ -31,7 +31,7 @@ Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
31 2 files changed, 23 insertions(+), 4 deletions(-) 31 2 files changed, 23 insertions(+), 4 deletions(-)
32 32
33diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h 33diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
34index 1023ab73ca..c78ff6f27f 100644 34index 6a1e2e76d1..c3f7235e09 100644
35--- a/src/basic/fs-util.h 35--- a/src/basic/fs-util.h
36+++ b/src/basic/fs-util.h 36+++ b/src/basic/fs-util.h
37@@ -49,8 +49,27 @@ int futimens_opath(int fd, const struct timespec ts[2]); 37@@ -49,8 +49,27 @@ int futimens_opath(int fd, const struct timespec ts[2]);
@@ -64,10 +64,10 @@ index 1023ab73ca..c78ff6f27f 100644
64 int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode); 64 int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
65 65
66diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c 66diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
67index 569ef466c3..7ae921a113 100644 67index 0d5075e1e6..dc59a9582c 100644
68--- a/src/shared/base-filesystem.c 68--- a/src/shared/base-filesystem.c
69+++ b/src/shared/base-filesystem.c 69+++ b/src/shared/base-filesystem.c
70@@ -145,7 +145,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) { 70@@ -137,7 +137,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) {
71 /* The "root" parameter is decoration only – it's only used as part of log messages */ 71 /* The "root" parameter is decoration only – it's only used as part of log messages */
72 72
73 for (size_t i = 0; i < ELEMENTSOF(table); i++) { 73 for (size_t i = 0; i < ELEMENTSOF(table); i++) {
@@ -76,7 +76,7 @@ index 569ef466c3..7ae921a113 100644
76 continue; 76 continue;
77 77
78 if (table[i].target) { /* Create as symlink? */ 78 if (table[i].target) { /* Create as symlink? */
79@@ -153,7 +153,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) { 79@@ -145,7 +145,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) {
80 80
81 /* check if one of the targets exists */ 81 /* check if one of the targets exists */
82 NULSTR_FOREACH(s, table[i].target) { 82 NULSTR_FOREACH(s, table[i].target) {
@@ -85,7 +85,7 @@ index 569ef466c3..7ae921a113 100644
85 continue; 85 continue;
86 86
87 /* check if a specific file exists at the target path */ 87 /* check if a specific file exists at the target path */
88@@ -164,7 +164,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) { 88@@ -156,7 +156,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) {
89 if (!p) 89 if (!p)
90 return log_oom(); 90 return log_oom();
91 91
@@ -94,6 +94,3 @@ index 569ef466c3..7ae921a113 100644
94 continue; 94 continue;
95 } 95 }
96 96
97--
982.34.1
99
diff --git a/meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch
index c1a8bb19fe..cc9f7771be 100644
--- a/meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch
+++ b/meta/recipes-core/systemd/systemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch
@@ -1,8 +1,7 @@
1From bab07e779ff23d5593bb118efaaa31b60a6dce87 Mon Sep 17 00:00:00 2001 1From 6dd1aa50da27c07530a434218b5a7a384d0c6747 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 27 May 2018 08:36:44 -0700 3Date: Sun, 27 May 2018 08:36:44 -0700
4Subject: [PATCH 08/22] Define glibc compatible basename() for non-glibc 4Subject: [PATCH] Define glibc compatible basename() for non-glibc systems
5 systems
6 5
7Fixes builds with musl, even though systemd is adamant about 6Fixes builds with musl, even though systemd is adamant about
8using non-posix basename implementation, we have a way out 7using non-posix basename implementation, we have a way out
@@ -29,6 +28,3 @@ index b6d8be3083..0a29036c4c 100644
29 static inline char* strstr_ptr(const char *haystack, const char *needle) { 28 static inline char* strstr_ptr(const char *haystack, const char *needle) {
30 if (!haystack || !needle) 29 if (!haystack || !needle)
31 return NULL; 30 return NULL;
32--
332.34.1
34
diff --git a/meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch b/meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch
index acff18dc43..21faa10a95 100644
--- a/meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch
+++ b/meta/recipes-core/systemd/systemd/0008-implment-systemd-sysv-install-for-OE.patch
@@ -1,4 +1,4 @@
1From 5712d56f1cd654d2e5d2e9117ff77fe4c299f76b Mon Sep 17 00:00:00 2001 1From 8da2b10dcbf423f791db79b7dfcc6cfaf8e26f8b Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 5 Sep 2015 06:31:47 +0000 3Date: Sat, 5 Sep 2015 06:31:47 +0000
4Subject: [PATCH] implment systemd-sysv-install for OE 4Subject: [PATCH] implment systemd-sysv-install for OE
@@ -38,6 +38,3 @@ index cb58d8243b..000bdf6165 100755
38 ;; 38 ;;
39 *) 39 *)
40 usage ;; 40 usage ;;
41--
422.39.2
43
diff --git a/meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
index 3ff0177ae3..66aa8551ac 100644
--- a/meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
+++ b/meta/recipes-core/systemd/systemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
@@ -1,7 +1,7 @@
1From 25093c5017725b8577c444dfea0f42ad85b43522 Mon Sep 17 00:00:00 2001 1From ed33f139195794477ac854214022034db306f42d Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Wed, 4 Jul 2018 15:00:44 +0800 3Date: Wed, 4 Jul 2018 15:00:44 +0800
4Subject: [PATCH 09/22] Do not disable buffering when writing to oom_score_adj 4Subject: [PATCH] Do not disable buffering when writing to oom_score_adj
5 5
6On musl, disabling buffering when writing to oom_score_adj will 6On musl, disabling buffering when writing to oom_score_adj will
7cause the following error. 7cause the following error.
@@ -24,7 +24,7 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
24 1 file changed, 1 insertion(+), 1 deletion(-) 24 1 file changed, 1 insertion(+), 1 deletion(-)
25 25
26diff --git a/src/basic/process-util.c b/src/basic/process-util.c 26diff --git a/src/basic/process-util.c b/src/basic/process-util.c
27index 201c5596ae..ea51595b6c 100644 27index bbce0ea985..d2f7c27cea 100644
28--- a/src/basic/process-util.c 28--- a/src/basic/process-util.c
29+++ b/src/basic/process-util.c 29+++ b/src/basic/process-util.c
30@@ -1716,7 +1716,7 @@ int set_oom_score_adjust(int value) { 30@@ -1716,7 +1716,7 @@ int set_oom_score_adjust(int value) {
@@ -36,6 +36,3 @@ index 201c5596ae..ea51595b6c 100644
36 } 36 }
37 37
38 int get_oom_score_adjust(int *ret) { 38 int get_oom_score_adjust(int *ret) {
39--
402.34.1
41
diff --git a/meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
index cf59ac7d06..66fab46128 100644
--- a/meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
+++ b/meta/recipes-core/systemd/systemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
@@ -1,7 +1,7 @@
1From 2adbe9773cd65c48eec9df96868d4a738927c8d9 Mon Sep 17 00:00:00 2001 1From ef261a0122ff5a4340897c9afe1fae04d14eb0dd Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Tue, 10 Jul 2018 15:40:17 +0800 3Date: Tue, 10 Jul 2018 15:40:17 +0800
4Subject: [PATCH 10/22] distinguish XSI-compliant strerror_r from GNU-specifi 4Subject: [PATCH] distinguish XSI-compliant strerror_r from GNU-specifi
5 strerror_r 5 strerror_r
6 6
7XSI-compliant strerror_r and GNU-specifi strerror_r are different. 7XSI-compliant strerror_r and GNU-specifi strerror_r are different.
@@ -24,10 +24,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
24 2 files changed, 15 insertions(+), 1 deletion(-) 24 2 files changed, 15 insertions(+), 1 deletion(-)
25 25
26diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c 26diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
27index 77b2e1a0fd..fdba0e0142 100644 27index f415797700..a5c6e9a3bd 100644
28--- a/src/libsystemd/sd-bus/bus-error.c 28--- a/src/libsystemd/sd-bus/bus-error.c
29+++ b/src/libsystemd/sd-bus/bus-error.c 29+++ b/src/libsystemd/sd-bus/bus-error.c
30@@ -408,7 +408,12 @@ static void bus_error_strerror(sd_bus_error *e, int error) { 30@@ -410,7 +410,12 @@ static void bus_error_strerror(sd_bus_error *e, int error) {
31 return; 31 return;
32 32
33 errno = 0; 33 errno = 0;
@@ -40,7 +40,7 @@ index 77b2e1a0fd..fdba0e0142 100644
40 if (errno == ERANGE || strlen(x) >= k - 1) { 40 if (errno == ERANGE || strlen(x) >= k - 1) {
41 free(m); 41 free(m);
42 k *= 2; 42 k *= 2;
43@@ -593,8 +598,12 @@ const char* _bus_error_message(const sd_bus_error *e, int error, char buf[static 43@@ -595,8 +600,12 @@ const char* _bus_error_message(const sd_bus_error *e, int error, char buf[static
44 44
45 if (e && e->message) 45 if (e && e->message)
46 return e->message; 46 return e->message;
@@ -71,6 +71,3 @@ index 69a2eb6404..1561859650 100644
71 if (errno == 0) { 71 if (errno == 0) {
72 char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1]; 72 char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1];
73 73
74--
752.34.1
76
diff --git a/meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch b/meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch
index e481b2e2e4..1ad9a302ff 100644
--- a/meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch
+++ b/meta/recipes-core/systemd/systemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch
@@ -1,7 +1,7 @@
1From 49c446cfb78cf74a909bed8c3798b77a5469866a Mon Sep 17 00:00:00 2001 1From 8b76e1f027d73e26cfc8e13bd49f43197dbb9004 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Mon, 25 Feb 2019 15:44:54 +0800 3Date: Mon, 25 Feb 2019 15:44:54 +0800
4Subject: [PATCH 11/22] avoid redefinition of prctl_mm_map structure 4Subject: [PATCH] avoid redefinition of prctl_mm_map structure
5 5
6Fix the following compile failure: 6Fix the following compile failure:
7error: redefinition of 'struct prctl_mm_map' 7error: redefinition of 'struct prctl_mm_map'
@@ -27,6 +27,3 @@ index 7d9e395c92..88c2d7dfac 100644
27 27
28 /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */ 28 /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */
29 #ifndef PR_CAP_AMBIENT 29 #ifndef PR_CAP_AMBIENT
30--
312.34.1
32
diff --git a/meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch b/meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch
index 66be79077e..3ff247debb 100644
--- a/meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch
+++ b/meta/recipes-core/systemd/systemd/0012-do-not-disable-buffer-in-writing-files.patch
@@ -1,7 +1,7 @@
1From e4885a8e60f883d9217e26e1db3754c2906aca31 Mon Sep 17 00:00:00 2001 1From 9686b8c52bd9e532ebe687dd31352d884873e0a4 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Fri, 1 Mar 2019 15:22:15 +0800 3Date: Fri, 1 Mar 2019 15:22:15 +0800
4Subject: [PATCH 12/22] do not disable buffer in writing files 4Subject: [PATCH] do not disable buffer in writing files
5 5
6Do not disable buffer in writing files, otherwise we get 6Do not disable buffer in writing files, otherwise we get
7failure at boot for musl like below. 7failure at boot for musl like below.
@@ -47,10 +47,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
47 22 files changed, 50 insertions(+), 51 deletions(-) 47 22 files changed, 50 insertions(+), 51 deletions(-)
48 48
49diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c 49diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
50index d2be79622f..e65fecb68d 100644 50index d08c903c3b..77ebe85dfd 100644
51--- a/src/basic/cgroup-util.c 51--- a/src/basic/cgroup-util.c
52+++ b/src/basic/cgroup-util.c 52+++ b/src/basic/cgroup-util.c
53@@ -417,7 +417,7 @@ int cg_kill_kernel_sigkill(const char *path) { 53@@ -443,7 +443,7 @@ int cg_kill_kernel_sigkill(const char *path) {
54 if (r < 0) 54 if (r < 0)
55 return r; 55 return r;
56 56
@@ -59,7 +59,7 @@ index d2be79622f..e65fecb68d 100644
59 if (r < 0) 59 if (r < 0)
60 return r; 60 return r;
61 61
62@@ -843,7 +843,7 @@ int cg_install_release_agent(const char *controller, const char *agent) { 62@@ -873,7 +873,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
63 63
64 sc = strstrip(contents); 64 sc = strstrip(contents);
65 if (isempty(sc)) { 65 if (isempty(sc)) {
@@ -68,7 +68,7 @@ index d2be79622f..e65fecb68d 100644
68 if (r < 0) 68 if (r < 0)
69 return r; 69 return r;
70 } else if (!path_equal(sc, agent)) 70 } else if (!path_equal(sc, agent))
71@@ -861,7 +861,7 @@ int cg_install_release_agent(const char *controller, const char *agent) { 71@@ -891,7 +891,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
72 72
73 sc = strstrip(contents); 73 sc = strstrip(contents);
74 if (streq(sc, "0")) { 74 if (streq(sc, "0")) {
@@ -77,7 +77,7 @@ index d2be79622f..e65fecb68d 100644
77 if (r < 0) 77 if (r < 0)
78 return r; 78 return r;
79 79
80@@ -888,7 +888,7 @@ int cg_uninstall_release_agent(const char *controller) { 80@@ -918,7 +918,7 @@ int cg_uninstall_release_agent(const char *controller) {
81 if (r < 0) 81 if (r < 0)
82 return r; 82 return r;
83 83
@@ -86,7 +86,7 @@ index d2be79622f..e65fecb68d 100644
86 if (r < 0) 86 if (r < 0)
87 return r; 87 return r;
88 88
89@@ -898,7 +898,7 @@ int cg_uninstall_release_agent(const char *controller) { 89@@ -928,7 +928,7 @@ int cg_uninstall_release_agent(const char *controller) {
90 if (r < 0) 90 if (r < 0)
91 return r; 91 return r;
92 92
@@ -95,7 +95,7 @@ index d2be79622f..e65fecb68d 100644
95 if (r < 0) 95 if (r < 0)
96 return r; 96 return r;
97 97
98@@ -1814,7 +1814,7 @@ int cg_set_attribute(const char *controller, const char *path, const char *attri 98@@ -1844,7 +1844,7 @@ int cg_set_attribute(const char *controller, const char *path, const char *attri
99 if (r < 0) 99 if (r < 0)
100 return r; 100 return r;
101 101
@@ -188,10 +188,10 @@ index d21f3f79ff..258607cc7e 100644
188 log_warning_errno(r, "Failed to flush binfmt_misc rules, ignoring: %m"); 188 log_warning_errno(r, "Failed to flush binfmt_misc rules, ignoring: %m");
189 else 189 else
190diff --git a/src/core/cgroup.c b/src/core/cgroup.c 190diff --git a/src/core/cgroup.c b/src/core/cgroup.c
191index 61ac4df1a6..ea18970196 100644 191index d398655b0a..9558f38a72 100644
192--- a/src/core/cgroup.c 192--- a/src/core/cgroup.c
193+++ b/src/core/cgroup.c 193+++ b/src/core/cgroup.c
194@@ -4578,7 +4578,7 @@ int unit_cgroup_freezer_action(Unit *u, FreezerAction action) { 194@@ -4589,7 +4589,7 @@ int unit_cgroup_freezer_action(Unit *u, FreezerAction action) {
195 u->freezer_state = FREEZER_THAWING; 195 u->freezer_state = FREEZER_THAWING;
196 } 196 }
197 197
@@ -201,10 +201,10 @@ index 61ac4df1a6..ea18970196 100644
201 return r; 201 return r;
202 202
203diff --git a/src/core/main.c b/src/core/main.c 203diff --git a/src/core/main.c b/src/core/main.c
204index 3f71cc0947..0e5aec3e9e 100644 204index 364dc895d1..d28ec42030 100644
205--- a/src/core/main.c 205--- a/src/core/main.c
206+++ b/src/core/main.c 206+++ b/src/core/main.c
207@@ -1678,7 +1678,7 @@ static void initialize_core_pattern(bool skip_setup) { 207@@ -1683,7 +1683,7 @@ static void initialize_core_pattern(bool skip_setup) {
208 if (getpid_cached() != 1) 208 if (getpid_cached() != 1)
209 return; 209 return;
210 210
@@ -240,7 +240,7 @@ index 7ea902b6f9..1aef2988d0 100644
240 log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m"); 240 log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m");
241 #endif 241 #endif
242diff --git a/src/home/homework.c b/src/home/homework.c 242diff --git a/src/home/homework.c b/src/home/homework.c
243index 066483e342..5f92dd7064 100644 243index 500c310cfc..f9845ff9e7 100644
244--- a/src/home/homework.c 244--- a/src/home/homework.c
245+++ b/src/home/homework.c 245+++ b/src/home/homework.c
246@@ -278,7 +278,7 @@ static void drop_caches_now(void) { 246@@ -278,7 +278,7 @@ static void drop_caches_now(void) {
@@ -253,7 +253,7 @@ index 066483e342..5f92dd7064 100644
253 log_warning_errno(r, "Failed to drop caches, ignoring: %m"); 253 log_warning_errno(r, "Failed to drop caches, ignoring: %m");
254 else 254 else
255diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c 255diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c
256index 2fbc619a34..09d9591e37 100644 256index 5f7491e8e2..b4a0af4073 100644
257--- a/src/libsystemd/sd-device/sd-device.c 257--- a/src/libsystemd/sd-device/sd-device.c
258+++ b/src/libsystemd/sd-device/sd-device.c 258+++ b/src/libsystemd/sd-device/sd-device.c
259@@ -2516,7 +2516,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr, 259@@ -2516,7 +2516,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr,
@@ -279,10 +279,10 @@ index a5002437c6..b12e6cd9c9 100644
279 log_error_errno(r, "Failed to move process: %m"); 279 log_error_errno(r, "Failed to move process: %m");
280 goto finish; 280 goto finish;
281diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c 281diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
282index 6ab604d3dc..bbec6b686c 100644 282index 005a3d2be1..526d3c4311 100644
283--- a/src/nspawn/nspawn.c 283--- a/src/nspawn/nspawn.c
284+++ b/src/nspawn/nspawn.c 284+++ b/src/nspawn/nspawn.c
285@@ -2688,7 +2688,7 @@ static int reset_audit_loginuid(void) { 285@@ -2707,7 +2707,7 @@ static int reset_audit_loginuid(void) {
286 if (streq(p, "4294967295")) 286 if (streq(p, "4294967295"))
287 return 0; 287 return 0;
288 288
@@ -291,7 +291,7 @@ index 6ab604d3dc..bbec6b686c 100644
291 if (r < 0) { 291 if (r < 0) {
292 log_error_errno(r, 292 log_error_errno(r,
293 "Failed to reset audit login UID. This probably means that your kernel is too\n" 293 "Failed to reset audit login UID. This probably means that your kernel is too\n"
294@@ -4141,7 +4141,7 @@ static int setup_uid_map( 294@@ -4160,7 +4160,7 @@ static int setup_uid_map(
295 return log_oom(); 295 return log_oom();
296 296
297 xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid); 297 xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid);
@@ -300,7 +300,7 @@ index 6ab604d3dc..bbec6b686c 100644
300 if (r < 0) 300 if (r < 0)
301 return log_error_errno(r, "Failed to write UID map: %m"); 301 return log_error_errno(r, "Failed to write UID map: %m");
302 302
303@@ -4151,7 +4151,7 @@ static int setup_uid_map( 303@@ -4170,7 +4170,7 @@ static int setup_uid_map(
304 return log_oom(); 304 return log_oom();
305 305
306 xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid); 306 xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid);
@@ -323,7 +323,7 @@ index a26175474b..1413a9c72c 100644
323 return log_warning_errno(r, "Failed to unregister binfmt_misc entries: %m"); 323 return log_warning_errno(r, "Failed to unregister binfmt_misc entries: %m");
324 324
325diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c 325diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c
326index 934a16eaf3..c921ced861 100644 326index 1b8a86dc54..5ca14433c8 100644
327--- a/src/shared/cgroup-setup.c 327--- a/src/shared/cgroup-setup.c
328+++ b/src/shared/cgroup-setup.c 328+++ b/src/shared/cgroup-setup.c
329@@ -351,7 +351,7 @@ int cg_attach(const char *controller, const char *path, pid_t pid) { 329@@ -351,7 +351,7 @@ int cg_attach(const char *controller, const char *path, pid_t pid) {
@@ -335,7 +335,7 @@ index 934a16eaf3..c921ced861 100644
335 if (r == -EOPNOTSUPP && cg_is_threaded(path) > 0) 335 if (r == -EOPNOTSUPP && cg_is_threaded(path) > 0)
336 /* When the threaded mode is used, we cannot read/write the file. Let's return recognizable error. */ 336 /* When the threaded mode is used, we cannot read/write the file. Let's return recognizable error. */
337 return -EUCLEAN; 337 return -EUCLEAN;
338@@ -966,7 +966,7 @@ int cg_enable_everywhere( 338@@ -969,7 +969,7 @@ int cg_enable_everywhere(
339 return log_debug_errno(errno, "Failed to open cgroup.subtree_control file of %s: %m", p); 339 return log_debug_errno(errno, "Failed to open cgroup.subtree_control file of %s: %m", p);
340 } 340 }
341 341
@@ -367,10 +367,10 @@ index 805503f366..01a7ccb291 100644
367 log_debug_errno(r, "Failed to turn off coredumps, ignoring: %m"); 367 log_debug_errno(r, "Failed to turn off coredumps, ignoring: %m");
368 } 368 }
369diff --git a/src/shared/hibernate-util.c b/src/shared/hibernate-util.c 369diff --git a/src/shared/hibernate-util.c b/src/shared/hibernate-util.c
370index 3eb13d48f6..d09b901be1 100644 370index 67862dcc61..9e9265c214 100644
371--- a/src/shared/hibernate-util.c 371--- a/src/shared/hibernate-util.c
372+++ b/src/shared/hibernate-util.c 372+++ b/src/shared/hibernate-util.c
373@@ -481,7 +481,7 @@ int write_resume_config(dev_t devno, uint64_t offset, const char *device) { 373@@ -504,7 +504,7 @@ int write_resume_config(dev_t devno, uint64_t offset, const char *device) {
374 374
375 /* We write the offset first since it's safer. Note that this file is only available in 4.17+, so 375 /* We write the offset first since it's safer. Note that this file is only available in 4.17+, so
376 * fail gracefully if it doesn't exist and we're only overwriting it with 0. */ 376 * fail gracefully if it doesn't exist and we're only overwriting it with 0. */
@@ -379,7 +379,7 @@ index 3eb13d48f6..d09b901be1 100644
379 if (r == -ENOENT) { 379 if (r == -ENOENT) {
380 if (offset != 0) 380 if (offset != 0)
381 return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), 381 return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
382@@ -497,7 +497,7 @@ int write_resume_config(dev_t devno, uint64_t offset, const char *device) { 382@@ -520,7 +520,7 @@ int write_resume_config(dev_t devno, uint64_t offset, const char *device) {
383 log_debug("Wrote resume_offset=%s for device '%s' to /sys/power/resume_offset.", 383 log_debug("Wrote resume_offset=%s for device '%s' to /sys/power/resume_offset.",
384 offset_str, device); 384 offset_str, device);
385 385
@@ -402,7 +402,7 @@ index 1f88e724d0..feb18b320a 100644
402 return r; 402 return r;
403 403
404diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c 404diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c
405index 4c1a968718..6faf6806a5 100644 405index 99ccefb227..e4975018ab 100644
406--- a/src/shared/watchdog.c 406--- a/src/shared/watchdog.c
407+++ b/src/shared/watchdog.c 407+++ b/src/shared/watchdog.c
408@@ -93,7 +93,7 @@ static int set_pretimeout_governor(const char *governor) { 408@@ -93,7 +93,7 @@ static int set_pretimeout_governor(const char *governor) {
@@ -412,10 +412,10 @@ index 4c1a968718..6faf6806a5 100644
412- WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_VERIFY_IGNORE_NEWLINE); 412- WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_VERIFY_IGNORE_NEWLINE);
413+ WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_VERIFY_IGNORE_NEWLINE); 413+ WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_VERIFY_IGNORE_NEWLINE);
414 if (r < 0) 414 if (r < 0)
415 return log_error_errno(r, "Failed to set pretimeout_governor to '%s': %m", governor); 415 return log_error_errno(r, "Failed to set watchdog pretimeout_governor to '%s': %m", governor);
416 416
417diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c 417diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
418index 21af3e9e52..6d4b84b5d5 100644 418index 21062b24e0..262dd71d72 100644
419--- a/src/sleep/sleep.c 419--- a/src/sleep/sleep.c
420+++ b/src/sleep/sleep.c 420+++ b/src/sleep/sleep.c
421@@ -137,7 +137,7 @@ static int write_state(int fd, char * const *states) { 421@@ -137,7 +137,7 @@ static int write_state(int fd, char * const *states) {
@@ -437,7 +437,7 @@ index 21af3e9e52..6d4b84b5d5 100644
437 log_debug("Using sleep disk mode '%s'.", *mode); 437 log_debug("Using sleep disk mode '%s'.", *mode);
438 return 0; 438 return 0;
439diff --git a/src/storagetm/storagetm.c b/src/storagetm/storagetm.c 439diff --git a/src/storagetm/storagetm.c b/src/storagetm/storagetm.c
440index ae63baaf79..82eeca479a 100644 440index 16d4fb07d4..aca7506463 100644
441--- a/src/storagetm/storagetm.c 441--- a/src/storagetm/storagetm.c
442+++ b/src/storagetm/storagetm.c 442+++ b/src/storagetm/storagetm.c
443@@ -186,7 +186,7 @@ static int nvme_subsystem_unlink(NvmeSubsystem *s) { 443@@ -186,7 +186,7 @@ static int nvme_subsystem_unlink(NvmeSubsystem *s) {
@@ -533,7 +533,7 @@ index ae63baaf79..82eeca479a 100644
533 return log_error_errno(r, "Failed to set IP address on NVME port %" PRIu16 ": %m", portnr); 533 return log_error_errno(r, "Failed to set IP address on NVME port %" PRIu16 ": %m", portnr);
534 534
535diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c 535diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
536index febe345b4c..a90b610ba1 100644 536index e5b8df5c2d..63ca15628c 100644
537--- a/src/udev/udev-rules.c 537--- a/src/udev/udev-rules.c
538+++ b/src/udev/udev-rules.c 538+++ b/src/udev/udev-rules.c
539@@ -2711,7 +2711,6 @@ static int udev_rule_apply_token_to_event( 539@@ -2711,7 +2711,6 @@ static int udev_rule_apply_token_to_event(
@@ -557,6 +557,3 @@ index 4d82c65f0a..3a3d861b83 100644
557 if (r < 0) 557 if (r < 0)
558 return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8)); 558 return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8));
559 559
560--
5612.34.1
562
diff --git a/meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch b/meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch
index 43f75373a6..a92d4db101 100644
--- a/meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch
+++ b/meta/recipes-core/systemd/systemd/0013-Handle-__cpu_mask-usage.patch
@@ -1,7 +1,7 @@
1From 2f90f8463423cfbb7e83fcef42f1071018c3b56e Mon Sep 17 00:00:00 2001 1From 385fbcc3cec50b995299e25f913d9683ddf51174 Mon Sep 17 00:00:00 2001
2From: Scott Murray <scott.murray@konsulko.com> 2From: Scott Murray <scott.murray@konsulko.com>
3Date: Fri, 13 Sep 2019 19:26:27 -0400 3Date: Fri, 13 Sep 2019 19:26:27 -0400
4Subject: [PATCH 13/22] Handle __cpu_mask usage 4Subject: [PATCH] Handle __cpu_mask usage
5 5
6Fixes errors: 6Fixes errors:
7 7
@@ -55,6 +55,3 @@ index ea0c58770e..b65c0bd370 100644
55 55
56 /* Print information about various types. Useful when diagnosing 56 /* Print information about various types. Useful when diagnosing
57 * gcc diagnostics on an unfamiliar architecture. */ 57 * gcc diagnostics on an unfamiliar architecture. */
58--
592.34.1
60
diff --git a/meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch b/meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch
index a751e1ba6f..f84f289c2f 100644
--- a/meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch
+++ b/meta/recipes-core/systemd/systemd/0014-Handle-missing-gshadow.patch
@@ -1,7 +1,7 @@
1From b7c827bb44edbb6251c9fcdb80aa03982c0e7bf3 Mon Sep 17 00:00:00 2001 1From bc62e5e507cc3f10fde7d35d16059a06a78757b6 Mon Sep 17 00:00:00 2001
2From: Alex Kiernan <alex.kiernan@gmail.com> 2From: Alex Kiernan <alex.kiernan@gmail.com>
3Date: Tue, 10 Mar 2020 11:05:20 +0000 3Date: Tue, 10 Mar 2020 11:05:20 +0000
4Subject: [PATCH 14/22] Handle missing gshadow 4Subject: [PATCH] Handle missing gshadow
5 5
6gshadow usage is now present in the userdb code. Mask all uses of it to 6gshadow usage is now present in the userdb code. Mask all uses of it to
7allow compilation on musl 7allow compilation on musl
@@ -138,10 +138,10 @@ index 22ab04d6ee..4e52e7a911 100644
138 #include <shadow.h> 138 #include <shadow.h>
139 139
140diff --git a/src/shared/userdb.c b/src/shared/userdb.c 140diff --git a/src/shared/userdb.c b/src/shared/userdb.c
141index f60d48ace4..e878199a28 100644 141index 7469768233..556e6b84e6 100644
142--- a/src/shared/userdb.c 142--- a/src/shared/userdb.c
143+++ b/src/shared/userdb.c 143+++ b/src/shared/userdb.c
144@@ -1038,13 +1038,15 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) { 144@@ -1039,13 +1039,15 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) {
145 if (gr) { 145 if (gr) {
146 _cleanup_free_ char *buffer = NULL; 146 _cleanup_free_ char *buffer = NULL;
147 bool incomplete = false; 147 bool incomplete = false;
@@ -158,7 +158,7 @@ index f60d48ace4..e878199a28 100644
158 if (!FLAGS_SET(iterator->flags, USERDB_SUPPRESS_SHADOW)) { 158 if (!FLAGS_SET(iterator->flags, USERDB_SUPPRESS_SHADOW)) {
159 r = nss_sgrp_for_group(gr, &sgrp, &buffer); 159 r = nss_sgrp_for_group(gr, &sgrp, &buffer);
160 if (r < 0) { 160 if (r < 0) {
161@@ -1057,6 +1059,9 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) { 161@@ -1058,6 +1060,9 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) {
162 } 162 }
163 163
164 r = nss_group_to_group_record(gr, r >= 0 ? &sgrp : NULL, ret); 164 r = nss_group_to_group_record(gr, r >= 0 ? &sgrp : NULL, ret);
@@ -168,6 +168,3 @@ index f60d48ace4..e878199a28 100644
168 if (r < 0) 168 if (r < 0)
169 return r; 169 return r;
170 170
171--
1722.34.1
173
diff --git a/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch b/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
index e112766a9b..c1297f27dd 100644
--- a/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
@@ -1,7 +1,7 @@
1From 3dc9d9d410bcce54fddfd94f43f7f77f3aa8e281 Mon Sep 17 00:00:00 2001 1From 79f2f3e90229f4812d93c6965cb67385642dfcc4 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 12 Apr 2021 23:44:53 -0700 3Date: Mon, 12 Apr 2021 23:44:53 -0700
4Subject: [PATCH 15/22] missing_syscall.h: Define MIPS ABI defines for musl 4Subject: [PATCH] missing_syscall.h: Define MIPS ABI defines for musl
5 5
6musl does not define _MIPS_SIM_ABI32, _MIPS_SIM_NABI32, _MIPS_SIM_ABI64 6musl does not define _MIPS_SIM_ABI32, _MIPS_SIM_NABI32, _MIPS_SIM_ABI64
7unlike glibc where these are provided by libc headers, therefore define 7unlike glibc where these are provided by libc headers, therefore define
@@ -16,7 +16,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
16 2 files changed, 7 insertions(+) 16 2 files changed, 7 insertions(+)
17 17
18diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h 18diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h
19index d795efd8f2..d6729d3c1d 100644 19index e2cd8b4e35..f2fe489de7 100644
20--- a/src/basic/missing_syscall.h 20--- a/src/basic/missing_syscall.h
21+++ b/src/basic/missing_syscall.h 21+++ b/src/basic/missing_syscall.h
22@@ -20,6 +20,12 @@ 22@@ -20,6 +20,12 @@
@@ -31,9 +31,9 @@ index d795efd8f2..d6729d3c1d 100644
31+ 31+
32 #include "macro.h" 32 #include "macro.h"
33 #include "missing_keyctl.h" 33 #include "missing_keyctl.h"
34 #include "missing_stat.h" 34 #include "missing_sched.h"
35diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c 35diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
36index 7ae921a113..0ef9d1fd39 100644 36index dc59a9582c..9e802ef5a5 100644
37--- a/src/shared/base-filesystem.c 37--- a/src/shared/base-filesystem.c
38+++ b/src/shared/base-filesystem.c 38+++ b/src/shared/base-filesystem.c
39@@ -20,6 +20,7 @@ 39@@ -20,6 +20,7 @@
@@ -44,6 +44,3 @@ index 7ae921a113..0ef9d1fd39 100644
44 44
45 typedef struct BaseFilesystem { 45 typedef struct BaseFilesystem {
46 const char *dir; /* directory or symlink to create */ 46 const char *dir; /* directory or symlink to create */
47--
482.34.1
49
diff --git a/meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch b/meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch
index 0be817e62d..d932d7cc76 100644
--- a/meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch
+++ b/meta/recipes-core/systemd/systemd/0016-pass-correct-parameters-to-getdents64.patch
@@ -1,7 +1,7 @@
1From 0994b59dba9f248ad31cb7087046dc00b72cb4ea Mon Sep 17 00:00:00 2001 1From a8e07d87adfeb1c72c6eaf5402db465a78e08ee6 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 21 Jan 2022 15:15:11 -0800 3Date: Fri, 21 Jan 2022 15:15:11 -0800
4Subject: [PATCH 16/22] pass correct parameters to getdents64 4Subject: [PATCH] pass correct parameters to getdents64
5 5
6Fixes 6Fixes
7../git/src/basic/recurse-dir.c:57:40: error: incompatible pointer types passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types] 7../git/src/basic/recurse-dir.c:57:40: error: incompatible pointer types passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
@@ -20,7 +20,7 @@ Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
20 1 file changed, 1 insertion(+), 1 deletion(-) 20 1 file changed, 1 insertion(+), 1 deletion(-)
21 21
22diff --git a/src/basic/recurse-dir.c b/src/basic/recurse-dir.c 22diff --git a/src/basic/recurse-dir.c b/src/basic/recurse-dir.c
23index 5e98b7a5d8..aef065047b 100644 23index d648862dbc..a1fea243e8 100644
24--- a/src/basic/recurse-dir.c 24--- a/src/basic/recurse-dir.c
25+++ b/src/basic/recurse-dir.c 25+++ b/src/basic/recurse-dir.c
26@@ -55,7 +55,7 @@ int readdir_all(int dir_fd, 26@@ -55,7 +55,7 @@ int readdir_all(int dir_fd,
@@ -32,6 +32,3 @@ index 5e98b7a5d8..aef065047b 100644
32 if (n < 0) 32 if (n < 0)
33 return -errno; 33 return -errno;
34 if (n == 0) 34 if (n == 0)
35--
362.34.1
37
diff --git a/meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch b/meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch
index 4176522a1c..6a2dcc355d 100644
--- a/meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch
+++ b/meta/recipes-core/systemd/systemd/0017-Adjust-for-musl-headers.patch
@@ -1,7 +1,7 @@
1From 3c094d443ca30f19114392fd8ef274af6eabc12d Mon Sep 17 00:00:00 2001 1From 5da745dc6f60f6fac65371a60eee7cecaf575eae Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 21 Jan 2022 22:19:37 -0800 3Date: Fri, 21 Jan 2022 22:19:37 -0800
4Subject: [PATCH 17/22] Adjust for musl headers 4Subject: [PATCH] Adjust for musl headers
5 5
6Upstream-Status: Inappropriate [musl specific] 6Upstream-Status: Inappropriate [musl specific]
7 7
@@ -242,7 +242,7 @@ index ff372092e6..eef66811f4 100644
242 #include "nlmon.h" 242 #include "nlmon.h"
243 243
244diff --git a/src/network/netdev/tunnel.c b/src/network/netdev/tunnel.c 244diff --git a/src/network/netdev/tunnel.c b/src/network/netdev/tunnel.c
245index db84e7cf6e..93d5642962 100644 245index ab3b8fbb51..68f88b3ca3 100644
246--- a/src/network/netdev/tunnel.c 246--- a/src/network/netdev/tunnel.c
247+++ b/src/network/netdev/tunnel.c 247+++ b/src/network/netdev/tunnel.c
248@@ -2,7 +2,7 @@ 248@@ -2,7 +2,7 @@
@@ -332,7 +332,7 @@ index b11fdbbd0d..a971a917f0 100644
332 #include "conf-parser.h" 332 #include "conf-parser.h"
333 #include "alloc-util.h" 333 #include "alloc-util.h"
334diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c 334diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c
335index 4c7d837c41..6df6dfb816 100644 335index 52fed20b57..e66bc34993 100644
336--- a/src/network/netdev/wireguard.c 336--- a/src/network/netdev/wireguard.c
337+++ b/src/network/netdev/wireguard.c 337+++ b/src/network/netdev/wireguard.c
338@@ -6,7 +6,7 @@ 338@@ -6,7 +6,7 @@
@@ -425,7 +425,7 @@ index 607fe0053c..9ce4005874 100644
425 425
426 #include "sd-dhcp-server.h" 426 #include "sd-dhcp-server.h"
427diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c 427diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
428index efbae6d868..1ea2151d50 100644 428index 8945827862..7571429523 100644
429--- a/src/network/networkd-dhcp4.c 429--- a/src/network/networkd-dhcp4.c
430+++ b/src/network/networkd-dhcp4.c 430+++ b/src/network/networkd-dhcp4.c
431@@ -3,7 +3,7 @@ 431@@ -3,7 +3,7 @@
@@ -451,7 +451,7 @@ index 32229a3fc7..662a345d6e 100644
451 #include "in-addr-util.h" 451 #include "in-addr-util.h"
452 #include "networkd-address.h" 452 #include "networkd-address.h"
453diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c 453diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
454index ee5f0f2c0a..ea5269a2de 100644 454index a4fa321264..0fd81a53d1 100644
455--- a/src/network/networkd-link.c 455--- a/src/network/networkd-link.c
456+++ b/src/network/networkd-link.c 456+++ b/src/network/networkd-link.c
457@@ -3,7 +3,7 @@ 457@@ -3,7 +3,7 @@
@@ -464,7 +464,7 @@ index ee5f0f2c0a..ea5269a2de 100644
464 #include <linux/netdevice.h> 464 #include <linux/netdevice.h>
465 #include <sys/socket.h> 465 #include <sys/socket.h>
466diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c 466diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c
467index ab9eeb13a5..dd96fe7483 100644 467index 840ccb158d..9f2e85e32f 100644
468--- a/src/network/networkd-ndisc.c 468--- a/src/network/networkd-ndisc.c
469+++ b/src/network/networkd-ndisc.c 469+++ b/src/network/networkd-ndisc.c
470@@ -6,7 +6,7 @@ 470@@ -6,7 +6,7 @@
@@ -477,7 +477,7 @@ index ab9eeb13a5..dd96fe7483 100644
477 #include "sd-ndisc.h" 477 #include "sd-ndisc.h"
478 478
479diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c 479diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
480index 7218d799fc..30d5574eae 100644 480index eb502ae2cf..5b25ee4523 100644
481--- a/src/network/networkd-route.c 481--- a/src/network/networkd-route.c
482+++ b/src/network/networkd-route.c 482+++ b/src/network/networkd-route.c
483@@ -1,9 +1,5 @@ 483@@ -1,9 +1,5 @@
@@ -502,7 +502,7 @@ index 7218d799fc..30d5574eae 100644
502 _cleanup_(route_freep) Route *route = NULL; 502 _cleanup_(route_freep) Route *route = NULL;
503 503
504diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c 504diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c
505index 2298f9ea3a..7d5f87de53 100644 505index 011ea1fe6e..59dfe733eb 100644
506--- a/src/network/networkd-setlink.c 506--- a/src/network/networkd-setlink.c
507+++ b/src/network/networkd-setlink.c 507+++ b/src/network/networkd-setlink.c
508@@ -2,7 +2,7 @@ 508@@ -2,7 +2,7 @@
@@ -567,6 +567,3 @@ index f528a46b8e..830318cda5 100644
567 #include <linux/netdevice.h> 567 #include <linux/netdevice.h>
568 #include <linux/pci_regs.h> 568 #include <linux/pci_regs.h>
569 569
570--
5712.34.1
572
diff --git a/meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch b/meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
index 75f6b9094a..89ef33c156 100644
--- a/meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
+++ b/meta/recipes-core/systemd/systemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
@@ -1,8 +1,8 @@
1From be02bd0876a061728661535a709d313e39fe1ac3 Mon Sep 17 00:00:00 2001 1From 1c5c9714a2a9bc651687bf2c583019c52ed93ac4 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 8 Nov 2022 13:31:34 -0800 3Date: Tue, 8 Nov 2022 13:31:34 -0800
4Subject: [PATCH 18/22] test-bus-error: strerror() is assumed to be GNU 4Subject: [PATCH] test-bus-error: strerror() is assumed to be GNU specific
5 specific version mark it so 5 version mark it so
6 6
7Upstream-Status: Inappropriate [Upstream systemd only supports glibc] 7Upstream-Status: Inappropriate [Upstream systemd only supports glibc]
8 8
@@ -47,6 +47,3 @@ index 376d532281..967cfd4d67 100644
47 47
48 TEST(PROTECT_ERRNO) { 48 TEST(PROTECT_ERRNO) {
49 errno = 12; 49 errno = 12;
50--
512.34.1
52
diff --git a/meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch b/meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch
index e038b73678..7911add5ea 100644
--- a/meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch
@@ -1,7 +1,7 @@
1From 46d80840bfe37e67d4f18c37a77751ea1fe63a07 Mon Sep 17 00:00:00 2001 1From 43f56ac05ff4b9c7774b6f580612f2a7896a4885 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 23 Jan 2023 23:39:46 -0800 3Date: Mon, 23 Jan 2023 23:39:46 -0800
4Subject: [PATCH 19/22] errno-util: Make STRERROR portable for musl 4Subject: [PATCH] errno-util: Make STRERROR portable for musl
5 5
6Sadly, systemd has decided to use yet another GNU extention in a macro 6Sadly, systemd has decided to use yet another GNU extention in a macro
7lets make this such that we can use XSI compliant strerror_r() for 7lets make this such that we can use XSI compliant strerror_r() for
@@ -37,6 +37,3 @@ index 27804e6382..274c1c6ef1 100644
37 /* A helper to print an error message or message for functions that return 0 on EOF. 37 /* A helper to print an error message or message for functions that return 0 on EOF.
38 * Note that we can't use ({ … }) to define a temporary variable, so errnum is 38 * Note that we can't use ({ … }) to define a temporary variable, so errnum is
39 * evaluated twice. */ 39 * evaluated twice. */
40--
412.34.1
42
diff --git a/meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch b/meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch
index b83fffe793..be0a0da013 100644
--- a/meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch
+++ b/meta/recipes-core/systemd/systemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch
@@ -1,7 +1,7 @@
1From 9eb4867b4e2dbdb2484ae854022aff97e2f0feb3 Mon Sep 17 00:00:00 2001 1From cda1cc94bd81c8ff9135255895a414fb938e2c79 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 2 Aug 2023 12:06:27 -0700 3Date: Wed, 2 Aug 2023 12:06:27 -0700
4Subject: [PATCH 20/22] sd-event: Make malloc_trim() conditional on glibc 4Subject: [PATCH] sd-event: Make malloc_trim() conditional on glibc
5 5
6musl does not have this API 6musl does not have this API
7 7
@@ -12,7 +12,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
12 1 file changed, 3 insertions(+), 1 deletion(-) 12 1 file changed, 3 insertions(+), 1 deletion(-)
13 13
14diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c 14diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
15index 288798a0dc..6419a7f216 100644 15index b3541a1429..ba87265d9f 100644
16--- a/src/libsystemd/sd-event/sd-event.c 16--- a/src/libsystemd/sd-event/sd-event.c
17+++ b/src/libsystemd/sd-event/sd-event.c 17+++ b/src/libsystemd/sd-event/sd-event.c
18@@ -1874,7 +1874,7 @@ _public_ int sd_event_add_exit( 18@@ -1874,7 +1874,7 @@ _public_ int sd_event_add_exit(
@@ -34,6 +34,3 @@ index 288798a0dc..6419a7f216 100644
34 usec_t after_timestamp = now(CLOCK_MONOTONIC); 34 usec_t after_timestamp = now(CLOCK_MONOTONIC);
35 35
36 if (r > 0) 36 if (r > 0)
37--
382.34.1
39
diff --git a/meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch b/meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch
index 7eff069bb7..9aa08e59cd 100644
--- a/meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0021-shared-Do-not-use-malloc_info-on-musl.patch
@@ -1,7 +1,7 @@
1From 502597b9ddd6b145541b23fadca0b1d3ca9f6367 Mon Sep 17 00:00:00 2001 1From 2913e608d6e91c8037d698534f72970b4c365d8f Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 2 Aug 2023 12:20:40 -0700 3Date: Wed, 2 Aug 2023 12:20:40 -0700
4Subject: [PATCH 21/22] shared: Do not use malloc_info on musl 4Subject: [PATCH] shared: Do not use malloc_info on musl
5 5
6Upstream-Status: Inappropriate [musl-specific] 6Upstream-Status: Inappropriate [musl-specific]
7Signed-off-by: Khem Raj <raj.khem@gmail.com> 7Signed-off-by: Khem Raj <raj.khem@gmail.com>
@@ -52,6 +52,3 @@ index 8e70e365dd..9e782caec9 100644
52 (void) memstream_dump(LOG_INFO, &m); 52 (void) memstream_dump(LOG_INFO, &m);
53 break; 53 break;
54 } 54 }
55--
562.34.1
57
diff --git a/meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch b/meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch
index 24f3bf74a0..e0a342355f 100644
--- a/meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch
+++ b/meta/recipes-core/systemd/systemd/0022-avoid-missing-LOCK_EX-declaration.patch
@@ -1,7 +1,7 @@
1From fd52f1764647e03a35e8f0ed0ef952049073ccbd Mon Sep 17 00:00:00 2001 1From 9d151b5bb3105fb21d55a301def3d97b5a314580 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com> 2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Tue, 2 Jan 2024 11:03:27 +0800 3Date: Tue, 2 Jan 2024 11:03:27 +0800
4Subject: [PATCH 22/22] avoid missing LOCK_EX declaration 4Subject: [PATCH] avoid missing LOCK_EX declaration
5 5
6This only happens on MUSL. Include sys/file.h to avoid compilation 6This only happens on MUSL. Include sys/file.h to avoid compilation
7error about missing LOCK_EX declaration. 7error about missing LOCK_EX declaration.
@@ -15,10 +15,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
15 2 files changed, 2 insertions(+) 15 2 files changed, 2 insertions(+)
16 16
17diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c 17diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c
18index 70d963e269..7084811439 100644 18index 9d27280ed0..569311422d 100644
19--- a/src/core/exec-invoke.c 19--- a/src/core/exec-invoke.c
20+++ b/src/core/exec-invoke.c 20+++ b/src/core/exec-invoke.c
21@@ -4,6 +4,7 @@ 21@@ -5,6 +5,7 @@
22 #include <sys/ioctl.h> 22 #include <sys/ioctl.h>
23 #include <sys/mount.h> 23 #include <sys/mount.h>
24 #include <sys/prctl.h> 24 #include <sys/prctl.h>
@@ -38,6 +38,3 @@ index 5339bc4e5e..0697495f23 100644
38 38
39 int lock_dev_console(void); 39 int lock_dev_console(void);
40 40
41--
422.34.1
43
diff --git a/meta/recipes-core/systemd/systemd_255.4.bb b/meta/recipes-core/systemd/systemd_255.21.bb
index 0ccca8a567..bb9dc3da33 100644
--- a/meta/recipes-core/systemd/systemd_255.4.bb
+++ b/meta/recipes-core/systemd/systemd_255.21.bb
@@ -4,7 +4,7 @@ PROVIDES = "udev"
4 4
5PE = "1" 5PE = "1"
6 6
7DEPENDS = "intltool-native gperf-native libcap util-linux python3-jinja2-native" 7DEPENDS = "gperf-native libcap util-linux python3-jinja2-native"
8 8
9SECTION = "base/shell" 9SECTION = "base/shell"
10 10
@@ -188,7 +188,7 @@ PACKAGECONFIG[oomd] = "-Doomd=true,-Doomd=false"
188PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl" 188PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl"
189PACKAGECONFIG[p11kit] = "-Dp11kit=true,-Dp11kit=false,p11-kit" 189PACKAGECONFIG[p11kit] = "-Dp11kit=true,-Dp11kit=false,p11-kit"
190PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}" 190PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}"
191PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2" 191PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2,,libpcre2"
192PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false" 192PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false"
193# If polkit is disabled and networkd+hostnamed are in use, enabling this option and 193# If polkit is disabled and networkd+hostnamed are in use, enabling this option and
194# using dbus-broker will allow networkd to be authorized to change the 194# using dbus-broker will allow networkd to be authorized to change the
@@ -248,7 +248,6 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \
248 -Dsystem-uid-max=999 \ 248 -Dsystem-uid-max=999 \
249 -Dsystem-alloc-gid-min=101 \ 249 -Dsystem-alloc-gid-min=101 \
250 -Dsystem-gid-max=999 \ 250 -Dsystem-gid-max=999 \
251 -Dcreate-log-dirs=false \
252 ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-mdns=no -Ddefault-llmnr=no', '', d)} \ 251 ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-mdns=no -Ddefault-llmnr=no', '', d)} \
253 " 252 "
254 253
@@ -401,6 +400,10 @@ do_install() {
401 sed -i '/AlternativeNamesPolicy=/s/$/ mac/' ${D}${rootlibexecdir}/systemd/network/99-default.link 400 sed -i '/AlternativeNamesPolicy=/s/$/ mac/' ${D}${rootlibexecdir}/systemd/network/99-default.link
402 fi 401 fi
403 fi 402 fi
403
404 if [ -e ${D}${nonarch_libdir}/tmpfiles.d/legacy.conf ];then
405 sed -i -e '/^L \/var\/log\/README/d' ${D}${nonarch_libdir}/tmpfiles.d/legacy.conf
406 fi
404} 407}
405 408
406python populate_packages:prepend (){ 409python populate_packages:prepend (){
@@ -589,26 +592,16 @@ FILES:${PN}-extra-utils = "\
589 ${bindir}/systemd-cgls \ 592 ${bindir}/systemd-cgls \
590 ${bindir}/systemd-cgtop \ 593 ${bindir}/systemd-cgtop \
591 ${bindir}/systemd-stdio-bridge \ 594 ${bindir}/systemd-stdio-bridge \
592 ${base_bindir}/systemd-ask-password \
593 ${base_bindir}/systemd-tty-ask-password-agent \
594 ${base_sbindir}/mount.ddi \ 595 ${base_sbindir}/mount.ddi \
595 ${systemd_system_unitdir}/initrd.target.wants/systemd-pcrphase-initrd.path \ 596 ${systemd_system_unitdir}/initrd.target.wants/systemd-pcrphase-initrd.path \
596 ${systemd_system_unitdir}/systemd-ask-password-console.path \
597 ${systemd_system_unitdir}/systemd-ask-password-console.service \
598 ${systemd_system_unitdir}/systemd-ask-password-wall.path \
599 ${systemd_system_unitdir}/systemd-ask-password-wall.service \
600 ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-console.path \
601 ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-wall.path \
602 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase.path \ 597 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase.path \
603 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase-sysinit.path \ 598 ${systemd_system_unitdir}/sysinit.target.wants/systemd-pcrphase-sysinit.path \
604 ${systemd_system_unitdir}/multi-user.target.wants/systemd-ask-password-wall.path \
605 ${rootlibexecdir}/systemd/systemd-resolve-host \ 599 ${rootlibexecdir}/systemd/systemd-resolve-host \
606 ${rootlibexecdir}/systemd/systemd-ac-power \ 600 ${rootlibexecdir}/systemd/systemd-ac-power \
607 ${rootlibexecdir}/systemd/systemd-activate \ 601 ${rootlibexecdir}/systemd/systemd-activate \
608 ${rootlibexecdir}/systemd/systemd-measure \ 602 ${rootlibexecdir}/systemd/systemd-measure \
609 ${rootlibexecdir}/systemd/systemd-pcrphase \ 603 ${rootlibexecdir}/systemd/systemd-pcrphase \
610 ${rootlibexecdir}/systemd/systemd-socket-proxyd \ 604 ${rootlibexecdir}/systemd/systemd-socket-proxyd \
611 ${rootlibexecdir}/systemd/systemd-reply-password \
612 ${rootlibexecdir}/systemd/systemd-sleep \ 605 ${rootlibexecdir}/systemd/systemd-sleep \
613 ${rootlibexecdir}/systemd/system-sleep \ 606 ${rootlibexecdir}/systemd/system-sleep \
614 ${systemd_system_unitdir}/systemd-hibernate.service \ 607 ${systemd_system_unitdir}/systemd-hibernate.service \
diff --git a/meta/recipes-core/sysvinit/sysvinit/0001-Accepted-patch-from-Mark-Hindley-which-avoids-cleari.patch b/meta/recipes-core/sysvinit/sysvinit/0001-Accepted-patch-from-Mark-Hindley-which-avoids-cleari.patch
new file mode 100644
index 0000000000..33c9f62eac
--- /dev/null
+++ b/meta/recipes-core/sysvinit/sysvinit/0001-Accepted-patch-from-Mark-Hindley-which-avoids-cleari.patch
@@ -0,0 +1,31 @@
1From 5be52641a10ad6cd89bc7cdb80318e32be7e6662 Mon Sep 17 00:00:00 2001
2From: Jesse <jsmith@resonatingmedia.com>
3Date: Wed, 29 Mar 2023 10:34:45 -0300
4Subject: [PATCH] Accepted patch from Mark Hindley which avoids clearing
5 realpath information in pidof when trying to find matching executables.
6
7Upstream-Status: Backport [https://github.com/slicer69/sysvinit/commit/c06458e1c1822a2c8ff89fbdd29262ca97dd18b1#diff-4244fa301bd80b0a8f553ce0751fb0fcde1a45ee9dee71db85135cffde8ac712R13]
8
9Signed-off-by: Changqing Li <changqing.li@windriver.com>
10
11---
12 src/killall5.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/src/killall5.c b/src/killall5.c
16index 86866b0..f7a401e 100644
17--- a/src/killall5.c
18+++ b/src/killall5.c
19@@ -766,8 +766,8 @@ PIDQ_HEAD *pidof(char *prog)
20 return NULL;
21
22 /* Try to stat the executable. */
23+ memset(real_path, 0, sizeof(real_path));
24 if ( (prog[0] == '/') && ( realpath(prog, real_path) ) ) {
25- memset(&real_path[0], 0, sizeof(real_path));
26 dostat++;
27 }
28
29--
302.25.1
31
diff --git a/meta/recipes-core/sysvinit/sysvinit_3.04.bb b/meta/recipes-core/sysvinit/sysvinit_3.04.bb
index 6a612468f3..d3f77d8150 100644
--- a/meta/recipes-core/sysvinit/sysvinit_3.04.bb
+++ b/meta/recipes-core/sysvinit/sysvinit_3.04.bb
@@ -9,7 +9,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
9 9
10RDEPENDS:${PN} = "${PN}-inittab" 10RDEPENDS:${PN} = "${PN}-inittab"
11 11
12SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.xz \ 12GITHUB_BASE_URI = "https://github.com/slicer69/${BPN}/releases/"
13SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BP}.tar.xz \
13 file://install.patch \ 14 file://install.patch \
14 file://crypt-lib.patch \ 15 file://crypt-lib.patch \
15 file://pidof-add-m-option.patch \ 16 file://pidof-add-m-option.patch \
@@ -22,12 +23,13 @@ SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.xz \
22 file://bootlogd.init \ 23 file://bootlogd.init \
23 file://01_bootlogd \ 24 file://01_bootlogd \
24 file://0001-hddown-include-libgen.h-for-basename-API.patch \ 25 file://0001-hddown-include-libgen.h-for-basename-API.patch \
26 file://0001-Accepted-patch-from-Mark-Hindley-which-avoids-cleari.patch \
25 " 27 "
26SRC_URI[sha256sum] = "2a621fe6e4528bc91308b74867ddaaebbdf7753f02395c0c5bae817bd2b7e3a5" 28SRC_URI[sha256sum] = "2a621fe6e4528bc91308b74867ddaaebbdf7753f02395c0c5bae817bd2b7e3a5"
27 29
28S = "${WORKDIR}/sysvinit-${PV}" 30S = "${WORKDIR}/sysvinit-${PV}"
29 31
30inherit update-alternatives features_check 32inherit update-alternatives features_check github-releases
31DEPENDS:append = " update-rc.d-native base-passwd virtual/crypt" 33DEPENDS:append = " update-rc.d-native base-passwd virtual/crypt"
32do_package_setscene[depends] = "${MLPREFIX}base-passwd:do_populate_sysroot" 34do_package_setscene[depends] = "${MLPREFIX}base-passwd:do_populate_sysroot"
33 35
diff --git a/meta/recipes-core/udev/udev-extraconf/network.sh b/meta/recipes-core/udev/udev-extraconf/network.sh
index 3ee92714af..ace38808cd 100644
--- a/meta/recipes-core/udev/udev-extraconf/network.sh
+++ b/meta/recipes-core/udev/udev-extraconf/network.sh
@@ -6,38 +6,6 @@ echo "$INTERFACE" | grep -q wifi && exit 0
6# udevd does clearenv(). Export shell PATH to children. 6# udevd does clearenv(). Export shell PATH to children.
7export PATH 7export PATH
8 8
9# Check if /etc/init.d/network has been run yet to see if we are
10# called by starting /etc/rcS.d/S03udev and not by hotplugging a device
11#
12# At this stage, network interfaces should not be brought up
13# automatically because:
14# a) /etc/init.d/network has not been run yet (security issue)
15# b) /var has not been populated yet so /etc/resolv,conf points to
16# oblivion, making the network unusable
17#
18
19spoofp="`grep ^spoofprotect /etc/network/options`"
20if test -z "$spoofp"
21then
22 # This is the default from /etc/init.d/network
23 spoofp_val=yes
24else
25 spoofp_val=${spoofp#spoofprotect=}
26fi
27
28test "$spoofp_val" = yes && spoofp_val=1 || spoofp_val=0
29
30# I think it is safe to assume that "lo" will always be there ;)
31if test "`cat /proc/sys/net/ipv4/conf/lo/rp_filter`" != "$spoofp_val" -a -n "$spoofp_val"
32then
33 echo "$INTERFACE" >> /dev/udev_network_queue
34 exit 0
35fi
36
37#
38# Code taken from pcmcia-cs:/etc/pcmcia/network
39#
40
41# if this interface has an entry in /etc/network/interfaces, let ifupdown 9# if this interface has an entry in /etc/network/interfaces, let ifupdown
42# handle it 10# handle it
43if grep -q "iface \+$INTERFACE" /etc/network/interfaces; then 11if grep -q "iface \+$INTERFACE" /etc/network/interfaces; then
diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
index 48520ef951..1ecf5c7b39 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -42,6 +42,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-lin
42 file://fcntl-lock.c \ 42 file://fcntl-lock.c \
43 file://CVE-2024-28085-0001.patch \ 43 file://CVE-2024-28085-0001.patch \
44 file://CVE-2024-28085-0002.patch \ 44 file://CVE-2024-28085-0002.patch \
45 file://fstab-isolation.patch \
45 " 46 "
46 47
47SRC_URI[sha256sum] = "7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f" 48SRC_URI[sha256sum] = "7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f"
diff --git a/meta/recipes-core/util-linux/util-linux/fstab-isolation.patch b/meta/recipes-core/util-linux/util-linux/fstab-isolation.patch
new file mode 100644
index 0000000000..51d209ec60
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux/fstab-isolation.patch
@@ -0,0 +1,448 @@
1From 51f1e56cc8b6843bf65ceadc5eca1545258bf020 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
3Date: Sat, 22 Apr 2023 17:48:58 +0200
4Subject: [PATCH 1/3] tests: (functions.sh) create variable for test fstab
5 location
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
11(cherry picked from commit ed3d33faff17fb702a3acfca2f9f24e69f4920de)
12Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/ed3d33faff17fb702a3acfca2f9f24e69f4920de]
13Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com>
14---
15 tests/functions.sh | 13 +++++++------
16 tests/ts/mount/fstab-broken | 2 +-
17 2 files changed, 8 insertions(+), 7 deletions(-)
18
19diff --git a/tests/functions.sh b/tests/functions.sh
20index 5a562a39a..c2e2f33ae 100644
21--- a/tests/functions.sh
22+++ b/tests/functions.sh
23@@ -386,6 +386,7 @@ function ts_init_env {
24 TS_ENABLE_UBSAN="yes"
25 fi
26
27+ TS_FSTAB="/etc/fstab"
28 BLKID_FILE="$TS_OUTDIR/${TS_TESTNAME}.blkidtab"
29
30 declare -a TS_SUID_PROGS
31@@ -824,12 +825,12 @@ function ts_is_mounted {
32 }
33
34 function ts_fstab_open {
35- echo "# <!-- util-linux test entry" >> /etc/fstab
36+ echo "# <!-- util-linux test entry" >> "$TS_FSTAB"
37 }
38
39 function ts_fstab_close {
40- echo "# -->" >> /etc/fstab
41- sync /etc/fstab 2>/dev/null
42+ echo "# -->" >> "$TS_FSTAB"
43+ sync "$TS_FSTAB" 2>/dev/null
44 }
45
46 function ts_fstab_addline {
47@@ -838,7 +839,7 @@ function ts_fstab_addline {
48 local FS=${3:-"auto"}
49 local OPT=${4:-"defaults"}
50
51- echo "$SPEC $MNT $FS $OPT 0 0" >> /etc/fstab
52+ echo "$SPEC $MNT $FS $OPT 0 0" >> "$TS_FSTAB"
53 }
54
55 function ts_fstab_lock {
56@@ -862,9 +863,9 @@ function ts_fstab_clean {
57 ba
58 }
59 s/# <!-- util-linux.*-->//;
60-/^$/d" /etc/fstab
61+/^$/d" "$TS_FSTAB"
62
63- sync /etc/fstab 2>/dev/null
64+ sync "$TS_FSTAB" 2>/dev/null
65 ts_unlock "fstab"
66 }
67
68diff --git a/tests/ts/mount/fstab-broken b/tests/ts/mount/fstab-broken
69index 19edc5fe3..3b7a1ee9d 100755
70--- a/tests/ts/mount/fstab-broken
71+++ b/tests/ts/mount/fstab-broken
72@@ -34,7 +34,7 @@ mkdir -p $MNT
73
74 ts_fstab_lock
75 ts_fstab_open
76-echo "tmpd $MNT tmpfs" >> /etc/fstab
77+echo "tmpd $MNT tmpfs" >> "$TS_FSTAB"
78 ts_fstab_close
79
80 ts_init_subtest "mount"
81--
822.34.1
83
84
85From 1e4a9141ca7d310030311e09123a81591f994f83 Mon Sep 17 00:00:00 2001
86From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
87Date: Sat, 22 Apr 2023 17:20:45 +0200
88Subject: [PATCH 2/3] tests: (functions.sh) use per-test fstab file
89MIME-Version: 1.0
90Content-Type: text/plain; charset=UTF-8
91Content-Transfer-Encoding: 8bit
92
93Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
94(cherry picked from commit 6aa8d17b6b53b86a46c5da68c02a893113130496)
95Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/6aa8d17b6b53b86a46c5da68c02a893113130496]
96Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com>
97---
98 tests/functions.sh | 2 +-
99 1 file changed, 1 insertion(+), 1 deletion(-)
100
101diff --git a/tests/functions.sh b/tests/functions.sh
102index c2e2f33ae..3089e8cda 100644
103--- a/tests/functions.sh
104+++ b/tests/functions.sh
105@@ -386,7 +386,7 @@ function ts_init_env {
106 TS_ENABLE_UBSAN="yes"
107 fi
108
109- TS_FSTAB="/etc/fstab"
110+ TS_FSTAB="$TS_OUTDIR/${TS_TESTNAME}.fstab"
111 BLKID_FILE="$TS_OUTDIR/${TS_TESTNAME}.blkidtab"
112
113 declare -a TS_SUID_PROGS
114--
1152.34.1
116
117
118From 02c483f982e23a86d58cd7c6a4eb4b6e4d5def1a Mon Sep 17 00:00:00 2001
119From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= <thomas@t-8ch.de>
120Date: Sat, 22 Apr 2023 17:34:28 +0200
121Subject: [PATCH 3/3] mount: (tests) explicitly use test fstab location
122MIME-Version: 1.0
123Content-Type: text/plain; charset=UTF-8
124Content-Transfer-Encoding: 8bit
125
126Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
127(cherry picked from commit b1580bd760519a2cf052f023057846e54de47484)
128Upstream-Status: Backport [https://github.com/util-linux/util-linux/commit/b1580bd760519a2cf052f023057846e54de47484]
129Signed-off-by: Virendra Thakur <virendra.thakur@kpit.com>
130---
131 tests/ts/mount/fslists | 2 +-
132 tests/ts/mount/fstab-bind | 2 +-
133 tests/ts/mount/fstab-broken | 4 ++--
134 tests/ts/mount/fstab-btrfs | 8 ++++----
135 tests/ts/mount/fstab-devname | 4 ++--
136 tests/ts/mount/fstab-devname2label | 2 +-
137 tests/ts/mount/fstab-devname2uuid | 2 +-
138 tests/ts/mount/fstab-label | 6 +++---
139 tests/ts/mount/fstab-label2devname | 4 ++--
140 tests/ts/mount/fstab-label2uuid | 4 ++--
141 tests/ts/mount/fstab-loop | 4 ++--
142 tests/ts/mount/fstab-none | 2 +-
143 tests/ts/mount/fstab-symlink | 2 +-
144 tests/ts/mount/fstab-uuid | 6 +++---
145 tests/ts/mount/fstab-uuid2devname | 4 ++--
146 tests/ts/mount/fstab-uuid2label | 4 ++--
147 16 files changed, 30 insertions(+), 30 deletions(-)
148
149diff --git a/tests/ts/mount/fslists b/tests/ts/mount/fslists
150index 230186a1e..6ac72c3ce 100755
151--- a/tests/ts/mount/fslists
152+++ b/tests/ts/mount/fslists
153@@ -61,7 +61,7 @@ ts_finalize_subtest
154 ts_init_subtest "more-types-fstab"
155 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
156 ts_fstab_add $DEVICE $TS_MOUNTPOINT "foo,bar,ext2"
157-$TS_CMD_MOUNT $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
158+$TS_CMD_MOUNT -T "$TS_FSTAB" $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
159 ts_fstab_clean
160 ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts"
161 $TS_CMD_UMOUNT $TS_MOUNTPOINT
162diff --git a/tests/ts/mount/fstab-bind b/tests/ts/mount/fstab-bind
163index 2c799df78..cae016dd2 100755
164--- a/tests/ts/mount/fstab-bind
165+++ b/tests/ts/mount/fstab-bind
166@@ -20,7 +20,7 @@ ts_fstab_add $MY_SOURCE "$TS_MOUNTPOINT" "none" "bind,default,noauto"
167 mkdir -p $MY_SOURCE
168 mkdir -p $TS_MOUNTPOINT
169
170-$TS_CMD_MOUNT $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
171+$TS_CMD_MOUNT -T "$TS_FSTAB" $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
172 [ "$?" = "0" ] || ts_log "error: mount $TS_MOUNTPOINT"
173
174 $TS_CMD_FINDMNT --mountpoint "$TS_MOUNTPOINT" &> /dev/null
175diff --git a/tests/ts/mount/fstab-broken b/tests/ts/mount/fstab-broken
176index 3b7a1ee9d..ec4c34241 100755
177--- a/tests/ts/mount/fstab-broken
178+++ b/tests/ts/mount/fstab-broken
179@@ -38,7 +38,7 @@ echo "tmpd $MNT tmpfs" >> "$TS_FSTAB"
180 ts_fstab_close
181
182 ts_init_subtest "mount"
183-$TS_CMD_MOUNT $MNT &> /dev/null
184+$TS_CMD_MOUNT -T "$TS_FSTAB" $MNT &> /dev/null
185 [ "$?" = "0" ] || ts_log "error: mount $MNT"
186 $TS_CMD_FINDMNT --kernel --mountpoint "$MNT" &> /dev/null
187 if [ "$?" != "0" ]; then
188@@ -57,7 +57,7 @@ ts_finalize_subtest
189
190
191 ts_init_subtest "mount-all"
192-$TS_CMD_MOUNT -a &> /dev/null
193+$TS_CMD_MOUNT -T "$TS_FSTAB" -a &> /dev/null
194 [ "$?" = "0" ] || ts_log "error: mount -a"
195 $TS_CMD_FINDMNT --kernel --mountpoint "$MNT" &> /dev/null
196 if [ "$?" != "0" ]; then
197diff --git a/tests/ts/mount/fstab-btrfs b/tests/ts/mount/fstab-btrfs
198index a1003ab52..8e76dbba6 100755
199--- a/tests/ts/mount/fstab-btrfs
200+++ b/tests/ts/mount/fstab-btrfs
201@@ -94,8 +94,8 @@ ts_fstab_addline "$DEVICE" "$TS_MOUNTPOINT_SUBVOLID" "btrfs" "subvolid=$NON_DEFA
202 ts_fstab_addline "$TS_MOUNTPOINT_SUBVOLID" "$TS_MOUNTPOINT_BIND" "auto" "bind"
203 ts_fstab_close
204
205-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
206-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
207+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
208+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
209
210 $TS_CMD_UMOUNT "$TS_MOUNTPOINT_BIND" >> $TS_OUTPUT 2>> $TS_ERRLOG
211 $TS_CMD_UMOUNT "$TS_MOUNTPOINT_DEFAULT" >> $TS_OUTPUT 2>> $TS_ERRLOG
212@@ -124,8 +124,8 @@ ts_fstab_addline "$DEVICE" "$TS_MOUNTPOINT_SUBVOLID" "auto" "subvolid=$NON_DEFAU
213 ts_fstab_addline "$TS_MOUNTPOINT_SUBVOL/bind-mnt" "$TS_MOUNTPOINT_BIND" "auto" "bind"
214 ts_fstab_close
215
216-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
217-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
218+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
219+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
220
221 $TS_CMD_UMOUNT "$TS_MOUNTPOINT_BIND" >> $TS_OUTPUT 2>> $TS_ERRLOG
222 $TS_CMD_UMOUNT "$TS_MOUNTPOINT_DEFAULT" >> $TS_OUTPUT 2>> $TS_ERRLOG
223diff --git a/tests/ts/mount/fstab-devname b/tests/ts/mount/fstab-devname
224index 5b64a32a6..6ac03b5a7 100755
225--- a/tests/ts/mount/fstab-devname
226+++ b/tests/ts/mount/fstab-devname
227@@ -42,13 +42,13 @@ MOUNTPOINT=$TS_MOUNTPOINT
228 ts_fstab_add $DEVICE
229
230 ts_init_subtest "mountpoint"
231-$TS_CMD_MOUNT $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
232+$TS_CMD_MOUNT -T "$TS_FSTAB" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
233 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
234 $TS_CMD_UMOUNT $DEVICE || >> $TS_OUTPUT 2>> $TS_ERRLOG
235 ts_finalize_subtest
236
237 ts_init_subtest "device-name"
238-$TS_CMD_MOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
239+$TS_CMD_MOUNT -T "$TS_FSTAB" $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
240 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
241 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
242 ts_finalize_subtest
243diff --git a/tests/ts/mount/fstab-devname2label b/tests/ts/mount/fstab-devname2label
244index 1d8562109..44066e153 100755
245--- a/tests/ts/mount/fstab-devname2label
246+++ b/tests/ts/mount/fstab-devname2label
247@@ -41,7 +41,7 @@ ts_device_has "LABEL" $LABEL $DEVICE \
248 ts_fstab_add "LABEL=$LABEL"
249 ts_udevadm_settle "$DEVICE" "LABEL"
250
251-$TS_CMD_MOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
252+$TS_CMD_MOUNT -T "$TS_FSTAB" $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
253 ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts"
254 $TS_CMD_UMOUNT $DEVICE || ts_die "Cannot umount $DEVICE"
255
256diff --git a/tests/ts/mount/fstab-devname2uuid b/tests/ts/mount/fstab-devname2uuid
257index 8105fa028..503959103 100755
258--- a/tests/ts/mount/fstab-devname2uuid
259+++ b/tests/ts/mount/fstab-devname2uuid
260@@ -39,7 +39,7 @@ UUID=$(ts_uuid_by_devname "$DEVICE") || ts_die "Cannot find UUID on $DEVICE"
261 ts_fstab_add "UUID=$UUID"
262 ts_udevadm_settle "$DEVICE" "UUID"
263
264-$TS_CMD_MOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
265+$TS_CMD_MOUNT -T "$TS_FSTAB" $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
266 ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts"
267 $TS_CMD_UMOUNT $DEVICE || ts_die "Cannot umount $DEVICE"
268
269diff --git a/tests/ts/mount/fstab-label b/tests/ts/mount/fstab-label
270index 4b23e7fee..a3cc06d52 100755
271--- a/tests/ts/mount/fstab-label
272+++ b/tests/ts/mount/fstab-label
273@@ -42,19 +42,19 @@ ts_fstab_add "LABEL=$LABEL"
274 ts_udevadm_settle "$DEVICE" "LABEL"
275
276 ts_init_subtest "no-option"
277-$TS_CMD_MOUNT $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
278+$TS_CMD_MOUNT -T "$TS_FSTAB" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
279 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
280 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
281 ts_finalize_subtest
282
283 ts_init_subtest "L-option"
284-$TS_CMD_MOUNT -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
285+$TS_CMD_MOUNT -T "$TS_FSTAB" -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
286 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
287 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
288 ts_finalize_subtest
289
290 ts_init_subtest "LABEL-option"
291-$TS_CMD_MOUNT LABEL=$LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
292+$TS_CMD_MOUNT -T "$TS_FSTAB" LABEL=$LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
293 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
294 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
295 ts_finalize_subtest
296diff --git a/tests/ts/mount/fstab-label2devname b/tests/ts/mount/fstab-label2devname
297index 75ca05e8c..fddbfa0ba 100755
298--- a/tests/ts/mount/fstab-label2devname
299+++ b/tests/ts/mount/fstab-label2devname
300@@ -44,13 +44,13 @@ ts_udevadm_settle "$DEVICE" "LABEL"
301 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
302
303 ts_init_subtest "L-option"
304-$TS_CMD_MOUNT -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
305+$TS_CMD_MOUNT -T "$TS_FSTAB" -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
306 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
307 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
308 ts_finalize_subtest
309
310 ts_init_subtest "LABEL-option"
311-$TS_CMD_MOUNT "LABEL=$LABEL" >> $TS_OUTPUT 2>> $TS_ERRLOG
312+$TS_CMD_MOUNT -T "$TS_FSTAB" "LABEL=$LABEL" >> $TS_OUTPUT 2>> $TS_ERRLOG
313 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
314 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
315 ts_finalize_subtest
316diff --git a/tests/ts/mount/fstab-label2uuid b/tests/ts/mount/fstab-label2uuid
317index 4bfcae4b9..927cde9aa 100755
318--- a/tests/ts/mount/fstab-label2uuid
319+++ b/tests/ts/mount/fstab-label2uuid
320@@ -46,13 +46,13 @@ ts_udevadm_settle "$DEVICE" "LABEL" "UUID"
321 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
322
323 ts_init_subtest "L-option"
324-$TS_CMD_MOUNT -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
325+$TS_CMD_MOUNT -T "$TS_FSTAB" -L $LABEL >> $TS_OUTPUT 2>> $TS_ERRLOG
326 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
327 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
328 ts_finalize_subtest
329
330 ts_init_subtest "LABEL-option"
331-$TS_CMD_MOUNT "LABEL=$LABEL" >> $TS_OUTPUT 2>> $TS_ERRLOG
332+$TS_CMD_MOUNT -T "$TS_FSTAB" "LABEL=$LABEL" >> $TS_OUTPUT 2>> $TS_ERRLOG
333 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
334 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
335 ts_finalize_subtest
336diff --git a/tests/ts/mount/fstab-loop b/tests/ts/mount/fstab-loop
337index 7cc589fd2..0541e3a74 100755
338--- a/tests/ts/mount/fstab-loop
339+++ b/tests/ts/mount/fstab-loop
340@@ -39,10 +39,10 @@ ts_fstab_lock
341 ts_fstab_open
342
343 ts_fstab_addline "$IMG" "$TS_MOUNTPOINT-1" "ext2" "loop"
344-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
345+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
346
347 ts_fstab_addline "$IMG" "$TS_MOUNTPOINT-2" "ext2" "loop"
348-$TS_CMD_MOUNT -a >> $TS_OUTPUT 2>> $TS_ERRLOG
349+$TS_CMD_MOUNT -T "$TS_FSTAB" -a >> $TS_OUTPUT 2>> $TS_ERRLOG
350
351 ts_fstab_close
352
353diff --git a/tests/ts/mount/fstab-none b/tests/ts/mount/fstab-none
354index 6a4d05b62..95daa6cee 100755
355--- a/tests/ts/mount/fstab-none
356+++ b/tests/ts/mount/fstab-none
357@@ -17,7 +17,7 @@ ts_fstab_add "none" "$TS_MOUNTPOINT" "tmpfs" "rw,nosuid,nodev,relatime"
358
359 mkdir -p $TS_MOUNTPOINT
360
361-$TS_CMD_MOUNT $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
362+$TS_CMD_MOUNT -T "$TS_FSTAB" $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
363 [ "$?" = "0" ] || ts_log "error: mount $TS_MOUNTPOINT"
364
365 $TS_CMD_FINDMNT --mountpoint "$TS_MOUNTPOINT" &> /dev/null
366diff --git a/tests/ts/mount/fstab-symlink b/tests/ts/mount/fstab-symlink
367index 4d3e37b19..6d419f9fe 100755
368--- a/tests/ts/mount/fstab-symlink
369+++ b/tests/ts/mount/fstab-symlink
370@@ -46,7 +46,7 @@ ln -s $DEVICE $LINKNAME
371 ts_fstab_add $LINKNAME $TS_MOUNTPOINT "auto" "defaults,user"
372
373 # variant A) -- UID=0
374-$TS_CMD_MOUNT $LINKNAME >> $TS_OUTPUT 2>> $TS_ERRLOG
375+$TS_CMD_MOUNT -T "$TS_FSTAB" $LINKNAME >> $TS_OUTPUT 2>> $TS_ERRLOG
376 ts_is_mounted $DEVICE || ts_die "A) Cannot find $DEVICE in /proc/mounts"
377 $TS_CMD_UMOUNT $LINKNAME || ts_die "A) Cannot umount $LINKNAME"
378
379diff --git a/tests/ts/mount/fstab-uuid b/tests/ts/mount/fstab-uuid
380index 03917b782..f51bb294e 100755
381--- a/tests/ts/mount/fstab-uuid
382+++ b/tests/ts/mount/fstab-uuid
383@@ -42,19 +42,19 @@ ts_fstab_add "UUID=$UUID"
384 ts_udevadm_settle "$DEVICE" "UUID"
385
386 ts_init_subtest "no-option"
387-$TS_CMD_MOUNT $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
388+$TS_CMD_MOUNT -T "$TS_FSTAB" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
389 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
390 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
391 ts_finalize_subtest
392
393 ts_init_subtest "U-option"
394-$TS_CMD_MOUNT -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
395+$TS_CMD_MOUNT -T "$TS_FSTAB" -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
396 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
397 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
398 ts_finalize_subtest
399
400 ts_init_subtest "UUID-option"
401-$TS_CMD_MOUNT UUID=$UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
402+$TS_CMD_MOUNT -T "$TS_FSTAB" UUID=$UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
403 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
404 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
405 ts_finalize_subtest
406diff --git a/tests/ts/mount/fstab-uuid2devname b/tests/ts/mount/fstab-uuid2devname
407index 9bf165e16..2b338acb1 100755
408--- a/tests/ts/mount/fstab-uuid2devname
409+++ b/tests/ts/mount/fstab-uuid2devname
410@@ -42,13 +42,13 @@ ts_udevadm_settle "$DEVICE" "UUID"
411 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
412
413 ts_init_subtest "U-option"
414-$TS_CMD_MOUNT -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
415+$TS_CMD_MOUNT -T "$TS_FSTAB" -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
416 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
417 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
418 ts_finalize_subtest
419
420 ts_init_subtest "UUID-option"
421-$TS_CMD_MOUNT "UUID=$UUID" >> $TS_OUTPUT 2>> $TS_ERRLOG
422+$TS_CMD_MOUNT -T "$TS_FSTAB" "UUID=$UUID" >> $TS_OUTPUT 2>> $TS_ERRLOG
423 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
424 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
425 ts_finalize_subtest
426diff --git a/tests/ts/mount/fstab-uuid2label b/tests/ts/mount/fstab-uuid2label
427index de10ff0b0..02eb6b985 100755
428--- a/tests/ts/mount/fstab-uuid2label
429+++ b/tests/ts/mount/fstab-uuid2label
430@@ -45,13 +45,13 @@ ts_udevadm_settle "$DEVICE" "LABEL" "UUID"
431 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
432
433 ts_init_subtest "U-option"
434-$TS_CMD_MOUNT -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
435+$TS_CMD_MOUNT -T "$TS_FSTAB" -U $UUID >> $TS_OUTPUT 2>> $TS_ERRLOG
436 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
437 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
438 ts_finalize_subtest
439
440 ts_init_subtest "UUID-option"
441-$TS_CMD_MOUNT "UUID=$UUID" >> $TS_OUTPUT 2>> $TS_ERRLOG
442+$TS_CMD_MOUNT -T "$TS_FSTAB" "UUID=$UUID" >> $TS_OUTPUT 2>> $TS_ERRLOG
443 ts_is_mounted $DEVICE || ts_log "Cannot find $DEVICE in /proc/mounts"
444 $TS_CMD_UMOUNT $DEVICE >> $TS_OUTPUT 2>>$TS_ERRLOG
445 ts_finalize_subtest
446--
4472.34.1
448
diff --git a/meta/recipes-devtools/binutils/binutils-2.42.inc b/meta/recipes-devtools/binutils/binutils-2.42.inc
index 5d5ba3d6dc..ea018a48a3 100644
--- a/meta/recipes-devtools/binutils/binutils-2.42.inc
+++ b/meta/recipes-devtools/binutils/binutils-2.42.inc
@@ -19,8 +19,9 @@ SRCBRANCH ?= "binutils-2_42-branch"
19UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)" 19UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
20 20
21CVE_STATUS[CVE-2023-25584] = "cpe-incorrect: Applies only for version 2.40 and earlier" 21CVE_STATUS[CVE-2023-25584] = "cpe-incorrect: Applies only for version 2.40 and earlier"
22CVE_STATUS[CVE-2025-1180] = "patched: fixed by patch for CVE-2025-1176"
22 23
23SRCREV ?= "8a6764d35e5c15d78de8aef8f27af3eefd9d7544" 24SRCREV ?= "6558f9f5f0ccc107a083ae7fbf106ebcb5efa817"
24BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=https" 25BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=https"
25SRC_URI = "\ 26SRC_URI = "\
26 ${BINUTILS_GIT_URI} \ 27 ${BINUTILS_GIT_URI} \
@@ -36,5 +37,21 @@ SRC_URI = "\
36 file://0013-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch \ 37 file://0013-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch \
37 file://0014-Remove-duplicate-pe-dll.o-entry-deom-targ_extra_ofil.patch \ 38 file://0014-Remove-duplicate-pe-dll.o-entry-deom-targ_extra_ofil.patch \
38 file://0015-gprofng-change-use-of-bignum-to-bigint.patch \ 39 file://0015-gprofng-change-use-of-bignum-to-bigint.patch \
40 file://0016-CVE-2024-53589.patch \
41 file://0017-dlltool-file-name-too-long.patch \
42 file://0018-CVE-2025-0840.patch \
43 file://CVE-2025-1176.patch \
44 file://CVE-2025-1178.patch \
45 file://CVE-2024-57360.patch \
46 file://CVE-2025-1181-pre.patch \
47 file://CVE-2025-1181.patch \
48 file://CVE-2025-1182.patch \
49 file://0019-CVE-2025-1153-1.patch \
50 file://0020-CVE-2025-1153-2.patch \
51 file://0021-CVE-2025-1153-3.patch \
52 file://CVE-2025-1179-pre.patch \
53 file://CVE-2025-1179.patch \
54 file://0022-CVE-2025-5245.patch \
55 file://0022-CVE-2025-5244.patch \
39" 56"
40S = "${WORKDIR}/git" 57S = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/binutils/binutils/0016-CVE-2024-53589.patch b/meta/recipes-devtools/binutils/binutils/0016-CVE-2024-53589.patch
new file mode 100644
index 0000000000..380112a3ba
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0016-CVE-2024-53589.patch
@@ -0,0 +1,92 @@
1Author: Alan Modra <amodra@gmail.com>
2Date: Mon Nov 11 10:24:09 2024 +1030
3
4 Re: tekhex object file output fixes
5
6 Commit 8b5a212495 supported *ABS* symbols by allowing "section" to be
7 bfd_abs_section, but bfd_abs_section needs to be treated specially.
8 In particular, bfd_get_next_section_by_name (.., bfd_abs_section_ptr)
9 is invalid.
10
11 PR 32347
12 * tekhex.c (first_phase): Guard against modification of
13 _bfd_std_section[] entries.
14
15Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=e0323071916878e0634a6e24d8250e4faff67e88]
16CVE: CVE-2024-53589
17
18Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
19
20diff --git a/bfd/tekhex.c b/bfd/tekhex.c
21index aea2ebb23df..b305c1f96f1 100644
22--- a/bfd/tekhex.c
23+++ b/bfd/tekhex.c
24@@ -361,6 +361,7 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
25 {
26 asection *section, *alt_section;
27 unsigned int len;
28+ bfd_vma addr;
29 bfd_vma val;
30 char sym[17]; /* A symbol can only be 16chars long. */
31
32@@ -368,20 +369,16 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
33 {
34 case '6':
35 /* Data record - read it and store it. */
36- {
37- bfd_vma addr;
38-
39- if (!getvalue (&src, &addr, src_end))
40- return false;
41-
42- while (*src && src < src_end - 1)
43- {
44- insert_byte (abfd, HEX (src), addr);
45- src += 2;
46- addr++;
47- }
48- return true;
49- }
50+ if (!getvalue (&src, &addr, src_end))
51+ return false;
52+
53+ while (*src && src < src_end - 1)
54+ {
55+ insert_byte (abfd, HEX (src), addr);
56+ src += 2;
57+ addr++;
58+ }
59+ return true;
60
61 case '3':
62 /* Symbol record, read the segment. */
63@@ -406,13 +403,16 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
64 {
65 case '1': /* Section range. */
66 src++;
67- if (!getvalue (&src, &section->vma, src_end))
68+ if (!getvalue (&src, &addr, src_end))
69 return false;
70 if (!getvalue (&src, &val, src_end))
71 return false;
72- if (val < section->vma)
73- val = section->vma;
74- section->size = val - section->vma;
75+ if (bfd_is_const_section (section))
76+ break;
77+ section->vma = addr;
78+ if (val < addr)
79+ val = addr;
80+ section->size = val - addr;
81 /* PR 17512: file: objdump-s-endless-loop.tekhex.
82 Check for overlarge section sizes. */
83 if (section->size & 0x80000000)
84@@ -455,6 +455,8 @@ first_phase (bfd *abfd, int type, char *src, char * src_end)
85 new_symbol->symbol.flags = BSF_LOCAL;
86 if (stype == '2' || stype == '6')
87 new_symbol->symbol.section = bfd_abs_section_ptr;
88+ else if (bfd_is_const_section (section))
89+ ;
90 else if (stype == '3' || stype == '7')
91 {
92 if ((section->flags & SEC_DATA) == 0)
diff --git a/meta/recipes-devtools/binutils/binutils/0017-dlltool-file-name-too-long.patch b/meta/recipes-devtools/binutils/binutils/0017-dlltool-file-name-too-long.patch
new file mode 100644
index 0000000000..2b759c1ee8
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0017-dlltool-file-name-too-long.patch
@@ -0,0 +1,208 @@
1From d95d8395b3a533461f46e8b7e55fef540fc2621b Mon Sep 17 00:00:00 2001
2From: Jiaying Song <jiaying.song.cn@windriver.com>
3Date: Tue, 13 Aug 2024 10:31:21 +0800
4Subject: [PATCH] dlltool: file name too long
5
6During the execution of the command: i686-w64-mingw32-dlltool
7--input-def $def_filepath --output-delaylib $filepath --dllname qemu.exe
8An error occurred:
9i686-w64-mingw32-dlltool: failed to open temporary head file: ..._w64_mingw32_nativesdk_qemu_8_2_2_build_plugins_libqemu_plugin_api_a_h.s
10
11Due to the path length exceeding the Linux system's file name length
12limit (NAME_MAX=255), the temporary file name generated by the
13i686-w64-mingw32-dlltool command becomes too long to open. To address
14this, a new temporary file name prefix is generated using tmp_prefix =
15prefix_encode ("d", getpid()), ensuring that the file name does not
16exceed the system's length limit.
17
18Upstream-Status: Backport
19[https://github.com/bminor/binutils-gdb/commit/a253bea8995323201b016fe477280c1782688ab4]
20
21Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
22Reviewed-by: Alan Modra <amodra@gmail.com>
23
24Allow for "snnnnn.o" suffix when testing against NAME_MAX, and tidy
25TMP_STUB handling by overwriting a prior nnnnn.o string rather than
26copying the entire name.
27
28* dlltool.c (TMP_STUB): Add "nnnnn.o" to format.
29(make_one_lib_file): Localise variables. Don't copy TMP_STUB,
30overwrite suffix instead.
31(gen_lib_file): Similarly.
32(main): Allow for max suffix when testing against NAME_MAX.
33
34Upstream-Status: Backport
35[https://github.com/bminor/binutils-gdb/commit/d0285cdf58adf04e861cd1687f7ecec65937c99d]
36
37Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
38---
39 binutils/dlltool.c | 64 +++++++++++++++++-----------------------------
40 1 file changed, 24 insertions(+), 40 deletions(-)
41
42diff --git a/binutils/dlltool.c b/binutils/dlltool.c
43index 066c99a4..94f6c34b 100644
44--- a/binutils/dlltool.c
45+++ b/binutils/dlltool.c
46@@ -498,7 +498,7 @@ char *tmp_stub_buf;
47 #define TMP_HEAD_O dlltmp (&tmp_head_o_buf, "%sh.o")
48 #define TMP_TAIL_S dlltmp (&tmp_tail_s_buf, "%st.s")
49 #define TMP_TAIL_O dlltmp (&tmp_tail_o_buf, "%st.o")
50-#define TMP_STUB dlltmp (&tmp_stub_buf, "%ss")
51+#define TMP_STUB dlltmp (&tmp_stub_buf, "%ssnnnnn.o")
52
53 /* This bit of assembly does jmp * .... */
54 static const unsigned char i386_jtab[] =
55@@ -2401,26 +2401,11 @@ make_imp_label (const char *prefix, const char *name)
56 static bfd *
57 make_one_lib_file (export_type *exp, int i, int delay)
58 {
59- bfd * abfd;
60- asymbol * exp_label;
61- asymbol * iname = 0;
62- asymbol * iname2;
63- asymbol * iname_lab;
64- asymbol ** iname_lab_pp;
65- asymbol ** iname_pp;
66-#ifndef EXTRA
67-#define EXTRA 0
68-#endif
69- asymbol * ptrs[NSECS + 4 + EXTRA + 1];
70- flagword applicable;
71- char * outname = xmalloc (strlen (TMP_STUB) + 10);
72- int oidx = 0;
73-
74-
75- sprintf (outname, "%s%05d.o", TMP_STUB, i);
76-
77- abfd = bfd_openw (outname, HOW_BFD_WRITE_TARGET);
78+ char *outname = TMP_STUB;
79+ size_t name_len = strlen (outname);
80+ sprintf (outname + name_len - 7, "%05d.o", i);
81
82+ bfd *abfd = bfd_openw (outname, HOW_BFD_WRITE_TARGET);
83 if (!abfd)
84 /* xgettext:c-format */
85 fatal (_("bfd_open failed open stub file: %s: %s"),
86@@ -2437,9 +2422,13 @@ make_one_lib_file (export_type *exp, int i, int delay)
87 bfd_set_private_flags (abfd, F_INTERWORK);
88 #endif
89
90- applicable = bfd_applicable_section_flags (abfd);
91-
92 /* First make symbols for the sections. */
93+ flagword applicable = bfd_applicable_section_flags (abfd);
94+#ifndef EXTRA
95+#define EXTRA 0
96+#endif
97+ asymbol *ptrs[NSECS + 4 + EXTRA + 1];
98+ int oidx = 0;
99 for (i = 0; i < NSECS; i++)
100 {
101 sinfo *si = secdata + i;
102@@ -2466,7 +2455,7 @@ make_one_lib_file (export_type *exp, int i, int delay)
103
104 if (! exp->data)
105 {
106- exp_label = bfd_make_empty_symbol (abfd);
107+ asymbol *exp_label = bfd_make_empty_symbol (abfd);
108 exp_label->name = make_imp_label ("", exp->name);
109 exp_label->section = secdata[TEXT].sec;
110 exp_label->flags = BSF_GLOBAL;
111@@ -2482,6 +2471,7 @@ make_one_lib_file (export_type *exp, int i, int delay)
112 /* Generate imp symbols with one underscore for Microsoft
113 compatibility, and with two underscores for backward
114 compatibility with old versions of cygwin. */
115+ asymbol *iname = NULL;
116 if (create_compat_implib)
117 {
118 iname = bfd_make_empty_symbol (abfd);
119@@ -2491,25 +2481,24 @@ make_one_lib_file (export_type *exp, int i, int delay)
120 iname->value = 0;
121 }
122
123- iname2 = bfd_make_empty_symbol (abfd);
124+ asymbol *iname2 = bfd_make_empty_symbol (abfd);
125 iname2->name = make_imp_label ("__imp_", exp->name);
126 iname2->section = secdata[IDATA5].sec;
127 iname2->flags = BSF_GLOBAL;
128 iname2->value = 0;
129
130- iname_lab = bfd_make_empty_symbol (abfd);
131-
132+ asymbol *iname_lab = bfd_make_empty_symbol (abfd);
133 iname_lab->name = head_label;
134 iname_lab->section = bfd_und_section_ptr;
135 iname_lab->flags = 0;
136 iname_lab->value = 0;
137
138- iname_pp = ptrs + oidx;
139+ asymbol **iname_pp = ptrs + oidx;
140 if (create_compat_implib)
141 ptrs[oidx++] = iname;
142 ptrs[oidx++] = iname2;
143
144- iname_lab_pp = ptrs + oidx;
145+ asymbol **iname_lab_pp = ptrs + oidx;
146 ptrs[oidx++] = iname_lab;
147
148 ptrs[oidx] = 0;
149@@ -3089,29 +3078,26 @@ gen_lib_file (int delay)
150
151 if (dontdeltemps < 2)
152 {
153- char *name;
154- size_t stub_len = strlen (TMP_STUB);
155+ char *name = TMP_STUB;
156+ size_t name_len = strlen (name);
157
158- name = xmalloc (stub_len + 10);
159- memcpy (name, TMP_STUB, stub_len);
160 for (i = 0; (exp = d_exports_lexically[i]); i++)
161 {
162 /* Don't delete non-existent stubs for PRIVATE entries. */
163 if (exp->private)
164 continue;
165- sprintf (name + stub_len, "%05d.o", i);
166+ sprintf (name + name_len - 7, "%05d.o", i);
167 if (unlink (name) < 0)
168 /* xgettext:c-format */
169 non_fatal (_("cannot delete %s: %s"), name, strerror (errno));
170 if (ext_prefix_alias)
171 {
172- sprintf (name + stub_len, "%05d.o", i + PREFIX_ALIAS_BASE);
173+ sprintf (name + name_len - 7, "%05d.o", i + PREFIX_ALIAS_BASE);
174 if (unlink (name) < 0)
175 /* xgettext:c-format */
176 non_fatal (_("cannot delete %s: %s"), name, strerror (errno));
177 }
178 }
179- free (name);
180 }
181
182 inform (_("Created lib file"));
183@@ -4096,9 +4082,9 @@ main (int ac, char **av)
184 if (tmp_prefix == NULL)
185 {
186 /* If possible use a deterministic prefix. */
187- if (imp_name || delayimp_name)
188+ const char *input = imp_name ? imp_name : delayimp_name;
189+ if (input && strlen (input) + sizeof ("_snnnnn.o") - 1 <= NAME_MAX)
190 {
191- const char *input = imp_name ? imp_name : delayimp_name;
192 tmp_prefix = xmalloc (strlen (input) + 2);
193 sprintf (tmp_prefix, "%s_", input);
194 for (i = 0; tmp_prefix[i]; i++)
195@@ -4106,9 +4092,7 @@ main (int ac, char **av)
196 tmp_prefix[i] = '_';
197 }
198 else
199- {
200- tmp_prefix = prefix_encode ("d", getpid ());
201- }
202+ tmp_prefix = prefix_encode ("d", getpid ());
203 }
204
205 mangle_defs ();
206--
2072.34.1
208
diff --git a/meta/recipes-devtools/binutils/binutils/0018-CVE-2025-0840.patch b/meta/recipes-devtools/binutils/binutils/0018-CVE-2025-0840.patch
new file mode 100644
index 0000000000..3814d63e1f
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0018-CVE-2025-0840.patch
@@ -0,0 +1,53 @@
1Author: Alan Modra <amodra@gmail.com>
2Date: Wed, 15 Jan 2025 19:13:43 +1030
3
4PR32560 stack-buffer-overflow at objdump disassemble_bytes
5
6There's always someone pushing the boundaries.
7
8 PR 32560
9 * objdump.c (MAX_INSN_WIDTH): Define.
10 (insn_width): Make it an unsigned long.
11 (disassemble_bytes): Use MAX_INSN_WIDTH to size buffer.
12 (main <OPTION_INSN_WIDTH>): Restrict size of insn_width.
13
14Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=baac6c221e9d69335bf41366a1c7d87d8ab2f893]
15CVE: CVE-2025-0840
16
17Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
18
19diff --git a/binutils/objdump.c b/binutils/objdump.c
20index 49e944b1..dba726e3 100644
21--- a/binutils/objdump.c
22+++ b/binutils/objdump.c
23@@ -116,7 +116,8 @@ static bool disassemble_all; /* -D */
24 static int disassemble_zeroes; /* --disassemble-zeroes */
25 static bool formats_info; /* -i */
26 int wide_output; /* -w */
27-static int insn_width; /* --insn-width */
28+#define MAX_INSN_WIDTH 49
29+static unsigned long insn_width; /* --insn-width */
30 static bfd_vma start_address = (bfd_vma) -1; /* --start-address */
31 static bfd_vma stop_address = (bfd_vma) -1; /* --stop-address */
32 static int dump_debugging; /* --debugging */
33@@ -3327,7 +3328,7 @@ disassemble_bytes (struct disassemble_info *inf,
34 }
35 else
36 {
37- char buf[50];
38+ char buf[MAX_INSN_WIDTH + 1];
39 unsigned int bpc = 0;
40 unsigned int pb = 0;
41
42@@ -5995,8 +5996,9 @@ main (int argc, char **argv)
43 break;
44 case OPTION_INSN_WIDTH:
45 insn_width = strtoul (optarg, NULL, 0);
46- if (insn_width <= 0)
47- fatal (_("error: instruction width must be positive"));
48+ if (insn_width - 1 >= MAX_INSN_WIDTH)
49+ fatal (_("error: instruction width must be in the range 1 to "
50+ XSTRING (MAX_INSN_WIDTH)));
51 break;
52 case OPTION_INLINES:
53 unwind_inlines = true;
diff --git a/meta/recipes-devtools/binutils/binutils/0019-CVE-2025-1153-1.patch b/meta/recipes-devtools/binutils/binutils/0019-CVE-2025-1153-1.patch
new file mode 100644
index 0000000000..fa26961447
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0019-CVE-2025-1153-1.patch
@@ -0,0 +1,3207 @@
1From 0b7f992b78fe0984fc7d84cc748d0794e4a400e3 Mon Sep 17 00:00:00 2001
2From: Alan Modra <amodra@gmail.com>
3Date: Thu, 6 Feb 2025 21:46:22 +1030
4Subject: [PATCH] PR 32603, ld -w misbehaviorur
5
6ld -w currently causes segmentation faults and other misbehaviour
7since it changes einfo with %F in the format string (fatal error) to
8not exit. This patch fixes that by introducing a new variant of einfo
9called "fatal" that always exits, and replaces all einfo calls using
10%F with a call to fatal without the %F. I considered modifying einfo
11to inspect the first 2 or 4 chars in the format string, looking for
12%F, but decided that was probably a bad idea given that translators
13might have moved the %F. It's also a little nicer to inform the
14compiler of a function that doesn't return.
15
16The patch also fixes some formatting nits, and makes use of %pA
17to print section names in a couple of places in aix.em.
18
19Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0b7f992b78fe0984fc7d84cc748d0794e4a400e3]
20CVE: CVE-2025-1153
21
22Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
23---
24 ld/emulparams/call_nop.sh | 6 +--
25 ld/emulparams/cet.sh | 2 +-
26 ld/emulparams/elf32mcore.sh | 2 +-
27 ld/emulparams/x86-64-lam.sh | 6 +--
28 ld/emulparams/x86-64-level.sh | 2 +-
29 ld/emultempl/aarch64elf.em | 6 +--
30 ld/emultempl/aix.em | 41 ++++++++-------
31 ld/emultempl/armelf.em | 10 ++--
32 ld/emultempl/avrelf.em | 2 +-
33 ld/emultempl/beos.em | 24 ++++-----
34 ld/emultempl/cr16elf.em | 4 +-
35 ld/emultempl/cskyelf.em | 4 +-
36 ld/emultempl/elf.em | 18 +++----
37 ld/emultempl/hppaelf.em | 4 +-
38 ld/emultempl/kvxelf.em | 7 ++-
39 ld/emultempl/loongarchelf.em | 4 +-
40 ld/emultempl/m68hc1xelf.em | 2 +-
41 ld/emultempl/m68kelf.em | 4 +-
42 ld/emultempl/metagelf.em | 4 +-
43 ld/emultempl/mipself.em | 2 +-
44 ld/emultempl/mmix-elfnmmo.em | 5 +-
45 ld/emultempl/nds32elf.em | 6 +--
46 ld/emultempl/nto.em | 28 +++++------
47 ld/emultempl/pe.em | 20 ++++----
48 ld/emultempl/pep.em | 16 +++---
49 ld/emultempl/ppc32elf.em | 4 +-
50 ld/emultempl/ppc64elf.em | 10 ++--
51 ld/emultempl/riscvelf.em | 2 +-
52 ld/emultempl/s390.em | 2 +-
53 ld/emultempl/scoreelf.em | 2 +-
54 ld/emultempl/spuelf.em | 20 ++++----
55 ld/emultempl/tic6xdsbt.em | 10 ++--
56 ld/emultempl/ticoff.em | 4 +-
57 ld/emultempl/v850elf.em | 2 +-
58 ld/emultempl/vms.em | 2 +-
59 ld/emultempl/xtensaelf.em | 12 ++---
60 ld/emultempl/z80.em | 2 +-
61 ld/ldcref.c | 8 +--
62 ld/ldelf.c | 34 ++++++-------
63 ld/ldelfgen.c | 17 +++----
64 ld/ldemul.c | 2 +-
65 ld/ldexp.c | 42 ++++++++--------
66 ld/ldfile.c | 14 +++---
67 ld/ldgram.y | 6 +--
68 ld/ldlang.c | 95 +++++++++++++++++------------------
69 ld/ldlex.l | 14 ++----
70 ld/ldmain.c | 44 ++++++++--------
71 ld/ldmisc.c | 28 ++++++++---
72 ld/ldmisc.h | 1 +
73 ld/ldwrite.c | 20 ++++----
74 ld/lexsup.c | 72 +++++++++++++-------------
75 ld/mri.c | 2 +-
76 ld/pe-dll.c | 12 ++---
77 ld/plugin.c | 27 +++++-----
78 54 files changed, 363 insertions(+), 376 deletions(-)
79
80diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh
81index 2c3c305f..7dd6dfb1 100644
82--- a/ld/emulparams/call_nop.sh
83+++ b/ld/emulparams/call_nop.sh
84@@ -20,7 +20,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP='
85 char *end;
86 params.call_nop_byte = strtoul (optarg + 16 , &end, 0);
87 if (*end)
88- einfo (_("%F%P: invalid number for -z call-nop=prefix-: %s\n"),
89+ fatal (_("%P: invalid number for -z call-nop=prefix-: %s\n"),
90 optarg + 16);
91 params.call_nop_as_suffix = false;
92 }
93@@ -29,12 +29,12 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP='
94 char *end;
95 params.call_nop_byte = strtoul (optarg + 16, &end, 0);
96 if (*end)
97- einfo (_("%F%P: invalid number for -z call-nop=suffix-: %s\n"),
98+ fatal (_("%P: invalid number for -z call-nop=suffix-: %s\n"),
99 optarg + 16);
100 params.call_nop_as_suffix = true;
101 }
102 else
103- einfo (_("%F%P: unsupported option: -z %s\n"), optarg);
104+ fatal (_("%P: unsupported option: -z %s\n"), optarg);
105 }
106 '
107
108diff --git a/ld/emulparams/cet.sh b/ld/emulparams/cet.sh
109index 2c627994..e463441d 100644
110--- a/ld/emulparams/cet.sh
111+++ b/ld/emulparams/cet.sh
112@@ -29,7 +29,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CET='
113 | prop_report_ibt
114 | prop_report_shstk);
115 else
116- einfo (_("%F%P: invalid option for -z cet-report=: %s\n"),
117+ fatal (_("%P: invalid option for -z cet-report=: %s\n"),
118 optarg + 11);
119 }
120 '
121diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh
122index 88a8cb6e..275a796f 100644
123--- a/ld/emulparams/elf32mcore.sh
124+++ b/ld/emulparams/elf32mcore.sh
125@@ -46,6 +46,6 @@ PARSE_AND_LIST_ARGS_CASES='
126 case OPTION_BASE_FILE:
127 link_info.base_file = fopen (optarg, FOPEN_WB);
128 if (link_info.base_file == NULL)
129- einfo (_("%F%P: cannot open base file %s\n"), optarg);
130+ fatal (_("%P: cannot open base file %s\n"), optarg);
131 break;
132 '
133diff --git a/ld/emulparams/x86-64-lam.sh b/ld/emulparams/x86-64-lam.sh
134index fab42ff1..6e629ebb 100644
135--- a/ld/emulparams/x86-64-lam.sh
136+++ b/ld/emulparams/x86-64-lam.sh
137@@ -25,7 +25,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
138 else if (strcmp (optarg + 15, "error") == 0)
139 params.lam_u48_report = prop_report_error;
140 else
141- einfo (_("%F%P: invalid option for -z lam-u48-report=: %s\n"),
142+ fatal (_("%P: invalid option for -z lam-u48-report=: %s\n"),
143 optarg + 15);
144 }
145 else if (strcmp (optarg, "lam-u57") == 0)
146@@ -39,7 +39,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
147 else if (strcmp (optarg + 15, "error") == 0)
148 params.lam_u57_report = prop_report_error;
149 else
150- einfo (_("%F%P: invalid option for -z lam-u57-report=: %s\n"),
151+ fatal (_("%P: invalid option for -z lam-u57-report=: %s\n"),
152 optarg + 15);
153 }
154 else if (strncmp (optarg, "lam-report=", 11) == 0)
155@@ -60,7 +60,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
156 params.lam_u57_report = prop_report_error;
157 }
158 else
159- einfo (_("%F%P: invalid option for -z lam-report=: %s\n"),
160+ fatal (_("%P: invalid option for -z lam-report=: %s\n"),
161 optarg + 11);
162 }
163 '
164diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh
165index c46aacf3..7e27cf1e 100644
166--- a/ld/emulparams/x86-64-level.sh
167+++ b/ld/emulparams/x86-64-level.sh
168@@ -10,7 +10,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL='
169 char *end;
170 unsigned int level = strtoul (optarg + 8 , &end, 10);
171 if (*end != '\0' || level < 2 || level > 4)
172- einfo (_("%F%P: invalid x86-64 ISA level: %s\n"), optarg);
173+ fatal (_("%P: invalid x86-64 ISA level: %s\n"), optarg);
174 params.isa_level = level;
175 }
176 '
177diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
178index b647909a..a6637718 100644
179--- a/ld/emultempl/aarch64elf.em
180+++ b/ld/emultempl/aarch64elf.em
181@@ -316,7 +316,7 @@ aarch64_elf_create_output_section_statements (void)
182 These will only be created if the output format is an arm format,
183 hence we do not support linking and changing output formats at the
184 same time. Use a link followed by objcopy to change output formats. */
185- einfo (_("%F%P: error: cannot change output format "
186+ fatal (_("%P: error: cannot change output format "
187 "whilst linking %s binaries\n"), "AArch64");
188 return;
189 }
190@@ -342,7 +342,7 @@ aarch64_elf_create_output_section_statements (void)
191 bfd_get_arch (link_info.output_bfd),
192 bfd_get_mach (link_info.output_bfd)))
193 {
194- einfo (_("%F%P: can not create BFD: %E\n"));
195+ fatal (_("%P: can not create BFD: %E\n"));
196 return;
197 }
198
199@@ -468,7 +468,7 @@ PARSE_AND_LIST_ARGS_CASES='
200
201 group_size = bfd_scan_vma (optarg, &end, 0);
202 if (*end)
203- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
204+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
205 }
206 break;
207 '
208diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em
209index a445c329..29acdbc9 100644
210--- a/ld/emultempl/aix.em
211+++ b/ld/emultempl/aix.em
212@@ -335,7 +335,7 @@ read_file_list (const char *filename)
213 f = fopen (filename, FOPEN_RT);
214 if (f == NULL)
215 {
216- einfo (_("%F%P: cannot open %s\n"), filename);
217+ fatal (_("%P: cannot open %s\n"), filename);
218 return;
219 }
220 if (fseek (f, 0L, SEEK_END) == -1)
221@@ -382,8 +382,8 @@ read_file_list (const char *filename)
222 return;
223
224 error:
225- einfo (_("%F%P: cannot read %s\n"), optarg);
226 fclose (f);
227+ fatal (_("%P: cannot read %s\n"), optarg);
228 }
229
230 static bool
231@@ -734,7 +734,7 @@ gld${EMULATION_NAME}_after_open (void)
232 size = (p->count + 2) * 4;
233 if (!bfd_xcoff_link_record_set (link_info.output_bfd, &link_info,
234 p->h, size))
235- einfo (_("%F%P: bfd_xcoff_link_record_set failed: %E\n"));
236+ fatal (_("%P: bfd_xcoff_link_record_set failed: %E\n"));
237 }
238 }
239
240@@ -764,9 +764,9 @@ gld${EMULATION_NAME}_before_allocation (void)
241
242 h = bfd_link_hash_lookup (link_info.hash, el->name, false, false, false);
243 if (h == NULL)
244- einfo (_("%F%P: bfd_link_hash_lookup of export symbol failed: %E\n"));
245+ fatal (_("%P: bfd_link_hash_lookup of export symbol failed: %E\n"));
246 if (!bfd_xcoff_export_symbol (link_info.output_bfd, &link_info, h))
247- einfo (_("%F%P: bfd_xcoff_export_symbol failed: %E\n"));
248+ fatal (_("%P: bfd_xcoff_export_symbol failed: %E\n"));
249 }
250
251 /* Track down all relocations called for by the linker script (these
252@@ -849,7 +849,7 @@ gld${EMULATION_NAME}_before_allocation (void)
253 (link_info.output_bfd, &link_info, libpath, entry_symbol.name,
254 file_align, maxstack, maxdata, gc && !unix_ld,
255 modtype, textro, flags, special_sections, rtld))
256- einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
257+ fatal (_("%P: failed to set dynamic section sizes: %E\n"));
258
259 /* Look through the special sections, and put them in the right
260 place in the link ordering. This is especially magic. */
261@@ -871,8 +871,8 @@ gld${EMULATION_NAME}_before_allocation (void)
262 is = NULL;
263 os = lang_output_section_get (sec->output_section);
264 if (os == NULL)
265- einfo (_("%F%P: can't find output section %s\n"),
266- sec->output_section->name);
267+ fatal (_("%P: can't find output section %pA\n"),
268+ sec->output_section);
269
270 for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->header.next)
271 {
272@@ -908,8 +908,7 @@ gld${EMULATION_NAME}_before_allocation (void)
273
274 if (is == NULL)
275 {
276- einfo (_("%F%P: can't find %s in output section\n"),
277- bfd_section_name (sec));
278+ fatal (_("%P: can't find %pA in output section\n"), sec);
279 }
280
281 /* Now figure out where the section should go. */
282@@ -1162,7 +1161,7 @@ gld${EMULATION_NAME}_after_allocation (void)
283
284 /* Now that everything is in place, finalize the dynamic sections. */
285 if (!bfd_xcoff_build_dynamic_sections (link_info.output_bfd, &link_info))
286- einfo (_("%F%P: failed to layout dynamic sections: %E\n"));
287+ fatal (_("%P: failed to layout dynamic sections: %E\n"));
288
289 if (!bfd_link_relocatable (&link_info))
290 {
291@@ -1313,7 +1312,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
292 if (f == NULL)
293 {
294 bfd_set_error (bfd_error_system_call);
295- einfo ("%F%P: %s: %E\n", filename);
296+ fatal ("%P: %s: %E\n", filename);
297 return;
298 }
299
300@@ -1375,7 +1374,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
301 obstack_free (o, obstack_base (o));
302 }
303 else if (*s == '(')
304- einfo (_("%F%P:%s:%d: #! ([member]) is not supported "
305+ fatal (_("%P:%s:%d: #! ([member]) is not supported "
306 "in import files\n"),
307 filename, lineno);
308 else
309@@ -1392,7 +1391,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
310 *s = '\0';
311 if (!bfd_xcoff_split_import_path (link_info.output_bfd,
312 start, &imppath, &impfile))
313- einfo (_("%F%P: could not parse import path: %E\n"));
314+ fatal (_("%P: could not parse import path: %E\n"));
315 while (ISSPACE (cs))
316 {
317 ++s;
318@@ -1547,10 +1546,10 @@ gld${EMULATION_NAME}_find_relocs (lang_statement_union_type *s)
319
320 rs = &s->reloc_statement;
321 if (rs->name == NULL)
322- einfo (_("%F%P: only relocations against symbols are permitted\n"));
323+ fatal (_("%P: only relocations against symbols are permitted\n"));
324 if (!bfd_xcoff_link_count_reloc (link_info.output_bfd, &link_info,
325 rs->name))
326- einfo (_("%F%P: bfd_xcoff_link_count_reloc failed: %E\n"));
327+ fatal (_("%P: bfd_xcoff_link_count_reloc failed: %E\n"));
328 }
329
330 if (s->header.type == lang_assignment_statement_enum)
331@@ -1579,7 +1578,7 @@ gld${EMULATION_NAME}_find_exp_assignment (etree_type *exp)
332 if (!bfd_xcoff_record_link_assignment (link_info.output_bfd,
333 &link_info,
334 exp->assign.dst))
335- einfo (_("%F%P: failed to record assignment to %s: %E\n"),
336+ fatal (_("%P: failed to record assignment to %s: %E\n"),
337 exp->assign.dst);
338 }
339 gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src);
340@@ -1674,7 +1673,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
341 bfd_get_arch (link_info.output_bfd),
342 bfd_get_mach (link_info.output_bfd)))
343 {
344- einfo (_("%F%P: can not create stub BFD: %E\n"));
345+ fatal (_("%P: can not create stub BFD: %E\n"));
346 return;
347 }
348
349@@ -1684,7 +1683,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
350
351 /* Pass linker params to the back-end. */
352 if (!bfd_xcoff_link_init (&link_info, &params))
353- einfo (_("%F%P: can not init BFD: %E\n"));
354+ fatal (_("%P: can not init BFD: %E\n"));
355
356 /* __rtinit */
357 if (link_info.init_function != NULL
358@@ -1701,7 +1700,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
359 bfd_get_arch (link_info.output_bfd),
360 bfd_get_mach (link_info.output_bfd)))
361 {
362- einfo (_("%F%P: can not create BFD: %E\n"));
363+ fatal (_("%P: can not create BFD: %E\n"));
364 return;
365 }
366
367@@ -1711,7 +1710,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
368 link_info.fini_function,
369 rtld))
370 {
371- einfo (_("%F%P: can not create BFD: %E\n"));
372+ fatal (_("%P: can not create BFD: %E\n"));
373 return;
374 }
375
376diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
377index 7fb1826e..504fb0cd 100644
378--- a/ld/emultempl/armelf.em
379+++ b/ld/emultempl/armelf.em
380@@ -521,7 +521,7 @@ arm_elf_create_output_section_statements (void)
381 These will only be created if the output format is an arm format,
382 hence we do not support linking and changing output formats at the
383 same time. Use a link followed by objcopy to change output formats. */
384- einfo (_("%F%P: error: cannot change output format "
385+ fatal (_("%P: error: cannot change output format "
386 "whilst linking %s binaries\n"), "ARM");
387 return;
388 }
389@@ -532,10 +532,10 @@ arm_elf_create_output_section_statements (void)
390 bfd_get_target (link_info.output_bfd));
391
392 if (params.in_implib_bfd == NULL)
393- einfo (_("%F%P: %s: can't open: %E\n"), in_implib_filename);
394+ fatal (_("%P: %s: can't open: %E\n"), in_implib_filename);
395
396 if (!bfd_check_format (params.in_implib_bfd, bfd_object))
397- einfo (_("%F%P: %s: not a relocatable file: %E\n"), in_implib_filename);
398+ fatal (_("%P: %s: not a relocatable file: %E\n"), in_implib_filename);
399 }
400
401 bfd_elf32_arm_set_target_params (link_info.output_bfd, &link_info, &params);
402@@ -549,7 +549,7 @@ arm_elf_create_output_section_statements (void)
403 bfd_get_arch (link_info.output_bfd),
404 bfd_get_mach (link_info.output_bfd)))
405 {
406- einfo (_("%F%P: can not create BFD: %E\n"));
407+ fatal (_("%P: can not create BFD: %E\n"));
408 return;
409 }
410
411@@ -734,7 +734,7 @@ PARSE_AND_LIST_ARGS_CASES='
412
413 group_size = bfd_scan_vma (optarg, &end, 0);
414 if (*end)
415- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
416+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
417 }
418 break;
419
420diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em
421index 3fe81004..dd5b57d1 100644
422--- a/ld/emultempl/avrelf.em
423+++ b/ld/emultempl/avrelf.em
424@@ -116,7 +116,7 @@ avr_elf_create_output_section_statements (void)
425
426 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_elf_flavour)
427 {
428- einfo (_("%F%P: error: cannot change output format "
429+ fatal (_("%P: error: cannot change output format "
430 "whilst linking %s binaries\n"), "AVR");
431 return;
432 }
433diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em
434index 844d4986..81878b02 100644
435--- a/ld/emultempl/beos.em
436+++ b/ld/emultempl/beos.em
437@@ -227,7 +227,7 @@ set_pe_subsystem (void)
438 return;
439 }
440 }
441- einfo (_("%F%P: invalid subsystem type %s\n"), optarg);
442+ fatal (_("%P: invalid subsystem type %s\n"), optarg);
443 }
444
445
446@@ -237,9 +237,7 @@ set_pe_value (char *name)
447 char *end;
448 set_pe_name (name, strtoul (optarg, &end, 0));
449 if (end == optarg)
450- {
451- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
452- }
453+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
454
455 optarg = end;
456 }
457@@ -254,9 +252,7 @@ set_pe_stack_heap (char *resname, char *comname)
458 set_pe_value (comname);
459 }
460 else if (*optarg)
461- {
462- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
463- }
464+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
465 }
466
467
468@@ -271,7 +267,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
469 case OPTION_BASE_FILE:
470 link_info.base_file = fopen (optarg, FOPEN_WB);
471 if (link_info.base_file == NULL)
472- einfo (_("%F%P: cannot open base file %s\n"), optarg);
473+ fatal (_("%P: cannot open base file %s\n"), optarg);
474 break;
475
476 /* PE options */
477@@ -380,9 +376,7 @@ gld${EMULATION_NAME}_after_open (void)
478 FIXME: This should be done via a function, rather than by
479 including an internal BFD header. */
480 if (!obj_pe (link_info.output_bfd))
481- {
482- einfo (_("%F%P: PE operations on non PE file\n"));
483- }
484+ fatal (_("%P: PE operations on non PE file\n"));
485
486 pe_data(link_info.output_bfd)->pe_opthdr = pe;
487 pe_data(link_info.output_bfd)->dll = init[DLLOFF].value;
488@@ -431,12 +425,12 @@ sort_by_file_name (const void *a, const void *b)
489
490 if (!bfd_get_section_contents (sa->owner, sa, &a_sec, (file_ptr) 0,
491 (bfd_size_type) sizeof (a_sec)))
492- einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"),
493+ fatal (_("%P: %pB: can't read contents of section .idata: %E\n"),
494 sa->owner);
495
496 if (!bfd_get_section_contents (sb->owner, sb, &b_sec, (file_ptr) 0,
497 (bfd_size_type) sizeof (b_sec)))
498- einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"),
499+ fatal (_("%P: %pB: can't read contents of section .idata: %E\n"),
500 sb->owner);
501
502 i = a_sec < b_sec ? -1 : 0;
503@@ -668,7 +662,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
504 /* Everything from the '\$' on gets deleted so don't allow '\$' as the
505 first character. */
506 if (*secname == '\$')
507- einfo (_("%F%P: section %s has '\$' as first character\n"), secname);
508+ fatal (_("%P: section %s has '\$' as first character\n"), secname);
509 if (strchr (secname + 1, '\$') == NULL)
510 return NULL;
511
512@@ -698,7 +692,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
513 }
514 ps[0] = 0;
515 if (l == NULL)
516- einfo (_("%F%P: *(%s\$) missing from linker script\n"), output_secname);
517+ fatal (_("%P: *(%s\$) missing from linker script\n"), output_secname);
518
519 /* Link the input section in and we're done for now.
520 The sections still have to be sorted, but that has to wait until
521diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em
522index 7d4f9507..5464edf1 100644
523--- a/ld/emultempl/cr16elf.em
524+++ b/ld/emultempl/cr16elf.em
525@@ -58,7 +58,7 @@ cr16_elf_after_open (void)
526 COFF and ELF. */
527 if (bfd_get_flavour (abfd) != bfd_target_coff_flavour
528 && bfd_get_flavour (abfd) != bfd_target_elf_flavour)
529- einfo (_("%F%P: %pB: all input objects must be COFF or ELF "
530+ fatal (_("%P: %pB: all input objects must be COFF or ELF "
531 "for --embedded-relocs\n"));
532
533 datasec = bfd_get_section_by_name (abfd, ".data.rel");
534@@ -82,7 +82,7 @@ cr16_elf_after_open (void)
535 | SEC_IN_MEMORY))
536 || !bfd_set_section_alignment (relsec, 2)
537 || !bfd_set_section_size (relsec, datasec->reloc_count * 8))
538- einfo (_("%F%P: %pB: can not create .emreloc section: %E\n"));
539+ fatal (_("%P: %pB: can not create .emreloc section: %E\n"));
540 }
541
542 /* Double check that all other data sections are empty, as is
543diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em
544index 82815e5e..9c91d7ac 100644
545--- a/ld/emultempl/cskyelf.em
546+++ b/ld/emultempl/cskyelf.em
547@@ -151,7 +151,7 @@ csky_elf_create_output_section_statements (void)
548 bfd_get_arch (link_info.output_bfd),
549 bfd_get_mach (link_info.output_bfd)))
550 {
551- einfo (_("%F%P: can not create BFD: %E\n"));
552+ fatal (_("%P: can not create BFD: %E\n"));
553 return;
554 }
555
556@@ -324,7 +324,7 @@ PARSE_AND_LIST_ARGS_CASES='
557
558 group_size = bfd_scan_vma (optarg, &end, 0);
559 if (*end)
560- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
561+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
562 }
563 break;
564 '
565diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
566index 71cec19f..5cc38194 100644
567--- a/ld/emultempl/elf.em
568+++ b/ld/emultempl/elf.em
569@@ -667,13 +667,13 @@ gld${EMULATION_NAME}_handle_option (int optc)
570 {
571 #ifndef HAVE_ZSTD
572 if (config.compress_debug == COMPRESS_DEBUG_ZSTD)
573- einfo (_ ("%F%P: --compress-debug-sections=zstd: ld is not built "
574- "with zstd support\n"));
575+ fatal (_("%P: --compress-debug-sections=zstd: ld is not built "
576+ "with zstd support\n"));
577 #endif
578 }
579 if (config.compress_debug == COMPRESS_UNKNOWN)
580- einfo (_("%F%P: invalid --compress-debug-sections option: \`%s'\n"),
581- optarg);
582+ fatal (_("%P: invalid --compress-debug-sections option: \`%s'\n"),
583+ optarg);
584 break;
585 EOF
586
587@@ -727,7 +727,7 @@ fragment <<EOF
588 link_info.emit_gnu_hash = true;
589 }
590 else
591- einfo (_("%F%P: invalid hash style \`%s'\n"), optarg);
592+ fatal (_("%P: invalid hash style \`%s'\n"), optarg);
593 break;
594
595 EOF
596@@ -747,7 +747,7 @@ fragment <<EOF
597 link_info.maxpagesize = strtoul (optarg + 14, &end, 0);
598 if (*end
599 || (link_info.maxpagesize & (link_info.maxpagesize - 1)) != 0)
600- einfo (_("%F%P: invalid maximum page size \`%s'\n"),
601+ fatal (_("%P: invalid maximum page size \`%s'\n"),
602 optarg + 14);
603 link_info.maxpagesize_is_set = true;
604 }
605@@ -757,7 +757,7 @@ fragment <<EOF
606 link_info.commonpagesize = strtoul (optarg + 17, &end, 0);
607 if (*end
608 || (link_info.commonpagesize & (link_info.commonpagesize - 1)) != 0)
609- einfo (_("%F%P: invalid common page size \`%s'\n"),
610+ fatal (_("%P: invalid common page size \`%s'\n"),
611 optarg + 17);
612 link_info.commonpagesize_is_set = true;
613 }
614@@ -766,7 +766,7 @@ fragment <<EOF
615 char *end;
616 link_info.stacksize = strtoul (optarg + 11, &end, 0);
617 if (*end || link_info.stacksize < 0)
618- einfo (_("%F%P: invalid stack size \`%s'\n"), optarg + 11);
619+ fatal (_("%P: invalid stack size \`%s'\n"), optarg + 11);
620 if (!link_info.stacksize)
621 /* Use -1 for explicit no-stack, because zero means
622 'default'. */
623@@ -805,7 +805,7 @@ fragment <<EOF
624 else if (strcmp (optarg, "start-stop-visibility=protected") == 0)
625 link_info.start_stop_visibility = STV_PROTECTED;
626 else
627- einfo (_("%F%P: invalid visibility in \`-z %s'; "
628+ fatal (_("%P: invalid visibility in \`-z %s'; "
629 "must be default, internal, hidden, or protected"),
630 optarg);
631 }
632diff --git a/ld/emultempl/hppaelf.em b/ld/emultempl/hppaelf.em
633index 09db0cb0..f0284ea3 100644
634--- a/ld/emultempl/hppaelf.em
635+++ b/ld/emultempl/hppaelf.em
636@@ -82,7 +82,7 @@ hppaelf_create_output_section_statements (void)
637 bfd_get_arch (link_info.output_bfd),
638 bfd_get_mach (link_info.output_bfd)))
639 {
640- einfo (_("%F%P: can not create BFD: %E\n"));
641+ fatal (_("%P: can not create BFD: %E\n"));
642 return;
643 }
644
645@@ -351,7 +351,7 @@ PARSE_AND_LIST_ARGS_CASES='
646 const char *end;
647 group_size = bfd_scan_vma (optarg, &end, 0);
648 if (*end)
649- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
650+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
651 }
652 break;
653 '
654diff --git a/ld/emultempl/kvxelf.em b/ld/emultempl/kvxelf.em
655index 2076c5b6..1ffbd1db 100644
656--- a/ld/emultempl/kvxelf.em
657+++ b/ld/emultempl/kvxelf.em
658@@ -35,9 +35,8 @@ elf${ELFSIZE}_kvx_before_allocation (void)
659 EOF
660 if test x"${EMULATION_NAME}" != x"elf64kvx_linux"; then
661 fragment <<EOF
662- if (bfd_link_pie (&link_info)) {
663- einfo (_("%F:%P: -pie not supported\n"));
664- }
665+ if (bfd_link_pie (&link_info))
666+ fatal (_(":%P: -pie not supported\n"));
667 EOF
668 fi
669 fragment <<EOF
670@@ -300,7 +299,7 @@ kvx_elf_create_output_section_statements (void)
671 ldlang_add_file (stub_file);
672
673 if (!kvx_elf${ELFSIZE}_init_stub_bfd (&link_info, stub_file->the_bfd))
674- einfo ("%F%P: can not init BFD: %E\n");
675+ einfo ("%P: can not init BFD: %E\n");
676 }
677
678
679diff --git a/ld/emultempl/loongarchelf.em b/ld/emultempl/loongarchelf.em
680index 3bb5ddf0..5a3d7b79 100644
681--- a/ld/emultempl/loongarchelf.em
682+++ b/ld/emultempl/loongarchelf.em
683@@ -67,11 +67,11 @@ gld${EMULATION_NAME}_after_allocation (void)
684 && !bfd_link_relocatable (&link_info))
685 {
686 if (lang_phdr_list == NULL)
687- elf_seg_map (link_info.output_bfd) = NULL;
688+ elf_seg_map (link_info.output_bfd) = NULL;
689 if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd,
690 &link_info,
691 NULL))
692- einfo (_("%F%P: map sections to segments failed: %E\n"));
693+ fatal (_("%P: map sections to segments failed: %E\n"));
694 }
695
696 /* Adjust program header size and .eh_frame_hdr size before
697diff --git a/ld/emultempl/m68hc1xelf.em b/ld/emultempl/m68hc1xelf.em
698index 5355b0fc..36f5f068 100644
699--- a/ld/emultempl/m68hc1xelf.em
700+++ b/ld/emultempl/m68hc1xelf.em
701@@ -159,7 +159,7 @@ m68hc11elf_create_output_section_statements (void)
702 bfd_get_arch (link_info.output_bfd),
703 bfd_get_mach (link_info.output_bfd)))
704 {
705- einfo (_("%F%P: can not create BFD: %E\n"));
706+ fatal (_("%P: can not create BFD: %E\n"));
707 return;
708 }
709
710diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em
711index 0477f1eb..f9a5bec2 100644
712--- a/ld/emultempl/m68kelf.em
713+++ b/ld/emultempl/m68kelf.em
714@@ -82,7 +82,7 @@ m68k_elf_after_open (void)
715 asection *datasec;
716
717 if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
718- einfo (_("%F%P: %pB: all input objects must be ELF "
719+ fatal (_("%P: %pB: all input objects must be ELF "
720 "for --embedded-relocs\n"));
721
722 datasec = bfd_get_section_by_name (abfd, ".data");
723@@ -106,7 +106,7 @@ m68k_elf_after_open (void)
724 if (relsec == NULL
725 || !bfd_set_section_alignment (relsec, 2)
726 || !bfd_set_section_size (relsec, datasec->reloc_count * 12))
727- einfo (_("%F%P: %pB: can not create .emreloc section: %E\n"));
728+ fatal (_("%P: %pB: can not create .emreloc section: %E\n"));
729 }
730
731 /* Double check that all other data sections are empty, as is
732diff --git a/ld/emultempl/metagelf.em b/ld/emultempl/metagelf.em
733index 81ab64c1..313d7ed5 100644
734--- a/ld/emultempl/metagelf.em
735+++ b/ld/emultempl/metagelf.em
736@@ -59,7 +59,7 @@ metagelf_create_output_section_statements (void)
737 bfd_get_arch (link_info.output_bfd),
738 bfd_get_mach (link_info.output_bfd)))
739 {
740- einfo (_("%F%P: can not create BFD: %E\n"));
741+ fatal (_("%P: can not create BFD: %E\n"));
742 return;
743 }
744
745@@ -309,7 +309,7 @@ PARSE_AND_LIST_ARGS_CASES='
746 const char *end;
747 group_size = bfd_scan_vma (optarg, &end, 0);
748 if (*end)
749- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
750+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
751 }
752 break;
753 '
754diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em
755index f8fe4b97..2a22ba49 100644
756--- a/ld/emultempl/mipself.em
757+++ b/ld/emultempl/mipself.em
758@@ -152,7 +152,7 @@ mips_add_stub_section (const char *stub_sec_name, asection *input_section,
759 bfd_get_arch (link_info.output_bfd),
760 bfd_get_mach (link_info.output_bfd)))
761 {
762- einfo (_("%F%P: can not create BFD: %E\n"));
763+ fatal (_("%P: can not create BFD: %E\n"));
764 return NULL;
765 }
766 stub_bfd->flags |= BFD_LINKER_CREATED;
767diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em
768index f2ecbba3..03186363 100644
769--- a/ld/emultempl/mmix-elfnmmo.em
770+++ b/ld/emultempl/mmix-elfnmmo.em
771@@ -113,10 +113,7 @@ mmix_after_allocation (void)
772 bfd_set_section_vma (sec, 0);
773
774 if (!_bfd_mmix_after_linker_allocation (link_info.output_bfd, &link_info))
775- {
776- /* This is a fatal error; make einfo call not return. */
777- einfo (_("%F%P: can't finalize linker-allocated global registers\n"));
778- }
779+ fatal (_("%P: can't finalize linker-allocated global registers\n"));
780 }
781 EOF
782
783diff --git a/ld/emultempl/nds32elf.em b/ld/emultempl/nds32elf.em
784index bde9e35d..36260573 100644
785--- a/ld/emultempl/nds32elf.em
786+++ b/ld/emultempl/nds32elf.em
787@@ -44,7 +44,7 @@ nds32_elf_create_output_section_statements (void)
788 if (strstr (bfd_get_target (link_info.output_bfd), "nds32") == NULL)
789 {
790 /* Check the output target is nds32. */
791- einfo (_("%F%P: error: cannot change output format whilst "
792+ fatal (_("%P: error: cannot change output format whilst "
793 "linking %s binaries\n"), "NDS32");
794 return;
795 }
796@@ -96,7 +96,7 @@ nds32_elf_after_open (void)
797 && abi_ver != (elf_elfheader (abfd)->e_flags & EF_NDS_ABI))
798 {
799 /* Incompatible objects. */
800- einfo (_("%F%P: %pB: ABI version of object files mismatched\n"),
801+ fatal (_("%P: %pB: ABI version of object files mismatched\n"),
802 abfd);
803 }
804 }
805@@ -195,7 +195,7 @@ PARSE_AND_LIST_ARGS_CASES='
806 {
807 sym_ld_script = fopen (optarg, FOPEN_WT);
808 if(sym_ld_script == NULL)
809- einfo (_("%F%P: cannot open map file %s: %E\n"), optarg);
810+ fatal (_("%P: cannot open map file %s: %E\n"), optarg);
811 }
812 break;
813 case OPTION_HYPER_RELAX:
814diff --git a/ld/emultempl/nto.em b/ld/emultempl/nto.em
815index de69e132..609d0217 100644
816--- a/ld/emultempl/nto.em
817+++ b/ld/emultempl/nto.em
818@@ -51,7 +51,7 @@ nto_create_QNX_note_section(int type)
819 is called before this function, stub_file should already be defined. */
820 if (!stub_file)
821 {
822- einfo (_("%F%P: cannot create .note section in stub BFD.\n"));
823+ fatal (_("%P: cannot create .note section in stub BFD.\n"));
824 return NULL;
825 }
826
827@@ -60,7 +60,7 @@ nto_create_QNX_note_section(int type)
828 note_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd, ".note", flags);
829 if (! note_sec)
830 {
831- einfo (_("%F%P: failed to create .note section\n"));
832+ fatal (_("%P: failed to create .note section\n"));
833 return NULL;
834 }
835
836@@ -101,7 +101,7 @@ nto_lookup_QNX_note_section(int type)
837 sec->contents = xmalloc(sec->size);
838 if (!bfd_get_section_contents (sec->owner, sec, sec->contents, (file_ptr) 0,
839 sec->size))
840- einfo (_("%F%P: %pB: can't read contents of section .note: %E\n"),
841+ fatal (_("%P: %pB: can't read contents of section .note: %E\n"),
842 sec->owner);
843
844 e_note = (Elf_External_Note *) sec->contents;
845@@ -144,7 +144,7 @@ nto_add_note_section (void) {
846
847 if (nto_lazy_stack && !link_info.stacksize)
848 {
849- einfo (_("%F%P: error: --lazy-stack must follow -zstack-size=<size>\n"));
850+ fatal (_("%P: error: --lazy-stack must follow -zstack-size=<size>\n"));
851 return;
852 }
853
854@@ -206,22 +206,22 @@ PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
855 PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
856 fprintf (file, _("\
857 --stack <size> Set size of the initial stack\n\
858- --lazy-stack Set lazy allocation of stack\n\
859+ --lazy-stack Set lazy allocation of stack\n\
860 "));
861 '
862
863 PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
864 case OPTION_STACK:
865 {
866- char *end;
867- link_info.stacksize = strtoul (optarg, &end, 0);
868- if (*end || link_info.stacksize < 0)
869- einfo (_("%F%P: invalid stack size `%s'\''\n"), optarg + 11);
870- if (!link_info.stacksize)
871- /* Use -1 for explicit no-stack, because zero means
872- 'default'. */
873- link_info.stacksize = -1;
874- break;
875+ char *end;
876+ link_info.stacksize = strtoul (optarg, &end, 0);
877+ if (*end || link_info.stacksize < 0)
878+ fatal (_("%P: invalid stack size `%s'\''\n"), optarg + 11);
879+ if (!link_info.stacksize)
880+ /* Use -1 for explicit no-stack, because zero means
881+ 'default'. */
882+ link_info.stacksize = -1;
883+ break;
884 }
885 case OPTION_LAZY_STACK:
886 nto_lazy_stack = true;
887diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
888index c6ed1110..4cb1488e 100644
889--- a/ld/emultempl/pe.em
890+++ b/ld/emultempl/pe.em
891@@ -726,7 +726,7 @@ set_pe_subsystem (void)
892
893 if (v[i].name == NULL)
894 {
895- einfo (_("%F%P: invalid subsystem type %s\n"), optarg);
896+ fatal (_("%P: invalid subsystem type %s\n"), optarg);
897 return;
898 }
899
900@@ -747,7 +747,7 @@ set_pe_value (char *name)
901 set_pe_name (name, strtoul (optarg, &end, 0));
902
903 if (end == optarg)
904- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
905+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
906
907 optarg = end;
908 }
909@@ -764,7 +764,7 @@ set_pe_stack_heap (char *resname, char *comname)
910 set_pe_value (comname);
911 }
912 else if (*optarg)
913- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
914+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
915 }
916
917 #define DEFAULT_BUILD_ID_STYLE "md5"
918@@ -780,7 +780,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
919 case OPTION_BASE_FILE:
920 link_info.base_file = fopen (optarg, FOPEN_WB);
921 if (link_info.base_file == NULL)
922- einfo (_("%F%P: cannot open base file %s\n"), optarg);
923+ fatal (_("%P: cannot open base file %s\n"), optarg);
924 break;
925
926 /* PE options. */
927@@ -1309,7 +1309,7 @@ make_runtime_ref (void)
928 = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info,
929 rr, true, false, true);
930 if (!h)
931- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
932+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
933 else
934 {
935 if (h->type == bfd_link_hash_new)
936@@ -1607,7 +1607,7 @@ gld${EMULATION_NAME}_after_open (void)
937 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour
938 || coff_data (link_info.output_bfd) == NULL
939 || !obj_pe (link_info.output_bfd))
940- einfo (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"),
941+ fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"),
942 link_info.output_bfd);
943
944 pe_data (link_info.output_bfd)->pe_opthdr = pe;
945@@ -1680,7 +1680,7 @@ gld${EMULATION_NAME}_after_open (void)
946 These will only be created if the output format is an arm format,
947 hence we do not support linking and changing output formats at the
948 same time. Use a link followed by objcopy to change output formats. */
949- einfo (_("%F%P: error: cannot change output format "
950+ fatal (_("%P: error: cannot change output format "
951 "whilst linking %s binaries\n"), "ARM");
952 return;
953 }
954@@ -1740,7 +1740,7 @@ gld${EMULATION_NAME}_after_open (void)
955
956 if (!bfd_generic_link_read_symbols (is->the_bfd))
957 {
958- einfo (_("%F%P: %pB: could not read symbols: %E\n"),
959+ fatal (_("%P: %pB: could not read symbols: %E\n"),
960 is->the_bfd);
961 return;
962 }
963@@ -1912,7 +1912,7 @@ gld${EMULATION_NAME}_after_open (void)
964
965 if (!bfd_generic_link_read_symbols (is->the_bfd))
966 {
967- einfo (_("%F%P: %pB: could not read symbols: %E\n"),
968+ fatal (_("%P: %pB: could not read symbols: %E\n"),
969 is->the_bfd);
970 return;
971 }
972@@ -2023,7 +2023,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU
973
974 h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true);
975 if (h == (struct bfd_link_hash_entry *) NULL)
976- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
977+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
978 if (h->type == bfd_link_hash_new)
979 {
980 h->type = bfd_link_hash_undefined;
981diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
982index bd2ee2ed..2d033dd3 100644
983--- a/ld/emultempl/pep.em
984+++ b/ld/emultempl/pep.em
985@@ -698,7 +698,7 @@ set_pep_subsystem (void)
986
987 if (v[i].name == NULL)
988 {
989- einfo (_("%F%P: invalid subsystem type %s\n"), optarg);
990+ fatal (_("%P: invalid subsystem type %s\n"), optarg);
991 return;
992 }
993
994@@ -719,7 +719,7 @@ set_pep_value (char *name)
995 set_pep_name (name, (bfd_vma) strtoull (optarg, &end, 0));
996
997 if (end == optarg)
998- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
999+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
1000
1001 optarg = end;
1002 }
1003@@ -736,7 +736,7 @@ set_pep_stack_heap (char *resname, char *comname)
1004 set_pep_value (comname);
1005 }
1006 else if (*optarg)
1007- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
1008+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
1009 }
1010
1011 #define DEFAULT_BUILD_ID_STYLE "md5"
1012@@ -753,7 +753,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1013 case OPTION_BASE_FILE:
1014 link_info.base_file = fopen (optarg, FOPEN_WB);
1015 if (link_info.base_file == NULL)
1016- einfo (_("%F%P: cannot open base file %s\n"), optarg);
1017+ fatal (_("%P: cannot open base file %s\n"), optarg);
1018 break;
1019
1020 /* PE options. */
1021@@ -1306,7 +1306,7 @@ make_runtime_ref (void)
1022 = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info,
1023 rr, true, false, true);
1024 if (!h)
1025- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1026+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1027 else
1028 {
1029 if (h->type == bfd_link_hash_new)
1030@@ -1606,7 +1606,7 @@ gld${EMULATION_NAME}_after_open (void)
1031 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour
1032 || coff_data (link_info.output_bfd) == NULL
1033 || !obj_pe (link_info.output_bfd))
1034- einfo (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"),
1035+ fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"),
1036 link_info.output_bfd);
1037
1038 pe_data (link_info.output_bfd)->pe_opthdr = pep;
1039@@ -1718,7 +1718,7 @@ gld${EMULATION_NAME}_after_open (void)
1040
1041 if (!bfd_generic_link_read_symbols (is->the_bfd))
1042 {
1043- einfo (_("%F%P: %pB: could not read symbols: %E\n"),
1044+ fatal (_("%P: %pB: could not read symbols: %E\n"),
1045 is->the_bfd);
1046 return;
1047 }
1048@@ -1907,7 +1907,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU
1049
1050 h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true);
1051 if (h == (struct bfd_link_hash_entry *) NULL)
1052- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1053+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1054 if (h->type == bfd_link_hash_new)
1055 {
1056 h->type = bfd_link_hash_undefined;
1057diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em
1058index 0730a05e..ffacadc6 100644
1059--- a/ld/emultempl/ppc32elf.em
1060+++ b/ld/emultempl/ppc32elf.em
1061@@ -386,7 +386,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1062 char *end;
1063 unsigned long val = strtoul (optarg, &end, 0);
1064 if (*end || val > 5)
1065- einfo (_("%F%P: invalid --plt-align `%s'\''\n"), optarg);
1066+ fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg);
1067 params.plt_stub_align = val;
1068 }
1069 else
1070@@ -419,7 +419,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1071 if (*end
1072 || (params.pagesize < 4096 && params.pagesize != 0)
1073 || params.pagesize != (params.pagesize & -params.pagesize))
1074- einfo (_("%F%P: invalid pagesize `%s'\''\n"), optarg);
1075+ fatal (_("%P: invalid pagesize `%s'\''\n"), optarg);
1076 }
1077 break;
1078
1079diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
1080index 533caed2..92bf4f58 100644
1081--- a/ld/emultempl/ppc64elf.em
1082+++ b/ld/emultempl/ppc64elf.em
1083@@ -91,7 +91,7 @@ ppc_create_output_section_statements (void)
1084 bfd_get_arch (link_info.output_bfd),
1085 bfd_get_mach (link_info.output_bfd)))
1086 {
1087- einfo (_("%F%P: can not create BFD: %E\n"));
1088+ fatal (_("%P: can not create BFD: %E\n"));
1089 return;
1090 }
1091
1092@@ -101,7 +101,7 @@ ppc_create_output_section_statements (void)
1093 if (params.save_restore_funcs < 0)
1094 params.save_restore_funcs = !bfd_link_relocatable (&link_info);
1095 if (!ppc64_elf_init_stub_bfd (&link_info, &params))
1096- einfo (_("%F%P: can not init BFD: %E\n"));
1097+ fatal (_("%P: can not init BFD: %E\n"));
1098 }
1099
1100 /* Called after opening files but before mapping sections. */
1101@@ -860,7 +860,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1102 const char *end;
1103 params.group_size = bfd_scan_vma (optarg, &end, 0);
1104 if (*end)
1105- einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
1106+ fatal (_("%P: invalid number `%s'\''\n"), optarg);
1107 }
1108 break;
1109
1110@@ -886,7 +886,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1111 char *end;
1112 long val = strtol (optarg, &end, 0);
1113 if (*end || (unsigned long) val + 8 > 16)
1114- einfo (_("%F%P: invalid --plt-align `%s'\''\n"), optarg);
1115+ fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg);
1116 params.plt_stub_align = val;
1117 }
1118 else
1119@@ -915,7 +915,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1120 else if (strcasecmp (optarg, "no") == 0)
1121 params.power10_stubs = 0;
1122 else
1123- einfo (_("%F%P: invalid --power10-stubs argument `%s'\''\n"),
1124+ fatal (_("%P: invalid --power10-stubs argument `%s'\''\n"),
1125 optarg);
1126 }
1127 else
1128diff --git a/ld/emultempl/riscvelf.em b/ld/emultempl/riscvelf.em
1129index fe53b2a7..006e4edb 100644
1130--- a/ld/emultempl/riscvelf.em
1131+++ b/ld/emultempl/riscvelf.em
1132@@ -141,7 +141,7 @@ riscv_create_output_section_statements (void)
1133 These will only be created if the output format is a RISC-V format,
1134 hence we do not support linking and changing output formats at the
1135 same time. Use a link followed by objcopy to change output formats. */
1136- einfo (_("%F%P: error: cannot change output format"
1137+ fatal (_("%P: error: cannot change output format"
1138 " whilst linking %s binaries\n"), "RISC-V");
1139 return;
1140 }
1141diff --git a/ld/emultempl/s390.em b/ld/emultempl/s390.em
1142index 11e7f19b..0a93d76b 100644
1143--- a/ld/emultempl/s390.em
1144+++ b/ld/emultempl/s390.em
1145@@ -34,7 +34,7 @@ static void
1146 s390_elf_create_output_section_statements (void)
1147 {
1148 if (!bfd_elf_s390_set_options (&link_info, &params))
1149- einfo (_("%F%P: can not init BFD: %E\n"));
1150+ fatal (_("%P: can not init BFD: %E\n"));
1151 }
1152
1153 EOF
1154diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em
1155index 6238b5e2..6413f330 100644
1156--- a/ld/emultempl/scoreelf.em
1157+++ b/ld/emultempl/scoreelf.em
1158@@ -62,7 +62,7 @@ score_elf_after_open (void)
1159 These will only be created if the output format is an score format,
1160 hence we do not support linking and changing output formats at the
1161 same time. Use a link followed by objcopy to change output formats. */
1162- einfo (_("%F%P: error: cannot change output format "
1163+ fatal (_("%P: error: cannot change output format "
1164 "whilst linking %s binaries\n"), "S+core");
1165 return;
1166 }
1167diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em
1168index cc39435c..c694b828 100644
1169--- a/ld/emultempl/spuelf.em
1170+++ b/ld/emultempl/spuelf.em
1171@@ -202,7 +202,7 @@ spu_elf_load_ovl_mgr (void)
1172 /* User supplied __ovly_load. */
1173 }
1174 else if (mgr_stream->start == mgr_stream->end)
1175- einfo (_("%F%P: no built-in overlay manager\n"));
1176+ fatal (_("%P: no built-in overlay manager\n"));
1177 else
1178 {
1179 lang_input_statement_type *ovl_is;
1180@@ -379,7 +379,7 @@ spu_elf_open_overlay_script (void)
1181 if (script == NULL)
1182 {
1183 file_err:
1184- einfo (_("%F%P: can not open script: %E\n"));
1185+ fatal (_("%P: can not open script: %E\n"));
1186 }
1187 return script;
1188 }
1189@@ -719,7 +719,7 @@ PARSE_AND_LIST_ARGS_CASES='
1190 if (*end == 0)
1191 break;
1192 }
1193- einfo (_("%F%P: invalid --local-store address range `%s'\''\n"), optarg);
1194+ fatal (_("%P: invalid --local-store address range `%s'\''\n"), optarg);
1195 }
1196 break;
1197
1198@@ -755,12 +755,12 @@ PARSE_AND_LIST_ARGS_CASES='
1199 if (!num_lines_set)
1200 params.num_lines = 32;
1201 else if ((params.num_lines & -params.num_lines) != params.num_lines)
1202- einfo (_("%F%P: invalid --num-lines/--num-regions `%u'\''\n"),
1203+ fatal (_("%P: invalid --num-lines/--num-regions `%u'\''\n"),
1204 params.num_lines);
1205 if (!line_size_set)
1206 params.line_size = 1024;
1207 else if ((params.line_size & -params.line_size) != params.line_size)
1208- einfo (_("%F%P: invalid --line-size/--region-size `%u'\''\n"),
1209+ fatal (_("%P: invalid --line-size/--region-size `%u'\''\n"),
1210 params.line_size);
1211 break;
1212
1213@@ -781,7 +781,7 @@ PARSE_AND_LIST_ARGS_CASES='
1214 && (params.ovly_flavour != ovly_soft_icache
1215 || (params.num_lines & -params.num_lines) == params.num_lines))
1216 break;
1217- einfo (_("%F%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg);
1218+ fatal (_("%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg);
1219 }
1220 break;
1221
1222@@ -794,7 +794,7 @@ PARSE_AND_LIST_ARGS_CASES='
1223 && (params.ovly_flavour != ovly_soft_icache
1224 || (params.line_size & -params.line_size) == params.line_size))
1225 break;
1226- einfo (_("%F%P: invalid --line-size/--region-size `%s'\''\n"), optarg);
1227+ fatal (_("%P: invalid --line-size/--region-size `%s'\''\n"), optarg);
1228 }
1229 break;
1230
1231@@ -803,7 +803,7 @@ PARSE_AND_LIST_ARGS_CASES='
1232 char *end;
1233 params.auto_overlay_fixed = strtoul (optarg, &end, 0);
1234 if (*end != 0)
1235- einfo (_("%F%P: invalid --fixed-space value `%s'\''\n"), optarg);
1236+ fatal (_("%P: invalid --fixed-space value `%s'\''\n"), optarg);
1237 }
1238 break;
1239
1240@@ -812,7 +812,7 @@ PARSE_AND_LIST_ARGS_CASES='
1241 char *end;
1242 params.auto_overlay_reserved = strtoul (optarg, &end, 0);
1243 if (*end != 0)
1244- einfo (_("%F%P: invalid --reserved-space value `%s'\''\n"), optarg);
1245+ fatal (_("%P: invalid --reserved-space value `%s'\''\n"), optarg);
1246 }
1247 break;
1248
1249@@ -821,7 +821,7 @@ PARSE_AND_LIST_ARGS_CASES='
1250 char *end;
1251 params.extra_stack_space = strtol (optarg, &end, 0);
1252 if (*end != 0)
1253- einfo (_("%F%P: invalid --extra-stack-space value `%s'\''\n"), optarg);
1254+ fatal (_("%P: invalid --extra-stack-space value `%s'\''\n"), optarg);
1255 }
1256 break;
1257
1258diff --git a/ld/emultempl/tic6xdsbt.em b/ld/emultempl/tic6xdsbt.em
1259index 524e3f73..a830be7e 100644
1260--- a/ld/emultempl/tic6xdsbt.em
1261+++ b/ld/emultempl/tic6xdsbt.em
1262@@ -59,10 +59,8 @@ tic6x_after_open (void)
1263 if (is_tic6x_target ())
1264 {
1265 if (params.dsbt_index >= params.dsbt_size)
1266- {
1267- einfo (_("%F%P: invalid --dsbt-index %d, outside DSBT size\n"),
1268- params.dsbt_index);
1269- }
1270+ fatal (_("%P: invalid --dsbt-index %d, outside DSBT size\n"),
1271+ params.dsbt_index);
1272 elf32_tic6x_setup (&link_info, &params);
1273 }
1274
1275@@ -192,7 +190,7 @@ PARSE_AND_LIST_ARGS_CASES='
1276 if (*end == 0
1277 && params.dsbt_index >= 0 && params.dsbt_index < 0x7fff)
1278 break;
1279- einfo (_("%F%P: invalid --dsbt-index %s\n"), optarg);
1280+ fatal (_("%P: invalid --dsbt-index %s\n"), optarg);
1281 }
1282 break;
1283 case OPTION_DSBT_SIZE:
1284@@ -202,7 +200,7 @@ PARSE_AND_LIST_ARGS_CASES='
1285 if (*end == 0
1286 && params.dsbt_size >= 0 && params.dsbt_size < 0x7fff)
1287 break;
1288- einfo (_("%F%P: invalid --dsbt-size %s\n"), optarg);
1289+ fatal (_("%P: invalid --dsbt-size %s\n"), optarg);
1290 }
1291 break;
1292 case OPTION_NO_MERGE_EXIDX_ENTRIES:
1293diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em
1294index 4b048bef..bbf30f4a 100644
1295--- a/ld/emultempl/ticoff.em
1296+++ b/ld/emultempl/ticoff.em
1297@@ -88,9 +88,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1298 lang_add_output_format (buf, NULL, NULL, 0);
1299 }
1300 else
1301- {
1302- einfo (_("%F%P: invalid COFF format version %s\n"), optarg);
1303- }
1304+ fatal (_("%P: invalid COFF format version %s\n"), optarg);
1305 break;
1306 }
1307 return false;
1308diff --git a/ld/emultempl/v850elf.em b/ld/emultempl/v850elf.em
1309index 7bcd45f3..49ad2cc8 100644
1310--- a/ld/emultempl/v850elf.em
1311+++ b/ld/emultempl/v850elf.em
1312@@ -63,7 +63,7 @@ v850_create_output_section_statements (void)
1313 These will only be created if the output format is an arm format,
1314 hence we do not support linking and changing output formats at the
1315 same time. Use a link followed by objcopy to change output formats. */
1316- einfo (_("%F%P: error: cannot change output format"
1317+ fatal (_("%P: error: cannot change output format"
1318 " whilst linking %s binaries\n"), "V850");
1319 return;
1320 }
1321diff --git a/ld/emultempl/vms.em b/ld/emultempl/vms.em
1322index 67e9ea64..4ca2c942 100644
1323--- a/ld/emultempl/vms.em
1324+++ b/ld/emultempl/vms.em
1325@@ -201,7 +201,7 @@ gld${EMULATION_NAME}_before_allocation (void)
1326 && bed->elf_backend_size_dynamic_sections
1327 && ! (*bed->elf_backend_size_dynamic_sections) (link_info.output_bfd,
1328 &link_info))
1329- einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
1330+ fatal (_("%P: failed to set dynamic section sizes: %E\n"));
1331
1332 before_allocation_default ();
1333 }
1334diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em
1335index 51293539..208f730d 100644
1336--- a/ld/emultempl/xtensaelf.em
1337+++ b/ld/emultempl/xtensaelf.em
1338@@ -388,7 +388,7 @@ check_xtensa_info (bfd *abfd, asection *info_sec)
1339
1340 data = xmalloc (info_sec->size);
1341 if (! bfd_get_section_contents (abfd, info_sec, data, 0, info_sec->size))
1342- einfo (_("%F%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec);
1343+ fatal (_("%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec);
1344
1345 if (info_sec->size > 24
1346 && info_sec->size >= 24 + bfd_get_32 (abfd, data + 4)
1347@@ -429,13 +429,13 @@ elf_xtensa_before_allocation (void)
1348 if (is_big_endian
1349 && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE)
1350 {
1351- einfo (_("%F%P: little endian output does not match "
1352+ fatal (_("%P: little endian output does not match "
1353 "Xtensa configuration\n"));
1354 }
1355 if (!is_big_endian
1356 && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_BIG)
1357 {
1358- einfo (_("%F%P: big endian output does not match "
1359+ fatal (_("%P: big endian output does not match "
1360 "Xtensa configuration\n"));
1361 }
1362
1363@@ -454,7 +454,7 @@ elf_xtensa_before_allocation (void)
1364 cannot go any further if there are any mismatches. */
1365 if ((is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE)
1366 || (!is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_BIG))
1367- einfo (_("%F%P: cross-endian linking for %pB not supported\n"),
1368+ fatal (_("%P: cross-endian linking for %pB not supported\n"),
1369 f->the_bfd);
1370
1371 if (! first_bfd)
1372@@ -485,7 +485,7 @@ elf_xtensa_before_allocation (void)
1373 info_sec = bfd_make_section_with_flags (first_bfd, ".xtensa.info",
1374 SEC_HAS_CONTENTS | SEC_READONLY);
1375 if (! info_sec)
1376- einfo (_("%F%P: failed to create .xtensa.info section\n"));
1377+ fatal (_("%P: failed to create .xtensa.info section\n"));
1378 }
1379 if (info_sec)
1380 {
1381@@ -1224,7 +1224,7 @@ ld_build_required_section_dependence (lang_statement_union_type *s)
1382 lang_statement_union_type *l = iter_stack_current (&stack);
1383
1384 if (l == NULL && link_info.non_contiguous_regions)
1385- einfo (_("%F%P: Relaxation not supported with "
1386+ fatal (_("%P: Relaxation not supported with "
1387 "--enable-non-contiguous-regions.\n"));
1388
1389 if (l->header.type == lang_input_section_enum)
1390diff --git a/ld/emultempl/z80.em b/ld/emultempl/z80.em
1391index ded04136..555f6024 100644
1392--- a/ld/emultempl/z80.em
1393+++ b/ld/emultempl/z80.em
1394@@ -48,7 +48,7 @@ z80_after_open (void)
1395 const bfd_arch_info_type *info;
1396 info = bfd_arch_get_compatible (link_info.output_bfd, abfd, false);
1397 if (info == NULL)
1398- einfo (_("%F%P: %pB: Instruction sets of object files incompatible\n"),
1399+ fatal (_("%P: %pB: Instruction sets of object files incompatible\n"),
1400 abfd);
1401 else
1402 bfd_set_arch_info (link_info.output_bfd, info);
1403diff --git a/ld/ldcref.c b/ld/ldcref.c
1404index 632506a4..572d4f4d 100644
1405--- a/ld/ldcref.c
1406+++ b/ld/ldcref.c
1407@@ -514,7 +514,7 @@ check_local_sym_xref (lang_input_statement_type *statement)
1408 return;
1409
1410 if (!bfd_generic_link_read_symbols (abfd))
1411- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
1412+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
1413
1414 for (syms = bfd_get_outsymbols (abfd); *syms; ++syms)
1415 {
1416@@ -625,7 +625,7 @@ check_refs (const char *name,
1417 BFD might contain a prohibited cross reference. */
1418
1419 if (!bfd_generic_link_read_symbols (abfd))
1420- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
1421+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
1422
1423 info.sym_name = name;
1424 info.global = global;
1425@@ -687,14 +687,14 @@ check_reloc_refs (bfd *abfd, asection *sec, void *iarg)
1426
1427 relsize = bfd_get_reloc_upper_bound (abfd, sec);
1428 if (relsize < 0)
1429- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
1430+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
1431 if (relsize == 0)
1432 return;
1433
1434 relpp = (arelent **) xmalloc (relsize);
1435 relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
1436 if (relcount < 0)
1437- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
1438+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
1439
1440 p = relpp;
1441 pend = p + relcount;
1442diff --git a/ld/ldelf.c b/ld/ldelf.c
1443index d66e08dd..fb95b7a9 100644
1444--- a/ld/ldelf.c
1445+++ b/ld/ldelf.c
1446@@ -94,7 +94,7 @@ ldelf_after_parse (void)
1447 else if (!link_info.maxpagesize_is_set)
1448 link_info.maxpagesize = link_info.commonpagesize;
1449 else
1450- einfo (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"),
1451+ fatal (_("%P: common page size (0x%v) > maximum page size (0x%v)\n"),
1452 link_info.commonpagesize, link_info.maxpagesize);
1453 }
1454 }
1455@@ -120,7 +120,7 @@ ldelf_load_symbols (lang_input_statement_type *entry)
1456
1457 if (entry->flags.just_syms
1458 && (bfd_get_file_flags (entry->the_bfd) & DYNAMIC) != 0)
1459- einfo (_("%F%P: %pB: --just-symbols may not be used on DSO\n"),
1460+ fatal (_("%P: %pB: --just-symbols may not be used on DSO\n"),
1461 entry->the_bfd);
1462
1463 if (link_class == 0
1464@@ -320,7 +320,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
1465 struct bfd_link_needed_list *needs;
1466
1467 if (! bfd_elf_get_bfd_needed_list (abfd, &needs))
1468- einfo (_("%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd);
1469+ fatal (_("%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd);
1470
1471 if (needs != NULL)
1472 {
1473@@ -368,7 +368,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
1474 can only check that using stat. */
1475
1476 if (bfd_stat (abfd, &global_stat) != 0)
1477- einfo (_("%F%P: %pB: bfd_stat failed: %E\n"), abfd);
1478+ fatal (_("%P: %pB: bfd_stat failed: %E\n"), abfd);
1479
1480 /* First strip off everything before the last '/'. */
1481 soname = lbasename (bfd_get_filename (abfd));
1482@@ -407,7 +407,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
1483
1484 /* Add this file into the symbol table. */
1485 if (! bfd_link_add_symbols (abfd, &link_info))
1486- einfo (_("%F%P: %pB: error adding symbols: %E\n"), abfd);
1487+ fatal (_("%P: %pB: error adding symbols: %E\n"), abfd);
1488
1489 return true;
1490 }
1491@@ -1205,7 +1205,7 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
1492 && elf_dt_name (abfd) != NULL)
1493 {
1494 if (bfd_elf_add_dt_needed_tag (abfd, &link_info) < 0)
1495- einfo (_("%F%P: failed to add DT_NEEDED dynamic tag\n"));
1496+ fatal (_("%P: failed to add DT_NEEDED dynamic tag\n"));
1497 }
1498
1499 link_info.input_bfds_tail = save_input_bfd_tail;
1500@@ -1256,10 +1256,8 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
1501 bfd_get_target (link_info.output_bfd));
1502
1503 if (link_info.out_implib_bfd == NULL)
1504- {
1505- einfo (_("%F%P: %s: can't open for writing: %E\n"),
1506- command_line.out_implib_filename);
1507- }
1508+ fatal (_("%P: %s: can't open for writing: %E\n"),
1509+ command_line.out_implib_filename);
1510 }
1511
1512 if (ldelf_emit_note_gnu_build_id != NULL
1513@@ -1313,7 +1311,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
1514 && (elf_tdata (abfd)->elf_header->e_type == ET_EXEC
1515 || (elf_tdata (abfd)->elf_header->e_type == ET_DYN
1516 && elf_tdata (abfd)->is_pie)))
1517- einfo (_("%F%P: cannot use executable file '%pB' as input to a link\n"),
1518+ fatal (_("%P: cannot use executable file '%pB' as input to a link\n"),
1519 abfd);
1520 }
1521
1522@@ -1367,7 +1365,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
1523 }
1524 else if (seen_type != type)
1525 {
1526- einfo (_("%F%P: compact frame descriptions incompatible with"
1527+ fatal (_("%P: compact frame descriptions incompatible with"
1528 " DWARF2 .eh_frame from %pB\n"),
1529 type == DWARF2_EH_HDR ? abfd : elfbfd);
1530 break;
1531@@ -1409,7 +1407,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
1532
1533 if (link_info.eh_frame_hdr_type == COMPACT_EH_HDR)
1534 if (!bfd_elf_parse_eh_frame_entries (NULL, &link_info))
1535- einfo (_("%F%P: failed to parse EH frame entries\n"));
1536+ fatal (_("%P: failed to parse EH frame entries\n"));
1537
1538 ldelf_handle_dt_needed (htab, use_libpath, native, is_linux,
1539 is_freebsd, elfsize, prefix);
1540@@ -1666,7 +1664,7 @@ ldelf_find_exp_assignment (etree_type *exp)
1541 &link_info,
1542 exp->assign.dst, provide,
1543 exp->assign.hidden))
1544- einfo (_("%F%P: failed to record assignment to %s: %E\n"),
1545+ fatal (_("%P: failed to record assignment to %s: %E\n"),
1546 exp->assign.dst);
1547 }
1548 ldelf_find_exp_assignment (exp->assign.src);
1549@@ -1846,7 +1844,7 @@ ldelf_before_allocation (char *audit, char *depaudit,
1550 command_line.filter_shlib, audit, depaudit,
1551 (const char * const *) command_line.auxiliary_filters,
1552 &link_info, &sinterp)))
1553- einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
1554+ fatal (_("%P: failed to set dynamic section sizes: %E\n"));
1555
1556 if (sinterp != NULL)
1557 {
1558@@ -1883,8 +1881,8 @@ ldelf_before_allocation (char *audit, char *depaudit,
1559 msg = (char *) xmalloc ((size_t) (sz + 1));
1560 if (! bfd_get_section_contents (is->the_bfd, s, msg,
1561 (file_ptr) 0, sz))
1562- einfo (_("%F%P: %pB: can't read contents of section .gnu.warning: %E\n"),
1563- is->the_bfd);
1564+ fatal (_("%P: %pB: can't read contents of section %pA: %E\n"),
1565+ is->the_bfd, s);
1566 msg[sz] = '\0';
1567 (*link_info.callbacks->warning) (&link_info, msg,
1568 (const char *) NULL, is->the_bfd,
1569@@ -1911,7 +1909,7 @@ ldelf_before_allocation (char *audit, char *depaudit,
1570 before_allocation_default ();
1571
1572 if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info))
1573- einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
1574+ fatal (_("%P: failed to set dynamic section sizes: %E\n"));
1575
1576 if (ehdr_start != NULL)
1577 {
1578diff --git a/ld/ldelfgen.c b/ld/ldelfgen.c
1579index d3448546..1b1e49ce 100644
1580--- a/ld/ldelfgen.c
1581+++ b/ld/ldelfgen.c
1582@@ -282,7 +282,7 @@ ldelf_map_segments (bool need_layout)
1583 if (os_info->ordered != os_info->count
1584 && bfd_link_relocatable (&link_info))
1585 {
1586- einfo (_("%F%P: "
1587+ fatal (_("%P: "
1588 "%pA has both ordered and unordered sections\n"),
1589 os->bfd_section);
1590 return;
1591@@ -307,7 +307,7 @@ ldelf_map_segments (bool need_layout)
1592 if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd,
1593 &link_info,
1594 &need_layout))
1595- einfo (_("%F%P: map sections to segments failed: %E\n"));
1596+ fatal (_("%P: map sections to segments failed: %E\n"));
1597
1598 if (phdr_size != elf_program_header_size (link_info.output_bfd))
1599 {
1600@@ -327,7 +327,7 @@ ldelf_map_segments (bool need_layout)
1601 while (need_layout && --tries);
1602
1603 if (tries == 0)
1604- einfo (_("%F%P: looping in map_segments\n"));
1605+ fatal (_("%P: looping in map_segments\n"));
1606
1607 if (bfd_get_flavour (link_info.output_bfd) == bfd_target_elf_flavour
1608 && lang_phdr_list == NULL)
1609@@ -337,9 +337,8 @@ ldelf_map_segments (bool need_layout)
1610 const struct elf_backend_data *bed
1611 = get_elf_backend_data (link_info.output_bfd);
1612 if (bed->elf_backend_strip_zero_sized_dynamic_sections
1613- && !bed->elf_backend_strip_zero_sized_dynamic_sections
1614- (&link_info))
1615- einfo (_("%F%P: failed to strip zero-sized dynamic sections\n"));
1616+ && !bed->elf_backend_strip_zero_sized_dynamic_sections (&link_info))
1617+ fatal (_("%P: failed to strip zero-sized dynamic sections\n"));
1618 }
1619 }
1620
1621@@ -417,7 +416,7 @@ ldelf_acquire_strings_for_ctf
1622 {
1623 if (ctf_link_add_strtab (ctf_output, ldelf_ctf_strtab_iter_cb,
1624 &args) < 0)
1625- einfo (_("%F%P: warning: CTF strtab association failed; strings will "
1626+ fatal (_("%P: warning: CTF strtab association failed; strings will "
1627 "not be shared: %s\n"),
1628 ctf_errmsg (ctf_errno (ctf_output)));
1629 }
1630@@ -444,7 +443,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx,
1631 lsym.st_value = sym->st_value;
1632 if (ctf_link_add_linker_symbol (ctf_output, &lsym) < 0)
1633 {
1634- einfo (_("%F%P: warning: CTF symbol addition failed; CTF will "
1635+ fatal (_("%P: warning: CTF symbol addition failed; CTF will "
1636 "not be tied to symbols: %s\n"),
1637 ctf_errmsg (ctf_errno (ctf_output)));
1638 }
1639@@ -454,7 +453,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx,
1640 /* Shuffle all the symbols. */
1641
1642 if (ctf_link_shuffle_syms (ctf_output) < 0)
1643- einfo (_("%F%P: warning: CTF symbol shuffling failed; CTF will "
1644+ fatal (_("%P: warning: CTF symbol shuffling failed; CTF will "
1645 "not be tied to symbols: %s\n"),
1646 ctf_errmsg (ctf_errno (ctf_output)));
1647 }
1648diff --git a/ld/ldemul.c b/ld/ldemul.c
1649index 218abb84..b56b0492 100644
1650--- a/ld/ldemul.c
1651+++ b/ld/ldemul.c
1652@@ -343,7 +343,7 @@ ldemul_choose_mode (char *target)
1653 einfo (_("%P: unrecognised emulation mode: %s\n"), target);
1654 einfo (_("Supported emulations: "));
1655 ldemul_list_emulations (stderr);
1656- einfo ("%F\n");
1657+ fatal ("\n");
1658 }
1659
1660 void
1661diff --git a/ld/ldexp.c b/ld/ldexp.c
1662index 3c8ab2d3..45dffbc6 100644
1663--- a/ld/ldexp.c
1664+++ b/ld/ldexp.c
1665@@ -282,7 +282,7 @@ definedness_newfunc (struct bfd_hash_entry *entry,
1666 bfd_hash_allocate (table, sizeof (struct definedness_hash_entry));
1667
1668 if (ret == NULL)
1669- einfo (_("%F%P: bfd_hash_allocate failed creating symbol %s\n"), name);
1670+ fatal (_("%P: bfd_hash_allocate failed creating symbol %s\n"), name);
1671
1672 ret->by_object = 0;
1673 ret->iteration = 0;
1674@@ -313,7 +313,7 @@ update_definedness (const char *name, struct bfd_link_hash_entry *h)
1675 bfd_hash_lookup (&definedness_table, name, true, false);
1676
1677 if (defentry == NULL)
1678- einfo (_("%F%P: bfd_hash_lookup failed creating symbol %s\n"), name);
1679+ fatal (_("%P: bfd_hash_lookup failed creating symbol %s\n"), name);
1680
1681 /* If the symbol was already defined, and not by a script, then it
1682 must be defined by an object file or by the linker target code. */
1683@@ -638,7 +638,7 @@ fold_binary (etree_type *tree)
1684 expld.result.value = ((bfd_signed_vma) lhs.value
1685 % (bfd_signed_vma) expld.result.value);
1686 else if (expld.phase != lang_mark_phase_enum)
1687- einfo (_("%F%P:%pS %% by zero\n"), tree->binary.rhs);
1688+ fatal (_("%P:%pS %% by zero\n"), tree->binary.rhs);
1689 arith_result_section (&lhs);
1690 break;
1691
1692@@ -647,7 +647,7 @@ fold_binary (etree_type *tree)
1693 expld.result.value = ((bfd_signed_vma) lhs.value
1694 / (bfd_signed_vma) expld.result.value);
1695 else if (expld.phase != lang_mark_phase_enum)
1696- einfo (_("%F%P:%pS / by zero\n"), tree->binary.rhs);
1697+ fatal (_("%P:%pS / by zero\n"), tree->binary.rhs);
1698 arith_result_section (&lhs);
1699 break;
1700
1701@@ -761,7 +761,7 @@ fold_name (etree_type *tree)
1702 if (!h)
1703 {
1704 if (expld.phase != lang_first_phase_enum)
1705- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1706+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1707 }
1708 else if (h->type == bfd_link_hash_defined
1709 || h->type == bfd_link_hash_defweak)
1710@@ -789,7 +789,7 @@ fold_name (etree_type *tree)
1711 else if (expld.phase == lang_final_phase_enum
1712 || (expld.phase != lang_mark_phase_enum
1713 && expld.assigning_to_dot))
1714- einfo (_("%F%P:%pS: undefined symbol `%s'"
1715+ fatal (_("%P:%pS: undefined symbol `%s'"
1716 " referenced in expression\n"),
1717 tree, tree->name.name);
1718 else if (h->type == bfd_link_hash_new)
1719@@ -827,7 +827,7 @@ fold_name (etree_type *tree)
1720 if (os == NULL)
1721 {
1722 if (expld.phase == lang_final_phase_enum)
1723- einfo (_("%F%P:%pS: undefined section `%s'"
1724+ fatal (_("%P:%pS: undefined section `%s'"
1725 " referenced in expression\n"),
1726 tree, tree->name.name);
1727 }
1728@@ -845,7 +845,7 @@ fold_name (etree_type *tree)
1729 if (os == NULL)
1730 {
1731 if (expld.phase == lang_final_phase_enum)
1732- einfo (_("%F%P:%pS: undefined section `%s'"
1733+ fatal (_("%P:%pS: undefined section `%s'"
1734 " referenced in expression\n"),
1735 tree, tree->name.name);
1736 }
1737@@ -873,7 +873,7 @@ fold_name (etree_type *tree)
1738 if (os == NULL)
1739 {
1740 if (expld.phase == lang_final_phase_enum)
1741- einfo (_("%F%P:%pS: undefined section `%s'"
1742+ fatal (_("%P:%pS: undefined section `%s'"
1743 " referenced in expression\n"),
1744 tree, tree->name.name);
1745 new_number (0);
1746@@ -912,7 +912,7 @@ fold_name (etree_type *tree)
1747 if (mem != NULL)
1748 new_number (mem->length);
1749 else
1750- einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
1751+ fatal (_("%P:%pS: undefined MEMORY region `%s'"
1752 " referenced in expression\n"),
1753 tree, tree->name.name);
1754 }
1755@@ -926,7 +926,7 @@ fold_name (etree_type *tree)
1756 if (mem != NULL)
1757 new_rel_from_abs (mem->origin);
1758 else
1759- einfo (_("%F%P:%pS: undefined MEMORY region `%s'"
1760+ fatal (_("%P:%pS: undefined MEMORY region `%s'"
1761 " referenced in expression\n"),
1762 tree, tree->name.name);
1763 }
1764@@ -938,7 +938,7 @@ fold_name (etree_type *tree)
1765 else if (strcmp (tree->name.name, "COMMONPAGESIZE") == 0)
1766 new_number (link_info.commonpagesize);
1767 else
1768- einfo (_("%F%P:%pS: unknown constant `%s' referenced in expression\n"),
1769+ fatal (_("%P:%pS: unknown constant `%s' referenced in expression\n"),
1770 tree, tree->name.name);
1771 break;
1772
1773@@ -1086,7 +1086,7 @@ exp_fold_tree_1 (etree_type *tree)
1774 if (tree->assign.dst[0] == '.' && tree->assign.dst[1] == 0)
1775 {
1776 if (tree->type.node_class != etree_assign)
1777- einfo (_("%F%P:%pS can not PROVIDE assignment to"
1778+ fatal (_("%P:%pS can not PROVIDE assignment to"
1779 " location counter\n"), tree);
1780 if (expld.phase != lang_first_phase_enum)
1781 {
1782@@ -1119,11 +1119,11 @@ exp_fold_tree_1 (etree_type *tree)
1783 || expld.section == bfd_und_section_ptr)
1784 {
1785 if (expld.phase != lang_mark_phase_enum)
1786- einfo (_("%F%P:%pS invalid assignment to"
1787+ fatal (_("%P:%pS invalid assignment to"
1788 " location counter\n"), tree);
1789 }
1790 else if (expld.dotp == NULL)
1791- einfo (_("%F%P:%pS assignment to location counter"
1792+ fatal (_("%P:%pS assignment to location counter"
1793 " invalid outside of SECTIONS\n"), tree);
1794
1795 /* After allocation, assignment to dot should not be
1796@@ -1142,7 +1142,7 @@ exp_fold_tree_1 (etree_type *tree)
1797 nextdot += expld.section->vma;
1798 if (nextdot < expld.dot
1799 && expld.section != bfd_abs_section_ptr)
1800- einfo (_("%F%P:%pS cannot move location counter backwards"
1801+ fatal (_("%P:%pS cannot move location counter backwards"
1802 " (from %V to %V)\n"),
1803 tree, expld.dot, nextdot);
1804 else
1805@@ -1202,7 +1202,7 @@ exp_fold_tree_1 (etree_type *tree)
1806 h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst,
1807 true, false, true);
1808 if (h == NULL)
1809- einfo (_("%F%P:%s: hash creation failed\n"),
1810+ fatal (_("%P:%s: hash creation failed\n"),
1811 tree->assign.dst);
1812 }
1813
1814@@ -1578,7 +1578,7 @@ exp_get_vma (etree_type *tree, lang_output_section_statement_type *os,
1815 if (expld.result.valid_p)
1816 return expld.result.value;
1817 else if (name != NULL && expld.phase != lang_mark_phase_enum)
1818- einfo (_("%F%P:%pS: nonconstant expression for %s\n"),
1819+ fatal (_("%P:%pS: nonconstant expression for %s\n"),
1820 tree, name);
1821 }
1822 return def;
1823@@ -1621,7 +1621,7 @@ exp_get_fill (etree_type *tree, fill_type *def, char *name)
1824 if (!expld.result.valid_p)
1825 {
1826 if (name != NULL && expld.phase != lang_mark_phase_enum)
1827- einfo (_("%F%P:%pS: nonconstant expression for %s\n"),
1828+ fatal (_("%P:%pS: nonconstant expression for %s\n"),
1829 tree, name);
1830 return def;
1831 }
1832@@ -1681,7 +1681,7 @@ exp_get_abs_int (etree_type *tree, int def, char *name)
1833 }
1834 else if (name != NULL && expld.phase != lang_mark_phase_enum)
1835 {
1836- einfo (_("%F%P:%pS: nonconstant expression for %s\n"),
1837+ fatal (_("%P:%pS: nonconstant expression for %s\n"),
1838 tree, name);
1839 }
1840 }
1841@@ -1707,7 +1707,7 @@ ldexp_init (void)
1842 definedness_newfunc,
1843 sizeof (struct definedness_hash_entry),
1844 13))
1845- einfo (_("%F%P: can not create hash table: %E\n"));
1846+ fatal (_("%P: can not create hash table: %E\n"));
1847 }
1848
1849 /* Convert absolute symbols defined by a script from "dot" (also
1850diff --git a/ld/ldfile.c b/ld/ldfile.c
1851index 49d899ee..ddab0d37 100644
1852--- a/ld/ldfile.c
1853+++ b/ld/ldfile.c
1854@@ -183,7 +183,7 @@ ldfile_add_remap_file (const char * file)
1855
1856 if (*p == '\0')
1857 {
1858- einfo ("%F%P: malformed remap file entry: %s\n", line);
1859+ fatal ("%P: malformed remap file entry: %s\n", line);
1860 continue;
1861 }
1862
1863@@ -195,7 +195,7 @@ ldfile_add_remap_file (const char * file)
1864
1865 if (*p == '\0')
1866 {
1867- einfo ("%F%P: malformed remap file entry: %s\n", line);
1868+ fatal ("%P: malformed remap file entry: %s\n", line);
1869 continue;
1870 }
1871
1872@@ -365,7 +365,7 @@ ldfile_try_open_bfd (const char *attempt,
1873 if (entry->the_bfd == NULL)
1874 {
1875 if (bfd_get_error () == bfd_error_invalid_target)
1876- einfo (_("%F%P: invalid BFD target `%s'\n"), entry->target);
1877+ fatal (_("%P: invalid BFD target `%s'\n"), entry->target);
1878 return false;
1879 }
1880
1881@@ -508,7 +508,7 @@ ldfile_try_open_bfd (const char *attempt,
1882
1883 if (!entry->flags.dynamic && (entry->the_bfd->flags & DYNAMIC) != 0)
1884 {
1885- einfo (_("%F%P: attempted static link of dynamic object `%s'\n"),
1886+ fatal (_("%P: attempted static link of dynamic object `%s'\n"),
1887 attempt);
1888 bfd_close (entry->the_bfd);
1889 entry->the_bfd = NULL;
1890@@ -919,7 +919,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how)
1891 if ((open_how != script_nonT || script->open_how != script_nonT)
1892 && strcmp (name, script->name) == 0)
1893 {
1894- einfo (_("%F%P: error: linker script file '%s'"
1895+ fatal (_("%P: error: linker script file '%s'"
1896 " appears multiple times\n"), name);
1897 return;
1898 }
1899@@ -941,7 +941,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how)
1900 if (ldlex_input_stack == NULL)
1901 {
1902 bfd_set_error (bfd_error_system_call);
1903- einfo (_("%F%P: cannot open linker script file %s: %E\n"), name);
1904+ fatal (_("%P: cannot open linker script file %s: %E\n"), name);
1905 return;
1906 }
1907
1908@@ -1012,5 +1012,5 @@ ldfile_set_output_arch (const char *string, enum bfd_architecture defarch)
1909 else if (defarch != bfd_arch_unknown)
1910 ldfile_output_architecture = defarch;
1911 else
1912- einfo (_("%F%P: cannot represent machine `%s'\n"), string);
1913+ fatal (_("%P: cannot represent machine `%s'\n"), string);
1914 }
1915diff --git a/ld/ldgram.y b/ld/ldgram.y
1916index 0d531fdd..c2f1e298 100644
1917--- a/ld/ldgram.y
1918+++ b/ld/ldgram.y
1919@@ -209,7 +209,7 @@ mri_script_command:
1920 CHIP exp
1921 | CHIP exp ',' exp
1922 | NAME {
1923- einfo(_("%F%P: unrecognised keyword in MRI style script '%s'\n"),$1);
1924+ fatal (_("%P: unrecognised keyword in MRI style script '%s'\n"), $1);
1925 }
1926 | LIST {
1927 config.map_filename = "-";
1928@@ -1547,7 +1547,7 @@ yyerror (const char *arg)
1929 einfo (_("%P:%s: file format not recognized; treating as linker script\n"),
1930 ldlex_filename ());
1931 if (error_index > 0 && error_index < ERROR_NAME_MAX)
1932- einfo (_("%F%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]);
1933+ fatal (_("%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]);
1934 else
1935- einfo ("%F%P:%pS: %s\n", NULL, arg);
1936+ fatal ("%P:%pS: %s\n", NULL, arg);
1937 }
1938diff --git a/ld/ldlang.c b/ld/ldlang.c
1939index 229401c8..9bf5fcbe 100644
1940--- a/ld/ldlang.c
1941+++ b/ld/ldlang.c
1942@@ -1325,7 +1325,7 @@ output_section_statement_table_init (void)
1943 output_section_statement_newfunc,
1944 sizeof (struct out_section_hash_entry),
1945 61))
1946- einfo (_("%F%P: can not create hash table: %E\n"));
1947+ fatal (_("%P: can not create hash table: %E\n"));
1948 }
1949
1950 static void
1951@@ -1453,7 +1453,7 @@ lang_memory_region_alias (const char *alias, const char *region_name)
1952 the default memory region. */
1953 if (strcmp (region_name, DEFAULT_MEMORY_REGION) == 0
1954 || strcmp (alias, DEFAULT_MEMORY_REGION) == 0)
1955- einfo (_("%F%P:%pS: error: alias for default memory region\n"), NULL);
1956+ fatal (_("%P:%pS: error: alias for default memory region\n"), NULL);
1957
1958 /* Look for the target region and check if the alias is not already
1959 in use. */
1960@@ -1464,14 +1464,14 @@ lang_memory_region_alias (const char *alias, const char *region_name)
1961 if (region == NULL && strcmp (n->name, region_name) == 0)
1962 region = r;
1963 if (strcmp (n->name, alias) == 0)
1964- einfo (_("%F%P:%pS: error: redefinition of memory region "
1965+ fatal (_("%P:%pS: error: redefinition of memory region "
1966 "alias `%s'\n"),
1967 NULL, alias);
1968 }
1969
1970 /* Check if the target region exists. */
1971 if (region == NULL)
1972- einfo (_("%F%P:%pS: error: memory region `%s' "
1973+ fatal (_("%P:%pS: error: memory region `%s' "
1974 "for alias `%s' does not exist\n"),
1975 NULL, region_name, alias);
1976
1977@@ -1532,7 +1532,7 @@ lang_output_section_statement_lookup (const char *name,
1978 if (entry == NULL)
1979 {
1980 if (create)
1981- einfo (_("%F%P: failed creating section `%s': %E\n"), name);
1982+ fatal (_("%P: failed creating section `%s': %E\n"), name);
1983 return NULL;
1984 }
1985
1986@@ -1567,7 +1567,7 @@ lang_output_section_statement_lookup (const char *name,
1987 name));
1988 if (entry == NULL)
1989 {
1990- einfo (_("%F%P: failed creating section `%s': %E\n"), name);
1991+ fatal (_("%P: failed creating section `%s': %E\n"), name);
1992 return NULL;
1993 }
1994 entry->root = last_ent->root;
1995@@ -2426,7 +2426,7 @@ static void
1996 init_os (lang_output_section_statement_type *s, flagword flags)
1997 {
1998 if (strcmp (s->name, DISCARD_SECTION_NAME) == 0)
1999- einfo (_("%F%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
2000+ fatal (_("%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
2001
2002 if (!s->dup_output)
2003 s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name);
2004@@ -2435,7 +2435,7 @@ init_os (lang_output_section_statement_type *s, flagword flags)
2005 s->name, flags);
2006 if (s->bfd_section == NULL)
2007 {
2008- einfo (_("%F%P: output format %s cannot represent section"
2009+ fatal (_("%P: output format %s cannot represent section"
2010 " called %s: %E\n"),
2011 link_info.output_bfd->xvec->name, s->name);
2012 }
2013@@ -3023,11 +3023,11 @@ load_symbols (lang_input_statement_type *entry,
2014 for (p = matching; *p != NULL; p++)
2015 einfo (" %s", *p);
2016 free (matching);
2017- einfo ("%F\n");
2018+ fatal ("\n");
2019 }
2020 else if (err != bfd_error_file_not_recognized
2021 || place == NULL)
2022- einfo (_("%F%P: %pB: file not recognized: %E\n"), entry->the_bfd);
2023+ fatal (_("%P: %pB: file not recognized: %E\n"), entry->the_bfd);
2024
2025 bfd_close (entry->the_bfd);
2026 entry->the_bfd = NULL;
2027@@ -3100,7 +3100,7 @@ load_symbols (lang_input_statement_type *entry,
2028
2029 if (!bfd_check_format (member, bfd_object))
2030 {
2031- einfo (_("%F%P: %pB: member %pB in archive is not an object\n"),
2032+ fatal (_("%P: %pB: member %pB in archive is not an object\n"),
2033 entry->the_bfd, member);
2034 loaded = false;
2035 }
2036@@ -3115,7 +3115,7 @@ load_symbols (lang_input_statement_type *entry,
2037 substitute BFD for us. */
2038 if (!bfd_link_add_symbols (subsbfd, &link_info))
2039 {
2040- einfo (_("%F%P: %pB: error adding symbols: %E\n"), member);
2041+ fatal (_("%P: %pB: error adding symbols: %E\n"), member);
2042 loaded = false;
2043 }
2044 }
2045@@ -3129,7 +3129,7 @@ load_symbols (lang_input_statement_type *entry,
2046 if (bfd_link_add_symbols (entry->the_bfd, &link_info))
2047 entry->flags.loaded = true;
2048 else
2049- einfo (_("%F%P: %pB: error adding symbols: %E\n"), entry->the_bfd);
2050+ fatal (_("%P: %pB: error adding symbols: %E\n"), entry->the_bfd);
2051
2052 return entry->flags.loaded;
2053 }
2054@@ -3370,7 +3370,7 @@ open_output (const char *name)
2055 {
2056 char *in = lrealpath (f->local_sym_name);
2057 if (filename_cmp (in, out) == 0)
2058- einfo (_("%F%P: input file '%s' is the same as output file\n"),
2059+ fatal (_("%P: input file '%s' is the same as output file\n"),
2060 f->filename);
2061 free (in);
2062 }
2063@@ -3432,23 +3432,23 @@ open_output (const char *name)
2064 if (link_info.output_bfd == NULL)
2065 {
2066 if (bfd_get_error () == bfd_error_invalid_target)
2067- einfo (_("%F%P: target %s not found\n"), output_target);
2068+ fatal (_("%P: target %s not found\n"), output_target);
2069
2070- einfo (_("%F%P: cannot open output file %s: %E\n"), name);
2071+ fatal (_("%P: cannot open output file %s: %E\n"), name);
2072 }
2073
2074 delete_output_file_on_failure = true;
2075
2076 if (!bfd_set_format (link_info.output_bfd, bfd_object))
2077- einfo (_("%F%P: %s: can not make object file: %E\n"), name);
2078+ fatal (_("%P: %s: can not make object file: %E\n"), name);
2079 if (!bfd_set_arch_mach (link_info.output_bfd,
2080- ldfile_output_architecture,
2081- ldfile_output_machine))
2082- einfo (_("%F%P: %s: can not set architecture: %E\n"), name);
2083+ ldfile_output_architecture,
2084+ ldfile_output_machine))
2085+ fatal (_("%P: %s: can not set architecture: %E\n"), name);
2086
2087 link_info.hash = bfd_link_hash_table_create (link_info.output_bfd);
2088 if (link_info.hash == NULL)
2089- einfo (_("%F%P: can not create hash table: %E\n"));
2090+ fatal (_("%P: can not create hash table: %E\n"));
2091
2092 bfd_set_gp_size (link_info.output_bfd, g_switch_value);
2093 }
2094@@ -3662,7 +3662,7 @@ open_input_bfds (lang_statement_union_type *s,
2095
2096 /* Exit if any of the files were missing. */
2097 if (input_flags.missing_file)
2098- einfo ("%F");
2099+ fatal ("");
2100 }
2101
2102 #ifdef ENABLE_LIBCTF
2103@@ -3973,7 +3973,7 @@ insert_undefined (const char *name)
2104
2105 h = bfd_link_hash_lookup (link_info.hash, name, true, false, true);
2106 if (h == NULL)
2107- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
2108+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
2109 if (h->type == bfd_link_hash_new)
2110 {
2111 h->type = bfd_link_hash_undefined;
2112@@ -4259,7 +4259,7 @@ map_input_to_output_sections
2113 else if (strcmp (name, "SHT_PREINIT_ARRAY") == 0)
2114 type = SHT_PREINIT_ARRAY;
2115 else
2116- einfo (_ ("%F%P: invalid type for output section `%s'\n"),
2117+ fatal (_ ("%P: invalid type for output section `%s'\n"),
2118 os->name);
2119 }
2120 else
2121@@ -4268,7 +4268,7 @@ map_input_to_output_sections
2122 if (expld.result.valid_p)
2123 type = expld.result.value;
2124 else
2125- einfo (_ ("%F%P: invalid type for output section `%s'\n"),
2126+ fatal (_ ("%P: invalid type for output section `%s'\n"),
2127 os->name);
2128 }
2129 break;
2130@@ -4417,7 +4417,7 @@ process_insert_statements (lang_statement_union_type **start)
2131 }
2132 if (where == NULL)
2133 {
2134- einfo (_("%F%P: %s not found for insert\n"), i->where);
2135+ fatal (_("%P: %s not found for insert\n"), i->where);
2136 return;
2137 }
2138
2139@@ -5499,12 +5499,12 @@ size_input_section
2140 if (dot + TO_ADDR (i->size) > end)
2141 {
2142 if (i->flags & SEC_LINKER_CREATED)
2143- einfo (_("%F%P: Output section `%pA' not large enough for "
2144+ fatal (_("%P: Output section `%pA' not large enough for "
2145 "the linker-created stubs section `%pA'.\n"),
2146 i->output_section, i);
2147
2148 if (i->rawsize && i->rawsize != i->size)
2149- einfo (_("%F%P: Relaxation not supported with "
2150+ fatal (_("%P: Relaxation not supported with "
2151 "--enable-non-contiguous-regions (section `%pA' "
2152 "would overflow `%pA' after it changed size).\n"),
2153 i, i->output_section);
2154@@ -5860,7 +5860,7 @@ lang_size_sections_1
2155 dot += expld.result.section->vma;
2156 }
2157 else if (expld.phase != lang_mark_phase_enum)
2158- einfo (_("%F%P:%pS: non constant or forward reference"
2159+ fatal (_("%P:%pS: non constant or forward reference"
2160 " address expression for section %s\n"),
2161 os->addr_tree, os->name);
2162 }
2163@@ -5943,7 +5943,7 @@ lang_size_sections_1
2164 overridden by the using the --no-check-sections
2165 switch. */
2166 if (command_line.check_section_addresses)
2167- einfo (_("%F%P: error: no memory region specified"
2168+ fatal (_("%P: error: no memory region specified"
2169 " for loadable section `%s'\n"),
2170 bfd_section_name (os->bfd_section));
2171 else
2172@@ -6250,7 +6250,7 @@ lang_size_sections_1
2173 bool again;
2174
2175 if (!bfd_relax_section (i->owner, i, &link_info, &again))
2176- einfo (_("%F%P: can't relax section: %E\n"));
2177+ fatal (_("%P: can't relax section: %E\n"));
2178 if (again)
2179 *relax = true;
2180 }
2181@@ -6659,7 +6659,7 @@ lang_do_assignments_1 (lang_statement_union_type *s,
2182 s->data_statement.value += expld.result.section->vma;
2183 }
2184 else if (expld.phase == lang_final_phase_enum)
2185- einfo (_("%F%P: invalid data statement\n"));
2186+ fatal (_("%P: invalid data statement\n"));
2187 {
2188 unsigned int size;
2189 switch (s->data_statement.type)
2190@@ -6692,7 +6692,7 @@ lang_do_assignments_1 (lang_statement_union_type *s,
2191 if (expld.result.valid_p)
2192 s->reloc_statement.addend_value = expld.result.value;
2193 else if (expld.phase == lang_final_phase_enum)
2194- einfo (_("%F%P: invalid reloc statement\n"));
2195+ fatal (_("%P: invalid reloc statement\n"));
2196 dot += TO_ADDR (bfd_get_reloc_size (s->reloc_statement.howto));
2197 break;
2198
2199@@ -7110,7 +7110,7 @@ lang_end (void)
2200 break;
2201 }
2202 if (!sym)
2203- einfo (_("%F%P: --gc-sections requires a defined symbol root "
2204+ fatal (_("%P: --gc-sections requires a defined symbol root "
2205 "specified by -e or -u\n"));
2206 }
2207
2208@@ -7135,7 +7135,7 @@ lang_end (void)
2209 + bfd_section_vma (h->u.def.section->output_section)
2210 + h->u.def.section->output_offset);
2211 if (!bfd_set_start_address (link_info.output_bfd, val))
2212- einfo (_("%F%P: %s: can't set start address\n"), entry_symbol.name);
2213+ fatal (_("%P: %s: can't set start address\n"), entry_symbol.name);
2214 }
2215 else
2216 {
2217@@ -7148,7 +7148,7 @@ lang_end (void)
2218 if (*send == '\0')
2219 {
2220 if (!bfd_set_start_address (link_info.output_bfd, val))
2221- einfo (_("%F%P: can't set start address\n"));
2222+ fatal (_("%P: can't set start address\n"));
2223 }
2224 /* BZ 2004952: Only use the start of the entry section for executables. */
2225 else if bfd_link_executable (&link_info)
2226@@ -7167,7 +7167,7 @@ lang_end (void)
2227 bfd_section_vma (ts));
2228 if (!bfd_set_start_address (link_info.output_bfd,
2229 bfd_section_vma (ts)))
2230- einfo (_("%F%P: can't set start address\n"));
2231+ fatal (_("%P: can't set start address\n"));
2232 }
2233 else
2234 {
2235@@ -7236,11 +7236,10 @@ lang_check (void)
2236 != bfd_get_flavour (link_info.output_bfd)))
2237 && (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0)
2238 {
2239- einfo (_("%F%P: relocatable linking with relocations from"
2240+ fatal (_("%P: relocatable linking with relocations from"
2241 " format %s (%pB) to format %s (%pB) is not supported\n"),
2242 bfd_get_target (input_bfd), input_bfd,
2243 bfd_get_target (link_info.output_bfd), link_info.output_bfd);
2244- /* einfo with %F exits. */
2245 }
2246
2247 if (compatible == NULL)
2248@@ -7341,7 +7340,7 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info)
2249
2250 section = h->u.c.p->section;
2251 if (!bfd_define_common_symbol (link_info.output_bfd, &link_info, h))
2252- einfo (_("%F%P: could not define common symbol `%pT': %E\n"),
2253+ fatal (_("%P: could not define common symbol `%pT': %E\n"),
2254 h->root.string);
2255
2256 if (config.map_file != NULL)
2257@@ -7519,7 +7518,7 @@ lang_set_flags (lang_memory_region_type *ptr, const char *flags, int invert)
2258 break;
2259
2260 default:
2261- einfo (_("%F%P: invalid character %c (%d) in flags\n"),
2262+ fatal (_("%P: invalid character %c (%d) in flags\n"),
2263 *flags, *flags);
2264 break;
2265 }
2266@@ -7631,7 +7630,7 @@ lang_enter_output_section_statement (const char *output_section_statement_name,
2267
2268 os->align_lma_with_input = align_with_input == ALIGN_WITH_INPUT;
2269 if (os->align_lma_with_input && align != NULL)
2270- einfo (_("%F%P:%pS: error: align with input and explicit align specified\n"),
2271+ fatal (_("%P:%pS: error: align with input and explicit align specified\n"),
2272 NULL);
2273
2274 os->subsection_alignment = subalign;
2275@@ -8143,7 +8142,7 @@ lang_process (void)
2276 lang_place_undefineds ();
2277
2278 if (!bfd_section_already_linked_table_init ())
2279- einfo (_("%F%P: can not create hash table: %E\n"));
2280+ fatal (_("%P: can not create hash table: %E\n"));
2281
2282 /* A first pass through the memory regions ensures that if any region
2283 references a symbol for its origin or length then this symbol will be
2284@@ -8181,7 +8180,7 @@ lang_process (void)
2285 files = file_chain;
2286 inputfiles = input_file_chain;
2287 if (plugin_call_all_symbols_read ())
2288- einfo (_("%F%P: %s: plugin reported error after all symbols read\n"),
2289+ fatal (_("%P: %s: plugin reported error after all symbols read\n"),
2290 plugin_error_plugin ());
2291 link_info.lto_all_symbols_read = true;
2292 /* Open any newly added files, updating the file chains. */
2293@@ -8758,9 +8757,7 @@ void
2294 lang_startup (const char *name)
2295 {
2296 if (first_file->filename != NULL)
2297- {
2298- einfo (_("%F%P: multiple STARTUP files\n"));
2299- }
2300+ fatal (_("%P: multiple STARTUP files\n"));
2301 first_file->filename = name;
2302 first_file->local_sym_name = name;
2303 first_file->flags.real = true;
2304@@ -8984,7 +8981,7 @@ lang_record_phdrs (void)
2305 break;
2306 }
2307 if (last == NULL)
2308- einfo (_("%F%P: no sections assigned to phdrs\n"));
2309+ fatal (_("%P: no sections assigned to phdrs\n"));
2310 }
2311 pl = last;
2312 }
2313@@ -9022,7 +9019,7 @@ lang_record_phdrs (void)
2314 if (!bfd_record_phdr (link_info.output_bfd, l->type,
2315 l->flags != NULL, flags, l->at != NULL,
2316 at, l->filehdr, l->phdrs, c, secs))
2317- einfo (_("%F%P: bfd_record_phdr failed: %E\n"));
2318+ fatal (_("%P: bfd_record_phdr failed: %E\n"));
2319 }
2320
2321 free (secs);
2322diff --git a/ld/ldlex.l b/ld/ldlex.l
2323index e113c908..7cbade08 100644
2324--- a/ld/ldlex.l
2325+++ b/ld/ldlex.l
2326@@ -504,9 +504,7 @@ void
2327 lex_push_file (FILE *file, const char *name, unsigned int sysrooted)
2328 {
2329 if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
2330- {
2331- einfo (_("%F:includes nested too deeply\n"));
2332- }
2333+ fatal (_("%P: includes nested too deeply\n"));
2334 file_name_stack[include_stack_ptr] = name;
2335 lineno_stack[include_stack_ptr] = lineno;
2336 sysrooted_stack[include_stack_ptr] = input_flags.sysrooted;
2337@@ -568,9 +566,7 @@ lex_redirect (const char *string, const char *fake_filename, unsigned int count)
2338
2339 yy_init = 0;
2340 if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
2341- {
2342- einfo (_("%F: macros nested too deeply\n"));
2343- }
2344+ fatal (_("%P: macros nested too deeply\n"));
2345 file_name_stack[include_stack_ptr] = fake_filename;
2346 lineno_stack[include_stack_ptr] = lineno;
2347 include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
2348@@ -674,7 +670,7 @@ yy_input (char *buf, int max_size)
2349 {
2350 result = fread (buf, 1, max_size, yyin);
2351 if (result < max_size && ferror (yyin))
2352- einfo (_("%F%P: read in flex scanner failed\n"));
2353+ fatal (_("%P: read in flex scanner failed\n"));
2354 }
2355 }
2356 return result;
2357@@ -711,7 +707,7 @@ comment (void)
2358
2359 if (c == 0)
2360 {
2361- einfo (_("%F%P: EOF in comment\n"));
2362+ fatal (_("%P: EOF in comment\n"));
2363 break;
2364 }
2365 }
2366@@ -732,7 +728,7 @@ lex_warn_invalid (char *where, char *what)
2367 if (ldfile_assumed_script)
2368 {
2369 bfd_set_error (bfd_error_file_not_recognized);
2370- einfo (_("%F%s: file not recognized: %E\n"), ldlex_filename ());
2371+ fatal (_("%s: file not recognized: %E\n"), ldlex_filename ());
2372 }
2373
2374 if (! ISPRINT (*what))
2375diff --git a/ld/ldmain.c b/ld/ldmain.c
2376index 3cd5516c..878d9536 100644
2377--- a/ld/ldmain.c
2378+++ b/ld/ldmain.c
2379@@ -192,7 +192,7 @@ write_dependency_file (void)
2380 out = fopen (config.dependency_file, FOPEN_WT);
2381 if (out == NULL)
2382 {
2383- einfo (_("%F%P: cannot open dependency file %s: %E\n"),
2384+ fatal (_("%P: cannot open dependency file %s: %E\n"),
2385 config.dependency_file);
2386 }
2387
2388@@ -265,7 +265,7 @@ main (int argc, char **argv)
2389 expandargv (&argc, &argv);
2390
2391 if (bfd_init () != BFD_INIT_MAGIC)
2392- einfo (_("%F%P: fatal error: libbfd ABI mismatch\n"));
2393+ fatal (_("%P: fatal error: libbfd ABI mismatch\n"));
2394
2395 bfd_set_error_program_name (program_name);
2396
2397@@ -467,13 +467,13 @@ main (int argc, char **argv)
2398 xexit (0);
2399
2400 if (link_info.inhibit_common_definition && !bfd_link_dll (&link_info))
2401- einfo (_("%F%P: --no-define-common may not be used without -shared\n"));
2402+ fatal (_("%P: --no-define-common may not be used without -shared\n"));
2403
2404 if (!lang_has_input_file)
2405 {
2406 if (version_printed || command_line.print_output_format)
2407 xexit (0);
2408- einfo (_("%F%P: no input files\n"));
2409+ fatal (_("%P: no input files\n"));
2410 }
2411
2412 if (verbose)
2413@@ -493,7 +493,7 @@ main (int argc, char **argv)
2414 if (config.map_file == (FILE *) NULL)
2415 {
2416 bfd_set_error (bfd_error_system_call);
2417- einfo (_("%F%P: cannot open map file %s: %E\n"),
2418+ einfo (_("%P: cannot open map file %s: %E\n"),
2419 config.map_filename);
2420 }
2421 }
2422@@ -568,7 +568,7 @@ main (int argc, char **argv)
2423 bfd *obfd = link_info.output_bfd;
2424 link_info.output_bfd = NULL;
2425 if (!bfd_close (obfd))
2426- einfo (_("%F%P: %s: final close failed: %E\n"), output_filename);
2427+ fatal (_("%P: %s: final close failed: %E\n"), output_filename);
2428
2429 /* If the --force-exe-suffix is enabled, and we're making an
2430 executable file and it doesn't end in .exe, copy it to one
2431@@ -595,10 +595,10 @@ main (int argc, char **argv)
2432 dst = fopen (dst_name, FOPEN_WB);
2433
2434 if (!src)
2435- einfo (_("%F%P: unable to open for source of copy `%s'\n"),
2436+ fatal (_("%P: unable to open for source of copy `%s'\n"),
2437 output_filename);
2438 if (!dst)
2439- einfo (_("%F%P: unable to open for destination of copy `%s'\n"),
2440+ fatal (_("%P: unable to open for destination of copy `%s'\n"),
2441 dst_name);
2442 while ((l = fread (buf, 1, bsize, src)) > 0)
2443 {
2444@@ -709,7 +709,7 @@ get_emulation (int argc, char **argv)
2445 i++;
2446 }
2447 else
2448- einfo (_("%F%P: missing argument to -m\n"));
2449+ fatal (_("%P: missing argument to -m\n"));
2450 }
2451 else if (strcmp (argv[i], "-mips1") == 0
2452 || strcmp (argv[i], "-mips2") == 0
2453@@ -763,11 +763,11 @@ add_ysym (const char *name)
2454 bfd_hash_newfunc,
2455 sizeof (struct bfd_hash_entry),
2456 61))
2457- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
2458+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
2459 }
2460
2461 if (bfd_hash_lookup (link_info.notice_hash, name, true, true) == NULL)
2462- einfo (_("%F%P: bfd_hash_lookup failed: %E\n"));
2463+ fatal (_("%P: bfd_hash_lookup failed: %E\n"));
2464 }
2465
2466 void
2467@@ -780,11 +780,11 @@ add_ignoresym (struct bfd_link_info *info, const char *name)
2468 bfd_hash_newfunc,
2469 sizeof (struct bfd_hash_entry),
2470 61))
2471- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
2472+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
2473 }
2474
2475 if (bfd_hash_lookup (info->ignore_hash, name, true, true) == NULL)
2476- einfo (_("%F%P: bfd_hash_lookup failed: %E\n"));
2477+ fatal (_("%P: bfd_hash_lookup failed: %E\n"));
2478 }
2479
2480 /* Record a symbol to be wrapped, from the --wrap option. */
2481@@ -800,11 +800,11 @@ add_wrap (const char *name)
2482 bfd_hash_newfunc,
2483 sizeof (struct bfd_hash_entry),
2484 61))
2485- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
2486+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
2487 }
2488
2489 if (bfd_hash_lookup (link_info.wrap_hash, name, true, true) == NULL)
2490- einfo (_("%F%P: bfd_hash_lookup failed: %E\n"));
2491+ fatal (_("%P: bfd_hash_lookup failed: %E\n"));
2492 }
2493
2494 /* Handle the -retain-symbols-file option. */
2495@@ -832,7 +832,7 @@ add_keepsyms_file (const char *filename)
2496 xmalloc (sizeof (struct bfd_hash_table));
2497 if (!bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc,
2498 sizeof (struct bfd_hash_entry)))
2499- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
2500+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
2501
2502 bufsize = 100;
2503 buf = (char *) xmalloc (bufsize);
2504@@ -862,7 +862,7 @@ add_keepsyms_file (const char *filename)
2505 buf[len] = '\0';
2506
2507 if (bfd_hash_lookup (link_info.keep_hash, buf, true, true) == NULL)
2508- einfo (_("%F%P: bfd_hash_lookup for insertion failed: %E\n"));
2509+ fatal (_("%P: bfd_hash_lookup for insertion failed: %E\n"));
2510 }
2511 }
2512
2513@@ -1269,7 +1269,7 @@ constructor_callback (struct bfd_link_info *info,
2514 if (bfd_reloc_type_lookup (info->output_bfd, BFD_RELOC_CTOR) == NULL
2515 && (bfd_link_relocatable (info)
2516 || bfd_reloc_type_lookup (abfd, BFD_RELOC_CTOR) == NULL))
2517- einfo (_("%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
2518+ fatal (_("%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
2519
2520 s = set_name;
2521 if (bfd_get_symbol_leading_char (abfd) != '\0')
2522@@ -1281,7 +1281,7 @@ constructor_callback (struct bfd_link_info *info,
2523
2524 h = bfd_link_hash_lookup (info->hash, set_name, true, true, true);
2525 if (h == (struct bfd_link_hash_entry *) NULL)
2526- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
2527+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
2528 if (h->type == bfd_link_hash_new)
2529 {
2530 h->type = bfd_link_hash_undefined;
2531@@ -1314,7 +1314,7 @@ symbol_warning (const char *warning, const char *symbol, bfd *abfd)
2532 struct warning_callback_info cinfo;
2533
2534 if (!bfd_generic_link_read_symbols (abfd))
2535- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
2536+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
2537
2538 cinfo.found = false;
2539 cinfo.warning = warning;
2540@@ -1376,14 +1376,14 @@ warning_find_reloc (bfd *abfd, asection *sec, void *iarg)
2541
2542 relsize = bfd_get_reloc_upper_bound (abfd, sec);
2543 if (relsize < 0)
2544- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
2545+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
2546 if (relsize == 0)
2547 return;
2548
2549 relpp = (arelent **) xmalloc (relsize);
2550 relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
2551 if (relcount < 0)
2552- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
2553+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
2554
2555 p = relpp;
2556 pend = p + relcount;
2557diff --git a/ld/ldmisc.c b/ld/ldmisc.c
2558index 3c862ea4..d1257214 100644
2559--- a/ld/ldmisc.c
2560+++ b/ld/ldmisc.c
2561@@ -70,7 +70,7 @@
2562 void
2563 vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
2564 {
2565- bool fatal = false;
2566+ bool isfatal = false;
2567 const char *scan;
2568 int arg_type;
2569 unsigned int arg_count = 0;
2570@@ -282,7 +282,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
2571
2572 case 'F':
2573 /* Error is fatal. */
2574- fatal = true;
2575+ isfatal = true;
2576 break;
2577
2578 case 'P':
2579@@ -324,7 +324,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
2580 if (abfd != NULL)
2581 {
2582 if (!bfd_generic_link_read_symbols (abfd))
2583- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
2584+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
2585
2586 asymbols = bfd_get_outsymbols (abfd);
2587 }
2588@@ -587,7 +587,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
2589 if (is_warning && config.fatal_warnings)
2590 config.make_executable = false;
2591
2592- if (fatal)
2593+ if (isfatal)
2594 xexit (1);
2595 }
2596
2597@@ -620,10 +620,25 @@ einfo (const char *fmt, ...)
2598 fflush (stderr);
2599 }
2600
2601+/* Fatal error. */
2602+
2603+void
2604+fatal (const char *fmt, ...)
2605+{
2606+ va_list arg;
2607+
2608+ fflush (stdout);
2609+ va_start (arg, fmt);
2610+ vfinfo (stderr, fmt, arg, true);
2611+ va_end (arg);
2612+ fflush (stderr);
2613+ xexit (1);
2614+}
2615+
2616 void
2617 info_assert (const char *file, unsigned int line)
2618 {
2619- einfo (_("%F%P: internal error %s %d\n"), file, line);
2620+ fatal (_("%P: internal error %s %d\n"), file, line);
2621 }
2622
2623 /* ('m' for map) Format info message and print on map. */
2624@@ -692,6 +707,5 @@ ld_abort (const char *file, int line, const char *fn)
2625 else
2626 einfo (_("%P: internal error: aborting at %s:%d\n"),
2627 file, line);
2628- einfo (_("%F%P: please report this bug\n"));
2629- xexit (1);
2630+ fatal (_("%P: please report this bug\n"));
2631 }
2632diff --git a/ld/ldmisc.h b/ld/ldmisc.h
2633index e8b982fe..f763ab8f 100644
2634--- a/ld/ldmisc.h
2635+++ b/ld/ldmisc.h
2636@@ -23,6 +23,7 @@
2637
2638 extern void vfinfo (FILE *fp, const char *fmt, va_list arg, bool is_warning);
2639 extern void einfo (const char *, ...);
2640+extern void fatal (const char *, ...) ATTRIBUTE_NORETURN;
2641 extern void minfo (const char *, ...);
2642 extern void info_msg (const char *, ...);
2643 extern void lfinfo (FILE *, const char *, ...);
2644diff --git a/ld/ldwrite.c b/ld/ldwrite.c
2645index 46fb33c8..ace5e564 100644
2646--- a/ld/ldwrite.c
2647+++ b/ld/ldwrite.c
2648@@ -57,14 +57,14 @@ build_link_order (lang_statement_union_type *statement)
2649
2650 link_order = bfd_new_link_order (link_info.output_bfd, output_section);
2651 if (link_order == NULL)
2652- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2653+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2654
2655 link_order->type = bfd_data_link_order;
2656 link_order->offset = statement->data_statement.output_offset;
2657 link_order->u.data.contents = bfd_alloc (link_info.output_bfd,
2658 QUAD_SIZE);
2659 if (link_order->u.data.contents == NULL)
2660- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2661+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2662
2663 value = statement->data_statement.value;
2664
2665@@ -170,7 +170,7 @@ build_link_order (lang_statement_union_type *statement)
2666
2667 link_order = bfd_new_link_order (link_info.output_bfd, output_section);
2668 if (link_order == NULL)
2669- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2670+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2671
2672 link_order->offset = rs->output_offset;
2673 link_order->size = bfd_get_reloc_size (rs->howto);
2674@@ -178,7 +178,7 @@ build_link_order (lang_statement_union_type *statement)
2675 link_order->u.reloc.p = (struct bfd_link_order_reloc *)
2676 bfd_alloc (link_info.output_bfd, sizeof (struct bfd_link_order_reloc));
2677 if (link_order->u.reloc.p == NULL)
2678- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2679+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2680
2681 link_order->u.reloc.p->reloc = rs->reloc;
2682 link_order->u.reloc.p->addend = rs->addend_value;
2683@@ -224,7 +224,7 @@ build_link_order (lang_statement_union_type *statement)
2684 link_order = bfd_new_link_order (link_info.output_bfd,
2685 output_section);
2686 if (link_order == NULL)
2687- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2688+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2689
2690 if ((i->flags & SEC_NEVER_LOAD) != 0
2691 && (i->flags & SEC_DEBUGGING) == 0)
2692@@ -265,7 +265,7 @@ build_link_order (lang_statement_union_type *statement)
2693 link_order = bfd_new_link_order (link_info.output_bfd,
2694 output_section);
2695 if (link_order == NULL)
2696- einfo (_("%F%P: bfd_new_link_order failed: %E\n"));
2697+ fatal (_("%P: bfd_new_link_order failed: %E\n"));
2698 link_order->type = bfd_data_link_order;
2699 link_order->size = statement->padding_statement.size;
2700 link_order->offset = statement->padding_statement.output_offset;
2701@@ -334,8 +334,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count)
2702 if (startswith (name, ".stab")
2703 || strcmp (name, "$GDB_SYMBOLS$") == 0)
2704 {
2705- einfo (_ ("%F%P: cannot create split section name for %s\n"), name);
2706- /* Silence gcc warnings. einfo exits, so we never reach here. */
2707+ fatal (_ ("%P: cannot create split section name for %s\n"), name);
2708 return NULL;
2709 }
2710 tname[5] = 0;
2711@@ -346,8 +345,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count)
2712 || (h = bfd_link_hash_lookup (link_info.hash,
2713 sname, true, true, false)) == NULL)
2714 {
2715- einfo (_("%F%P: clone section failed: %E\n"));
2716- /* Silence gcc warnings. einfo exits, so we never reach here. */
2717+ fatal (_("%P: clone section failed: %E\n"));
2718 return NULL;
2719 }
2720 free (tname);
2721@@ -554,7 +552,7 @@ ldwrite (void)
2722 out. */
2723
2724 if (bfd_get_error () != bfd_error_no_error)
2725- einfo (_("%F%P: final link failed: %E\n"));
2726+ fatal (_("%P: final link failed: %E\n"));
2727 else
2728 xexit (1);
2729 }
2730diff --git a/ld/lexsup.c b/ld/lexsup.c
2731index e9939000..00346348 100644
2732--- a/ld/lexsup.c
2733+++ b/ld/lexsup.c
2734@@ -810,7 +810,8 @@ parse_args (unsigned argc, char **argv)
2735 && optc != argv[last_optind][1])
2736 {
2737 if (optarg)
2738- einfo (_("%F%P: Error: unable to disambiguate: %s (did you mean -%s ?)\n"),
2739+ fatal (_("%P: Error: unable to disambiguate: "
2740+ "%s (did you mean -%s ?)\n"),
2741 argv[last_optind], argv[last_optind]);
2742 else
2743 einfo (_("%P: Warning: grouped short command line options are deprecated: %s\n"), argv[last_optind]);
2744@@ -850,7 +851,7 @@ parse_args (unsigned argc, char **argv)
2745 /* Fall through. */
2746
2747 default:
2748- einfo (_("%F%P: use the --help option for usage information\n"));
2749+ fatal (_("%P: use the --help option for usage information\n"));
2750 break;
2751
2752 case 1: /* File name. */
2753@@ -869,7 +870,7 @@ parse_args (unsigned argc, char **argv)
2754 || strcmp (optarg, "default") == 0)
2755 input_flags.dynamic = true;
2756 else
2757- einfo (_("%F%P: unrecognized -a option `%s'\n"), optarg);
2758+ fatal (_("%P: unrecognized -a option `%s'\n"), optarg);
2759 break;
2760 case OPTION_ASSERT:
2761 /* FIXME: We just ignore these, but we should handle them. */
2762@@ -882,7 +883,7 @@ parse_args (unsigned argc, char **argv)
2763 else if (strcmp (optarg, "pure-text") == 0)
2764 ;
2765 else
2766- einfo (_("%F%P: unrecognized -assert option `%s'\n"), optarg);
2767+ fatal (_("%P: unrecognized -assert option `%s'\n"), optarg);
2768 break;
2769 case 'A':
2770 ldfile_add_arch (optarg);
2771@@ -926,8 +927,7 @@ parse_args (unsigned argc, char **argv)
2772
2773 style = cplus_demangle_name_to_style (optarg);
2774 if (style == unknown_demangling)
2775- einfo (_("%F%P: unknown demangling style `%s'\n"),
2776- optarg);
2777+ fatal (_("%P: unknown demangling style `%s'\n"), optarg);
2778
2779 cplus_demangle_set_style (style);
2780 }
2781@@ -1034,7 +1034,7 @@ parse_args (unsigned argc, char **argv)
2782 char *end;
2783 g_switch_value = strtoul (optarg, &end, 0);
2784 if (*end)
2785- einfo (_("%F%P: invalid number `%s'\n"), optarg);
2786+ fatal (_("%P: invalid number `%s'\n"), optarg);
2787 }
2788 break;
2789 case 'g':
2790@@ -1130,7 +1130,7 @@ parse_args (unsigned argc, char **argv)
2791 link_info.unresolved_syms_in_shared_libs = RM_IGNORE;
2792 }
2793 else
2794- einfo (_("%F%P: bad --unresolved-symbols option: %s\n"), optarg);
2795+ fatal (_("%P: bad --unresolved-symbols option: %s\n"), optarg);
2796 break;
2797 case OPTION_WARN_UNRESOLVED_SYMBOLS:
2798 link_info.warn_unresolved_syms = true;
2799@@ -1217,7 +1217,7 @@ parse_args (unsigned argc, char **argv)
2800 break;
2801 case OPTION_PLUGIN_OPT:
2802 if (plugin_opt_plugin_arg (optarg))
2803- einfo (_("%F%P: bad -plugin-opt option\n"));
2804+ fatal (_("%P: bad -plugin-opt option\n"));
2805 break;
2806 #endif /* BFD_SUPPORTS_PLUGINS */
2807 case 'q':
2808@@ -1234,11 +1234,11 @@ parse_args (unsigned argc, char **argv)
2809 an error message here. We cannot just make this a warning,
2810 increment optind, and continue because getopt is too confused
2811 and will seg-fault the next time around. */
2812- einfo(_("%F%P: unrecognised option: %s\n"), argv[optind]);
2813+ fatal(_("%P: unrecognised option: %s\n"), argv[optind]);
2814
2815 if (bfd_link_pic (&link_info))
2816- einfo (_("%F%P: -r and %s may not be used together\n"),
2817- bfd_link_dll (&link_info) ? "-shared" : "-pie");
2818+ fatal (_("%P: -r and %s may not be used together\n"),
2819+ bfd_link_dll (&link_info) ? "-shared" : "-pie");
2820
2821 link_info.type = type_relocatable;
2822 config.build_constructors = false;
2823@@ -1347,7 +1347,7 @@ parse_args (unsigned argc, char **argv)
2824 if (config.has_shared)
2825 {
2826 if (bfd_link_relocatable (&link_info))
2827- einfo (_("%F%P: -r and %s may not be used together\n"),
2828+ fatal (_("%P: -r and %s may not be used together\n"),
2829 "-shared");
2830
2831 link_info.type = type_dll;
2832@@ -1359,7 +1359,7 @@ parse_args (unsigned argc, char **argv)
2833 link_info.unresolved_syms_in_shared_libs = RM_IGNORE;
2834 }
2835 else
2836- einfo (_("%F%P: -shared not supported\n"));
2837+ fatal (_("%P: -shared not supported\n"));
2838 break;
2839 case OPTION_NO_PIE:
2840 link_info.type = type_pde;
2841@@ -1368,12 +1368,12 @@ parse_args (unsigned argc, char **argv)
2842 if (config.has_shared)
2843 {
2844 if (bfd_link_relocatable (&link_info))
2845- einfo (_("%F%P: -r and %s may not be used together\n"), "-pie");
2846+ fatal (_("%P: -r and %s may not be used together\n"), "-pie");
2847
2848 link_info.type = type_pie;
2849 }
2850 else
2851- einfo (_("%F%P: -pie not supported\n"));
2852+ fatal (_("%P: -pie not supported\n"));
2853 break;
2854 case 'h': /* Used on Solaris. */
2855 case OPTION_SONAME:
2856@@ -1390,7 +1390,7 @@ parse_args (unsigned argc, char **argv)
2857 else if (strcmp (optarg, N_("ascending")) == 0)
2858 config.sort_common = sort_ascending;
2859 else
2860- einfo (_("%F%P: invalid common section sorting option: %s\n"),
2861+ fatal (_("%P: invalid common section sorting option: %s\n"),
2862 optarg);
2863 break;
2864 case OPTION_SORT_SECTION:
2865@@ -1399,8 +1399,7 @@ parse_args (unsigned argc, char **argv)
2866 else if (strcmp (optarg, N_("alignment")) == 0)
2867 sort_section = by_alignment;
2868 else
2869- einfo (_("%F%P: invalid section sorting option: %s\n"),
2870- optarg);
2871+ fatal (_("%P: invalid section sorting option: %s\n"), optarg);
2872 break;
2873 case OPTION_STATS:
2874 config.stats = true;
2875@@ -1436,14 +1435,14 @@ parse_args (unsigned argc, char **argv)
2876 /* Check for <something>=<somthing>... */
2877 optarg2 = strchr (optarg, '=');
2878 if (optarg2 == NULL)
2879- einfo (_("%F%P: invalid argument to option"
2880+ fatal (_("%P: invalid argument to option"
2881 " \"--section-start\"\n"));
2882
2883 optarg2++;
2884
2885 /* So far so good. Are all the args present? */
2886 if ((*optarg == '\0') || (*optarg2 == '\0'))
2887- einfo (_("%F%P: missing argument(s) to option"
2888+ fatal (_("%P: missing argument(s) to option"
2889 " \"--section-start\"\n"));
2890
2891 /* We must copy the section name as set_section_start
2892@@ -1487,8 +1486,8 @@ parse_args (unsigned argc, char **argv)
2893 /* Fall through. */
2894 case OPTION_UR:
2895 if (bfd_link_pic (&link_info))
2896- einfo (_("%F%P: -r and %s may not be used together\n"),
2897- bfd_link_dll (&link_info) ? "-shared" : "-pie");
2898+ fatal (_("%P: -r and %s may not be used together\n"),
2899+ bfd_link_dll (&link_info) ? "-shared" : "-pie");
2900
2901 link_info.type = type_relocatable;
2902 config.build_constructors = true;
2903@@ -1518,7 +1517,7 @@ parse_args (unsigned argc, char **argv)
2904 char *end;
2905 int level ATTRIBUTE_UNUSED = strtoul (optarg, &end, 0);
2906 if (*end)
2907- einfo (_("%F%P: invalid number `%s'\n"), optarg);
2908+ fatal (_("%P: invalid number `%s'\n"), optarg);
2909 #if BFD_SUPPORTS_PLUGINS
2910 report_plugin_symbols = level > 1;
2911 #endif /* BFD_SUPPORTS_PLUGINS */
2912@@ -1713,7 +1712,7 @@ parse_args (unsigned argc, char **argv)
2913 break;
2914 case ')':
2915 if (! ingroup)
2916- einfo (_("%F%P: group ended before it began (--help for usage)\n"));
2917+ fatal (_("%P: group ended before it began (--help for usage)\n"));
2918
2919 lang_leave_group ();
2920 ingroup--;
2921@@ -1729,7 +1728,7 @@ parse_args (unsigned argc, char **argv)
2922
2923 case OPTION_REMAP_INPUTS_FILE:
2924 if (! ldfile_add_remap_file (optarg))
2925- einfo (_("%F%P: failed to add remap file %s\n"), optarg);
2926+ fatal (_("%P: failed to add remap file %s\n"), optarg);
2927 break;
2928
2929 case OPTION_REMAP_INPUTS:
2930@@ -1738,7 +1737,7 @@ parse_args (unsigned argc, char **argv)
2931 if (optarg2 == NULL)
2932 /* FIXME: Should we allow --remap-inputs=@myfile as a synonym
2933 for --remap-inputs-file=myfile ? */
2934- einfo (_("%F%P: invalid argument to option --remap-inputs\n"));
2935+ fatal (_("%P: invalid argument to option --remap-inputs\n"));
2936 size_t len = optarg2 - optarg;
2937 char * pattern = xmalloc (len + 1);
2938 memcpy (pattern, optarg, len);
2939@@ -1759,8 +1758,7 @@ parse_args (unsigned argc, char **argv)
2940 char *end;
2941 bfd_size_type cache_size = strtoul (optarg, &end, 0);
2942 if (*end != '\0')
2943- einfo (_("%F%P: invalid cache memory size: %s\n"),
2944- optarg);
2945+ fatal (_("%P: invalid cache memory size: %s\n"), optarg);
2946 link_info.max_cache_size = cache_size;
2947 }
2948 break;
2949@@ -1785,7 +1783,7 @@ parse_args (unsigned argc, char **argv)
2950
2951 case OPTION_POP_STATE:
2952 if (input_flags.pushed == NULL)
2953- einfo (_("%F%P: no state pushed before popping\n"));
2954+ fatal (_("%P: no state pushed before popping\n"));
2955 else
2956 {
2957 struct lang_input_statement_flags *oldp = input_flags.pushed;
2958@@ -1808,7 +1806,7 @@ parse_args (unsigned argc, char **argv)
2959 else if (strcasecmp (optarg, "discard") == 0)
2960 config.orphan_handling = orphan_handling_discard;
2961 else
2962- einfo (_("%F%P: invalid argument to option"
2963+ fatal (_("%P: invalid argument to option"
2964 " \"--orphan-handling\"\n"));
2965 break;
2966
2967@@ -1853,7 +1851,7 @@ parse_args (unsigned argc, char **argv)
2968 else if (strcmp (optarg, "share-duplicated") == 0)
2969 config.ctf_share_duplicated = true;
2970 else
2971- einfo (_("%F%P: bad --ctf-share-types option: %s\n"), optarg);
2972+ fatal (_("%P: bad --ctf-share-types option: %s\n"), optarg);
2973 break;
2974 }
2975 }
2976@@ -2048,7 +2046,7 @@ parse_args (unsigned argc, char **argv)
2977 if (config.no_section_header)
2978 {
2979 if (bfd_link_relocatable (&link_info))
2980- einfo (_("%F%P: -r and -z nosectionheader may not be used together\n"));
2981+ fatal (_("%P: -r and -z nosectionheader may not be used together\n"));
2982
2983 link_info.strip = strip_all;
2984 }
2985@@ -2056,9 +2054,9 @@ parse_args (unsigned argc, char **argv)
2986 if (!bfd_link_dll (&link_info))
2987 {
2988 if (command_line.filter_shlib)
2989- einfo (_("%F%P: -F may not be used without -shared\n"));
2990+ fatal (_("%P: -F may not be used without -shared\n"));
2991 if (command_line.auxiliary_filters)
2992- einfo (_("%F%P: -f may not be used without -shared\n"));
2993+ fatal (_("%P: -f may not be used without -shared\n"));
2994 }
2995
2996 /* Treat ld -r -s as ld -r -S -x (i.e., strip all local symbols). I
2997@@ -2099,7 +2097,7 @@ set_section_start (char *sect, char *valstr)
2998 const char *end;
2999 bfd_vma val = bfd_scan_vma (valstr, &end, 16);
3000 if (*end)
3001- einfo (_("%F%P: invalid hex number `%s'\n"), valstr);
3002+ fatal (_("%P: invalid hex number `%s'\n"), valstr);
3003 lang_section_start (sect, exp_intop (val), NULL);
3004 }
3005
3006@@ -2112,7 +2110,7 @@ set_segment_start (const char *section, char *valstr)
3007
3008 bfd_vma val = bfd_scan_vma (valstr, &end, 16);
3009 if (*end)
3010- einfo (_("%F%P: invalid hex number `%s'\n"), valstr);
3011+ fatal (_("%P: invalid hex number `%s'\n"), valstr);
3012 /* If we already have an entry for this segment, update the existing
3013 value. */
3014 name = section + 1;
3015diff --git a/ld/mri.c b/ld/mri.c
3016index 766f3174..7c8e59fa 100644
3017--- a/ld/mri.c
3018+++ b/ld/mri.c
3019@@ -288,7 +288,7 @@ mri_format (const char *name)
3020 lang_add_output_format ("srec", NULL, NULL, 1);
3021
3022 else
3023- einfo (_("%F%P: unknown format type %s\n"), name);
3024+ fatal (_("%P: unknown format type %s\n"), name);
3025 }
3026
3027 void
3028diff --git a/ld/pe-dll.c b/ld/pe-dll.c
3029index 95eef84f..800d00c8 100644
3030--- a/ld/pe-dll.c
3031+++ b/ld/pe-dll.c
3032@@ -756,7 +756,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
3033
3034 if (!bfd_generic_link_read_symbols (b))
3035 {
3036- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b);
3037+ fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3038 return;
3039 }
3040
3041@@ -1048,7 +1048,7 @@ build_filler_bfd (bool include_edata)
3042 bfd_get_arch (link_info.output_bfd),
3043 bfd_get_mach (link_info.output_bfd)))
3044 {
3045- einfo (_("%F%P: can not create BFD: %E\n"));
3046+ fatal (_("%P: can not create BFD: %E\n"));
3047 return;
3048 }
3049
3050@@ -1326,7 +1326,7 @@ pe_walk_relocs (struct bfd_link_info *info,
3051
3052 if (!bfd_generic_link_read_symbols (b))
3053 {
3054- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b);
3055+ fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3056 return;
3057 }
3058
3059@@ -1407,7 +1407,7 @@ pe_find_data_imports (const char *symhead,
3060 if (!bfd_hash_table_init (import_hash,
3061 bfd_hash_newfunc,
3062 sizeof (struct bfd_hash_entry)))
3063- einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
3064+ fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3065 }
3066 else
3067 import_hash = NULL;
3068@@ -1447,7 +1447,7 @@ pe_find_data_imports (const char *symhead,
3069
3070 if (!bfd_generic_link_read_symbols (b))
3071 {
3072- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b);
3073+ fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3074 return;
3075 }
3076
3077@@ -1549,7 +1549,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
3078
3079 if (!bfd_generic_link_read_symbols (b))
3080 {
3081- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b);
3082+ fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3083 return;
3084 }
3085
3086diff --git a/ld/plugin.c b/ld/plugin.c
3087index e9828690..0a99d406 100644
3088--- a/ld/plugin.c
3089+++ b/ld/plugin.c
3090@@ -252,7 +252,7 @@ plugin_opt_plugin (const char *plugin)
3091 newplug->name = plugin;
3092 newplug->dlhandle = dlopen (plugin, RTLD_NOW);
3093 if (!newplug->dlhandle)
3094- einfo (_("%F%P: %s: error loading plugin: %s\n"), plugin, dlerror ());
3095+ fatal (_("%P: %s: error loading plugin: %s\n"), plugin, dlerror ());
3096
3097 /* Check if plugin has been loaded already. */
3098 while (curplug)
3099@@ -345,7 +345,7 @@ plugin_get_ir_dummy_bfd (const char *name, bfd *srctemplate)
3100 }
3101 }
3102 report_error:
3103- einfo (_("%F%P: could not create dummy IR bfd: %E\n"));
3104+ fatal (_("%P: could not create dummy IR bfd: %E\n"));
3105 return NULL;
3106 }
3107
3108@@ -426,7 +426,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
3109 unsigned char visibility;
3110
3111 if (!elfsym)
3112- einfo (_("%F%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
3113+ fatal (_("%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
3114
3115 if (ldsym->def == LDPK_COMMON)
3116 {
3117@@ -437,7 +437,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
3118 switch (ldsym->visibility)
3119 {
3120 default:
3121- einfo (_("%F%P: unknown ELF symbol visibility: %d!\n"),
3122+ fatal (_("%P: unknown ELF symbol visibility: %d!\n"),
3123 ldsym->visibility);
3124 return LDPS_ERR;
3125
3126@@ -555,7 +555,7 @@ get_view (const void *handle, const void **viewp)
3127
3128 /* FIXME: einfo should support %lld. */
3129 if ((off_t) size != input->filesize)
3130- einfo (_("%F%P: unsupported input file size: %s (%ld bytes)\n"),
3131+ fatal (_("%P: unsupported input file size: %s (%ld bytes)\n"),
3132 input->name, (long) input->filesize);
3133
3134 /* Check the cached view buffer. */
3135@@ -826,7 +826,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms,
3136 && blhe->type != bfd_link_hash_common)
3137 {
3138 /* We should not have a new, indirect or warning symbol here. */
3139- einfo (_("%F%P: %s: plugin symbol table corrupt (sym type %d)\n"),
3140+ fatal (_("%P: %s: plugin symbol table corrupt (sym type %d)\n"),
3141 called_plugin->name, blhe->type);
3142 }
3143
3144@@ -978,13 +978,14 @@ message (int level, const char *format, ...)
3145 case LDPL_ERROR:
3146 default:
3147 {
3148- char *newfmt = concat (level == LDPL_FATAL ? "%F" : "%X",
3149- _("%P: error: "), format, "\n",
3150+ char *newfmt = concat (_("%X%P: error: "), format, "\n",
3151 (const char *) NULL);
3152 fflush (stdout);
3153 vfinfo (stderr, newfmt, args, true);
3154 fflush (stderr);
3155 free (newfmt);
3156+ if (level == LDPL_FATAL)
3157+ fatal ("");
3158 }
3159 break;
3160 }
3161@@ -1127,14 +1128,14 @@ plugin_load_plugins (void)
3162 if (!onloadfn)
3163 onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "_onload");
3164 if (!onloadfn)
3165- einfo (_("%F%P: %s: error loading plugin: %s\n"),
3166+ fatal (_("%P: %s: error loading plugin: %s\n"),
3167 curplug->name, dlerror ());
3168 set_tv_plugin_args (curplug, &my_tv[tv_header_size]);
3169 called_plugin = curplug;
3170 rv = (*onloadfn) (my_tv);
3171 called_plugin = NULL;
3172 if (rv != LDPS_OK)
3173- einfo (_("%F%P: %s: plugin error: %d\n"), curplug->name, rv);
3174+ fatal (_("%P: %s: plugin error: %d\n"), curplug->name, rv);
3175 curplug = curplug->next;
3176 }
3177
3178@@ -1193,7 +1194,7 @@ plugin_strdup (bfd *abfd, const char *str)
3179 strlength = strlen (str) + 1;
3180 copy = bfd_alloc (abfd, strlength);
3181 if (copy == NULL)
3182- einfo (_("%F%P: plugin_strdup failed to allocate memory: %s\n"),
3183+ fatal (_("%P: plugin_strdup failed to allocate memory: %s\n"),
3184 bfd_get_error ());
3185 memcpy (copy, str, strlength);
3186 return copy;
3187@@ -1230,7 +1231,7 @@ plugin_object_p (bfd *ibfd, bool known_used)
3188
3189 input = bfd_alloc (abfd, sizeof (*input));
3190 if (input == NULL)
3191- einfo (_("%F%P: plugin failed to allocate memory for input: %s\n"),
3192+ fatal (_("%P: plugin failed to allocate memory for input: %s\n"),
3193 bfd_get_error ());
3194
3195 if (!bfd_plugin_open_input (ibfd, &file))
3196@@ -1258,7 +1259,7 @@ plugin_object_p (bfd *ibfd, bool known_used)
3197 claimed = 0;
3198
3199 if (plugin_call_claim_file (&file, &claimed, known_used))
3200- einfo (_("%F%P: %s: plugin reported error claiming file\n"),
3201+ fatal (_("%P: %s: plugin reported error claiming file\n"),
3202 plugin_error_plugin ());
3203
3204 if (input->fd != -1
3205--
32062.43.0
3207
diff --git a/meta/recipes-devtools/binutils/binutils/0020-CVE-2025-1153-2.patch b/meta/recipes-devtools/binutils/binutils/0020-CVE-2025-1153-2.patch
new file mode 100644
index 0000000000..2b473914b7
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0020-CVE-2025-1153-2.patch
@@ -0,0 +1,840 @@
1From 31e9e2e8d1090da0c1da97a70005d8841fff8ddd Mon Sep 17 00:00:00 2001
2From: Alan Modra <amodra@gmail.com>
3Date: Sun, 16 Feb 2025 23:34:55 +1030
4Subject: [PATCH] PR 32603, more ld -w misbehaviour
5
6Commit 8d97c1a53f3d claimed to replace all einfo calls using %F with
7a call to fatal. It did so only for the ld/ directory. This patch
8adds a "fatal" to linker callbacks, and replaces those calls in bfd/
9too.
10
11Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=31e9e2e8d1090da0c1da97a70005d8841fff8ddd]
12CVE: CVE-2025-1153
13
14Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
15---
16 bfd/archive.c | 4 ++--
17 bfd/coff-aarch64.c | 4 +---
18 bfd/coffgen.c | 2 +-
19 bfd/elf-ifunc.c | 4 ++--
20 bfd/elf-m10300.c | 4 ++--
21 bfd/elf-properties.c | 4 ++--
22 bfd/elf.c | 4 ++--
23 bfd/elf32-arm.c | 2 +-
24 bfd/elf32-avr.c | 4 ++--
25 bfd/elf32-csky.c | 2 +-
26 bfd/elf32-frv.c | 4 ++--
27 bfd/elf32-hppa.c | 6 ++---
28 bfd/elf32-i386.c | 4 ++--
29 bfd/elf32-m68hc11.c | 2 +-
30 bfd/elf32-m68hc12.c | 2 +-
31 bfd/elf32-metag.c | 2 +-
32 bfd/elf32-spu.c | 5 ++--
33 bfd/elf64-ia64-vms.c | 4 ++--
34 bfd/elf64-ppc.c | 4 ++--
35 bfd/elf64-x86-64.c | 14 +++++------
36 bfd/elflink.c | 8 +++----
37 bfd/elfnn-aarch64.c | 6 ++---
38 bfd/elfnn-ia64.c | 4 ++--
39 bfd/elfnn-kvx.c | 2 +-
40 bfd/elfnn-loongarch.c | 4 ++--
41 bfd/elfxx-aarch64.c | 6 ++---
42 bfd/elfxx-sparc.c | 4 ++--
43 bfd/elfxx-x86.c | 56 +++++++++++++++++++++----------------------
44 bfd/linker.c | 2 +-
45 bfd/reloc.c | 4 ++--
46 bfd/reloc16.c | 4 ++--
47 bfd/xcofflink.c | 2 +-
48 include/bfdlink.h | 3 +++
49 ld/ldmain.c | 1 +
50 34 files changed, 94 insertions(+), 93 deletions(-)
51
52diff --git a/bfd/archive.c b/bfd/archive.c
53index 9f3fbce9..0f617276 100644
54--- a/bfd/archive.c
55+++ b/bfd/archive.c
56@@ -749,8 +749,8 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos,
57 case bfd_error_system_call:
58 if (info != NULL)
59 {
60- info->callbacks->einfo
61- (_("%F%P: %pB(%s): error opening thin archive member: %E\n"),
62+ info->callbacks->fatal
63+ (_("%P: %pB(%s): error opening thin archive member: %E\n"),
64 archive, filename);
65 break;
66 }
67diff --git a/bfd/coff-aarch64.c b/bfd/coff-aarch64.c
68index 825963c0..53f539e0 100644
69--- a/bfd/coff-aarch64.c
70+++ b/bfd/coff-aarch64.c
71@@ -876,10 +876,8 @@ coff_pe_aarch64_relocate_section (bfd *output_bfd,
72 }
73
74 default:
75- info->callbacks->einfo (_("%F%P: Unhandled relocation type %u\n"),
76+ info->callbacks->fatal (_("%P: Unhandled relocation type %u\n"),
77 rel->r_type);
78- BFD_FAIL ();
79- return false;
80 }
81 }
82
83diff --git a/bfd/coffgen.c b/bfd/coffgen.c
84index cc1c6557..3270cd2f 100644
85--- a/bfd/coffgen.c
86+++ b/bfd/coffgen.c
87@@ -2793,7 +2793,7 @@ _bfd_coff_section_already_linked (bfd *abfd,
88
89 /* This is the first section with this name. Record it. */
90 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
91- info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
92+ info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
93 return false;
94 }
95
96diff --git a/bfd/elf-ifunc.c b/bfd/elf-ifunc.c
97index 42a3bcdf..58a1ca5e 100644
98--- a/bfd/elf-ifunc.c
99+++ b/bfd/elf-ifunc.c
100@@ -139,9 +139,9 @@ _bfd_elf_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
101 || info->export_dynamic)
102 && h->pointer_equality_needed)
103 {
104- info->callbacks->einfo
105+ info->callbacks->fatal
106 /* xgettext:c-format */
107- (_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
108+ (_("%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
109 "equality in `%pB' can not be used when making an "
110 "executable; recompile with -fPIE and relink with -pie\n"),
111 h->root.root.string,
112diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c
113index 24ea43a7..cf6bb13b 100644
114--- a/bfd/elf-m10300.c
115+++ b/bfd/elf-m10300.c
116@@ -2646,8 +2646,8 @@ mn10300_elf_relax_section (bfd *abfd,
117 bfd_vma align_gap_adjustment;
118
119 if (bfd_link_relocatable (link_info))
120- (*link_info->callbacks->einfo)
121- (_("%P%F: --relax and -r may not be used together\n"));
122+ link_info->callbacks->fatal
123+ (_("%P: --relax and -r may not be used together\n"));
124
125 /* Assume nothing changes. */
126 *again = false;
127diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c
128index ee8bd37f..a4591472 100644
129--- a/bfd/elf-properties.c
130+++ b/bfd/elf-properties.c
131@@ -665,11 +665,11 @@ _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info)
132 | SEC_HAS_CONTENTS
133 | SEC_DATA));
134 if (sec == NULL)
135- info->callbacks->einfo (_("%F%P: failed to create GNU property section\n"));
136+ info->callbacks->fatal (_("%P: failed to create GNU property section\n"));
137
138 if (!bfd_set_section_alignment (sec,
139 elfclass == ELFCLASS64 ? 3 : 2))
140- info->callbacks->einfo (_("%F%pA: failed to align section\n"),
141+ info->callbacks->fatal (_("%pA: failed to align section\n"),
142 sec);
143
144 elf_section_type (sec) = SHT_NOTE;
145diff --git a/bfd/elf.c b/bfd/elf.c
146index 8bffd3c5..8e4e1e7f 100644
147--- a/bfd/elf.c
148+++ b/bfd/elf.c
149@@ -5188,8 +5188,8 @@ _bfd_elf_map_sections_to_segments (bfd *abfd,
150 && need_layout != NULL
151 && bed->size_relative_relocs
152 && !bed->size_relative_relocs (info, need_layout))
153- info->callbacks->einfo
154- (_("%F%P: failed to size relative relocations\n"));
155+ info->callbacks->fatal
156+ (_("%P: failed to size relative relocations\n"));
157 }
158
159 if (no_user_phdrs && bfd_count_sections (abfd) != 0)
160diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
161index 4ad7c354..b4a822f1 100644
162--- a/bfd/elf32-arm.c
163+++ b/bfd/elf32-arm.c
164@@ -5053,7 +5053,7 @@ arm_build_one_stub (struct bfd_hash_entry *gen_entry,
165 section. The user should fix his linker script. */
166 if (stub_entry->target_section->output_section == NULL
167 && info->non_contiguous_regions)
168- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
169+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
170 "Retry without --enable-non-contiguous-regions.\n"),
171 stub_entry->target_section);
172
173diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c
174index 20e03bd7..912f7533 100644
175--- a/bfd/elf32-avr.c
176+++ b/bfd/elf32-avr.c
177@@ -2484,8 +2484,8 @@ elf32_avr_relax_section (bfd *abfd,
178 shrinkable = false;
179
180 if (bfd_link_relocatable (link_info))
181- (*link_info->callbacks->einfo)
182- (_("%P%F: --relax and -r may not be used together\n"));
183+ link_info->callbacks->fatal
184+ (_("%P: --relax and -r may not be used together\n"));
185
186 htab = avr_link_hash_table (link_info);
187 if (htab == NULL)
188diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c
189index 9479705d..edff65a9 100644
190--- a/bfd/elf32-csky.c
191+++ b/bfd/elf32-csky.c
192@@ -3728,7 +3728,7 @@ csky_build_one_stub (struct bfd_hash_entry *gen_entry,
193 section. The user should fix his linker script. */
194 if (stub_entry->target_section->output_section == NULL
195 && info->non_contiguous_regions)
196- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
197+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
198 "Retry without --enable-non-contiguous-regions.\n"),
199 stub_entry->target_section);
200
201diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
202index 5b66b074..245db7c2 100644
203--- a/bfd/elf32-frv.c
204+++ b/bfd/elf32-frv.c
205@@ -5617,8 +5617,8 @@ elf32_frvfdpic_relax_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
206 struct _frvfdpic_dynamic_got_plt_info gpinfo;
207
208 if (bfd_link_relocatable (info))
209- (*info->callbacks->einfo)
210- (_("%P%F: --relax and -r may not be used together\n"));
211+ info->callbacks->fatal
212+ (_("%P: --relax and -r may not be used together\n"));
213
214 /* If we return early, we didn't change anything. */
215 *again = false;
216diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
217index c2a7ad98..f1e67a06 100644
218--- a/bfd/elf32-hppa.c
219+++ b/bfd/elf32-hppa.c
220@@ -729,7 +729,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
221 section. The user should fix his linker script. */
222 if (hsh->target_section->output_section == NULL
223 && info->non_contiguous_regions)
224- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output "
225+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
226 "section. Retry without "
227 "--enable-non-contiguous-regions.\n"),
228 hsh->target_section);
229@@ -758,7 +758,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
230 section. The user should fix his linker script. */
231 if (hsh->target_section->output_section == NULL
232 && info->non_contiguous_regions)
233- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output "
234+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
235 "section. Retry without "
236 "--enable-non-contiguous-regions.\n"),
237 hsh->target_section);
238@@ -839,7 +839,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
239 section. The user should fix his linker script. */
240 if (hsh->target_section->output_section == NULL
241 && info->non_contiguous_regions)
242- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output "
243+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
244 "section. Retry without "
245 "--enable-non-contiguous-regions.\n"),
246 hsh->target_section);
247diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
248index e2f88a11..1637e39f 100644
249--- a/bfd/elf32-i386.c
250+++ b/bfd/elf32-i386.c
251@@ -4092,8 +4092,8 @@ elf_i386_finish_dynamic_sections (bfd *output_bfd,
252 {
253 if (bfd_is_abs_section (htab->elf.splt->output_section))
254 {
255- info->callbacks->einfo
256- (_("%F%P: discarded output section: `%pA'\n"),
257+ info->callbacks->fatal
258+ (_("%P: discarded output section: `%pA'\n"),
259 htab->elf.splt);
260 return false;
261 }
262diff --git a/bfd/elf32-m68hc11.c b/bfd/elf32-m68hc11.c
263index 5fc611f5..6f705718 100644
264--- a/bfd/elf32-m68hc11.c
265+++ b/bfd/elf32-m68hc11.c
266@@ -419,7 +419,7 @@ m68hc11_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
267 section. The user should fix his linker script. */
268 if (stub_entry->target_section->output_section == NULL
269 && info->non_contiguous_regions)
270- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
271+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
272 "Retry without --enable-non-contiguous-regions.\n"),
273 stub_entry->target_section);
274
275diff --git a/bfd/elf32-m68hc12.c b/bfd/elf32-m68hc12.c
276index 1be174c0..bdfb9ca5 100644
277--- a/bfd/elf32-m68hc12.c
278+++ b/bfd/elf32-m68hc12.c
279@@ -539,7 +539,7 @@ m68hc12_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
280 section. The user should fix his linker script. */
281 if (stub_entry->target_section->output_section == NULL
282 && info->non_contiguous_regions)
283- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
284+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
285 "Retry without --enable-non-contiguous-regions.\n"),
286 stub_entry->target_section);
287
288diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c
289index de14dfe5..49f93cc7 100644
290--- a/bfd/elf32-metag.c
291+++ b/bfd/elf32-metag.c
292@@ -3342,7 +3342,7 @@ metag_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
293 section. The user should fix his linker script. */
294 if (hsh->target_section->output_section == NULL
295 && info->non_contiguous_regions)
296- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
297+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
298 "Retry without --enable-non-contiguous-regions.\n"),
299 hsh->target_section);
300
301diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
302index 881d4d8e..dd5d5fbe 100644
303--- a/bfd/elf32-spu.c
304+++ b/bfd/elf32-spu.c
305@@ -4689,8 +4689,7 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
306 file_err:
307 bfd_set_error (bfd_error_system_call);
308 err_exit:
309- info->callbacks->einfo (_("%F%P: auto overlay error: %E\n"));
310- xexit (1);
311+ info->callbacks->fatal (_("%P: auto overlay error: %E\n"));
312 }
313
314 /* Provide an estimate of total stack required. */
315@@ -4743,7 +4742,7 @@ spu_elf_final_link (bfd *output_bfd, struct bfd_link_info *info)
316 info->callbacks->einfo (_("%X%P: stack/lrlive analysis error: %E\n"));
317
318 if (!spu_elf_build_stubs (info))
319- info->callbacks->einfo (_("%F%P: can not build overlay stubs: %E\n"));
320+ info->callbacks->fatal (_("%P: can not build overlay stubs: %E\n"));
321
322 return bfd_elf_final_link (output_bfd, info);
323 }
324diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c
325index 2f37e90c..b1eaaac0 100644
326--- a/bfd/elf64-ia64-vms.c
327+++ b/bfd/elf64-ia64-vms.c
328@@ -361,8 +361,8 @@ elf64_ia64_relax_section (bfd *abfd, asection *sec,
329 *again = false;
330
331 if (bfd_link_relocatable (link_info))
332- (*link_info->callbacks->einfo)
333- (_("%P%F: --relax and -r may not be used together\n"));
334+ link_info->callbacks->fatal
335+ (_("%P: --relax and -r may not be used together\n"));
336
337 /* Don't even try to relax for non-ELF outputs. */
338 if (!is_elf_hash_table (link_info->hash))
339diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
340index 720d6ac9..7b798732 100644
341--- a/bfd/elf64-ppc.c
342+++ b/bfd/elf64-ppc.c
343@@ -12289,7 +12289,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
344 if (stub_entry->target_section != NULL
345 && stub_entry->target_section->output_section == NULL
346 && info->non_contiguous_regions)
347- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
348+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
349 "Retry without --enable-non-contiguous-regions.\n"),
350 stub_entry->target_section);
351
352@@ -12297,7 +12297,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
353 if (stub_entry->group->stub_sec != NULL
354 && stub_entry->group->stub_sec->output_section == NULL
355 && info->non_contiguous_regions)
356- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
357+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
358 "Retry without --enable-non-contiguous-regions.\n"),
359 stub_entry->group->stub_sec);
360
361diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
362index c3fb375c..a22d57d7 100644
363--- a/bfd/elf64-x86-64.c
364+++ b/bfd/elf64-x86-64.c
365@@ -3706,8 +3706,8 @@ elf_x86_64_relocate_section (bfd *output_bfd,
366 || (roff - 3 + 22) > input_section->size)
367 {
368 corrupt_input:
369- info->callbacks->einfo
370- (_("%F%P: corrupt input: %pB\n"),
371+ info->callbacks->fatal
372+ (_("%P: corrupt input: %pB\n"),
373 input_bfd);
374 return false;
375 }
376@@ -4679,7 +4679,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
377 /* Check PC-relative offset overflow in PLT entry. */
378 if ((plt_got_pcrel_offset + 0x80000000) > 0xffffffff)
379 /* xgettext:c-format */
380- info->callbacks->einfo (_("%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
381+ info->callbacks->fatal (_("%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
382 output_bfd, h->root.root.string);
383
384 bfd_put_32 (output_bfd, plt_got_pcrel_offset,
385@@ -4752,7 +4752,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
386 will overflow first. */
387 if (plt0_offset > 0x80000000)
388 /* xgettext:c-format */
389- info->callbacks->einfo (_("%F%pB: branch displacement overflow in PLT entry for `%s'\n"),
390+ info->callbacks->fatal (_("%pB: branch displacement overflow in PLT entry for `%s'\n"),
391 output_bfd, h->root.root.string);
392 bfd_put_32 (output_bfd, - plt0_offset,
393 (plt->contents + h->plt.offset
394@@ -4805,7 +4805,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
395 if ((got_after_plt && got_pcrel_offset < 0)
396 || (!got_after_plt && got_pcrel_offset > 0))
397 /* xgettext:c-format */
398- info->callbacks->einfo (_("%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
399+ info->callbacks->fatal (_("%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
400 output_bfd, h->root.root.string);
401
402 bfd_put_32 (output_bfd, got_pcrel_offset,
403@@ -5092,8 +5092,8 @@ elf_x86_64_finish_dynamic_sections (bfd *output_bfd,
404 {
405 if (bfd_is_abs_section (htab->elf.splt->output_section))
406 {
407- info->callbacks->einfo
408- (_("%F%P: discarded output section: `%pA'\n"),
409+ info->callbacks->fatal
410+ (_("%P: discarded output section: `%pA'\n"),
411 htab->elf.splt);
412 return false;
413 }
414diff --git a/bfd/elflink.c b/bfd/elflink.c
415index 8af6898a..dba176cc 100644
416--- a/bfd/elflink.c
417+++ b/bfd/elflink.c
418@@ -12891,8 +12891,8 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
419 if (info->enable_dt_relr
420 && bed->finish_relative_relocs
421 && !bed->finish_relative_relocs (info))
422- info->callbacks->einfo
423- (_("%F%P: %pB: failed to finish relative relocations\n"), abfd);
424+ info->callbacks->fatal
425+ (_("%P: %pB: failed to finish relative relocations\n"), abfd);
426
427 /* Since ELF permits relocations to be against local symbols, we
428 must have the local symbols available when we do the relocations.
429@@ -14087,7 +14087,7 @@ _bfd_elf_gc_mark_extra_sections (struct bfd_link_info *info,
430 else if (strcmp (bfd_section_name (isec),
431 "__patchable_function_entries") == 0
432 && elf_linked_to_section (isec) == NULL)
433- info->callbacks->einfo (_("%F%P: %pB(%pA): error: "
434+ info->callbacks->fatal (_("%P: %pB(%pA): error: "
435 "need linked-to section "
436 "for --gc-sections\n"),
437 isec->owner, isec);
438@@ -15264,7 +15264,7 @@ _bfd_elf_section_already_linked (bfd *abfd,
439
440 /* This is the first section with this name. Record it. */
441 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
442- info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
443+ info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
444 return sec->output_section == bfd_abs_section_ptr;
445 }
446
447diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
448index 109517db..0f454d23 100644
449--- a/bfd/elfnn-aarch64.c
450+++ b/bfd/elfnn-aarch64.c
451@@ -3272,7 +3272,7 @@ aarch64_build_one_stub (struct bfd_hash_entry *gen_entry,
452 section. The user should fix his linker script. */
453 if (stub_entry->target_section->output_section == NULL
454 && info->non_contiguous_regions)
455- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
456+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
457 "Retry without "
458 "--enable-non-contiguous-regions.\n"),
459 stub_entry->target_section);
460@@ -9008,9 +9008,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
461 asection *s = p->sec->output_section;
462 if (s != NULL && (s->flags & SEC_READONLY) != 0)
463 {
464- info->callbacks->einfo
465+ info->callbacks->fatal
466 /* xgettext:c-format */
467- (_ ("%F%P: %pB: copy relocation against non-copyable "
468+ (_ ("%P: %pB: copy relocation against non-copyable "
469 "protected symbol `%s'\n"),
470 p->sec->owner, h->root.root.string);
471 return false;
472diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c
473index 7081ba1b..41d9e6fe 100644
474--- a/bfd/elfnn-ia64.c
475+++ b/bfd/elfnn-ia64.c
476@@ -361,8 +361,8 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
477 *again = false;
478
479 if (bfd_link_relocatable (link_info))
480- (*link_info->callbacks->einfo)
481- (_("%P%F: --relax and -r may not be used together\n"));
482+ link_info->callbacks->fatal
483+ (_("%P: --relax and -r may not be used together\n"));
484
485 /* Don't even try to relax for non-ELF outputs. */
486 if (!is_elf_hash_table (link_info->hash))
487diff --git a/bfd/elfnn-kvx.c b/bfd/elfnn-kvx.c
488index ae5ed6bf..b752891b 100644
489--- a/bfd/elfnn-kvx.c
490+++ b/bfd/elfnn-kvx.c
491@@ -927,7 +927,7 @@ kvx_build_one_stub (struct bfd_hash_entry *gen_entry,
492 section. The user should fix his linker script. */
493 if (stub_entry->target_section->output_section == NULL
494 && info->non_contiguous_regions)
495- info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
496+ info->callbacks->fatal (_("%P: Could not assign '%pA' to an output section. "
497 "Retry without "
498 "--enable-non-contiguous-regions.\n"),
499 stub_entry->target_section);
500diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c
501index a7daea67..a8c4226d 100644
502--- a/bfd/elfnn-loongarch.c
503+++ b/bfd/elfnn-loongarch.c
504@@ -1445,9 +1445,9 @@ local_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
505 || info->export_dynamic)
506 && h->pointer_equality_needed)
507 {
508- info->callbacks->einfo
509+ info->callbacks->fatal
510 /* xgettext:c-format. */
511- (_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
512+ (_("%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
513 "equality in `%pB' can not be used when making an "
514 "executable; recompile with -fPIE and relink with -pie\n"),
515 h->root.root.string,
516diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c
517index d1279adc..161c8a52 100644
518--- a/bfd/elfxx-aarch64.c
519+++ b/bfd/elfxx-aarch64.c
520@@ -754,12 +754,12 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info,
521 | SEC_HAS_CONTENTS
522 | SEC_DATA));
523 if (sec == NULL)
524- info->callbacks->einfo (
525- _("%F%P: failed to create GNU property section\n"));
526+ info->callbacks->fatal (
527+ _("%P: failed to create GNU property section\n"));
528
529 align = (bfd_get_mach (ebfd) & bfd_mach_aarch64_ilp32) ? 2 : 3;
530 if (!bfd_set_section_alignment (sec, align))
531- info->callbacks->einfo (_("%F%pA: failed to align section\n"),
532+ info->callbacks->fatal (_("%pA: failed to align section\n"),
533 sec);
534
535 elf_section_type (sec) = SHT_NOTE;
536diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
537index 6f5062bb..95b1928d 100644
538--- a/bfd/elfxx-sparc.c
539+++ b/bfd/elfxx-sparc.c
540@@ -2680,8 +2680,8 @@ _bfd_sparc_elf_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
541 bool *again)
542 {
543 if (bfd_link_relocatable (link_info))
544- (*link_info->callbacks->einfo)
545- (_("%P%F: --relax and -r may not be used together\n"));
546+ link_info->callbacks->fatal
547+ (_("%P: --relax and -r may not be used together\n"));
548
549 *again = false;
550 sec_do_relax (section) = 1;
551diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
552index 8c261cf8..606c8905 100644
553--- a/bfd/elfxx-x86.c
554+++ b/bfd/elfxx-x86.c
555@@ -531,9 +531,9 @@ elf_x86_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
556 asection *s = p->sec->output_section;
557 if (s != NULL && (s->flags & SEC_READONLY) != 0)
558 {
559- info->callbacks->einfo
560+ info->callbacks->fatal
561 /* xgettext:c-format */
562- (_("%F%P: %pB: copy relocation against non-copyable "
563+ (_("%P: %pB: copy relocation against non-copyable "
564 "protected symbol `%s' in %pB\n"),
565 p->sec->owner, h->root.root.string,
566 h->root.u.def.section->owner);
567@@ -1030,9 +1030,9 @@ elf_x86_relative_reloc_record_add
568
569 if (relative_reloc->data == NULL)
570 {
571- info->callbacks->einfo
572+ info->callbacks->fatal
573 /* xgettext:c-format */
574- (_("%F%P: %pB: failed to allocate relative reloc record\n"),
575+ (_("%P: %pB: failed to allocate relative reloc record\n"),
576 info->output_bfd);
577 return false;
578 }
579@@ -1388,9 +1388,9 @@ elf64_dt_relr_bitmap_add
580
581 if (bitmap->u.elf64 == NULL)
582 {
583- info->callbacks->einfo
584+ info->callbacks->fatal
585 /* xgettext:c-format */
586- (_("%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"),
587+ (_("%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"),
588 info->output_bfd);
589 }
590
591@@ -1424,9 +1424,9 @@ elf32_dt_relr_bitmap_add
592
593 if (bitmap->u.elf32 == NULL)
594 {
595- info->callbacks->einfo
596+ info->callbacks->fatal
597 /* xgettext:c-format */
598- (_("%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"),
599+ (_("%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"),
600 info->output_bfd);
601 }
602
603@@ -1750,9 +1750,9 @@ elf_x86_compute_dl_relr_bitmap
604 *need_layout = true;
605 }
606 else
607- info->callbacks->einfo
608+ info->callbacks->fatal
609 /* xgettext:c-format */
610- (_("%F%P: %pB: size of compact relative reloc section is "
611+ (_("%P: %pB: size of compact relative reloc section is "
612 "changed: new (%lu) != old (%lu)\n"),
613 info->output_bfd, htab->dt_relr_bitmap.count,
614 dt_relr_bitmap_count);
615@@ -1772,9 +1772,9 @@ elf_x86_write_dl_relr_bitmap (struct bfd_link_info *info,
616
617 contents = (unsigned char *) bfd_alloc (sec->owner, size);
618 if (contents == NULL)
619- info->callbacks->einfo
620+ info->callbacks->fatal
621 /* xgettext:c-format */
622- (_("%F%P: %pB: failed to allocate compact relative reloc section\n"),
623+ (_("%P: %pB: failed to allocate compact relative reloc section\n"),
624 info->output_bfd);
625
626 /* Cache the section contents for elf_link_input_bfd. */
627@@ -2219,9 +2219,9 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section,
628 else
629 name = bfd_elf_sym_name (input_section->owner, symtab_hdr,
630 sym, NULL);
631- info->callbacks->einfo
632+ info->callbacks->fatal
633 /* xgettext:c-format */
634- (_("%F%P: %pB: relocation %s against absolute symbol "
635+ (_("%P: %pB: relocation %s against absolute symbol "
636 "`%s' in section `%pA' is disallowed\n"),
637 input_section->owner, internal_reloc.howto->name, name,
638 input_section);
639@@ -3429,9 +3429,9 @@ _bfd_x86_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
640 s = p->sec->output_section;
641 if (s != NULL && (s->flags & SEC_READONLY) != 0)
642 {
643- info->callbacks->einfo
644+ info->callbacks->fatal
645 /* xgettext:c-format */
646- (_("%F%P: %pB: copy relocation against non-copyable "
647+ (_("%P: %pB: copy relocation against non-copyable "
648 "protected symbol `%s' in %pB\n"),
649 p->sec->owner, h->root.root.string,
650 h->root.u.def.section->owner);
651@@ -4138,12 +4138,12 @@ _bfd_x86_elf_link_setup_gnu_properties
652 | SEC_HAS_CONTENTS
653 | SEC_DATA));
654 if (sec == NULL)
655- info->callbacks->einfo (_("%F%P: failed to create GNU property section\n"));
656+ info->callbacks->fatal (_("%P: failed to create GNU property section\n"));
657
658 if (!bfd_set_section_alignment (sec, class_align))
659 {
660 error_alignment:
661- info->callbacks->einfo (_("%F%pA: failed to align section\n"),
662+ info->callbacks->fatal (_("%pA: failed to align section\n"),
663 sec);
664 }
665
666@@ -4404,7 +4404,7 @@ _bfd_x86_elf_link_setup_gnu_properties
667 && !elf_vxworks_create_dynamic_sections (dynobj, info,
668 &htab->srelplt2))
669 {
670- info->callbacks->einfo (_("%F%P: failed to create VxWorks dynamic sections\n"));
671+ info->callbacks->fatal (_("%P: failed to create VxWorks dynamic sections\n"));
672 return pbfd;
673 }
674
675@@ -4413,7 +4413,7 @@ _bfd_x86_elf_link_setup_gnu_properties
676 don't need to do it in check_relocs. */
677 if (htab->elf.sgot == NULL
678 && !_bfd_elf_create_got_section (dynobj, info))
679- info->callbacks->einfo (_("%F%P: failed to create GOT sections\n"));
680+ info->callbacks->fatal (_("%P: failed to create GOT sections\n"));
681
682 got_align = (bed->target_id == X86_64_ELF_DATA) ? 3 : 2;
683
684@@ -4431,7 +4431,7 @@ _bfd_x86_elf_link_setup_gnu_properties
685 /* Create the ifunc sections here so that check_relocs can be
686 simplified. */
687 if (!_bfd_elf_create_ifunc_sections (dynobj, info))
688- info->callbacks->einfo (_("%F%P: failed to create ifunc sections\n"));
689+ info->callbacks->fatal (_("%P: failed to create ifunc sections\n"));
690
691 plt_alignment = bfd_log2 (htab->plt.plt_entry_size);
692
693@@ -4468,7 +4468,7 @@ _bfd_x86_elf_link_setup_gnu_properties
694 ".plt.got",
695 pltflags);
696 if (sec == NULL)
697- info->callbacks->einfo (_("%F%P: failed to create GOT PLT section\n"));
698+ info->callbacks->fatal (_("%P: failed to create GOT PLT section\n"));
699
700 if (!bfd_set_section_alignment (sec, non_lazy_plt_alignment))
701 goto error_alignment;
702@@ -4487,7 +4487,7 @@ _bfd_x86_elf_link_setup_gnu_properties
703 ".plt.sec",
704 pltflags);
705 if (sec == NULL)
706- info->callbacks->einfo (_("%F%P: failed to create IBT-enabled PLT section\n"));
707+ info->callbacks->fatal (_("%P: failed to create IBT-enabled PLT section\n"));
708
709 if (!bfd_set_section_alignment (sec, plt_alignment))
710 goto error_alignment;
711@@ -4507,7 +4507,7 @@ _bfd_x86_elf_link_setup_gnu_properties
712 ".eh_frame",
713 flags);
714 if (sec == NULL)
715- info->callbacks->einfo (_("%F%P: failed to create PLT .eh_frame section\n"));
716+ info->callbacks->fatal (_("%P: failed to create PLT .eh_frame section\n"));
717
718 if (!bfd_set_section_alignment (sec, class_align))
719 goto error_alignment;
720@@ -4520,7 +4520,7 @@ _bfd_x86_elf_link_setup_gnu_properties
721 ".eh_frame",
722 flags);
723 if (sec == NULL)
724- info->callbacks->einfo (_("%F%P: failed to create GOT PLT .eh_frame section\n"));
725+ info->callbacks->fatal (_("%P: failed to create GOT PLT .eh_frame section\n"));
726
727 if (!bfd_set_section_alignment (sec, class_align))
728 goto error_alignment;
729@@ -4534,7 +4534,7 @@ _bfd_x86_elf_link_setup_gnu_properties
730 ".eh_frame",
731 flags);
732 if (sec == NULL)
733- info->callbacks->einfo (_("%F%P: failed to create the second PLT .eh_frame section\n"));
734+ info->callbacks->fatal (_("%P: failed to create the second PLT .eh_frame section\n"));
735
736 if (!bfd_set_section_alignment (sec, class_align))
737 goto error_alignment;
738@@ -4554,7 +4554,7 @@ _bfd_x86_elf_link_setup_gnu_properties
739 ".sframe",
740 flags);
741 if (sec == NULL)
742- info->callbacks->einfo (_("%F%P: failed to create PLT .sframe section\n"));
743+ info->callbacks->fatal (_("%P: failed to create PLT .sframe section\n"));
744
745 // FIXME check this
746 // if (!bfd_set_section_alignment (sec, class_align))
747@@ -4569,7 +4569,7 @@ _bfd_x86_elf_link_setup_gnu_properties
748 ".sframe",
749 flags);
750 if (sec == NULL)
751- info->callbacks->einfo (_("%F%P: failed to create second PLT .sframe section\n"));
752+ info->callbacks->fatal (_("%P: failed to create second PLT .sframe section\n"));
753
754 htab->plt_second_sframe = sec;
755 }
756diff --git a/bfd/linker.c b/bfd/linker.c
757index 0821db55..5b912221 100644
758--- a/bfd/linker.c
759+++ b/bfd/linker.c
760@@ -2982,7 +2982,7 @@ _bfd_generic_section_already_linked (bfd *abfd ATTRIBUTE_UNUSED,
761
762 /* This is the first section with this name. Record it. */
763 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
764- info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
765+ info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
766 return false;
767 }
768
769diff --git a/bfd/reloc.c b/bfd/reloc.c
770index 7583b7fd..1fee86f1 100644
771--- a/bfd/reloc.c
772+++ b/bfd/reloc.c
773@@ -8465,8 +8465,8 @@ bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
774 bool *again)
775 {
776 if (bfd_link_relocatable (link_info))
777- (*link_info->callbacks->einfo)
778- (_("%P%F: --relax and -r may not be used together\n"));
779+ link_info->callbacks->fatal
780+ (_("%P: --relax and -r may not be used together\n"));
781
782 *again = false;
783 return true;
784diff --git a/bfd/reloc16.c b/bfd/reloc16.c
785index ff5412dc..a16d6b20 100644
786--- a/bfd/reloc16.c
787+++ b/bfd/reloc16.c
788@@ -151,8 +151,8 @@ bfd_coff_reloc16_relax_section (bfd *abfd,
789 long reloc_count;
790
791 if (bfd_link_relocatable (link_info))
792- (*link_info->callbacks->einfo)
793- (_("%P%F: --relax and -r may not be used together\n"));
794+ link_info->callbacks->fatal
795+ (_("%P: --relax and -r may not be used together\n"));
796
797 /* We only do global relaxation once. It is not safe to do it multiple
798 times (see discussion of the "shrinks" array below). */
799diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
800index 6ef9abcd..9b01cc37 100644
801--- a/bfd/xcofflink.c
802+++ b/bfd/xcofflink.c
803@@ -4681,7 +4681,7 @@ xcoff_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
804 if (hstub->target_section != NULL
805 && hstub->target_section->output_section == NULL
806 && info->non_contiguous_regions)
807- info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
808+ info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
809 "Retry without --enable-non-contiguous-regions.\n"),
810 hstub->target_section);
811
812diff --git a/include/bfdlink.h b/include/bfdlink.h
813index eac07d78..0d03fa70 100644
814--- a/include/bfdlink.h
815+++ b/include/bfdlink.h
816@@ -868,6 +868,9 @@ struct bfd_link_callbacks
817 (struct bfd_link_info *, struct bfd_link_hash_entry *h,
818 struct bfd_link_hash_entry *inh,
819 bfd *abfd, asection *section, bfd_vma address, flagword flags);
820+ /* Fatal error. */
821+ void (*fatal)
822+ (const char *fmt, ...) ATTRIBUTE_NORETURN;
823 /* Error or warning link info message. */
824 void (*einfo)
825 (const char *fmt, ...);
826diff --git a/ld/ldmain.c b/ld/ldmain.c
827index 878d9536..a61086c3 100644
828--- a/ld/ldmain.c
829+++ b/ld/ldmain.c
830@@ -146,6 +146,7 @@ static struct bfd_link_callbacks link_callbacks =
831 reloc_dangerous,
832 unattached_reloc,
833 notice,
834+ fatal,
835 einfo,
836 info_msg,
837 minfo,
838--
8392.43.0
840
diff --git a/meta/recipes-devtools/binutils/binutils/0021-CVE-2025-1153-3.patch b/meta/recipes-devtools/binutils/binutils/0021-CVE-2025-1153-3.patch
new file mode 100644
index 0000000000..8aef77d2f8
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0021-CVE-2025-1153-3.patch
@@ -0,0 +1,3756 @@
1From fe459e33c676883b5f28cc96c00e242973d906a9 Mon Sep 17 00:00:00 2001
2From: Alan Modra <amodra@gmail.com>
3Date: Thu, 24 Apr 2025 10:01:29 +0930
4Subject: [PATCH] PR 32603, revert message changes
5
6This puts back %F into translated fatal error messages
7(and reverts a few other small changes), to not disturb
8translation work
9
10Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fe459e33c676883b5f28cc96c00e242973d906a9]
11CVE: CVE-2025-1153
12
13Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
14---
15 bfd/archive.c | 2 +-
16 bfd/coff-aarch64.c | 2 +-
17 bfd/coffgen.c | 2 +-
18 bfd/elf-ifunc.c | 2 +-
19 bfd/elf-m10300.c | 2 +-
20 bfd/elf-properties.c | 4 +-
21 bfd/elf.c | 2 +-
22 bfd/elf32-arm.c | 2 +-
23 bfd/elf32-avr.c | 2 +-
24 bfd/elf32-csky.c | 2 +-
25 bfd/elf32-frv.c | 2 +-
26 bfd/elf32-hppa.c | 6 +--
27 bfd/elf32-i386.c | 2 +-
28 bfd/elf32-m68hc11.c | 2 +-
29 bfd/elf32-m68hc12.c | 2 +-
30 bfd/elf32-metag.c | 2 +-
31 bfd/elf32-spu.c | 4 +-
32 bfd/elf64-ia64-vms.c | 2 +-
33 bfd/elf64-ppc.c | 4 +-
34 bfd/elf64-x86-64.c | 10 ++---
35 bfd/elflink.c | 6 +--
36 bfd/elfnn-aarch64.c | 4 +-
37 bfd/elfnn-ia64.c | 2 +-
38 bfd/elfnn-kvx.c | 2 +-
39 bfd/elfnn-loongarch.c | 2 +-
40 bfd/elfxx-aarch64.c | 4 +-
41 bfd/elfxx-sparc.c | 2 +-
42 bfd/elfxx-x86.c | 42 +++++++++---------
43 bfd/linker.c | 2 +-
44 bfd/reloc.c | 2 +-
45 bfd/reloc16.c | 2 +-
46 bfd/xcofflink.c | 2 +-
47 ld/emulparams/call_nop.sh | 6 +--
48 ld/emulparams/cet.sh | 2 +-
49 ld/emulparams/elf32mcore.sh | 2 +-
50 ld/emulparams/x86-64-lam.sh | 6 +--
51 ld/emulparams/x86-64-level.sh | 2 +-
52 ld/emultempl/aarch64elf.em | 6 +--
53 ld/emultempl/aix.em | 41 +++++++++---------
54 ld/emultempl/armelf.em | 10 ++---
55 ld/emultempl/avrelf.em | 2 +-
56 ld/emultempl/beos.em | 18 ++++----
57 ld/emultempl/cr16elf.em | 4 +-
58 ld/emultempl/cskyelf.em | 4 +-
59 ld/emultempl/elf.em | 14 +++---
60 ld/emultempl/hppaelf.em | 4 +-
61 ld/emultempl/kvxelf.em | 4 +-
62 ld/emultempl/loongarchelf.em | 2 +-
63 ld/emultempl/m68hc1xelf.em | 2 +-
64 ld/emultempl/m68kelf.em | 4 +-
65 ld/emultempl/metagelf.em | 4 +-
66 ld/emultempl/mipself.em | 2 +-
67 ld/emultempl/mmix-elfnmmo.em | 2 +-
68 ld/emultempl/nds32elf.em | 6 +--
69 ld/emultempl/nto.em | 10 ++---
70 ld/emultempl/pe.em | 20 ++++-----
71 ld/emultempl/pep.em | 16 +++----
72 ld/emultempl/ppc32elf.em | 4 +-
73 ld/emultempl/ppc64elf.em | 10 ++---
74 ld/emultempl/riscvelf.em | 2 +-
75 ld/emultempl/s390.em | 2 +-
76 ld/emultempl/scoreelf.em | 2 +-
77 ld/emultempl/spuelf.em | 20 ++++-----
78 ld/emultempl/tic6xdsbt.em | 6 +--
79 ld/emultempl/ticoff.em | 2 +-
80 ld/emultempl/v850elf.em | 2 +-
81 ld/emultempl/vms.em | 2 +-
82 ld/emultempl/xtensaelf.em | 12 ++---
83 ld/emultempl/z80.em | 2 +-
84 ld/ldcref.c | 8 ++--
85 ld/ldelf.c | 30 ++++++-------
86 ld/ldelfgen.c | 14 +++---
87 ld/ldexp.c | 42 +++++++++---------
88 ld/ldfile.c | 14 +++---
89 ld/ldgram.y | 6 +--
90 ld/ldlang.c | 82 +++++++++++++++++------------------
91 ld/ldlex.l | 10 ++---
92 ld/ldmain.c | 44 +++++++++----------
93 ld/ldmisc.c | 6 +--
94 ld/ldwrite.c | 18 ++++----
95 ld/lexsup.c | 64 +++++++++++++--------------
96 ld/mri.c | 2 +-
97 ld/pe-dll.c | 12 ++---
98 ld/plugin.c | 27 ++++++------
99 84 files changed, 384 insertions(+), 384 deletions(-)
100
101diff --git a/bfd/archive.c b/bfd/archive.c
102index 0f617276..0596a304 100644
103--- a/bfd/archive.c
104+++ b/bfd/archive.c
105@@ -750,7 +750,7 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos,
106 if (info != NULL)
107 {
108 info->callbacks->fatal
109- (_("%P: %pB(%s): error opening thin archive member: %E\n"),
110+ (_("%F%P: %pB(%s): error opening thin archive member: %E\n"),
111 archive, filename);
112 break;
113 }
114diff --git a/bfd/coff-aarch64.c b/bfd/coff-aarch64.c
115index 53f539e0..06007e6d 100644
116--- a/bfd/coff-aarch64.c
117+++ b/bfd/coff-aarch64.c
118@@ -876,7 +876,7 @@ coff_pe_aarch64_relocate_section (bfd *output_bfd,
119 }
120
121 default:
122- info->callbacks->fatal (_("%P: Unhandled relocation type %u\n"),
123+ info->callbacks->fatal (_("%F%P: Unhandled relocation type %u\n"),
124 rel->r_type);
125 }
126 }
127diff --git a/bfd/coffgen.c b/bfd/coffgen.c
128index 3270cd2f..5e24210d 100644
129--- a/bfd/coffgen.c
130+++ b/bfd/coffgen.c
131@@ -2793,7 +2793,7 @@ _bfd_coff_section_already_linked (bfd *abfd,
132
133 /* This is the first section with this name. Record it. */
134 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
135- info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
136+ info->callbacks->fatal (_("%F%P: already_linked_table: %E\n"));
137 return false;
138 }
139
140diff --git a/bfd/elf-ifunc.c b/bfd/elf-ifunc.c
141index 58a1ca5e..cb623563 100644
142--- a/bfd/elf-ifunc.c
143+++ b/bfd/elf-ifunc.c
144@@ -141,7 +141,7 @@ _bfd_elf_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
145 {
146 info->callbacks->fatal
147 /* xgettext:c-format */
148- (_("%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
149+ (_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
150 "equality in `%pB' can not be used when making an "
151 "executable; recompile with -fPIE and relink with -pie\n"),
152 h->root.root.string,
153diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c
154index cf6bb13b..129485fa 100644
155--- a/bfd/elf-m10300.c
156+++ b/bfd/elf-m10300.c
157@@ -2647,7 +2647,7 @@ mn10300_elf_relax_section (bfd *abfd,
158
159 if (bfd_link_relocatable (link_info))
160 link_info->callbacks->fatal
161- (_("%P: --relax and -r may not be used together\n"));
162+ (_("%P%F: --relax and -r may not be used together\n"));
163
164 /* Assume nothing changes. */
165 *again = false;
166diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c
167index a4591472..2e8cc8af 100644
168--- a/bfd/elf-properties.c
169+++ b/bfd/elf-properties.c
170@@ -665,11 +665,11 @@ _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info)
171 | SEC_HAS_CONTENTS
172 | SEC_DATA));
173 if (sec == NULL)
174- info->callbacks->fatal (_("%P: failed to create GNU property section\n"));
175+ info->callbacks->fatal (_("%F%P: failed to create GNU property section\n"));
176
177 if (!bfd_set_section_alignment (sec,
178 elfclass == ELFCLASS64 ? 3 : 2))
179- info->callbacks->fatal (_("%pA: failed to align section\n"),
180+ info->callbacks->fatal (_("%F%pA: failed to align section\n"),
181 sec);
182
183 elf_section_type (sec) = SHT_NOTE;
184diff --git a/bfd/elf.c b/bfd/elf.c
185index 8e4e1e7f..883aef5e 100644
186--- a/bfd/elf.c
187+++ b/bfd/elf.c
188@@ -5189,7 +5189,7 @@ _bfd_elf_map_sections_to_segments (bfd *abfd,
189 && bed->size_relative_relocs
190 && !bed->size_relative_relocs (info, need_layout))
191 info->callbacks->fatal
192- (_("%P: failed to size relative relocations\n"));
193+ (_("%F%P: failed to size relative relocations\n"));
194 }
195
196 if (no_user_phdrs && bfd_count_sections (abfd) != 0)
197diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
198index b4a822f1..bb413bb9 100644
199--- a/bfd/elf32-arm.c
200+++ b/bfd/elf32-arm.c
201@@ -5053,7 +5053,7 @@ arm_build_one_stub (struct bfd_hash_entry *gen_entry,
202 section. The user should fix his linker script. */
203 if (stub_entry->target_section->output_section == NULL
204 && info->non_contiguous_regions)
205- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
206+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
207 "Retry without --enable-non-contiguous-regions.\n"),
208 stub_entry->target_section);
209
210diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c
211index 912f7533..fd9f18dd 100644
212--- a/bfd/elf32-avr.c
213+++ b/bfd/elf32-avr.c
214@@ -2485,7 +2485,7 @@ elf32_avr_relax_section (bfd *abfd,
215
216 if (bfd_link_relocatable (link_info))
217 link_info->callbacks->fatal
218- (_("%P: --relax and -r may not be used together\n"));
219+ (_("%P%F: --relax and -r may not be used together\n"));
220
221 htab = avr_link_hash_table (link_info);
222 if (htab == NULL)
223diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c
224index edff65a9..3ec0622e 100644
225--- a/bfd/elf32-csky.c
226+++ b/bfd/elf32-csky.c
227@@ -3728,7 +3728,7 @@ csky_build_one_stub (struct bfd_hash_entry *gen_entry,
228 section. The user should fix his linker script. */
229 if (stub_entry->target_section->output_section == NULL
230 && info->non_contiguous_regions)
231- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
232+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
233 "Retry without --enable-non-contiguous-regions.\n"),
234 stub_entry->target_section);
235
236diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
237index 245db7c2..cac2663e 100644
238--- a/bfd/elf32-frv.c
239+++ b/bfd/elf32-frv.c
240@@ -5618,7 +5618,7 @@ elf32_frvfdpic_relax_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
241
242 if (bfd_link_relocatable (info))
243 info->callbacks->fatal
244- (_("%P: --relax and -r may not be used together\n"));
245+ (_("%P%F: --relax and -r may not be used together\n"));
246
247 /* If we return early, we didn't change anything. */
248 *again = false;
249diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
250index f1e67a06..0d0682de 100644
251--- a/bfd/elf32-hppa.c
252+++ b/bfd/elf32-hppa.c
253@@ -729,7 +729,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
254 section. The user should fix his linker script. */
255 if (hsh->target_section->output_section == NULL
256 && info->non_contiguous_regions)
257- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
258+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output "
259 "section. Retry without "
260 "--enable-non-contiguous-regions.\n"),
261 hsh->target_section);
262@@ -758,7 +758,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
263 section. The user should fix his linker script. */
264 if (hsh->target_section->output_section == NULL
265 && info->non_contiguous_regions)
266- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
267+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output "
268 "section. Retry without "
269 "--enable-non-contiguous-regions.\n"),
270 hsh->target_section);
271@@ -839,7 +839,7 @@ hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
272 section. The user should fix his linker script. */
273 if (hsh->target_section->output_section == NULL
274 && info->non_contiguous_regions)
275- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output "
276+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output "
277 "section. Retry without "
278 "--enable-non-contiguous-regions.\n"),
279 hsh->target_section);
280diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
281index 1637e39f..42b96134 100644
282--- a/bfd/elf32-i386.c
283+++ b/bfd/elf32-i386.c
284@@ -4093,7 +4093,7 @@ elf_i386_finish_dynamic_sections (bfd *output_bfd,
285 if (bfd_is_abs_section (htab->elf.splt->output_section))
286 {
287 info->callbacks->fatal
288- (_("%P: discarded output section: `%pA'\n"),
289+ (_("%F%P: discarded output section: `%pA'\n"),
290 htab->elf.splt);
291 return false;
292 }
293diff --git a/bfd/elf32-m68hc11.c b/bfd/elf32-m68hc11.c
294index 6f705718..4b127ac7 100644
295--- a/bfd/elf32-m68hc11.c
296+++ b/bfd/elf32-m68hc11.c
297@@ -419,7 +419,7 @@ m68hc11_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
298 section. The user should fix his linker script. */
299 if (stub_entry->target_section->output_section == NULL
300 && info->non_contiguous_regions)
301- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
302+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
303 "Retry without --enable-non-contiguous-regions.\n"),
304 stub_entry->target_section);
305
306diff --git a/bfd/elf32-m68hc12.c b/bfd/elf32-m68hc12.c
307index bdfb9ca5..9a2f4638 100644
308--- a/bfd/elf32-m68hc12.c
309+++ b/bfd/elf32-m68hc12.c
310@@ -539,7 +539,7 @@ m68hc12_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
311 section. The user should fix his linker script. */
312 if (stub_entry->target_section->output_section == NULL
313 && info->non_contiguous_regions)
314- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
315+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
316 "Retry without --enable-non-contiguous-regions.\n"),
317 stub_entry->target_section);
318
319diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c
320index 49f93cc7..94be520e 100644
321--- a/bfd/elf32-metag.c
322+++ b/bfd/elf32-metag.c
323@@ -3342,7 +3342,7 @@ metag_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
324 section. The user should fix his linker script. */
325 if (hsh->target_section->output_section == NULL
326 && info->non_contiguous_regions)
327- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
328+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
329 "Retry without --enable-non-contiguous-regions.\n"),
330 hsh->target_section);
331
332diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
333index dd5d5fbe..c535b1f1 100644
334--- a/bfd/elf32-spu.c
335+++ b/bfd/elf32-spu.c
336@@ -4689,7 +4689,7 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
337 file_err:
338 bfd_set_error (bfd_error_system_call);
339 err_exit:
340- info->callbacks->fatal (_("%P: auto overlay error: %E\n"));
341+ info->callbacks->fatal (_("%F%P: auto overlay error: %E\n"));
342 }
343
344 /* Provide an estimate of total stack required. */
345@@ -4742,7 +4742,7 @@ spu_elf_final_link (bfd *output_bfd, struct bfd_link_info *info)
346 info->callbacks->einfo (_("%X%P: stack/lrlive analysis error: %E\n"));
347
348 if (!spu_elf_build_stubs (info))
349- info->callbacks->fatal (_("%P: can not build overlay stubs: %E\n"));
350+ info->callbacks->fatal (_("%F%P: can not build overlay stubs: %E\n"));
351
352 return bfd_elf_final_link (output_bfd, info);
353 }
354diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c
355index b1eaaac0..3c29e0d6 100644
356--- a/bfd/elf64-ia64-vms.c
357+++ b/bfd/elf64-ia64-vms.c
358@@ -362,7 +362,7 @@ elf64_ia64_relax_section (bfd *abfd, asection *sec,
359
360 if (bfd_link_relocatable (link_info))
361 link_info->callbacks->fatal
362- (_("%P: --relax and -r may not be used together\n"));
363+ (_("%P%F: --relax and -r may not be used together\n"));
364
365 /* Don't even try to relax for non-ELF outputs. */
366 if (!is_elf_hash_table (link_info->hash))
367diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
368index 7b798732..68d681a5 100644
369--- a/bfd/elf64-ppc.c
370+++ b/bfd/elf64-ppc.c
371@@ -12289,7 +12289,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
372 if (stub_entry->target_section != NULL
373 && stub_entry->target_section->output_section == NULL
374 && info->non_contiguous_regions)
375- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
376+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
377 "Retry without --enable-non-contiguous-regions.\n"),
378 stub_entry->target_section);
379
380@@ -12297,7 +12297,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
381 if (stub_entry->group->stub_sec != NULL
382 && stub_entry->group->stub_sec->output_section == NULL
383 && info->non_contiguous_regions)
384- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
385+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
386 "Retry without --enable-non-contiguous-regions.\n"),
387 stub_entry->group->stub_sec);
388
389diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
390index a22d57d7..41341cd8 100644
391--- a/bfd/elf64-x86-64.c
392+++ b/bfd/elf64-x86-64.c
393@@ -3707,7 +3707,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
394 {
395 corrupt_input:
396 info->callbacks->fatal
397- (_("%P: corrupt input: %pB\n"),
398+ (_("%F%P: corrupt input: %pB\n"),
399 input_bfd);
400 return false;
401 }
402@@ -4679,7 +4679,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
403 /* Check PC-relative offset overflow in PLT entry. */
404 if ((plt_got_pcrel_offset + 0x80000000) > 0xffffffff)
405 /* xgettext:c-format */
406- info->callbacks->fatal (_("%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
407+ info->callbacks->fatal (_("%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
408 output_bfd, h->root.root.string);
409
410 bfd_put_32 (output_bfd, plt_got_pcrel_offset,
411@@ -4752,7 +4752,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
412 will overflow first. */
413 if (plt0_offset > 0x80000000)
414 /* xgettext:c-format */
415- info->callbacks->fatal (_("%pB: branch displacement overflow in PLT entry for `%s'\n"),
416+ info->callbacks->fatal (_("%F%pB: branch displacement overflow in PLT entry for `%s'\n"),
417 output_bfd, h->root.root.string);
418 bfd_put_32 (output_bfd, - plt0_offset,
419 (plt->contents + h->plt.offset
420@@ -4805,7 +4805,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
421 if ((got_after_plt && got_pcrel_offset < 0)
422 || (!got_after_plt && got_pcrel_offset > 0))
423 /* xgettext:c-format */
424- info->callbacks->fatal (_("%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
425+ info->callbacks->fatal (_("%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
426 output_bfd, h->root.root.string);
427
428 bfd_put_32 (output_bfd, got_pcrel_offset,
429@@ -5093,7 +5093,7 @@ elf_x86_64_finish_dynamic_sections (bfd *output_bfd,
430 if (bfd_is_abs_section (htab->elf.splt->output_section))
431 {
432 info->callbacks->fatal
433- (_("%P: discarded output section: `%pA'\n"),
434+ (_("%F%P: discarded output section: `%pA'\n"),
435 htab->elf.splt);
436 return false;
437 }
438diff --git a/bfd/elflink.c b/bfd/elflink.c
439index dba176cc..0c3ea0a3 100644
440--- a/bfd/elflink.c
441+++ b/bfd/elflink.c
442@@ -12892,7 +12892,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
443 && bed->finish_relative_relocs
444 && !bed->finish_relative_relocs (info))
445 info->callbacks->fatal
446- (_("%P: %pB: failed to finish relative relocations\n"), abfd);
447+ (_("%F%P: %pB: failed to finish relative relocations\n"), abfd);
448
449 /* Since ELF permits relocations to be against local symbols, we
450 must have the local symbols available when we do the relocations.
451@@ -14087,7 +14087,7 @@ _bfd_elf_gc_mark_extra_sections (struct bfd_link_info *info,
452 else if (strcmp (bfd_section_name (isec),
453 "__patchable_function_entries") == 0
454 && elf_linked_to_section (isec) == NULL)
455- info->callbacks->fatal (_("%P: %pB(%pA): error: "
456+ info->callbacks->fatal (_("%F%P: %pB(%pA): error: "
457 "need linked-to section "
458 "for --gc-sections\n"),
459 isec->owner, isec);
460@@ -15264,7 +15264,7 @@ _bfd_elf_section_already_linked (bfd *abfd,
461
462 /* This is the first section with this name. Record it. */
463 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
464- info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
465+ info->callbacks->fatal (_("%F%P: already_linked_table: %E\n"));
466 return sec->output_section == bfd_abs_section_ptr;
467 }
468
469diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
470index 0f454d23..d7a85ef0 100644
471--- a/bfd/elfnn-aarch64.c
472+++ b/bfd/elfnn-aarch64.c
473@@ -3272,7 +3272,7 @@ aarch64_build_one_stub (struct bfd_hash_entry *gen_entry,
474 section. The user should fix his linker script. */
475 if (stub_entry->target_section->output_section == NULL
476 && info->non_contiguous_regions)
477- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
478+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
479 "Retry without "
480 "--enable-non-contiguous-regions.\n"),
481 stub_entry->target_section);
482@@ -9010,7 +9010,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
483 {
484 info->callbacks->fatal
485 /* xgettext:c-format */
486- (_ ("%P: %pB: copy relocation against non-copyable "
487+ (_ ("%F%P: %pB: copy relocation against non-copyable "
488 "protected symbol `%s'\n"),
489 p->sec->owner, h->root.root.string);
490 return false;
491diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c
492index 41d9e6fe..8d576c81 100644
493--- a/bfd/elfnn-ia64.c
494+++ b/bfd/elfnn-ia64.c
495@@ -362,7 +362,7 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
496
497 if (bfd_link_relocatable (link_info))
498 link_info->callbacks->fatal
499- (_("%P: --relax and -r may not be used together\n"));
500+ (_("%P%F: --relax and -r may not be used together\n"));
501
502 /* Don't even try to relax for non-ELF outputs. */
503 if (!is_elf_hash_table (link_info->hash))
504diff --git a/bfd/elfnn-kvx.c b/bfd/elfnn-kvx.c
505index b752891b..9bbbc929 100644
506--- a/bfd/elfnn-kvx.c
507+++ b/bfd/elfnn-kvx.c
508@@ -927,7 +927,7 @@ kvx_build_one_stub (struct bfd_hash_entry *gen_entry,
509 section. The user should fix his linker script. */
510 if (stub_entry->target_section->output_section == NULL
511 && info->non_contiguous_regions)
512- info->callbacks->fatal (_("%P: Could not assign '%pA' to an output section. "
513+ info->callbacks->fatal (_("%F%P: Could not assign '%pA' to an output section. "
514 "Retry without "
515 "--enable-non-contiguous-regions.\n"),
516 stub_entry->target_section);
517diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c
518index a8c4226d..12ee56a9 100644
519--- a/bfd/elfnn-loongarch.c
520+++ b/bfd/elfnn-loongarch.c
521@@ -1447,7 +1447,7 @@ local_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
522 {
523 info->callbacks->fatal
524 /* xgettext:c-format. */
525- (_("%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
526+ (_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
527 "equality in `%pB' can not be used when making an "
528 "executable; recompile with -fPIE and relink with -pie\n"),
529 h->root.root.string,
530diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c
531index 161c8a52..2aa7dd54 100644
532--- a/bfd/elfxx-aarch64.c
533+++ b/bfd/elfxx-aarch64.c
534@@ -755,11 +755,11 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info,
535 | SEC_DATA));
536 if (sec == NULL)
537 info->callbacks->fatal (
538- _("%P: failed to create GNU property section\n"));
539+ _("%F%P: failed to create GNU property section\n"));
540
541 align = (bfd_get_mach (ebfd) & bfd_mach_aarch64_ilp32) ? 2 : 3;
542 if (!bfd_set_section_alignment (sec, align))
543- info->callbacks->fatal (_("%pA: failed to align section\n"),
544+ info->callbacks->fatal (_("%F%pA: failed to align section\n"),
545 sec);
546
547 elf_section_type (sec) = SHT_NOTE;
548diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
549index 95b1928d..76057d3b 100644
550--- a/bfd/elfxx-sparc.c
551+++ b/bfd/elfxx-sparc.c
552@@ -2681,7 +2681,7 @@ _bfd_sparc_elf_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
553 {
554 if (bfd_link_relocatable (link_info))
555 link_info->callbacks->fatal
556- (_("%P: --relax and -r may not be used together\n"));
557+ (_("%P%F: --relax and -r may not be used together\n"));
558
559 *again = false;
560 sec_do_relax (section) = 1;
561diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
562index 606c8905..803d6a54 100644
563--- a/bfd/elfxx-x86.c
564+++ b/bfd/elfxx-x86.c
565@@ -533,7 +533,7 @@ elf_x86_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
566 {
567 info->callbacks->fatal
568 /* xgettext:c-format */
569- (_("%P: %pB: copy relocation against non-copyable "
570+ (_("%F%P: %pB: copy relocation against non-copyable "
571 "protected symbol `%s' in %pB\n"),
572 p->sec->owner, h->root.root.string,
573 h->root.u.def.section->owner);
574@@ -1032,7 +1032,7 @@ elf_x86_relative_reloc_record_add
575 {
576 info->callbacks->fatal
577 /* xgettext:c-format */
578- (_("%P: %pB: failed to allocate relative reloc record\n"),
579+ (_("%F%P: %pB: failed to allocate relative reloc record\n"),
580 info->output_bfd);
581 return false;
582 }
583@@ -1390,7 +1390,7 @@ elf64_dt_relr_bitmap_add
584 {
585 info->callbacks->fatal
586 /* xgettext:c-format */
587- (_("%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"),
588+ (_("%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"),
589 info->output_bfd);
590 }
591
592@@ -1426,7 +1426,7 @@ elf32_dt_relr_bitmap_add
593 {
594 info->callbacks->fatal
595 /* xgettext:c-format */
596- (_("%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"),
597+ (_("%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"),
598 info->output_bfd);
599 }
600
601@@ -1563,7 +1563,7 @@ elf_x86_size_or_finish_relative_reloc
602 if (!bfd_malloc_and_get_section (sec->owner,
603 sec,
604 &contents))
605- info->callbacks->einfo
606+ info->callbacks->fatal
607 /* xgettext:c-format */
608 (_("%F%P: %pB: failed to allocate memory for section `%pA'\n"),
609 info->output_bfd, sec);
610@@ -1752,7 +1752,7 @@ elf_x86_compute_dl_relr_bitmap
611 else
612 info->callbacks->fatal
613 /* xgettext:c-format */
614- (_("%P: %pB: size of compact relative reloc section is "
615+ (_("%F%P: %pB: size of compact relative reloc section is "
616 "changed: new (%lu) != old (%lu)\n"),
617 info->output_bfd, htab->dt_relr_bitmap.count,
618 dt_relr_bitmap_count);
619@@ -1774,7 +1774,7 @@ elf_x86_write_dl_relr_bitmap (struct bfd_link_info *info,
620 if (contents == NULL)
621 info->callbacks->fatal
622 /* xgettext:c-format */
623- (_("%P: %pB: failed to allocate compact relative reloc section\n"),
624+ (_("%F%P: %pB: failed to allocate compact relative reloc section\n"),
625 info->output_bfd);
626
627 /* Cache the section contents for elf_link_input_bfd. */
628@@ -2221,7 +2221,7 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section,
629 sym, NULL);
630 info->callbacks->fatal
631 /* xgettext:c-format */
632- (_("%P: %pB: relocation %s against absolute symbol "
633+ (_("%F%P: %pB: relocation %s against absolute symbol "
634 "`%s' in section `%pA' is disallowed\n"),
635 input_section->owner, internal_reloc.howto->name, name,
636 input_section);
637@@ -3431,7 +3431,7 @@ _bfd_x86_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
638 {
639 info->callbacks->fatal
640 /* xgettext:c-format */
641- (_("%P: %pB: copy relocation against non-copyable "
642+ (_("%F%P: %pB: copy relocation against non-copyable "
643 "protected symbol `%s' in %pB\n"),
644 p->sec->owner, h->root.root.string,
645 h->root.u.def.section->owner);
646@@ -4138,12 +4138,12 @@ _bfd_x86_elf_link_setup_gnu_properties
647 | SEC_HAS_CONTENTS
648 | SEC_DATA));
649 if (sec == NULL)
650- info->callbacks->fatal (_("%P: failed to create GNU property section\n"));
651+ info->callbacks->fatal (_("%F%P: failed to create GNU property section\n"));
652
653 if (!bfd_set_section_alignment (sec, class_align))
654 {
655 error_alignment:
656- info->callbacks->fatal (_("%pA: failed to align section\n"),
657+ info->callbacks->fatal (_("%F%pA: failed to align section\n"),
658 sec);
659 }
660
661@@ -4404,7 +4404,7 @@ _bfd_x86_elf_link_setup_gnu_properties
662 && !elf_vxworks_create_dynamic_sections (dynobj, info,
663 &htab->srelplt2))
664 {
665- info->callbacks->fatal (_("%P: failed to create VxWorks dynamic sections\n"));
666+ info->callbacks->fatal (_("%F%P: failed to create VxWorks dynamic sections\n"));
667 return pbfd;
668 }
669
670@@ -4413,7 +4413,7 @@ _bfd_x86_elf_link_setup_gnu_properties
671 don't need to do it in check_relocs. */
672 if (htab->elf.sgot == NULL
673 && !_bfd_elf_create_got_section (dynobj, info))
674- info->callbacks->fatal (_("%P: failed to create GOT sections\n"));
675+ info->callbacks->fatal (_("%F%P: failed to create GOT sections\n"));
676
677 got_align = (bed->target_id == X86_64_ELF_DATA) ? 3 : 2;
678
679@@ -4431,7 +4431,7 @@ _bfd_x86_elf_link_setup_gnu_properties
680 /* Create the ifunc sections here so that check_relocs can be
681 simplified. */
682 if (!_bfd_elf_create_ifunc_sections (dynobj, info))
683- info->callbacks->fatal (_("%P: failed to create ifunc sections\n"));
684+ info->callbacks->fatal (_("%F%P: failed to create ifunc sections\n"));
685
686 plt_alignment = bfd_log2 (htab->plt.plt_entry_size);
687
688@@ -4468,7 +4468,7 @@ _bfd_x86_elf_link_setup_gnu_properties
689 ".plt.got",
690 pltflags);
691 if (sec == NULL)
692- info->callbacks->fatal (_("%P: failed to create GOT PLT section\n"));
693+ info->callbacks->fatal (_("%F%P: failed to create GOT PLT section\n"));
694
695 if (!bfd_set_section_alignment (sec, non_lazy_plt_alignment))
696 goto error_alignment;
697@@ -4487,7 +4487,7 @@ _bfd_x86_elf_link_setup_gnu_properties
698 ".plt.sec",
699 pltflags);
700 if (sec == NULL)
701- info->callbacks->fatal (_("%P: failed to create IBT-enabled PLT section\n"));
702+ info->callbacks->fatal (_("%F%P: failed to create IBT-enabled PLT section\n"));
703
704 if (!bfd_set_section_alignment (sec, plt_alignment))
705 goto error_alignment;
706@@ -4507,7 +4507,7 @@ _bfd_x86_elf_link_setup_gnu_properties
707 ".eh_frame",
708 flags);
709 if (sec == NULL)
710- info->callbacks->fatal (_("%P: failed to create PLT .eh_frame section\n"));
711+ info->callbacks->fatal (_("%F%P: failed to create PLT .eh_frame section\n"));
712
713 if (!bfd_set_section_alignment (sec, class_align))
714 goto error_alignment;
715@@ -4520,7 +4520,7 @@ _bfd_x86_elf_link_setup_gnu_properties
716 ".eh_frame",
717 flags);
718 if (sec == NULL)
719- info->callbacks->fatal (_("%P: failed to create GOT PLT .eh_frame section\n"));
720+ info->callbacks->fatal (_("%F%P: failed to create GOT PLT .eh_frame section\n"));
721
722 if (!bfd_set_section_alignment (sec, class_align))
723 goto error_alignment;
724@@ -4534,7 +4534,7 @@ _bfd_x86_elf_link_setup_gnu_properties
725 ".eh_frame",
726 flags);
727 if (sec == NULL)
728- info->callbacks->fatal (_("%P: failed to create the second PLT .eh_frame section\n"));
729+ info->callbacks->fatal (_("%F%P: failed to create the second PLT .eh_frame section\n"));
730
731 if (!bfd_set_section_alignment (sec, class_align))
732 goto error_alignment;
733@@ -4554,7 +4554,7 @@ _bfd_x86_elf_link_setup_gnu_properties
734 ".sframe",
735 flags);
736 if (sec == NULL)
737- info->callbacks->fatal (_("%P: failed to create PLT .sframe section\n"));
738+ info->callbacks->fatal (_("%F%P: failed to create PLT .sframe section\n"));
739
740 // FIXME check this
741 // if (!bfd_set_section_alignment (sec, class_align))
742@@ -4569,7 +4569,7 @@ _bfd_x86_elf_link_setup_gnu_properties
743 ".sframe",
744 flags);
745 if (sec == NULL)
746- info->callbacks->fatal (_("%P: failed to create second PLT .sframe section\n"));
747+ info->callbacks->fatal (_("%F%P: failed to create second PLT .sframe section\n"));
748
749 htab->plt_second_sframe = sec;
750 }
751diff --git a/bfd/linker.c b/bfd/linker.c
752index 5b912221..7940e587 100644
753--- a/bfd/linker.c
754+++ b/bfd/linker.c
755@@ -2982,7 +2982,7 @@ _bfd_generic_section_already_linked (bfd *abfd ATTRIBUTE_UNUSED,
756
757 /* This is the first section with this name. Record it. */
758 if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
759- info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
760+ info->callbacks->fatal (_("%F%P: already_linked_table: %E\n"));
761 return false;
762 }
763
764diff --git a/bfd/reloc.c b/bfd/reloc.c
765index 1fee86f1..433f8e74 100644
766--- a/bfd/reloc.c
767+++ b/bfd/reloc.c
768@@ -8466,7 +8466,7 @@ bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
769 {
770 if (bfd_link_relocatable (link_info))
771 link_info->callbacks->fatal
772- (_("%P: --relax and -r may not be used together\n"));
773+ (_("%P%F: --relax and -r may not be used together\n"));
774
775 *again = false;
776 return true;
777diff --git a/bfd/reloc16.c b/bfd/reloc16.c
778index a16d6b20..b45ac263 100644
779--- a/bfd/reloc16.c
780+++ b/bfd/reloc16.c
781@@ -152,7 +152,7 @@ bfd_coff_reloc16_relax_section (bfd *abfd,
782
783 if (bfd_link_relocatable (link_info))
784 link_info->callbacks->fatal
785- (_("%P: --relax and -r may not be used together\n"));
786+ (_("%P%F: --relax and -r may not be used together\n"));
787
788 /* We only do global relaxation once. It is not safe to do it multiple
789 times (see discussion of the "shrinks" array below). */
790diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
791index 9b01cc37..e0165d20 100644
792--- a/bfd/xcofflink.c
793+++ b/bfd/xcofflink.c
794@@ -4681,7 +4681,7 @@ xcoff_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
795 if (hstub->target_section != NULL
796 && hstub->target_section->output_section == NULL
797 && info->non_contiguous_regions)
798- info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
799+ info->callbacks->fatal (_("%F%P: Could not assign `%pA' to an output section. "
800 "Retry without --enable-non-contiguous-regions.\n"),
801 hstub->target_section);
802
803diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh
804index 7dd6dfb1..450d05ab 100644
805--- a/ld/emulparams/call_nop.sh
806+++ b/ld/emulparams/call_nop.sh
807@@ -20,7 +20,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP='
808 char *end;
809 params.call_nop_byte = strtoul (optarg + 16 , &end, 0);
810 if (*end)
811- fatal (_("%P: invalid number for -z call-nop=prefix-: %s\n"),
812+ fatal (_("%F%P: invalid number for -z call-nop=prefix-: %s\n"),
813 optarg + 16);
814 params.call_nop_as_suffix = false;
815 }
816@@ -29,12 +29,12 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP='
817 char *end;
818 params.call_nop_byte = strtoul (optarg + 16, &end, 0);
819 if (*end)
820- fatal (_("%P: invalid number for -z call-nop=suffix-: %s\n"),
821+ fatal (_("%F%P: invalid number for -z call-nop=suffix-: %s\n"),
822 optarg + 16);
823 params.call_nop_as_suffix = true;
824 }
825 else
826- fatal (_("%P: unsupported option: -z %s\n"), optarg);
827+ fatal (_("%F%P: unsupported option: -z %s\n"), optarg);
828 }
829 '
830
831diff --git a/ld/emulparams/cet.sh b/ld/emulparams/cet.sh
832index e463441d..824bcf0e 100644
833--- a/ld/emulparams/cet.sh
834+++ b/ld/emulparams/cet.sh
835@@ -29,7 +29,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CET='
836 | prop_report_ibt
837 | prop_report_shstk);
838 else
839- fatal (_("%P: invalid option for -z cet-report=: %s\n"),
840+ fatal (_("%F%P: invalid option for -z cet-report=: %s\n"),
841 optarg + 11);
842 }
843 '
844diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh
845index 275a796f..99261ca8 100644
846--- a/ld/emulparams/elf32mcore.sh
847+++ b/ld/emulparams/elf32mcore.sh
848@@ -46,6 +46,6 @@ PARSE_AND_LIST_ARGS_CASES='
849 case OPTION_BASE_FILE:
850 link_info.base_file = fopen (optarg, FOPEN_WB);
851 if (link_info.base_file == NULL)
852- fatal (_("%P: cannot open base file %s\n"), optarg);
853+ fatal (_("%F%P: cannot open base file %s\n"), optarg);
854 break;
855 '
856diff --git a/ld/emulparams/x86-64-lam.sh b/ld/emulparams/x86-64-lam.sh
857index 6e629ebb..8675a01f 100644
858--- a/ld/emulparams/x86-64-lam.sh
859+++ b/ld/emulparams/x86-64-lam.sh
860@@ -25,7 +25,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
861 else if (strcmp (optarg + 15, "error") == 0)
862 params.lam_u48_report = prop_report_error;
863 else
864- fatal (_("%P: invalid option for -z lam-u48-report=: %s\n"),
865+ fatal (_("%F%P: invalid option for -z lam-u48-report=: %s\n"),
866 optarg + 15);
867 }
868 else if (strcmp (optarg, "lam-u57") == 0)
869@@ -39,7 +39,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
870 else if (strcmp (optarg + 15, "error") == 0)
871 params.lam_u57_report = prop_report_error;
872 else
873- fatal (_("%P: invalid option for -z lam-u57-report=: %s\n"),
874+ fatal (_("%F%P: invalid option for -z lam-u57-report=: %s\n"),
875 optarg + 15);
876 }
877 else if (strncmp (optarg, "lam-report=", 11) == 0)
878@@ -60,7 +60,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM='
879 params.lam_u57_report = prop_report_error;
880 }
881 else
882- fatal (_("%P: invalid option for -z lam-report=: %s\n"),
883+ fatal (_("%F%P: invalid option for -z lam-report=: %s\n"),
884 optarg + 11);
885 }
886 '
887diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh
888index 7e27cf1e..3002a1f7 100644
889--- a/ld/emulparams/x86-64-level.sh
890+++ b/ld/emulparams/x86-64-level.sh
891@@ -10,7 +10,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL='
892 char *end;
893 unsigned int level = strtoul (optarg + 8 , &end, 10);
894 if (*end != '\0' || level < 2 || level > 4)
895- fatal (_("%P: invalid x86-64 ISA level: %s\n"), optarg);
896+ fatal (_("%F%P: invalid x86-64 ISA level: %s\n"), optarg);
897 params.isa_level = level;
898 }
899 '
900diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
901index a6637718..1cdd433d 100644
902--- a/ld/emultempl/aarch64elf.em
903+++ b/ld/emultempl/aarch64elf.em
904@@ -316,7 +316,7 @@ aarch64_elf_create_output_section_statements (void)
905 These will only be created if the output format is an arm format,
906 hence we do not support linking and changing output formats at the
907 same time. Use a link followed by objcopy to change output formats. */
908- fatal (_("%P: error: cannot change output format "
909+ fatal (_("%F%P: error: cannot change output format "
910 "whilst linking %s binaries\n"), "AArch64");
911 return;
912 }
913@@ -342,7 +342,7 @@ aarch64_elf_create_output_section_statements (void)
914 bfd_get_arch (link_info.output_bfd),
915 bfd_get_mach (link_info.output_bfd)))
916 {
917- fatal (_("%P: can not create BFD: %E\n"));
918+ fatal (_("%F%P: can not create BFD: %E\n"));
919 return;
920 }
921
922@@ -468,7 +468,7 @@ PARSE_AND_LIST_ARGS_CASES='
923
924 group_size = bfd_scan_vma (optarg, &end, 0);
925 if (*end)
926- fatal (_("%P: invalid number `%s'\''\n"), optarg);
927+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
928 }
929 break;
930 '
931diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em
932index 29acdbc9..85bd45fa 100644
933--- a/ld/emultempl/aix.em
934+++ b/ld/emultempl/aix.em
935@@ -335,7 +335,7 @@ read_file_list (const char *filename)
936 f = fopen (filename, FOPEN_RT);
937 if (f == NULL)
938 {
939- fatal (_("%P: cannot open %s\n"), filename);
940+ fatal (_("%F%P: cannot open %s\n"), filename);
941 return;
942 }
943 if (fseek (f, 0L, SEEK_END) == -1)
944@@ -383,7 +383,7 @@ read_file_list (const char *filename)
945
946 error:
947 fclose (f);
948- fatal (_("%P: cannot read %s\n"), optarg);
949+ fatal (_("%F%P: cannot read %s\n"), optarg);
950 }
951
952 static bool
953@@ -734,7 +734,7 @@ gld${EMULATION_NAME}_after_open (void)
954 size = (p->count + 2) * 4;
955 if (!bfd_xcoff_link_record_set (link_info.output_bfd, &link_info,
956 p->h, size))
957- fatal (_("%P: bfd_xcoff_link_record_set failed: %E\n"));
958+ fatal (_("%F%P: bfd_xcoff_link_record_set failed: %E\n"));
959 }
960 }
961
962@@ -764,9 +764,9 @@ gld${EMULATION_NAME}_before_allocation (void)
963
964 h = bfd_link_hash_lookup (link_info.hash, el->name, false, false, false);
965 if (h == NULL)
966- fatal (_("%P: bfd_link_hash_lookup of export symbol failed: %E\n"));
967+ fatal (_("%F%P: bfd_link_hash_lookup of export symbol failed: %E\n"));
968 if (!bfd_xcoff_export_symbol (link_info.output_bfd, &link_info, h))
969- fatal (_("%P: bfd_xcoff_export_symbol failed: %E\n"));
970+ fatal (_("%F%P: bfd_xcoff_export_symbol failed: %E\n"));
971 }
972
973 /* Track down all relocations called for by the linker script (these
974@@ -849,7 +849,7 @@ gld${EMULATION_NAME}_before_allocation (void)
975 (link_info.output_bfd, &link_info, libpath, entry_symbol.name,
976 file_align, maxstack, maxdata, gc && !unix_ld,
977 modtype, textro, flags, special_sections, rtld))
978- fatal (_("%P: failed to set dynamic section sizes: %E\n"));
979+ fatal (_("%F%P: failed to set dynamic section sizes: %E\n"));
980
981 /* Look through the special sections, and put them in the right
982 place in the link ordering. This is especially magic. */
983@@ -871,8 +871,8 @@ gld${EMULATION_NAME}_before_allocation (void)
984 is = NULL;
985 os = lang_output_section_get (sec->output_section);
986 if (os == NULL)
987- fatal (_("%P: can't find output section %pA\n"),
988- sec->output_section);
989+ fatal (_("%F%P: can't find output section %s\n"),
990+ sec->output_section->name);
991
992 for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->header.next)
993 {
994@@ -908,7 +908,8 @@ gld${EMULATION_NAME}_before_allocation (void)
995
996 if (is == NULL)
997 {
998- fatal (_("%P: can't find %pA in output section\n"), sec);
999+ fatal (_("%F%P: can't find %s in output section\n"),
1000+ bfd_section_name (sec));
1001 }
1002
1003 /* Now figure out where the section should go. */
1004@@ -1161,7 +1162,7 @@ gld${EMULATION_NAME}_after_allocation (void)
1005
1006 /* Now that everything is in place, finalize the dynamic sections. */
1007 if (!bfd_xcoff_build_dynamic_sections (link_info.output_bfd, &link_info))
1008- fatal (_("%P: failed to layout dynamic sections: %E\n"));
1009+ fatal (_("%F%P: failed to layout dynamic sections: %E\n"));
1010
1011 if (!bfd_link_relocatable (&link_info))
1012 {
1013@@ -1312,7 +1313,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
1014 if (f == NULL)
1015 {
1016 bfd_set_error (bfd_error_system_call);
1017- fatal ("%P: %s: %E\n", filename);
1018+ fatal ("%F%P: %s: %E\n", filename);
1019 return;
1020 }
1021
1022@@ -1374,7 +1375,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
1023 obstack_free (o, obstack_base (o));
1024 }
1025 else if (*s == '(')
1026- fatal (_("%P:%s:%d: #! ([member]) is not supported "
1027+ fatal (_("%F%P:%s:%d: #! ([member]) is not supported "
1028 "in import files\n"),
1029 filename, lineno);
1030 else
1031@@ -1391,7 +1392,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import)
1032 *s = '\0';
1033 if (!bfd_xcoff_split_import_path (link_info.output_bfd,
1034 start, &imppath, &impfile))
1035- fatal (_("%P: could not parse import path: %E\n"));
1036+ fatal (_("%F%P: could not parse import path: %E\n"));
1037 while (ISSPACE (cs))
1038 {
1039 ++s;
1040@@ -1546,10 +1547,10 @@ gld${EMULATION_NAME}_find_relocs (lang_statement_union_type *s)
1041
1042 rs = &s->reloc_statement;
1043 if (rs->name == NULL)
1044- fatal (_("%P: only relocations against symbols are permitted\n"));
1045+ fatal (_("%F%P: only relocations against symbols are permitted\n"));
1046 if (!bfd_xcoff_link_count_reloc (link_info.output_bfd, &link_info,
1047 rs->name))
1048- fatal (_("%P: bfd_xcoff_link_count_reloc failed: %E\n"));
1049+ fatal (_("%F%P: bfd_xcoff_link_count_reloc failed: %E\n"));
1050 }
1051
1052 if (s->header.type == lang_assignment_statement_enum)
1053@@ -1578,7 +1579,7 @@ gld${EMULATION_NAME}_find_exp_assignment (etree_type *exp)
1054 if (!bfd_xcoff_record_link_assignment (link_info.output_bfd,
1055 &link_info,
1056 exp->assign.dst))
1057- fatal (_("%P: failed to record assignment to %s: %E\n"),
1058+ fatal (_("%F%P: failed to record assignment to %s: %E\n"),
1059 exp->assign.dst);
1060 }
1061 gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src);
1062@@ -1673,7 +1674,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
1063 bfd_get_arch (link_info.output_bfd),
1064 bfd_get_mach (link_info.output_bfd)))
1065 {
1066- fatal (_("%P: can not create stub BFD: %E\n"));
1067+ fatal (_("%F%P: can not create stub BFD: %E\n"));
1068 return;
1069 }
1070
1071@@ -1683,7 +1684,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
1072
1073 /* Pass linker params to the back-end. */
1074 if (!bfd_xcoff_link_init (&link_info, &params))
1075- fatal (_("%P: can not init BFD: %E\n"));
1076+ fatal (_("%F%P: can not init BFD: %E\n"));
1077
1078 /* __rtinit */
1079 if (link_info.init_function != NULL
1080@@ -1700,7 +1701,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
1081 bfd_get_arch (link_info.output_bfd),
1082 bfd_get_mach (link_info.output_bfd)))
1083 {
1084- fatal (_("%P: can not create BFD: %E\n"));
1085+ fatal (_("%F%P: can not create BFD: %E\n"));
1086 return;
1087 }
1088
1089@@ -1710,7 +1711,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void)
1090 link_info.fini_function,
1091 rtld))
1092 {
1093- fatal (_("%P: can not create BFD: %E\n"));
1094+ fatal (_("%F%P: can not create BFD: %E\n"));
1095 return;
1096 }
1097
1098diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em
1099index 504fb0cd..4240f4e7 100644
1100--- a/ld/emultempl/armelf.em
1101+++ b/ld/emultempl/armelf.em
1102@@ -521,7 +521,7 @@ arm_elf_create_output_section_statements (void)
1103 These will only be created if the output format is an arm format,
1104 hence we do not support linking and changing output formats at the
1105 same time. Use a link followed by objcopy to change output formats. */
1106- fatal (_("%P: error: cannot change output format "
1107+ fatal (_("%F%P: error: cannot change output format "
1108 "whilst linking %s binaries\n"), "ARM");
1109 return;
1110 }
1111@@ -532,10 +532,10 @@ arm_elf_create_output_section_statements (void)
1112 bfd_get_target (link_info.output_bfd));
1113
1114 if (params.in_implib_bfd == NULL)
1115- fatal (_("%P: %s: can't open: %E\n"), in_implib_filename);
1116+ fatal (_("%F%P: %s: can't open: %E\n"), in_implib_filename);
1117
1118 if (!bfd_check_format (params.in_implib_bfd, bfd_object))
1119- fatal (_("%P: %s: not a relocatable file: %E\n"), in_implib_filename);
1120+ fatal (_("%F%P: %s: not a relocatable file: %E\n"), in_implib_filename);
1121 }
1122
1123 bfd_elf32_arm_set_target_params (link_info.output_bfd, &link_info, &params);
1124@@ -549,7 +549,7 @@ arm_elf_create_output_section_statements (void)
1125 bfd_get_arch (link_info.output_bfd),
1126 bfd_get_mach (link_info.output_bfd)))
1127 {
1128- fatal (_("%P: can not create BFD: %E\n"));
1129+ fatal (_("%F%P: can not create BFD: %E\n"));
1130 return;
1131 }
1132
1133@@ -734,7 +734,7 @@ PARSE_AND_LIST_ARGS_CASES='
1134
1135 group_size = bfd_scan_vma (optarg, &end, 0);
1136 if (*end)
1137- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1138+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1139 }
1140 break;
1141
1142diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em
1143index dd5b57d1..854c57bb 100644
1144--- a/ld/emultempl/avrelf.em
1145+++ b/ld/emultempl/avrelf.em
1146@@ -116,7 +116,7 @@ avr_elf_create_output_section_statements (void)
1147
1148 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_elf_flavour)
1149 {
1150- fatal (_("%P: error: cannot change output format "
1151+ fatal (_("%F%P: error: cannot change output format "
1152 "whilst linking %s binaries\n"), "AVR");
1153 return;
1154 }
1155diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em
1156index 81878b02..e936b4f5 100644
1157--- a/ld/emultempl/beos.em
1158+++ b/ld/emultempl/beos.em
1159@@ -227,7 +227,7 @@ set_pe_subsystem (void)
1160 return;
1161 }
1162 }
1163- fatal (_("%P: invalid subsystem type %s\n"), optarg);
1164+ fatal (_("%F%P: invalid subsystem type %s\n"), optarg);
1165 }
1166
1167
1168@@ -237,7 +237,7 @@ set_pe_value (char *name)
1169 char *end;
1170 set_pe_name (name, strtoul (optarg, &end, 0));
1171 if (end == optarg)
1172- fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
1173+ fatal (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
1174
1175 optarg = end;
1176 }
1177@@ -252,7 +252,7 @@ set_pe_stack_heap (char *resname, char *comname)
1178 set_pe_value (comname);
1179 }
1180 else if (*optarg)
1181- fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
1182+ fatal (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
1183 }
1184
1185
1186@@ -267,7 +267,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1187 case OPTION_BASE_FILE:
1188 link_info.base_file = fopen (optarg, FOPEN_WB);
1189 if (link_info.base_file == NULL)
1190- fatal (_("%P: cannot open base file %s\n"), optarg);
1191+ fatal (_("%F%P: cannot open base file %s\n"), optarg);
1192 break;
1193
1194 /* PE options */
1195@@ -376,7 +376,7 @@ gld${EMULATION_NAME}_after_open (void)
1196 FIXME: This should be done via a function, rather than by
1197 including an internal BFD header. */
1198 if (!obj_pe (link_info.output_bfd))
1199- fatal (_("%P: PE operations on non PE file\n"));
1200+ fatal (_("%F%P: PE operations on non PE file\n"));
1201
1202 pe_data(link_info.output_bfd)->pe_opthdr = pe;
1203 pe_data(link_info.output_bfd)->dll = init[DLLOFF].value;
1204@@ -425,12 +425,12 @@ sort_by_file_name (const void *a, const void *b)
1205
1206 if (!bfd_get_section_contents (sa->owner, sa, &a_sec, (file_ptr) 0,
1207 (bfd_size_type) sizeof (a_sec)))
1208- fatal (_("%P: %pB: can't read contents of section .idata: %E\n"),
1209+ fatal (_("%F%P: %pB: can't read contents of section .idata: %E\n"),
1210 sa->owner);
1211
1212 if (!bfd_get_section_contents (sb->owner, sb, &b_sec, (file_ptr) 0,
1213 (bfd_size_type) sizeof (b_sec)))
1214- fatal (_("%P: %pB: can't read contents of section .idata: %E\n"),
1215+ fatal (_("%F%P: %pB: can't read contents of section .idata: %E\n"),
1216 sb->owner);
1217
1218 i = a_sec < b_sec ? -1 : 0;
1219@@ -662,7 +662,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
1220 /* Everything from the '\$' on gets deleted so don't allow '\$' as the
1221 first character. */
1222 if (*secname == '\$')
1223- fatal (_("%P: section %s has '\$' as first character\n"), secname);
1224+ fatal (_("%F%P: section %s has '\$' as first character\n"), secname);
1225 if (strchr (secname + 1, '\$') == NULL)
1226 return NULL;
1227
1228@@ -692,7 +692,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
1229 }
1230 ps[0] = 0;
1231 if (l == NULL)
1232- fatal (_("%P: *(%s\$) missing from linker script\n"), output_secname);
1233+ fatal (_("%F%P: *(%s\$) missing from linker script\n"), output_secname);
1234
1235 /* Link the input section in and we're done for now.
1236 The sections still have to be sorted, but that has to wait until
1237diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em
1238index 5464edf1..cd24728c 100644
1239--- a/ld/emultempl/cr16elf.em
1240+++ b/ld/emultempl/cr16elf.em
1241@@ -58,7 +58,7 @@ cr16_elf_after_open (void)
1242 COFF and ELF. */
1243 if (bfd_get_flavour (abfd) != bfd_target_coff_flavour
1244 && bfd_get_flavour (abfd) != bfd_target_elf_flavour)
1245- fatal (_("%P: %pB: all input objects must be COFF or ELF "
1246+ fatal (_("%F%P: %pB: all input objects must be COFF or ELF "
1247 "for --embedded-relocs\n"));
1248
1249 datasec = bfd_get_section_by_name (abfd, ".data.rel");
1250@@ -82,7 +82,7 @@ cr16_elf_after_open (void)
1251 | SEC_IN_MEMORY))
1252 || !bfd_set_section_alignment (relsec, 2)
1253 || !bfd_set_section_size (relsec, datasec->reloc_count * 8))
1254- fatal (_("%P: %pB: can not create .emreloc section: %E\n"));
1255+ fatal (_("%F%P: %pB: can not create .emreloc section: %E\n"));
1256 }
1257
1258 /* Double check that all other data sections are empty, as is
1259diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em
1260index 9c91d7ac..b4896c45 100644
1261--- a/ld/emultempl/cskyelf.em
1262+++ b/ld/emultempl/cskyelf.em
1263@@ -151,7 +151,7 @@ csky_elf_create_output_section_statements (void)
1264 bfd_get_arch (link_info.output_bfd),
1265 bfd_get_mach (link_info.output_bfd)))
1266 {
1267- fatal (_("%P: can not create BFD: %E\n"));
1268+ fatal (_("%F%P: can not create BFD: %E\n"));
1269 return;
1270 }
1271
1272@@ -324,7 +324,7 @@ PARSE_AND_LIST_ARGS_CASES='
1273
1274 group_size = bfd_scan_vma (optarg, &end, 0);
1275 if (*end)
1276- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1277+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1278 }
1279 break;
1280 '
1281diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
1282index 5cc38194..fbbff87f 100644
1283--- a/ld/emultempl/elf.em
1284+++ b/ld/emultempl/elf.em
1285@@ -667,12 +667,12 @@ gld${EMULATION_NAME}_handle_option (int optc)
1286 {
1287 #ifndef HAVE_ZSTD
1288 if (config.compress_debug == COMPRESS_DEBUG_ZSTD)
1289- fatal (_("%P: --compress-debug-sections=zstd: ld is not built "
1290+ fatal (_("%F%P: --compress-debug-sections=zstd: ld is not built "
1291 "with zstd support\n"));
1292 #endif
1293 }
1294 if (config.compress_debug == COMPRESS_UNKNOWN)
1295- fatal (_("%P: invalid --compress-debug-sections option: \`%s'\n"),
1296+ fatal (_("%F%P: invalid --compress-debug-sections option: \`%s'\n"),
1297 optarg);
1298 break;
1299 EOF
1300@@ -727,7 +727,7 @@ fragment <<EOF
1301 link_info.emit_gnu_hash = true;
1302 }
1303 else
1304- fatal (_("%P: invalid hash style \`%s'\n"), optarg);
1305+ fatal (_("%F%P: invalid hash style \`%s'\n"), optarg);
1306 break;
1307
1308 EOF
1309@@ -747,7 +747,7 @@ fragment <<EOF
1310 link_info.maxpagesize = strtoul (optarg + 14, &end, 0);
1311 if (*end
1312 || (link_info.maxpagesize & (link_info.maxpagesize - 1)) != 0)
1313- fatal (_("%P: invalid maximum page size \`%s'\n"),
1314+ fatal (_("%F%P: invalid maximum page size \`%s'\n"),
1315 optarg + 14);
1316 link_info.maxpagesize_is_set = true;
1317 }
1318@@ -757,7 +757,7 @@ fragment <<EOF
1319 link_info.commonpagesize = strtoul (optarg + 17, &end, 0);
1320 if (*end
1321 || (link_info.commonpagesize & (link_info.commonpagesize - 1)) != 0)
1322- fatal (_("%P: invalid common page size \`%s'\n"),
1323+ fatal (_("%F%P: invalid common page size \`%s'\n"),
1324 optarg + 17);
1325 link_info.commonpagesize_is_set = true;
1326 }
1327@@ -766,7 +766,7 @@ fragment <<EOF
1328 char *end;
1329 link_info.stacksize = strtoul (optarg + 11, &end, 0);
1330 if (*end || link_info.stacksize < 0)
1331- fatal (_("%P: invalid stack size \`%s'\n"), optarg + 11);
1332+ fatal (_("%F%P: invalid stack size \`%s'\n"), optarg + 11);
1333 if (!link_info.stacksize)
1334 /* Use -1 for explicit no-stack, because zero means
1335 'default'. */
1336@@ -805,7 +805,7 @@ fragment <<EOF
1337 else if (strcmp (optarg, "start-stop-visibility=protected") == 0)
1338 link_info.start_stop_visibility = STV_PROTECTED;
1339 else
1340- fatal (_("%P: invalid visibility in \`-z %s'; "
1341+ fatal (_("%F%P: invalid visibility in \`-z %s'; "
1342 "must be default, internal, hidden, or protected"),
1343 optarg);
1344 }
1345diff --git a/ld/emultempl/hppaelf.em b/ld/emultempl/hppaelf.em
1346index f0284ea3..e8e98a49 100644
1347--- a/ld/emultempl/hppaelf.em
1348+++ b/ld/emultempl/hppaelf.em
1349@@ -82,7 +82,7 @@ hppaelf_create_output_section_statements (void)
1350 bfd_get_arch (link_info.output_bfd),
1351 bfd_get_mach (link_info.output_bfd)))
1352 {
1353- fatal (_("%P: can not create BFD: %E\n"));
1354+ fatal (_("%F%P: can not create BFD: %E\n"));
1355 return;
1356 }
1357
1358@@ -351,7 +351,7 @@ PARSE_AND_LIST_ARGS_CASES='
1359 const char *end;
1360 group_size = bfd_scan_vma (optarg, &end, 0);
1361 if (*end)
1362- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1363+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1364 }
1365 break;
1366 '
1367diff --git a/ld/emultempl/kvxelf.em b/ld/emultempl/kvxelf.em
1368index 1ffbd1db..81713678 100644
1369--- a/ld/emultempl/kvxelf.em
1370+++ b/ld/emultempl/kvxelf.em
1371@@ -36,7 +36,7 @@ EOF
1372 if test x"${EMULATION_NAME}" != x"elf64kvx_linux"; then
1373 fragment <<EOF
1374 if (bfd_link_pie (&link_info))
1375- fatal (_(":%P: -pie not supported\n"));
1376+ fatal (_("%F:%P: -pie not supported\n"));
1377 EOF
1378 fi
1379 fragment <<EOF
1380@@ -299,7 +299,7 @@ kvx_elf_create_output_section_statements (void)
1381 ldlang_add_file (stub_file);
1382
1383 if (!kvx_elf${ELFSIZE}_init_stub_bfd (&link_info, stub_file->the_bfd))
1384- einfo ("%P: can not init BFD: %E\n");
1385+ fatal ("%F%P: can not init BFD: %E\n");
1386 }
1387
1388
1389diff --git a/ld/emultempl/loongarchelf.em b/ld/emultempl/loongarchelf.em
1390index 5a3d7b79..153094b0 100644
1391--- a/ld/emultempl/loongarchelf.em
1392+++ b/ld/emultempl/loongarchelf.em
1393@@ -71,7 +71,7 @@ gld${EMULATION_NAME}_after_allocation (void)
1394 if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd,
1395 &link_info,
1396 NULL))
1397- fatal (_("%P: map sections to segments failed: %E\n"));
1398+ fatal (_("%F%P: map sections to segments failed: %E\n"));
1399 }
1400
1401 /* Adjust program header size and .eh_frame_hdr size before
1402diff --git a/ld/emultempl/m68hc1xelf.em b/ld/emultempl/m68hc1xelf.em
1403index 36f5f068..fe6dd85b 100644
1404--- a/ld/emultempl/m68hc1xelf.em
1405+++ b/ld/emultempl/m68hc1xelf.em
1406@@ -159,7 +159,7 @@ m68hc11elf_create_output_section_statements (void)
1407 bfd_get_arch (link_info.output_bfd),
1408 bfd_get_mach (link_info.output_bfd)))
1409 {
1410- fatal (_("%P: can not create BFD: %E\n"));
1411+ fatal (_("%F%P: can not create BFD: %E\n"));
1412 return;
1413 }
1414
1415diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em
1416index f9a5bec2..e6eed5cc 100644
1417--- a/ld/emultempl/m68kelf.em
1418+++ b/ld/emultempl/m68kelf.em
1419@@ -82,7 +82,7 @@ m68k_elf_after_open (void)
1420 asection *datasec;
1421
1422 if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
1423- fatal (_("%P: %pB: all input objects must be ELF "
1424+ fatal (_("%F%P: %pB: all input objects must be ELF "
1425 "for --embedded-relocs\n"));
1426
1427 datasec = bfd_get_section_by_name (abfd, ".data");
1428@@ -106,7 +106,7 @@ m68k_elf_after_open (void)
1429 if (relsec == NULL
1430 || !bfd_set_section_alignment (relsec, 2)
1431 || !bfd_set_section_size (relsec, datasec->reloc_count * 12))
1432- fatal (_("%P: %pB: can not create .emreloc section: %E\n"));
1433+ fatal (_("%F%P: %pB: can not create .emreloc section: %E\n"));
1434 }
1435
1436 /* Double check that all other data sections are empty, as is
1437diff --git a/ld/emultempl/metagelf.em b/ld/emultempl/metagelf.em
1438index 313d7ed5..95655ad0 100644
1439--- a/ld/emultempl/metagelf.em
1440+++ b/ld/emultempl/metagelf.em
1441@@ -59,7 +59,7 @@ metagelf_create_output_section_statements (void)
1442 bfd_get_arch (link_info.output_bfd),
1443 bfd_get_mach (link_info.output_bfd)))
1444 {
1445- fatal (_("%P: can not create BFD: %E\n"));
1446+ fatal (_("%F%P: can not create BFD: %E\n"));
1447 return;
1448 }
1449
1450@@ -309,7 +309,7 @@ PARSE_AND_LIST_ARGS_CASES='
1451 const char *end;
1452 group_size = bfd_scan_vma (optarg, &end, 0);
1453 if (*end)
1454- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1455+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1456 }
1457 break;
1458 '
1459diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em
1460index 2a22ba49..a4f158b7 100644
1461--- a/ld/emultempl/mipself.em
1462+++ b/ld/emultempl/mipself.em
1463@@ -152,7 +152,7 @@ mips_add_stub_section (const char *stub_sec_name, asection *input_section,
1464 bfd_get_arch (link_info.output_bfd),
1465 bfd_get_mach (link_info.output_bfd)))
1466 {
1467- fatal (_("%P: can not create BFD: %E\n"));
1468+ fatal (_("%F%P: can not create BFD: %E\n"));
1469 return NULL;
1470 }
1471 stub_bfd->flags |= BFD_LINKER_CREATED;
1472diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em
1473index 03186363..c4288d82 100644
1474--- a/ld/emultempl/mmix-elfnmmo.em
1475+++ b/ld/emultempl/mmix-elfnmmo.em
1476@@ -113,7 +113,7 @@ mmix_after_allocation (void)
1477 bfd_set_section_vma (sec, 0);
1478
1479 if (!_bfd_mmix_after_linker_allocation (link_info.output_bfd, &link_info))
1480- fatal (_("%P: can't finalize linker-allocated global registers\n"));
1481+ fatal (_("%F%P: can't finalize linker-allocated global registers\n"));
1482 }
1483 EOF
1484
1485diff --git a/ld/emultempl/nds32elf.em b/ld/emultempl/nds32elf.em
1486index 36260573..8598d0a8 100644
1487--- a/ld/emultempl/nds32elf.em
1488+++ b/ld/emultempl/nds32elf.em
1489@@ -44,7 +44,7 @@ nds32_elf_create_output_section_statements (void)
1490 if (strstr (bfd_get_target (link_info.output_bfd), "nds32") == NULL)
1491 {
1492 /* Check the output target is nds32. */
1493- fatal (_("%P: error: cannot change output format whilst "
1494+ fatal (_("%F%P: error: cannot change output format whilst "
1495 "linking %s binaries\n"), "NDS32");
1496 return;
1497 }
1498@@ -96,7 +96,7 @@ nds32_elf_after_open (void)
1499 && abi_ver != (elf_elfheader (abfd)->e_flags & EF_NDS_ABI))
1500 {
1501 /* Incompatible objects. */
1502- fatal (_("%P: %pB: ABI version of object files mismatched\n"),
1503+ fatal (_("%F%P: %pB: ABI version of object files mismatched\n"),
1504 abfd);
1505 }
1506 }
1507@@ -195,7 +195,7 @@ PARSE_AND_LIST_ARGS_CASES='
1508 {
1509 sym_ld_script = fopen (optarg, FOPEN_WT);
1510 if(sym_ld_script == NULL)
1511- fatal (_("%P: cannot open map file %s: %E\n"), optarg);
1512+ fatal (_("%F%P: cannot open map file %s: %E\n"), optarg);
1513 }
1514 break;
1515 case OPTION_HYPER_RELAX:
1516diff --git a/ld/emultempl/nto.em b/ld/emultempl/nto.em
1517index 609d0217..bed2d374 100644
1518--- a/ld/emultempl/nto.em
1519+++ b/ld/emultempl/nto.em
1520@@ -51,7 +51,7 @@ nto_create_QNX_note_section(int type)
1521 is called before this function, stub_file should already be defined. */
1522 if (!stub_file)
1523 {
1524- fatal (_("%P: cannot create .note section in stub BFD.\n"));
1525+ fatal (_("%F%P: cannot create .note section in stub BFD.\n"));
1526 return NULL;
1527 }
1528
1529@@ -60,7 +60,7 @@ nto_create_QNX_note_section(int type)
1530 note_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd, ".note", flags);
1531 if (! note_sec)
1532 {
1533- fatal (_("%P: failed to create .note section\n"));
1534+ fatal (_("%F%P: failed to create .note section\n"));
1535 return NULL;
1536 }
1537
1538@@ -101,7 +101,7 @@ nto_lookup_QNX_note_section(int type)
1539 sec->contents = xmalloc(sec->size);
1540 if (!bfd_get_section_contents (sec->owner, sec, sec->contents, (file_ptr) 0,
1541 sec->size))
1542- fatal (_("%P: %pB: can't read contents of section .note: %E\n"),
1543+ fatal (_("%F%P: %pB: can't read contents of section .note: %E\n"),
1544 sec->owner);
1545
1546 e_note = (Elf_External_Note *) sec->contents;
1547@@ -144,7 +144,7 @@ nto_add_note_section (void) {
1548
1549 if (nto_lazy_stack && !link_info.stacksize)
1550 {
1551- fatal (_("%P: error: --lazy-stack must follow -zstack-size=<size>\n"));
1552+ fatal (_("%F%P: error: --lazy-stack must follow -zstack-size=<size>\n"));
1553 return;
1554 }
1555
1556@@ -216,7 +216,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1557 char *end;
1558 link_info.stacksize = strtoul (optarg, &end, 0);
1559 if (*end || link_info.stacksize < 0)
1560- fatal (_("%P: invalid stack size `%s'\''\n"), optarg + 11);
1561+ fatal (_("%F%P: invalid stack size `%s'\''\n"), optarg + 11);
1562 if (!link_info.stacksize)
1563 /* Use -1 for explicit no-stack, because zero means
1564 'default'. */
1565diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
1566index 4cb1488e..3eeaffec 100644
1567--- a/ld/emultempl/pe.em
1568+++ b/ld/emultempl/pe.em
1569@@ -726,7 +726,7 @@ set_pe_subsystem (void)
1570
1571 if (v[i].name == NULL)
1572 {
1573- fatal (_("%P: invalid subsystem type %s\n"), optarg);
1574+ fatal (_("%F%P: invalid subsystem type %s\n"), optarg);
1575 return;
1576 }
1577
1578@@ -747,7 +747,7 @@ set_pe_value (char *name)
1579 set_pe_name (name, strtoul (optarg, &end, 0));
1580
1581 if (end == optarg)
1582- fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
1583+ fatal (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
1584
1585 optarg = end;
1586 }
1587@@ -764,7 +764,7 @@ set_pe_stack_heap (char *resname, char *comname)
1588 set_pe_value (comname);
1589 }
1590 else if (*optarg)
1591- fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
1592+ fatal (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
1593 }
1594
1595 #define DEFAULT_BUILD_ID_STYLE "md5"
1596@@ -780,7 +780,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1597 case OPTION_BASE_FILE:
1598 link_info.base_file = fopen (optarg, FOPEN_WB);
1599 if (link_info.base_file == NULL)
1600- fatal (_("%P: cannot open base file %s\n"), optarg);
1601+ fatal (_("%F%P: cannot open base file %s\n"), optarg);
1602 break;
1603
1604 /* PE options. */
1605@@ -1309,7 +1309,7 @@ make_runtime_ref (void)
1606 = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info,
1607 rr, true, false, true);
1608 if (!h)
1609- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1610+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1611 else
1612 {
1613 if (h->type == bfd_link_hash_new)
1614@@ -1607,7 +1607,7 @@ gld${EMULATION_NAME}_after_open (void)
1615 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour
1616 || coff_data (link_info.output_bfd) == NULL
1617 || !obj_pe (link_info.output_bfd))
1618- fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"),
1619+ fatal (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"),
1620 link_info.output_bfd);
1621
1622 pe_data (link_info.output_bfd)->pe_opthdr = pe;
1623@@ -1680,7 +1680,7 @@ gld${EMULATION_NAME}_after_open (void)
1624 These will only be created if the output format is an arm format,
1625 hence we do not support linking and changing output formats at the
1626 same time. Use a link followed by objcopy to change output formats. */
1627- fatal (_("%P: error: cannot change output format "
1628+ fatal (_("%F%P: error: cannot change output format "
1629 "whilst linking %s binaries\n"), "ARM");
1630 return;
1631 }
1632@@ -1740,7 +1740,7 @@ gld${EMULATION_NAME}_after_open (void)
1633
1634 if (!bfd_generic_link_read_symbols (is->the_bfd))
1635 {
1636- fatal (_("%P: %pB: could not read symbols: %E\n"),
1637+ fatal (_("%F%P: %pB: could not read symbols: %E\n"),
1638 is->the_bfd);
1639 return;
1640 }
1641@@ -1912,7 +1912,7 @@ gld${EMULATION_NAME}_after_open (void)
1642
1643 if (!bfd_generic_link_read_symbols (is->the_bfd))
1644 {
1645- fatal (_("%P: %pB: could not read symbols: %E\n"),
1646+ fatal (_("%F%P: %pB: could not read symbols: %E\n"),
1647 is->the_bfd);
1648 return;
1649 }
1650@@ -2023,7 +2023,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU
1651
1652 h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true);
1653 if (h == (struct bfd_link_hash_entry *) NULL)
1654- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1655+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1656 if (h->type == bfd_link_hash_new)
1657 {
1658 h->type = bfd_link_hash_undefined;
1659diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
1660index 2d033dd3..ac0e192f 100644
1661--- a/ld/emultempl/pep.em
1662+++ b/ld/emultempl/pep.em
1663@@ -698,7 +698,7 @@ set_pep_subsystem (void)
1664
1665 if (v[i].name == NULL)
1666 {
1667- fatal (_("%P: invalid subsystem type %s\n"), optarg);
1668+ fatal (_("%F%P: invalid subsystem type %s\n"), optarg);
1669 return;
1670 }
1671
1672@@ -719,7 +719,7 @@ set_pep_value (char *name)
1673 set_pep_name (name, (bfd_vma) strtoull (optarg, &end, 0));
1674
1675 if (end == optarg)
1676- fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg);
1677+ fatal (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg);
1678
1679 optarg = end;
1680 }
1681@@ -736,7 +736,7 @@ set_pep_stack_heap (char *resname, char *comname)
1682 set_pep_value (comname);
1683 }
1684 else if (*optarg)
1685- fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg);
1686+ fatal (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg);
1687 }
1688
1689 #define DEFAULT_BUILD_ID_STYLE "md5"
1690@@ -753,7 +753,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1691 case OPTION_BASE_FILE:
1692 link_info.base_file = fopen (optarg, FOPEN_WB);
1693 if (link_info.base_file == NULL)
1694- fatal (_("%P: cannot open base file %s\n"), optarg);
1695+ fatal (_("%F%P: cannot open base file %s\n"), optarg);
1696 break;
1697
1698 /* PE options. */
1699@@ -1306,7 +1306,7 @@ make_runtime_ref (void)
1700 = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info,
1701 rr, true, false, true);
1702 if (!h)
1703- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1704+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1705 else
1706 {
1707 if (h->type == bfd_link_hash_new)
1708@@ -1606,7 +1606,7 @@ gld${EMULATION_NAME}_after_open (void)
1709 if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour
1710 || coff_data (link_info.output_bfd) == NULL
1711 || !obj_pe (link_info.output_bfd))
1712- fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"),
1713+ fatal (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"),
1714 link_info.output_bfd);
1715
1716 pe_data (link_info.output_bfd)->pe_opthdr = pep;
1717@@ -1718,7 +1718,7 @@ gld${EMULATION_NAME}_after_open (void)
1718
1719 if (!bfd_generic_link_read_symbols (is->the_bfd))
1720 {
1721- fatal (_("%P: %pB: could not read symbols: %E\n"),
1722+ fatal (_("%F%P: %pB: could not read symbols: %E\n"),
1723 is->the_bfd);
1724 return;
1725 }
1726@@ -1907,7 +1907,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU
1727
1728 h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true);
1729 if (h == (struct bfd_link_hash_entry *) NULL)
1730- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
1731+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
1732 if (h->type == bfd_link_hash_new)
1733 {
1734 h->type = bfd_link_hash_undefined;
1735diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em
1736index ffacadc6..73bad022 100644
1737--- a/ld/emultempl/ppc32elf.em
1738+++ b/ld/emultempl/ppc32elf.em
1739@@ -386,7 +386,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1740 char *end;
1741 unsigned long val = strtoul (optarg, &end, 0);
1742 if (*end || val > 5)
1743- fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg);
1744+ fatal (_("%F%P: invalid --plt-align `%s'\''\n"), optarg);
1745 params.plt_stub_align = val;
1746 }
1747 else
1748@@ -419,7 +419,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1749 if (*end
1750 || (params.pagesize < 4096 && params.pagesize != 0)
1751 || params.pagesize != (params.pagesize & -params.pagesize))
1752- fatal (_("%P: invalid pagesize `%s'\''\n"), optarg);
1753+ fatal (_("%F%P: invalid pagesize `%s'\''\n"), optarg);
1754 }
1755 break;
1756
1757diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
1758index 92bf4f58..a884f6b5 100644
1759--- a/ld/emultempl/ppc64elf.em
1760+++ b/ld/emultempl/ppc64elf.em
1761@@ -91,7 +91,7 @@ ppc_create_output_section_statements (void)
1762 bfd_get_arch (link_info.output_bfd),
1763 bfd_get_mach (link_info.output_bfd)))
1764 {
1765- fatal (_("%P: can not create BFD: %E\n"));
1766+ fatal (_("%F%P: can not create BFD: %E\n"));
1767 return;
1768 }
1769
1770@@ -101,7 +101,7 @@ ppc_create_output_section_statements (void)
1771 if (params.save_restore_funcs < 0)
1772 params.save_restore_funcs = !bfd_link_relocatable (&link_info);
1773 if (!ppc64_elf_init_stub_bfd (&link_info, &params))
1774- fatal (_("%P: can not init BFD: %E\n"));
1775+ fatal (_("%F%P: can not init BFD: %E\n"));
1776 }
1777
1778 /* Called after opening files but before mapping sections. */
1779@@ -860,7 +860,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1780 const char *end;
1781 params.group_size = bfd_scan_vma (optarg, &end, 0);
1782 if (*end)
1783- fatal (_("%P: invalid number `%s'\''\n"), optarg);
1784+ fatal (_("%F%P: invalid number `%s'\''\n"), optarg);
1785 }
1786 break;
1787
1788@@ -886,7 +886,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1789 char *end;
1790 long val = strtol (optarg, &end, 0);
1791 if (*end || (unsigned long) val + 8 > 16)
1792- fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg);
1793+ fatal (_("%F%P: invalid --plt-align `%s'\''\n"), optarg);
1794 params.plt_stub_align = val;
1795 }
1796 else
1797@@ -915,7 +915,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
1798 else if (strcasecmp (optarg, "no") == 0)
1799 params.power10_stubs = 0;
1800 else
1801- fatal (_("%P: invalid --power10-stubs argument `%s'\''\n"),
1802+ fatal (_("%F%P: invalid --power10-stubs argument `%s'\''\n"),
1803 optarg);
1804 }
1805 else
1806diff --git a/ld/emultempl/riscvelf.em b/ld/emultempl/riscvelf.em
1807index 006e4edb..d5012b33 100644
1808--- a/ld/emultempl/riscvelf.em
1809+++ b/ld/emultempl/riscvelf.em
1810@@ -141,7 +141,7 @@ riscv_create_output_section_statements (void)
1811 These will only be created if the output format is a RISC-V format,
1812 hence we do not support linking and changing output formats at the
1813 same time. Use a link followed by objcopy to change output formats. */
1814- fatal (_("%P: error: cannot change output format"
1815+ fatal (_("%F%P: error: cannot change output format"
1816 " whilst linking %s binaries\n"), "RISC-V");
1817 return;
1818 }
1819diff --git a/ld/emultempl/s390.em b/ld/emultempl/s390.em
1820index 0a93d76b..bb589069 100644
1821--- a/ld/emultempl/s390.em
1822+++ b/ld/emultempl/s390.em
1823@@ -34,7 +34,7 @@ static void
1824 s390_elf_create_output_section_statements (void)
1825 {
1826 if (!bfd_elf_s390_set_options (&link_info, &params))
1827- fatal (_("%P: can not init BFD: %E\n"));
1828+ fatal (_("%F%P: can not init BFD: %E\n"));
1829 }
1830
1831 EOF
1832diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em
1833index 6413f330..e420a7bd 100644
1834--- a/ld/emultempl/scoreelf.em
1835+++ b/ld/emultempl/scoreelf.em
1836@@ -62,7 +62,7 @@ score_elf_after_open (void)
1837 These will only be created if the output format is an score format,
1838 hence we do not support linking and changing output formats at the
1839 same time. Use a link followed by objcopy to change output formats. */
1840- fatal (_("%P: error: cannot change output format "
1841+ fatal (_("%F%P: error: cannot change output format "
1842 "whilst linking %s binaries\n"), "S+core");
1843 return;
1844 }
1845diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em
1846index c694b828..800cca30 100644
1847--- a/ld/emultempl/spuelf.em
1848+++ b/ld/emultempl/spuelf.em
1849@@ -202,7 +202,7 @@ spu_elf_load_ovl_mgr (void)
1850 /* User supplied __ovly_load. */
1851 }
1852 else if (mgr_stream->start == mgr_stream->end)
1853- fatal (_("%P: no built-in overlay manager\n"));
1854+ fatal (_("%F%P: no built-in overlay manager\n"));
1855 else
1856 {
1857 lang_input_statement_type *ovl_is;
1858@@ -379,7 +379,7 @@ spu_elf_open_overlay_script (void)
1859 if (script == NULL)
1860 {
1861 file_err:
1862- fatal (_("%P: can not open script: %E\n"));
1863+ fatal (_("%F%P: can not open script: %E\n"));
1864 }
1865 return script;
1866 }
1867@@ -719,7 +719,7 @@ PARSE_AND_LIST_ARGS_CASES='
1868 if (*end == 0)
1869 break;
1870 }
1871- fatal (_("%P: invalid --local-store address range `%s'\''\n"), optarg);
1872+ fatal (_("%F%P: invalid --local-store address range `%s'\''\n"), optarg);
1873 }
1874 break;
1875
1876@@ -755,12 +755,12 @@ PARSE_AND_LIST_ARGS_CASES='
1877 if (!num_lines_set)
1878 params.num_lines = 32;
1879 else if ((params.num_lines & -params.num_lines) != params.num_lines)
1880- fatal (_("%P: invalid --num-lines/--num-regions `%u'\''\n"),
1881+ fatal (_("%F%P: invalid --num-lines/--num-regions `%u'\''\n"),
1882 params.num_lines);
1883 if (!line_size_set)
1884 params.line_size = 1024;
1885 else if ((params.line_size & -params.line_size) != params.line_size)
1886- fatal (_("%P: invalid --line-size/--region-size `%u'\''\n"),
1887+ fatal (_("%F%P: invalid --line-size/--region-size `%u'\''\n"),
1888 params.line_size);
1889 break;
1890
1891@@ -781,7 +781,7 @@ PARSE_AND_LIST_ARGS_CASES='
1892 && (params.ovly_flavour != ovly_soft_icache
1893 || (params.num_lines & -params.num_lines) == params.num_lines))
1894 break;
1895- fatal (_("%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg);
1896+ fatal (_("%F%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg);
1897 }
1898 break;
1899
1900@@ -794,7 +794,7 @@ PARSE_AND_LIST_ARGS_CASES='
1901 && (params.ovly_flavour != ovly_soft_icache
1902 || (params.line_size & -params.line_size) == params.line_size))
1903 break;
1904- fatal (_("%P: invalid --line-size/--region-size `%s'\''\n"), optarg);
1905+ fatal (_("%F%P: invalid --line-size/--region-size `%s'\''\n"), optarg);
1906 }
1907 break;
1908
1909@@ -803,7 +803,7 @@ PARSE_AND_LIST_ARGS_CASES='
1910 char *end;
1911 params.auto_overlay_fixed = strtoul (optarg, &end, 0);
1912 if (*end != 0)
1913- fatal (_("%P: invalid --fixed-space value `%s'\''\n"), optarg);
1914+ fatal (_("%F%P: invalid --fixed-space value `%s'\''\n"), optarg);
1915 }
1916 break;
1917
1918@@ -812,7 +812,7 @@ PARSE_AND_LIST_ARGS_CASES='
1919 char *end;
1920 params.auto_overlay_reserved = strtoul (optarg, &end, 0);
1921 if (*end != 0)
1922- fatal (_("%P: invalid --reserved-space value `%s'\''\n"), optarg);
1923+ fatal (_("%F%P: invalid --reserved-space value `%s'\''\n"), optarg);
1924 }
1925 break;
1926
1927@@ -821,7 +821,7 @@ PARSE_AND_LIST_ARGS_CASES='
1928 char *end;
1929 params.extra_stack_space = strtol (optarg, &end, 0);
1930 if (*end != 0)
1931- fatal (_("%P: invalid --extra-stack-space value `%s'\''\n"), optarg);
1932+ fatal (_("%F%P: invalid --extra-stack-space value `%s'\''\n"), optarg);
1933 }
1934 break;
1935
1936diff --git a/ld/emultempl/tic6xdsbt.em b/ld/emultempl/tic6xdsbt.em
1937index a830be7e..7d3b97cc 100644
1938--- a/ld/emultempl/tic6xdsbt.em
1939+++ b/ld/emultempl/tic6xdsbt.em
1940@@ -59,7 +59,7 @@ tic6x_after_open (void)
1941 if (is_tic6x_target ())
1942 {
1943 if (params.dsbt_index >= params.dsbt_size)
1944- fatal (_("%P: invalid --dsbt-index %d, outside DSBT size\n"),
1945+ fatal (_("%F%P: invalid --dsbt-index %d, outside DSBT size\n"),
1946 params.dsbt_index);
1947 elf32_tic6x_setup (&link_info, &params);
1948 }
1949@@ -190,7 +190,7 @@ PARSE_AND_LIST_ARGS_CASES='
1950 if (*end == 0
1951 && params.dsbt_index >= 0 && params.dsbt_index < 0x7fff)
1952 break;
1953- fatal (_("%P: invalid --dsbt-index %s\n"), optarg);
1954+ fatal (_("%F%P: invalid --dsbt-index %s\n"), optarg);
1955 }
1956 break;
1957 case OPTION_DSBT_SIZE:
1958@@ -200,7 +200,7 @@ PARSE_AND_LIST_ARGS_CASES='
1959 if (*end == 0
1960 && params.dsbt_size >= 0 && params.dsbt_size < 0x7fff)
1961 break;
1962- fatal (_("%P: invalid --dsbt-size %s\n"), optarg);
1963+ fatal (_("%F%P: invalid --dsbt-size %s\n"), optarg);
1964 }
1965 break;
1966 case OPTION_NO_MERGE_EXIDX_ENTRIES:
1967diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em
1968index bbf30f4a..5d0feede 100644
1969--- a/ld/emultempl/ticoff.em
1970+++ b/ld/emultempl/ticoff.em
1971@@ -88,7 +88,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
1972 lang_add_output_format (buf, NULL, NULL, 0);
1973 }
1974 else
1975- fatal (_("%P: invalid COFF format version %s\n"), optarg);
1976+ fatal (_("%F%P: invalid COFF format version %s\n"), optarg);
1977 break;
1978 }
1979 return false;
1980diff --git a/ld/emultempl/v850elf.em b/ld/emultempl/v850elf.em
1981index 49ad2cc8..925e3994 100644
1982--- a/ld/emultempl/v850elf.em
1983+++ b/ld/emultempl/v850elf.em
1984@@ -63,7 +63,7 @@ v850_create_output_section_statements (void)
1985 These will only be created if the output format is an arm format,
1986 hence we do not support linking and changing output formats at the
1987 same time. Use a link followed by objcopy to change output formats. */
1988- fatal (_("%P: error: cannot change output format"
1989+ fatal (_("%F%P: error: cannot change output format"
1990 " whilst linking %s binaries\n"), "V850");
1991 return;
1992 }
1993diff --git a/ld/emultempl/vms.em b/ld/emultempl/vms.em
1994index 4ca2c942..1c7b426c 100644
1995--- a/ld/emultempl/vms.em
1996+++ b/ld/emultempl/vms.em
1997@@ -201,7 +201,7 @@ gld${EMULATION_NAME}_before_allocation (void)
1998 && bed->elf_backend_size_dynamic_sections
1999 && ! (*bed->elf_backend_size_dynamic_sections) (link_info.output_bfd,
2000 &link_info))
2001- fatal (_("%P: failed to set dynamic section sizes: %E\n"));
2002+ fatal (_("%F%P: failed to set dynamic section sizes: %E\n"));
2003
2004 before_allocation_default ();
2005 }
2006diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em
2007index 208f730d..751e7762 100644
2008--- a/ld/emultempl/xtensaelf.em
2009+++ b/ld/emultempl/xtensaelf.em
2010@@ -388,7 +388,7 @@ check_xtensa_info (bfd *abfd, asection *info_sec)
2011
2012 data = xmalloc (info_sec->size);
2013 if (! bfd_get_section_contents (abfd, info_sec, data, 0, info_sec->size))
2014- fatal (_("%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec);
2015+ fatal (_("%F%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec);
2016
2017 if (info_sec->size > 24
2018 && info_sec->size >= 24 + bfd_get_32 (abfd, data + 4)
2019@@ -429,13 +429,13 @@ elf_xtensa_before_allocation (void)
2020 if (is_big_endian
2021 && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE)
2022 {
2023- fatal (_("%P: little endian output does not match "
2024+ fatal (_("%F%P: little endian output does not match "
2025 "Xtensa configuration\n"));
2026 }
2027 if (!is_big_endian
2028 && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_BIG)
2029 {
2030- fatal (_("%P: big endian output does not match "
2031+ fatal (_("%F%P: big endian output does not match "
2032 "Xtensa configuration\n"));
2033 }
2034
2035@@ -454,7 +454,7 @@ elf_xtensa_before_allocation (void)
2036 cannot go any further if there are any mismatches. */
2037 if ((is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE)
2038 || (!is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_BIG))
2039- fatal (_("%P: cross-endian linking for %pB not supported\n"),
2040+ fatal (_("%F%P: cross-endian linking for %pB not supported\n"),
2041 f->the_bfd);
2042
2043 if (! first_bfd)
2044@@ -485,7 +485,7 @@ elf_xtensa_before_allocation (void)
2045 info_sec = bfd_make_section_with_flags (first_bfd, ".xtensa.info",
2046 SEC_HAS_CONTENTS | SEC_READONLY);
2047 if (! info_sec)
2048- fatal (_("%P: failed to create .xtensa.info section\n"));
2049+ fatal (_("%F%P: failed to create .xtensa.info section\n"));
2050 }
2051 if (info_sec)
2052 {
2053@@ -1224,7 +1224,7 @@ ld_build_required_section_dependence (lang_statement_union_type *s)
2054 lang_statement_union_type *l = iter_stack_current (&stack);
2055
2056 if (l == NULL && link_info.non_contiguous_regions)
2057- fatal (_("%P: Relaxation not supported with "
2058+ fatal (_("%F%P: Relaxation not supported with "
2059 "--enable-non-contiguous-regions.\n"));
2060
2061 if (l->header.type == lang_input_section_enum)
2062diff --git a/ld/emultempl/z80.em b/ld/emultempl/z80.em
2063index 555f6024..06cfa72e 100644
2064--- a/ld/emultempl/z80.em
2065+++ b/ld/emultempl/z80.em
2066@@ -48,7 +48,7 @@ z80_after_open (void)
2067 const bfd_arch_info_type *info;
2068 info = bfd_arch_get_compatible (link_info.output_bfd, abfd, false);
2069 if (info == NULL)
2070- fatal (_("%P: %pB: Instruction sets of object files incompatible\n"),
2071+ fatal (_("%F%P: %pB: Instruction sets of object files incompatible\n"),
2072 abfd);
2073 else
2074 bfd_set_arch_info (link_info.output_bfd, info);
2075diff --git a/ld/ldcref.c b/ld/ldcref.c
2076index 572d4f4d..68dd2a5f 100644
2077--- a/ld/ldcref.c
2078+++ b/ld/ldcref.c
2079@@ -514,7 +514,7 @@ check_local_sym_xref (lang_input_statement_type *statement)
2080 return;
2081
2082 if (!bfd_generic_link_read_symbols (abfd))
2083- fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
2084+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
2085
2086 for (syms = bfd_get_outsymbols (abfd); *syms; ++syms)
2087 {
2088@@ -625,7 +625,7 @@ check_refs (const char *name,
2089 BFD might contain a prohibited cross reference. */
2090
2091 if (!bfd_generic_link_read_symbols (abfd))
2092- fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
2093+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
2094
2095 info.sym_name = name;
2096 info.global = global;
2097@@ -687,14 +687,14 @@ check_reloc_refs (bfd *abfd, asection *sec, void *iarg)
2098
2099 relsize = bfd_get_reloc_upper_bound (abfd, sec);
2100 if (relsize < 0)
2101- fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
2102+ fatal (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
2103 if (relsize == 0)
2104 return;
2105
2106 relpp = (arelent **) xmalloc (relsize);
2107 relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
2108 if (relcount < 0)
2109- fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
2110+ fatal (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
2111
2112 p = relpp;
2113 pend = p + relcount;
2114diff --git a/ld/ldelf.c b/ld/ldelf.c
2115index fb95b7a9..d8c0817b 100644
2116--- a/ld/ldelf.c
2117+++ b/ld/ldelf.c
2118@@ -94,7 +94,7 @@ ldelf_after_parse (void)
2119 else if (!link_info.maxpagesize_is_set)
2120 link_info.maxpagesize = link_info.commonpagesize;
2121 else
2122- fatal (_("%P: common page size (0x%v) > maximum page size (0x%v)\n"),
2123+ fatal (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"),
2124 link_info.commonpagesize, link_info.maxpagesize);
2125 }
2126 }
2127@@ -120,7 +120,7 @@ ldelf_load_symbols (lang_input_statement_type *entry)
2128
2129 if (entry->flags.just_syms
2130 && (bfd_get_file_flags (entry->the_bfd) & DYNAMIC) != 0)
2131- fatal (_("%P: %pB: --just-symbols may not be used on DSO\n"),
2132+ fatal (_("%F%P: %pB: --just-symbols may not be used on DSO\n"),
2133 entry->the_bfd);
2134
2135 if (link_class == 0
2136@@ -320,7 +320,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
2137 struct bfd_link_needed_list *needs;
2138
2139 if (! bfd_elf_get_bfd_needed_list (abfd, &needs))
2140- fatal (_("%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd);
2141+ fatal (_("%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd);
2142
2143 if (needs != NULL)
2144 {
2145@@ -368,7 +368,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
2146 can only check that using stat. */
2147
2148 if (bfd_stat (abfd, &global_stat) != 0)
2149- fatal (_("%P: %pB: bfd_stat failed: %E\n"), abfd);
2150+ fatal (_("%F%P: %pB: bfd_stat failed: %E\n"), abfd);
2151
2152 /* First strip off everything before the last '/'. */
2153 soname = lbasename (bfd_get_filename (abfd));
2154@@ -407,7 +407,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux)
2155
2156 /* Add this file into the symbol table. */
2157 if (! bfd_link_add_symbols (abfd, &link_info))
2158- fatal (_("%P: %pB: error adding symbols: %E\n"), abfd);
2159+ fatal (_("%F%P: %pB: error adding symbols: %E\n"), abfd);
2160
2161 return true;
2162 }
2163@@ -1205,7 +1205,7 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
2164 && elf_dt_name (abfd) != NULL)
2165 {
2166 if (bfd_elf_add_dt_needed_tag (abfd, &link_info) < 0)
2167- fatal (_("%P: failed to add DT_NEEDED dynamic tag\n"));
2168+ fatal (_("%F%P: failed to add DT_NEEDED dynamic tag\n"));
2169 }
2170
2171 link_info.input_bfds_tail = save_input_bfd_tail;
2172@@ -1256,7 +1256,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
2173 bfd_get_target (link_info.output_bfd));
2174
2175 if (link_info.out_implib_bfd == NULL)
2176- fatal (_("%P: %s: can't open for writing: %E\n"),
2177+ fatal (_("%F%P: %s: can't open for writing: %E\n"),
2178 command_line.out_implib_filename);
2179 }
2180
2181@@ -1311,7 +1311,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
2182 && (elf_tdata (abfd)->elf_header->e_type == ET_EXEC
2183 || (elf_tdata (abfd)->elf_header->e_type == ET_DYN
2184 && elf_tdata (abfd)->is_pie)))
2185- fatal (_("%P: cannot use executable file '%pB' as input to a link\n"),
2186+ fatal (_("%F%P: cannot use executable file '%pB' as input to a link\n"),
2187 abfd);
2188 }
2189
2190@@ -1365,7 +1365,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
2191 }
2192 else if (seen_type != type)
2193 {
2194- fatal (_("%P: compact frame descriptions incompatible with"
2195+ fatal (_("%F%P: compact frame descriptions incompatible with"
2196 " DWARF2 .eh_frame from %pB\n"),
2197 type == DWARF2_EH_HDR ? abfd : elfbfd);
2198 break;
2199@@ -1407,7 +1407,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
2200
2201 if (link_info.eh_frame_hdr_type == COMPACT_EH_HDR)
2202 if (!bfd_elf_parse_eh_frame_entries (NULL, &link_info))
2203- fatal (_("%P: failed to parse EH frame entries\n"));
2204+ fatal (_("%F%P: failed to parse EH frame entries\n"));
2205
2206 ldelf_handle_dt_needed (htab, use_libpath, native, is_linux,
2207 is_freebsd, elfsize, prefix);
2208@@ -1664,7 +1664,7 @@ ldelf_find_exp_assignment (etree_type *exp)
2209 &link_info,
2210 exp->assign.dst, provide,
2211 exp->assign.hidden))
2212- fatal (_("%P: failed to record assignment to %s: %E\n"),
2213+ fatal (_("%F%P: failed to record assignment to %s: %E\n"),
2214 exp->assign.dst);
2215 }
2216 ldelf_find_exp_assignment (exp->assign.src);
2217@@ -1844,7 +1844,7 @@ ldelf_before_allocation (char *audit, char *depaudit,
2218 command_line.filter_shlib, audit, depaudit,
2219 (const char * const *) command_line.auxiliary_filters,
2220 &link_info, &sinterp)))
2221- fatal (_("%P: failed to set dynamic section sizes: %E\n"));
2222+ fatal (_("%F%P: failed to set dynamic section sizes: %E\n"));
2223
2224 if (sinterp != NULL)
2225 {
2226@@ -1881,8 +1881,8 @@ ldelf_before_allocation (char *audit, char *depaudit,
2227 msg = (char *) xmalloc ((size_t) (sz + 1));
2228 if (! bfd_get_section_contents (is->the_bfd, s, msg,
2229 (file_ptr) 0, sz))
2230- fatal (_("%P: %pB: can't read contents of section %pA: %E\n"),
2231- is->the_bfd, s);
2232+ fatal (_("%F%P: %pB: can't read contents of section .gnu.warning: %E\n"),
2233+ is->the_bfd);
2234 msg[sz] = '\0';
2235 (*link_info.callbacks->warning) (&link_info, msg,
2236 (const char *) NULL, is->the_bfd,
2237@@ -1909,7 +1909,7 @@ ldelf_before_allocation (char *audit, char *depaudit,
2238 before_allocation_default ();
2239
2240 if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info))
2241- fatal (_("%P: failed to set dynamic section sizes: %E\n"));
2242+ fatal (_("%F%P: failed to set dynamic section sizes: %E\n"));
2243
2244 if (ehdr_start != NULL)
2245 {
2246diff --git a/ld/ldelfgen.c b/ld/ldelfgen.c
2247index 1b1e49ce..cceefc6d 100644
2248--- a/ld/ldelfgen.c
2249+++ b/ld/ldelfgen.c
2250@@ -282,7 +282,7 @@ ldelf_map_segments (bool need_layout)
2251 if (os_info->ordered != os_info->count
2252 && bfd_link_relocatable (&link_info))
2253 {
2254- fatal (_("%P: "
2255+ fatal (_("%F%P: "
2256 "%pA has both ordered and unordered sections\n"),
2257 os->bfd_section);
2258 return;
2259@@ -307,7 +307,7 @@ ldelf_map_segments (bool need_layout)
2260 if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd,
2261 &link_info,
2262 &need_layout))
2263- fatal (_("%P: map sections to segments failed: %E\n"));
2264+ fatal (_("%F%P: map sections to segments failed: %E\n"));
2265
2266 if (phdr_size != elf_program_header_size (link_info.output_bfd))
2267 {
2268@@ -327,7 +327,7 @@ ldelf_map_segments (bool need_layout)
2269 while (need_layout && --tries);
2270
2271 if (tries == 0)
2272- fatal (_("%P: looping in map_segments\n"));
2273+ fatal (_("%F%P: looping in map_segments\n"));
2274
2275 if (bfd_get_flavour (link_info.output_bfd) == bfd_target_elf_flavour
2276 && lang_phdr_list == NULL)
2277@@ -338,7 +338,7 @@ ldelf_map_segments (bool need_layout)
2278 = get_elf_backend_data (link_info.output_bfd);
2279 if (bed->elf_backend_strip_zero_sized_dynamic_sections
2280 && !bed->elf_backend_strip_zero_sized_dynamic_sections (&link_info))
2281- fatal (_("%P: failed to strip zero-sized dynamic sections\n"));
2282+ fatal (_("%F%P: failed to strip zero-sized dynamic sections\n"));
2283 }
2284 }
2285
2286@@ -416,7 +416,7 @@ ldelf_acquire_strings_for_ctf
2287 {
2288 if (ctf_link_add_strtab (ctf_output, ldelf_ctf_strtab_iter_cb,
2289 &args) < 0)
2290- fatal (_("%P: warning: CTF strtab association failed; strings will "
2291+ fatal (_("%F%P: warning: CTF strtab association failed; strings will "
2292 "not be shared: %s\n"),
2293 ctf_errmsg (ctf_errno (ctf_output)));
2294 }
2295@@ -443,7 +443,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx,
2296 lsym.st_value = sym->st_value;
2297 if (ctf_link_add_linker_symbol (ctf_output, &lsym) < 0)
2298 {
2299- fatal (_("%P: warning: CTF symbol addition failed; CTF will "
2300+ fatal (_("%F%P: warning: CTF symbol addition failed; CTF will "
2301 "not be tied to symbols: %s\n"),
2302 ctf_errmsg (ctf_errno (ctf_output)));
2303 }
2304@@ -453,7 +453,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx,
2305 /* Shuffle all the symbols. */
2306
2307 if (ctf_link_shuffle_syms (ctf_output) < 0)
2308- fatal (_("%P: warning: CTF symbol shuffling failed; CTF will "
2309+ fatal (_("%F%P: warning: CTF symbol shuffling failed; CTF will "
2310 "not be tied to symbols: %s\n"),
2311 ctf_errmsg (ctf_errno (ctf_output)));
2312 }
2313diff --git a/ld/ldexp.c b/ld/ldexp.c
2314index 45dffbc6..86f82a09 100644
2315--- a/ld/ldexp.c
2316+++ b/ld/ldexp.c
2317@@ -282,7 +282,7 @@ definedness_newfunc (struct bfd_hash_entry *entry,
2318 bfd_hash_allocate (table, sizeof (struct definedness_hash_entry));
2319
2320 if (ret == NULL)
2321- fatal (_("%P: bfd_hash_allocate failed creating symbol %s\n"), name);
2322+ fatal (_("%F%P: bfd_hash_allocate failed creating symbol %s\n"), name);
2323
2324 ret->by_object = 0;
2325 ret->iteration = 0;
2326@@ -313,7 +313,7 @@ update_definedness (const char *name, struct bfd_link_hash_entry *h)
2327 bfd_hash_lookup (&definedness_table, name, true, false);
2328
2329 if (defentry == NULL)
2330- fatal (_("%P: bfd_hash_lookup failed creating symbol %s\n"), name);
2331+ fatal (_("%F%P: bfd_hash_lookup failed creating symbol %s\n"), name);
2332
2333 /* If the symbol was already defined, and not by a script, then it
2334 must be defined by an object file or by the linker target code. */
2335@@ -638,7 +638,7 @@ fold_binary (etree_type *tree)
2336 expld.result.value = ((bfd_signed_vma) lhs.value
2337 % (bfd_signed_vma) expld.result.value);
2338 else if (expld.phase != lang_mark_phase_enum)
2339- fatal (_("%P:%pS %% by zero\n"), tree->binary.rhs);
2340+ fatal (_("%F%P:%pS %% by zero\n"), tree->binary.rhs);
2341 arith_result_section (&lhs);
2342 break;
2343
2344@@ -647,7 +647,7 @@ fold_binary (etree_type *tree)
2345 expld.result.value = ((bfd_signed_vma) lhs.value
2346 / (bfd_signed_vma) expld.result.value);
2347 else if (expld.phase != lang_mark_phase_enum)
2348- fatal (_("%P:%pS / by zero\n"), tree->binary.rhs);
2349+ fatal (_("%F%P:%pS / by zero\n"), tree->binary.rhs);
2350 arith_result_section (&lhs);
2351 break;
2352
2353@@ -761,7 +761,7 @@ fold_name (etree_type *tree)
2354 if (!h)
2355 {
2356 if (expld.phase != lang_first_phase_enum)
2357- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
2358+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
2359 }
2360 else if (h->type == bfd_link_hash_defined
2361 || h->type == bfd_link_hash_defweak)
2362@@ -789,7 +789,7 @@ fold_name (etree_type *tree)
2363 else if (expld.phase == lang_final_phase_enum
2364 || (expld.phase != lang_mark_phase_enum
2365 && expld.assigning_to_dot))
2366- fatal (_("%P:%pS: undefined symbol `%s'"
2367+ fatal (_("%F%P:%pS: undefined symbol `%s'"
2368 " referenced in expression\n"),
2369 tree, tree->name.name);
2370 else if (h->type == bfd_link_hash_new)
2371@@ -827,7 +827,7 @@ fold_name (etree_type *tree)
2372 if (os == NULL)
2373 {
2374 if (expld.phase == lang_final_phase_enum)
2375- fatal (_("%P:%pS: undefined section `%s'"
2376+ fatal (_("%F%P:%pS: undefined section `%s'"
2377 " referenced in expression\n"),
2378 tree, tree->name.name);
2379 }
2380@@ -845,7 +845,7 @@ fold_name (etree_type *tree)
2381 if (os == NULL)
2382 {
2383 if (expld.phase == lang_final_phase_enum)
2384- fatal (_("%P:%pS: undefined section `%s'"
2385+ fatal (_("%F%P:%pS: undefined section `%s'"
2386 " referenced in expression\n"),
2387 tree, tree->name.name);
2388 }
2389@@ -873,7 +873,7 @@ fold_name (etree_type *tree)
2390 if (os == NULL)
2391 {
2392 if (expld.phase == lang_final_phase_enum)
2393- fatal (_("%P:%pS: undefined section `%s'"
2394+ fatal (_("%F%P:%pS: undefined section `%s'"
2395 " referenced in expression\n"),
2396 tree, tree->name.name);
2397 new_number (0);
2398@@ -912,7 +912,7 @@ fold_name (etree_type *tree)
2399 if (mem != NULL)
2400 new_number (mem->length);
2401 else
2402- fatal (_("%P:%pS: undefined MEMORY region `%s'"
2403+ fatal (_("%F%P:%pS: undefined MEMORY region `%s'"
2404 " referenced in expression\n"),
2405 tree, tree->name.name);
2406 }
2407@@ -926,7 +926,7 @@ fold_name (etree_type *tree)
2408 if (mem != NULL)
2409 new_rel_from_abs (mem->origin);
2410 else
2411- fatal (_("%P:%pS: undefined MEMORY region `%s'"
2412+ fatal (_("%F%P:%pS: undefined MEMORY region `%s'"
2413 " referenced in expression\n"),
2414 tree, tree->name.name);
2415 }
2416@@ -938,7 +938,7 @@ fold_name (etree_type *tree)
2417 else if (strcmp (tree->name.name, "COMMONPAGESIZE") == 0)
2418 new_number (link_info.commonpagesize);
2419 else
2420- fatal (_("%P:%pS: unknown constant `%s' referenced in expression\n"),
2421+ fatal (_("%F%P:%pS: unknown constant `%s' referenced in expression\n"),
2422 tree, tree->name.name);
2423 break;
2424
2425@@ -1086,7 +1086,7 @@ exp_fold_tree_1 (etree_type *tree)
2426 if (tree->assign.dst[0] == '.' && tree->assign.dst[1] == 0)
2427 {
2428 if (tree->type.node_class != etree_assign)
2429- fatal (_("%P:%pS can not PROVIDE assignment to"
2430+ fatal (_("%F%P:%pS can not PROVIDE assignment to"
2431 " location counter\n"), tree);
2432 if (expld.phase != lang_first_phase_enum)
2433 {
2434@@ -1119,11 +1119,11 @@ exp_fold_tree_1 (etree_type *tree)
2435 || expld.section == bfd_und_section_ptr)
2436 {
2437 if (expld.phase != lang_mark_phase_enum)
2438- fatal (_("%P:%pS invalid assignment to"
2439+ fatal (_("%F%P:%pS invalid assignment to"
2440 " location counter\n"), tree);
2441 }
2442 else if (expld.dotp == NULL)
2443- fatal (_("%P:%pS assignment to location counter"
2444+ fatal (_("%F%P:%pS assignment to location counter"
2445 " invalid outside of SECTIONS\n"), tree);
2446
2447 /* After allocation, assignment to dot should not be
2448@@ -1142,7 +1142,7 @@ exp_fold_tree_1 (etree_type *tree)
2449 nextdot += expld.section->vma;
2450 if (nextdot < expld.dot
2451 && expld.section != bfd_abs_section_ptr)
2452- fatal (_("%P:%pS cannot move location counter backwards"
2453+ fatal (_("%F%P:%pS cannot move location counter backwards"
2454 " (from %V to %V)\n"),
2455 tree, expld.dot, nextdot);
2456 else
2457@@ -1202,7 +1202,7 @@ exp_fold_tree_1 (etree_type *tree)
2458 h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst,
2459 true, false, true);
2460 if (h == NULL)
2461- fatal (_("%P:%s: hash creation failed\n"),
2462+ fatal (_("%F%P:%s: hash creation failed\n"),
2463 tree->assign.dst);
2464 }
2465
2466@@ -1578,7 +1578,7 @@ exp_get_vma (etree_type *tree, lang_output_section_statement_type *os,
2467 if (expld.result.valid_p)
2468 return expld.result.value;
2469 else if (name != NULL && expld.phase != lang_mark_phase_enum)
2470- fatal (_("%P:%pS: nonconstant expression for %s\n"),
2471+ fatal (_("%F%P:%pS: nonconstant expression for %s\n"),
2472 tree, name);
2473 }
2474 return def;
2475@@ -1621,7 +1621,7 @@ exp_get_fill (etree_type *tree, fill_type *def, char *name)
2476 if (!expld.result.valid_p)
2477 {
2478 if (name != NULL && expld.phase != lang_mark_phase_enum)
2479- fatal (_("%P:%pS: nonconstant expression for %s\n"),
2480+ fatal (_("%F%P:%pS: nonconstant expression for %s\n"),
2481 tree, name);
2482 return def;
2483 }
2484@@ -1681,7 +1681,7 @@ exp_get_abs_int (etree_type *tree, int def, char *name)
2485 }
2486 else if (name != NULL && expld.phase != lang_mark_phase_enum)
2487 {
2488- fatal (_("%P:%pS: nonconstant expression for %s\n"),
2489+ fatal (_("%F%P:%pS: nonconstant expression for %s\n"),
2490 tree, name);
2491 }
2492 }
2493@@ -1707,7 +1707,7 @@ ldexp_init (void)
2494 definedness_newfunc,
2495 sizeof (struct definedness_hash_entry),
2496 13))
2497- fatal (_("%P: can not create hash table: %E\n"));
2498+ fatal (_("%F%P: can not create hash table: %E\n"));
2499 }
2500
2501 /* Convert absolute symbols defined by a script from "dot" (also
2502diff --git a/ld/ldfile.c b/ld/ldfile.c
2503index ddab0d37..040a8886 100644
2504--- a/ld/ldfile.c
2505+++ b/ld/ldfile.c
2506@@ -183,7 +183,7 @@ ldfile_add_remap_file (const char * file)
2507
2508 if (*p == '\0')
2509 {
2510- fatal ("%P: malformed remap file entry: %s\n", line);
2511+ fatal ("%F%P: malformed remap file entry: %s\n", line);
2512 continue;
2513 }
2514
2515@@ -195,7 +195,7 @@ ldfile_add_remap_file (const char * file)
2516
2517 if (*p == '\0')
2518 {
2519- fatal ("%P: malformed remap file entry: %s\n", line);
2520+ fatal ("%F%P: malformed remap file entry: %s\n", line);
2521 continue;
2522 }
2523
2524@@ -365,7 +365,7 @@ ldfile_try_open_bfd (const char *attempt,
2525 if (entry->the_bfd == NULL)
2526 {
2527 if (bfd_get_error () == bfd_error_invalid_target)
2528- fatal (_("%P: invalid BFD target `%s'\n"), entry->target);
2529+ fatal (_("%F%P: invalid BFD target `%s'\n"), entry->target);
2530 return false;
2531 }
2532
2533@@ -508,7 +508,7 @@ ldfile_try_open_bfd (const char *attempt,
2534
2535 if (!entry->flags.dynamic && (entry->the_bfd->flags & DYNAMIC) != 0)
2536 {
2537- fatal (_("%P: attempted static link of dynamic object `%s'\n"),
2538+ fatal (_("%F%P: attempted static link of dynamic object `%s'\n"),
2539 attempt);
2540 bfd_close (entry->the_bfd);
2541 entry->the_bfd = NULL;
2542@@ -919,7 +919,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how)
2543 if ((open_how != script_nonT || script->open_how != script_nonT)
2544 && strcmp (name, script->name) == 0)
2545 {
2546- fatal (_("%P: error: linker script file '%s'"
2547+ fatal (_("%F%P: error: linker script file '%s'"
2548 " appears multiple times\n"), name);
2549 return;
2550 }
2551@@ -941,7 +941,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how)
2552 if (ldlex_input_stack == NULL)
2553 {
2554 bfd_set_error (bfd_error_system_call);
2555- fatal (_("%P: cannot open linker script file %s: %E\n"), name);
2556+ fatal (_("%F%P: cannot open linker script file %s: %E\n"), name);
2557 return;
2558 }
2559
2560@@ -1012,5 +1012,5 @@ ldfile_set_output_arch (const char *string, enum bfd_architecture defarch)
2561 else if (defarch != bfd_arch_unknown)
2562 ldfile_output_architecture = defarch;
2563 else
2564- fatal (_("%P: cannot represent machine `%s'\n"), string);
2565+ fatal (_("%F%P: cannot represent machine `%s'\n"), string);
2566 }
2567diff --git a/ld/ldgram.y b/ld/ldgram.y
2568index c2f1e298..81bb8fd8 100644
2569--- a/ld/ldgram.y
2570+++ b/ld/ldgram.y
2571@@ -209,7 +209,7 @@ mri_script_command:
2572 CHIP exp
2573 | CHIP exp ',' exp
2574 | NAME {
2575- fatal (_("%P: unrecognised keyword in MRI style script '%s'\n"), $1);
2576+ fatal(_("%F%P: unrecognised keyword in MRI style script '%s'\n"),$1);
2577 }
2578 | LIST {
2579 config.map_filename = "-";
2580@@ -1547,7 +1547,7 @@ yyerror (const char *arg)
2581 einfo (_("%P:%s: file format not recognized; treating as linker script\n"),
2582 ldlex_filename ());
2583 if (error_index > 0 && error_index < ERROR_NAME_MAX)
2584- fatal (_("%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]);
2585+ fatal (_("%F%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]);
2586 else
2587- fatal ("%P:%pS: %s\n", NULL, arg);
2588+ fatal ("%F%P:%pS: %s\n", NULL, arg);
2589 }
2590diff --git a/ld/ldlang.c b/ld/ldlang.c
2591index 9bf5fcbe..57d9a777 100644
2592--- a/ld/ldlang.c
2593+++ b/ld/ldlang.c
2594@@ -1325,7 +1325,7 @@ output_section_statement_table_init (void)
2595 output_section_statement_newfunc,
2596 sizeof (struct out_section_hash_entry),
2597 61))
2598- fatal (_("%P: can not create hash table: %E\n"));
2599+ fatal (_("%F%P: can not create hash table: %E\n"));
2600 }
2601
2602 static void
2603@@ -1453,7 +1453,7 @@ lang_memory_region_alias (const char *alias, const char *region_name)
2604 the default memory region. */
2605 if (strcmp (region_name, DEFAULT_MEMORY_REGION) == 0
2606 || strcmp (alias, DEFAULT_MEMORY_REGION) == 0)
2607- fatal (_("%P:%pS: error: alias for default memory region\n"), NULL);
2608+ fatal (_("%F%P:%pS: error: alias for default memory region\n"), NULL);
2609
2610 /* Look for the target region and check if the alias is not already
2611 in use. */
2612@@ -1464,14 +1464,14 @@ lang_memory_region_alias (const char *alias, const char *region_name)
2613 if (region == NULL && strcmp (n->name, region_name) == 0)
2614 region = r;
2615 if (strcmp (n->name, alias) == 0)
2616- fatal (_("%P:%pS: error: redefinition of memory region "
2617+ fatal (_("%F%P:%pS: error: redefinition of memory region "
2618 "alias `%s'\n"),
2619 NULL, alias);
2620 }
2621
2622 /* Check if the target region exists. */
2623 if (region == NULL)
2624- fatal (_("%P:%pS: error: memory region `%s' "
2625+ fatal (_("%F%P:%pS: error: memory region `%s' "
2626 "for alias `%s' does not exist\n"),
2627 NULL, region_name, alias);
2628
2629@@ -1532,7 +1532,7 @@ lang_output_section_statement_lookup (const char *name,
2630 if (entry == NULL)
2631 {
2632 if (create)
2633- fatal (_("%P: failed creating section `%s': %E\n"), name);
2634+ fatal (_("%F%P: failed creating section `%s': %E\n"), name);
2635 return NULL;
2636 }
2637
2638@@ -2426,7 +2426,7 @@ static void
2639 init_os (lang_output_section_statement_type *s, flagword flags)
2640 {
2641 if (strcmp (s->name, DISCARD_SECTION_NAME) == 0)
2642- fatal (_("%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
2643+ fatal (_("%F%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME);
2644
2645 if (!s->dup_output)
2646 s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name);
2647@@ -2435,7 +2435,7 @@ init_os (lang_output_section_statement_type *s, flagword flags)
2648 s->name, flags);
2649 if (s->bfd_section == NULL)
2650 {
2651- fatal (_("%P: output format %s cannot represent section"
2652+ fatal (_("%F%P: output format %s cannot represent section"
2653 " called %s: %E\n"),
2654 link_info.output_bfd->xvec->name, s->name);
2655 }
2656@@ -3027,7 +3027,7 @@ load_symbols (lang_input_statement_type *entry,
2657 }
2658 else if (err != bfd_error_file_not_recognized
2659 || place == NULL)
2660- fatal (_("%P: %pB: file not recognized: %E\n"), entry->the_bfd);
2661+ fatal (_("%F%P: %pB: file not recognized: %E\n"), entry->the_bfd);
2662
2663 bfd_close (entry->the_bfd);
2664 entry->the_bfd = NULL;
2665@@ -3100,7 +3100,7 @@ load_symbols (lang_input_statement_type *entry,
2666
2667 if (!bfd_check_format (member, bfd_object))
2668 {
2669- fatal (_("%P: %pB: member %pB in archive is not an object\n"),
2670+ fatal (_("%F%P: %pB: member %pB in archive is not an object\n"),
2671 entry->the_bfd, member);
2672 loaded = false;
2673 }
2674@@ -3115,7 +3115,7 @@ load_symbols (lang_input_statement_type *entry,
2675 substitute BFD for us. */
2676 if (!bfd_link_add_symbols (subsbfd, &link_info))
2677 {
2678- fatal (_("%P: %pB: error adding symbols: %E\n"), member);
2679+ fatal (_("%F%P: %pB: error adding symbols: %E\n"), member);
2680 loaded = false;
2681 }
2682 }
2683@@ -3129,7 +3129,7 @@ load_symbols (lang_input_statement_type *entry,
2684 if (bfd_link_add_symbols (entry->the_bfd, &link_info))
2685 entry->flags.loaded = true;
2686 else
2687- fatal (_("%P: %pB: error adding symbols: %E\n"), entry->the_bfd);
2688+ fatal (_("%F%P: %pB: error adding symbols: %E\n"), entry->the_bfd);
2689
2690 return entry->flags.loaded;
2691 }
2692@@ -3370,7 +3370,7 @@ open_output (const char *name)
2693 {
2694 char *in = lrealpath (f->local_sym_name);
2695 if (filename_cmp (in, out) == 0)
2696- fatal (_("%P: input file '%s' is the same as output file\n"),
2697+ fatal (_("%F%P: input file '%s' is the same as output file\n"),
2698 f->filename);
2699 free (in);
2700 }
2701@@ -3432,23 +3432,23 @@ open_output (const char *name)
2702 if (link_info.output_bfd == NULL)
2703 {
2704 if (bfd_get_error () == bfd_error_invalid_target)
2705- fatal (_("%P: target %s not found\n"), output_target);
2706+ fatal (_("%F%P: target %s not found\n"), output_target);
2707
2708- fatal (_("%P: cannot open output file %s: %E\n"), name);
2709+ fatal (_("%F%P: cannot open output file %s: %E\n"), name);
2710 }
2711
2712 delete_output_file_on_failure = true;
2713
2714 if (!bfd_set_format (link_info.output_bfd, bfd_object))
2715- fatal (_("%P: %s: can not make object file: %E\n"), name);
2716+ fatal (_("%F%P: %s: can not make object file: %E\n"), name);
2717 if (!bfd_set_arch_mach (link_info.output_bfd,
2718 ldfile_output_architecture,
2719 ldfile_output_machine))
2720- fatal (_("%P: %s: can not set architecture: %E\n"), name);
2721+ fatal (_("%F%P: %s: can not set architecture: %E\n"), name);
2722
2723 link_info.hash = bfd_link_hash_table_create (link_info.output_bfd);
2724 if (link_info.hash == NULL)
2725- fatal (_("%P: can not create hash table: %E\n"));
2726+ fatal (_("%F%P: can not create hash table: %E\n"));
2727
2728 bfd_set_gp_size (link_info.output_bfd, g_switch_value);
2729 }
2730@@ -3973,7 +3973,7 @@ insert_undefined (const char *name)
2731
2732 h = bfd_link_hash_lookup (link_info.hash, name, true, false, true);
2733 if (h == NULL)
2734- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
2735+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
2736 if (h->type == bfd_link_hash_new)
2737 {
2738 h->type = bfd_link_hash_undefined;
2739@@ -4259,7 +4259,7 @@ map_input_to_output_sections
2740 else if (strcmp (name, "SHT_PREINIT_ARRAY") == 0)
2741 type = SHT_PREINIT_ARRAY;
2742 else
2743- fatal (_ ("%P: invalid type for output section `%s'\n"),
2744+ fatal (_ ("%F%P: invalid type for output section `%s'\n"),
2745 os->name);
2746 }
2747 else
2748@@ -4268,7 +4268,7 @@ map_input_to_output_sections
2749 if (expld.result.valid_p)
2750 type = expld.result.value;
2751 else
2752- fatal (_ ("%P: invalid type for output section `%s'\n"),
2753+ fatal (_ ("%F%P: invalid type for output section `%s'\n"),
2754 os->name);
2755 }
2756 break;
2757@@ -4417,7 +4417,7 @@ process_insert_statements (lang_statement_union_type **start)
2758 }
2759 if (where == NULL)
2760 {
2761- fatal (_("%P: %s not found for insert\n"), i->where);
2762+ fatal (_("%F%P: %s not found for insert\n"), i->where);
2763 return;
2764 }
2765
2766@@ -5499,12 +5499,12 @@ size_input_section
2767 if (dot + TO_ADDR (i->size) > end)
2768 {
2769 if (i->flags & SEC_LINKER_CREATED)
2770- fatal (_("%P: Output section `%pA' not large enough for "
2771+ fatal (_("%F%P: Output section `%pA' not large enough for "
2772 "the linker-created stubs section `%pA'.\n"),
2773 i->output_section, i);
2774
2775 if (i->rawsize && i->rawsize != i->size)
2776- fatal (_("%P: Relaxation not supported with "
2777+ fatal (_("%F%P: Relaxation not supported with "
2778 "--enable-non-contiguous-regions (section `%pA' "
2779 "would overflow `%pA' after it changed size).\n"),
2780 i, i->output_section);
2781@@ -5860,7 +5860,7 @@ lang_size_sections_1
2782 dot += expld.result.section->vma;
2783 }
2784 else if (expld.phase != lang_mark_phase_enum)
2785- fatal (_("%P:%pS: non constant or forward reference"
2786+ fatal (_("%F%P:%pS: non constant or forward reference"
2787 " address expression for section %s\n"),
2788 os->addr_tree, os->name);
2789 }
2790@@ -5943,7 +5943,7 @@ lang_size_sections_1
2791 overridden by the using the --no-check-sections
2792 switch. */
2793 if (command_line.check_section_addresses)
2794- fatal (_("%P: error: no memory region specified"
2795+ fatal (_("%F%P: error: no memory region specified"
2796 " for loadable section `%s'\n"),
2797 bfd_section_name (os->bfd_section));
2798 else
2799@@ -6250,7 +6250,7 @@ lang_size_sections_1
2800 bool again;
2801
2802 if (!bfd_relax_section (i->owner, i, &link_info, &again))
2803- fatal (_("%P: can't relax section: %E\n"));
2804+ fatal (_("%F%P: can't relax section: %E\n"));
2805 if (again)
2806 *relax = true;
2807 }
2808@@ -6659,7 +6659,7 @@ lang_do_assignments_1 (lang_statement_union_type *s,
2809 s->data_statement.value += expld.result.section->vma;
2810 }
2811 else if (expld.phase == lang_final_phase_enum)
2812- fatal (_("%P: invalid data statement\n"));
2813+ fatal (_("%F%P: invalid data statement\n"));
2814 {
2815 unsigned int size;
2816 switch (s->data_statement.type)
2817@@ -6692,7 +6692,7 @@ lang_do_assignments_1 (lang_statement_union_type *s,
2818 if (expld.result.valid_p)
2819 s->reloc_statement.addend_value = expld.result.value;
2820 else if (expld.phase == lang_final_phase_enum)
2821- fatal (_("%P: invalid reloc statement\n"));
2822+ fatal (_("%F%P: invalid reloc statement\n"));
2823 dot += TO_ADDR (bfd_get_reloc_size (s->reloc_statement.howto));
2824 break;
2825
2826@@ -7110,7 +7110,7 @@ lang_end (void)
2827 break;
2828 }
2829 if (!sym)
2830- fatal (_("%P: --gc-sections requires a defined symbol root "
2831+ fatal (_("%F%P: --gc-sections requires a defined symbol root "
2832 "specified by -e or -u\n"));
2833 }
2834
2835@@ -7135,7 +7135,7 @@ lang_end (void)
2836 + bfd_section_vma (h->u.def.section->output_section)
2837 + h->u.def.section->output_offset);
2838 if (!bfd_set_start_address (link_info.output_bfd, val))
2839- fatal (_("%P: %s: can't set start address\n"), entry_symbol.name);
2840+ fatal (_("%F%P: %s: can't set start address\n"), entry_symbol.name);
2841 }
2842 else
2843 {
2844@@ -7148,7 +7148,7 @@ lang_end (void)
2845 if (*send == '\0')
2846 {
2847 if (!bfd_set_start_address (link_info.output_bfd, val))
2848- fatal (_("%P: can't set start address\n"));
2849+ fatal (_("%F%P: can't set start address\n"));
2850 }
2851 /* BZ 2004952: Only use the start of the entry section for executables. */
2852 else if bfd_link_executable (&link_info)
2853@@ -7167,7 +7167,7 @@ lang_end (void)
2854 bfd_section_vma (ts));
2855 if (!bfd_set_start_address (link_info.output_bfd,
2856 bfd_section_vma (ts)))
2857- fatal (_("%P: can't set start address\n"));
2858+ fatal (_("%F%P: can't set start address\n"));
2859 }
2860 else
2861 {
2862@@ -7236,7 +7236,7 @@ lang_check (void)
2863 != bfd_get_flavour (link_info.output_bfd)))
2864 && (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0)
2865 {
2866- fatal (_("%P: relocatable linking with relocations from"
2867+ fatal (_("%F%P: relocatable linking with relocations from"
2868 " format %s (%pB) to format %s (%pB) is not supported\n"),
2869 bfd_get_target (input_bfd), input_bfd,
2870 bfd_get_target (link_info.output_bfd), link_info.output_bfd);
2871@@ -7340,7 +7340,7 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info)
2872
2873 section = h->u.c.p->section;
2874 if (!bfd_define_common_symbol (link_info.output_bfd, &link_info, h))
2875- fatal (_("%P: could not define common symbol `%pT': %E\n"),
2876+ fatal (_("%F%P: could not define common symbol `%pT': %E\n"),
2877 h->root.string);
2878
2879 if (config.map_file != NULL)
2880@@ -7518,7 +7518,7 @@ lang_set_flags (lang_memory_region_type *ptr, const char *flags, int invert)
2881 break;
2882
2883 default:
2884- fatal (_("%P: invalid character %c (%d) in flags\n"),
2885+ fatal (_("%F%P: invalid character %c (%d) in flags\n"),
2886 *flags, *flags);
2887 break;
2888 }
2889@@ -7630,7 +7630,7 @@ lang_enter_output_section_statement (const char *output_section_statement_name,
2890
2891 os->align_lma_with_input = align_with_input == ALIGN_WITH_INPUT;
2892 if (os->align_lma_with_input && align != NULL)
2893- fatal (_("%P:%pS: error: align with input and explicit align specified\n"),
2894+ fatal (_("%F%P:%pS: error: align with input and explicit align specified\n"),
2895 NULL);
2896
2897 os->subsection_alignment = subalign;
2898@@ -8142,7 +8142,7 @@ lang_process (void)
2899 lang_place_undefineds ();
2900
2901 if (!bfd_section_already_linked_table_init ())
2902- fatal (_("%P: can not create hash table: %E\n"));
2903+ fatal (_("%F%P: can not create hash table: %E\n"));
2904
2905 /* A first pass through the memory regions ensures that if any region
2906 references a symbol for its origin or length then this symbol will be
2907@@ -8180,7 +8180,7 @@ lang_process (void)
2908 files = file_chain;
2909 inputfiles = input_file_chain;
2910 if (plugin_call_all_symbols_read ())
2911- fatal (_("%P: %s: plugin reported error after all symbols read\n"),
2912+ fatal (_("%F%P: %s: plugin reported error after all symbols read\n"),
2913 plugin_error_plugin ());
2914 link_info.lto_all_symbols_read = true;
2915 /* Open any newly added files, updating the file chains. */
2916@@ -8757,7 +8757,7 @@ void
2917 lang_startup (const char *name)
2918 {
2919 if (first_file->filename != NULL)
2920- fatal (_("%P: multiple STARTUP files\n"));
2921+ fatal (_("%F%P: multiple STARTUP files\n"));
2922 first_file->filename = name;
2923 first_file->local_sym_name = name;
2924 first_file->flags.real = true;
2925@@ -8981,7 +8981,7 @@ lang_record_phdrs (void)
2926 break;
2927 }
2928 if (last == NULL)
2929- fatal (_("%P: no sections assigned to phdrs\n"));
2930+ fatal (_("%F%P: no sections assigned to phdrs\n"));
2931 }
2932 pl = last;
2933 }
2934@@ -9019,7 +9019,7 @@ lang_record_phdrs (void)
2935 if (!bfd_record_phdr (link_info.output_bfd, l->type,
2936 l->flags != NULL, flags, l->at != NULL,
2937 at, l->filehdr, l->phdrs, c, secs))
2938- fatal (_("%P: bfd_record_phdr failed: %E\n"));
2939+ fatal (_("%F%P: bfd_record_phdr failed: %E\n"));
2940 }
2941
2942 free (secs);
2943diff --git a/ld/ldlex.l b/ld/ldlex.l
2944index 7cbade08..0a7d63e6 100644
2945--- a/ld/ldlex.l
2946+++ b/ld/ldlex.l
2947@@ -504,7 +504,7 @@ void
2948 lex_push_file (FILE *file, const char *name, unsigned int sysrooted)
2949 {
2950 if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
2951- fatal (_("%P: includes nested too deeply\n"));
2952+ fatal (_("%F:includes nested too deeply\n"));
2953 file_name_stack[include_stack_ptr] = name;
2954 lineno_stack[include_stack_ptr] = lineno;
2955 sysrooted_stack[include_stack_ptr] = input_flags.sysrooted;
2956@@ -566,7 +566,7 @@ lex_redirect (const char *string, const char *fake_filename, unsigned int count)
2957
2958 yy_init = 0;
2959 if (include_stack_ptr >= MAX_INCLUDE_DEPTH)
2960- fatal (_("%P: macros nested too deeply\n"));
2961+ fatal (_("%F: macros nested too deeply\n"));
2962 file_name_stack[include_stack_ptr] = fake_filename;
2963 lineno_stack[include_stack_ptr] = lineno;
2964 include_stack[include_stack_ptr] = YY_CURRENT_BUFFER;
2965@@ -670,7 +670,7 @@ yy_input (char *buf, int max_size)
2966 {
2967 result = fread (buf, 1, max_size, yyin);
2968 if (result < max_size && ferror (yyin))
2969- fatal (_("%P: read in flex scanner failed\n"));
2970+ fatal (_("%F%P: read in flex scanner failed\n"));
2971 }
2972 }
2973 return result;
2974@@ -707,7 +707,7 @@ comment (void)
2975
2976 if (c == 0)
2977 {
2978- fatal (_("%P: EOF in comment\n"));
2979+ fatal (_("%F%P: EOF in comment\n"));
2980 break;
2981 }
2982 }
2983@@ -728,7 +728,7 @@ lex_warn_invalid (char *where, char *what)
2984 if (ldfile_assumed_script)
2985 {
2986 bfd_set_error (bfd_error_file_not_recognized);
2987- fatal (_("%s: file not recognized: %E\n"), ldlex_filename ());
2988+ fatal (_("%F%s: file not recognized: %E\n"), ldlex_filename ());
2989 }
2990
2991 if (! ISPRINT (*what))
2992diff --git a/ld/ldmain.c b/ld/ldmain.c
2993index a61086c3..8250ae08 100644
2994--- a/ld/ldmain.c
2995+++ b/ld/ldmain.c
2996@@ -193,7 +193,7 @@ write_dependency_file (void)
2997 out = fopen (config.dependency_file, FOPEN_WT);
2998 if (out == NULL)
2999 {
3000- fatal (_("%P: cannot open dependency file %s: %E\n"),
3001+ fatal (_("%F%P: cannot open dependency file %s: %E\n"),
3002 config.dependency_file);
3003 }
3004
3005@@ -266,7 +266,7 @@ main (int argc, char **argv)
3006 expandargv (&argc, &argv);
3007
3008 if (bfd_init () != BFD_INIT_MAGIC)
3009- fatal (_("%P: fatal error: libbfd ABI mismatch\n"));
3010+ fatal (_("%F%P: fatal error: libbfd ABI mismatch\n"));
3011
3012 bfd_set_error_program_name (program_name);
3013
3014@@ -468,13 +468,13 @@ main (int argc, char **argv)
3015 xexit (0);
3016
3017 if (link_info.inhibit_common_definition && !bfd_link_dll (&link_info))
3018- fatal (_("%P: --no-define-common may not be used without -shared\n"));
3019+ fatal (_("%F%P: --no-define-common may not be used without -shared\n"));
3020
3021 if (!lang_has_input_file)
3022 {
3023 if (version_printed || command_line.print_output_format)
3024 xexit (0);
3025- fatal (_("%P: no input files\n"));
3026+ fatal (_("%F%P: no input files\n"));
3027 }
3028
3029 if (verbose)
3030@@ -494,7 +494,7 @@ main (int argc, char **argv)
3031 if (config.map_file == (FILE *) NULL)
3032 {
3033 bfd_set_error (bfd_error_system_call);
3034- einfo (_("%P: cannot open map file %s: %E\n"),
3035+ fatal (_("%F%P: cannot open map file %s: %E\n"),
3036 config.map_filename);
3037 }
3038 }
3039@@ -569,7 +569,7 @@ main (int argc, char **argv)
3040 bfd *obfd = link_info.output_bfd;
3041 link_info.output_bfd = NULL;
3042 if (!bfd_close (obfd))
3043- fatal (_("%P: %s: final close failed: %E\n"), output_filename);
3044+ fatal (_("%F%P: %s: final close failed: %E\n"), output_filename);
3045
3046 /* If the --force-exe-suffix is enabled, and we're making an
3047 executable file and it doesn't end in .exe, copy it to one
3048@@ -596,10 +596,10 @@ main (int argc, char **argv)
3049 dst = fopen (dst_name, FOPEN_WB);
3050
3051 if (!src)
3052- fatal (_("%P: unable to open for source of copy `%s'\n"),
3053+ fatal (_("%F%P: unable to open for source of copy `%s'\n"),
3054 output_filename);
3055 if (!dst)
3056- fatal (_("%P: unable to open for destination of copy `%s'\n"),
3057+ fatal (_("%F%P: unable to open for destination of copy `%s'\n"),
3058 dst_name);
3059 while ((l = fread (buf, 1, bsize, src)) > 0)
3060 {
3061@@ -710,7 +710,7 @@ get_emulation (int argc, char **argv)
3062 i++;
3063 }
3064 else
3065- fatal (_("%P: missing argument to -m\n"));
3066+ fatal (_("%F%P: missing argument to -m\n"));
3067 }
3068 else if (strcmp (argv[i], "-mips1") == 0
3069 || strcmp (argv[i], "-mips2") == 0
3070@@ -764,11 +764,11 @@ add_ysym (const char *name)
3071 bfd_hash_newfunc,
3072 sizeof (struct bfd_hash_entry),
3073 61))
3074- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3075+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3076 }
3077
3078 if (bfd_hash_lookup (link_info.notice_hash, name, true, true) == NULL)
3079- fatal (_("%P: bfd_hash_lookup failed: %E\n"));
3080+ fatal (_("%F%P: bfd_hash_lookup failed: %E\n"));
3081 }
3082
3083 void
3084@@ -781,11 +781,11 @@ add_ignoresym (struct bfd_link_info *info, const char *name)
3085 bfd_hash_newfunc,
3086 sizeof (struct bfd_hash_entry),
3087 61))
3088- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3089+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3090 }
3091
3092 if (bfd_hash_lookup (info->ignore_hash, name, true, true) == NULL)
3093- fatal (_("%P: bfd_hash_lookup failed: %E\n"));
3094+ fatal (_("%F%P: bfd_hash_lookup failed: %E\n"));
3095 }
3096
3097 /* Record a symbol to be wrapped, from the --wrap option. */
3098@@ -801,11 +801,11 @@ add_wrap (const char *name)
3099 bfd_hash_newfunc,
3100 sizeof (struct bfd_hash_entry),
3101 61))
3102- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3103+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3104 }
3105
3106 if (bfd_hash_lookup (link_info.wrap_hash, name, true, true) == NULL)
3107- fatal (_("%P: bfd_hash_lookup failed: %E\n"));
3108+ fatal (_("%F%P: bfd_hash_lookup failed: %E\n"));
3109 }
3110
3111 /* Handle the -retain-symbols-file option. */
3112@@ -833,7 +833,7 @@ add_keepsyms_file (const char *filename)
3113 xmalloc (sizeof (struct bfd_hash_table));
3114 if (!bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc,
3115 sizeof (struct bfd_hash_entry)))
3116- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3117+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3118
3119 bufsize = 100;
3120 buf = (char *) xmalloc (bufsize);
3121@@ -863,7 +863,7 @@ add_keepsyms_file (const char *filename)
3122 buf[len] = '\0';
3123
3124 if (bfd_hash_lookup (link_info.keep_hash, buf, true, true) == NULL)
3125- fatal (_("%P: bfd_hash_lookup for insertion failed: %E\n"));
3126+ fatal (_("%F%P: bfd_hash_lookup for insertion failed: %E\n"));
3127 }
3128 }
3129
3130@@ -1270,7 +1270,7 @@ constructor_callback (struct bfd_link_info *info,
3131 if (bfd_reloc_type_lookup (info->output_bfd, BFD_RELOC_CTOR) == NULL
3132 && (bfd_link_relocatable (info)
3133 || bfd_reloc_type_lookup (abfd, BFD_RELOC_CTOR) == NULL))
3134- fatal (_("%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
3135+ fatal (_("%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n"));
3136
3137 s = set_name;
3138 if (bfd_get_symbol_leading_char (abfd) != '\0')
3139@@ -1282,7 +1282,7 @@ constructor_callback (struct bfd_link_info *info,
3140
3141 h = bfd_link_hash_lookup (info->hash, set_name, true, true, true);
3142 if (h == (struct bfd_link_hash_entry *) NULL)
3143- fatal (_("%P: bfd_link_hash_lookup failed: %E\n"));
3144+ fatal (_("%F%P: bfd_link_hash_lookup failed: %E\n"));
3145 if (h->type == bfd_link_hash_new)
3146 {
3147 h->type = bfd_link_hash_undefined;
3148@@ -1315,7 +1315,7 @@ symbol_warning (const char *warning, const char *symbol, bfd *abfd)
3149 struct warning_callback_info cinfo;
3150
3151 if (!bfd_generic_link_read_symbols (abfd))
3152- fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
3153+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
3154
3155 cinfo.found = false;
3156 cinfo.warning = warning;
3157@@ -1377,14 +1377,14 @@ warning_find_reloc (bfd *abfd, asection *sec, void *iarg)
3158
3159 relsize = bfd_get_reloc_upper_bound (abfd, sec);
3160 if (relsize < 0)
3161- fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
3162+ fatal (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
3163 if (relsize == 0)
3164 return;
3165
3166 relpp = (arelent **) xmalloc (relsize);
3167 relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
3168 if (relcount < 0)
3169- fatal (_("%P: %pB: could not read relocs: %E\n"), abfd);
3170+ fatal (_("%F%P: %pB: could not read relocs: %E\n"), abfd);
3171
3172 p = relpp;
3173 pend = p + relcount;
3174diff --git a/ld/ldmisc.c b/ld/ldmisc.c
3175index d1257214..1d9d0cf2 100644
3176--- a/ld/ldmisc.c
3177+++ b/ld/ldmisc.c
3178@@ -324,7 +324,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning)
3179 if (abfd != NULL)
3180 {
3181 if (!bfd_generic_link_read_symbols (abfd))
3182- fatal (_("%P: %pB: could not read symbols: %E\n"), abfd);
3183+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), abfd);
3184
3185 asymbols = bfd_get_outsymbols (abfd);
3186 }
3187@@ -638,7 +638,7 @@ fatal (const char *fmt, ...)
3188 void
3189 info_assert (const char *file, unsigned int line)
3190 {
3191- fatal (_("%P: internal error %s %d\n"), file, line);
3192+ fatal (_("%F%P: internal error %s %d\n"), file, line);
3193 }
3194
3195 /* ('m' for map) Format info message and print on map. */
3196@@ -707,5 +707,5 @@ ld_abort (const char *file, int line, const char *fn)
3197 else
3198 einfo (_("%P: internal error: aborting at %s:%d\n"),
3199 file, line);
3200- fatal (_("%P: please report this bug\n"));
3201+ fatal (_("%F%P: please report this bug\n"));
3202 }
3203diff --git a/ld/ldwrite.c b/ld/ldwrite.c
3204index ace5e564..216d3583 100644
3205--- a/ld/ldwrite.c
3206+++ b/ld/ldwrite.c
3207@@ -57,14 +57,14 @@ build_link_order (lang_statement_union_type *statement)
3208
3209 link_order = bfd_new_link_order (link_info.output_bfd, output_section);
3210 if (link_order == NULL)
3211- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3212+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3213
3214 link_order->type = bfd_data_link_order;
3215 link_order->offset = statement->data_statement.output_offset;
3216 link_order->u.data.contents = bfd_alloc (link_info.output_bfd,
3217 QUAD_SIZE);
3218 if (link_order->u.data.contents == NULL)
3219- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3220+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3221
3222 value = statement->data_statement.value;
3223
3224@@ -170,7 +170,7 @@ build_link_order (lang_statement_union_type *statement)
3225
3226 link_order = bfd_new_link_order (link_info.output_bfd, output_section);
3227 if (link_order == NULL)
3228- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3229+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3230
3231 link_order->offset = rs->output_offset;
3232 link_order->size = bfd_get_reloc_size (rs->howto);
3233@@ -178,7 +178,7 @@ build_link_order (lang_statement_union_type *statement)
3234 link_order->u.reloc.p = (struct bfd_link_order_reloc *)
3235 bfd_alloc (link_info.output_bfd, sizeof (struct bfd_link_order_reloc));
3236 if (link_order->u.reloc.p == NULL)
3237- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3238+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3239
3240 link_order->u.reloc.p->reloc = rs->reloc;
3241 link_order->u.reloc.p->addend = rs->addend_value;
3242@@ -224,7 +224,7 @@ build_link_order (lang_statement_union_type *statement)
3243 link_order = bfd_new_link_order (link_info.output_bfd,
3244 output_section);
3245 if (link_order == NULL)
3246- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3247+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3248
3249 if ((i->flags & SEC_NEVER_LOAD) != 0
3250 && (i->flags & SEC_DEBUGGING) == 0)
3251@@ -265,7 +265,7 @@ build_link_order (lang_statement_union_type *statement)
3252 link_order = bfd_new_link_order (link_info.output_bfd,
3253 output_section);
3254 if (link_order == NULL)
3255- fatal (_("%P: bfd_new_link_order failed: %E\n"));
3256+ fatal (_("%F%P: bfd_new_link_order failed: %E\n"));
3257 link_order->type = bfd_data_link_order;
3258 link_order->size = statement->padding_statement.size;
3259 link_order->offset = statement->padding_statement.output_offset;
3260@@ -334,7 +334,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count)
3261 if (startswith (name, ".stab")
3262 || strcmp (name, "$GDB_SYMBOLS$") == 0)
3263 {
3264- fatal (_ ("%P: cannot create split section name for %s\n"), name);
3265+ fatal (_ ("%F%P: cannot create split section name for %s\n"), name);
3266 return NULL;
3267 }
3268 tname[5] = 0;
3269@@ -345,7 +345,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count)
3270 || (h = bfd_link_hash_lookup (link_info.hash,
3271 sname, true, true, false)) == NULL)
3272 {
3273- fatal (_("%P: clone section failed: %E\n"));
3274+ fatal (_("%F%P: clone section failed: %E\n"));
3275 return NULL;
3276 }
3277 free (tname);
3278@@ -552,7 +552,7 @@ ldwrite (void)
3279 out. */
3280
3281 if (bfd_get_error () != bfd_error_no_error)
3282- fatal (_("%P: final link failed: %E\n"));
3283+ fatal (_("%F%P: final link failed: %E\n"));
3284 else
3285 xexit (1);
3286 }
3287diff --git a/ld/lexsup.c b/ld/lexsup.c
3288index 00346348..2b17499c 100644
3289--- a/ld/lexsup.c
3290+++ b/ld/lexsup.c
3291@@ -810,7 +810,7 @@ parse_args (unsigned argc, char **argv)
3292 && optc != argv[last_optind][1])
3293 {
3294 if (optarg)
3295- fatal (_("%P: Error: unable to disambiguate: "
3296+ fatal (_("%F%P: Error: unable to disambiguate: "
3297 "%s (did you mean -%s ?)\n"),
3298 argv[last_optind], argv[last_optind]);
3299 else
3300@@ -851,7 +851,7 @@ parse_args (unsigned argc, char **argv)
3301 /* Fall through. */
3302
3303 default:
3304- fatal (_("%P: use the --help option for usage information\n"));
3305+ fatal (_("%F%P: use the --help option for usage information\n"));
3306 break;
3307
3308 case 1: /* File name. */
3309@@ -870,7 +870,7 @@ parse_args (unsigned argc, char **argv)
3310 || strcmp (optarg, "default") == 0)
3311 input_flags.dynamic = true;
3312 else
3313- fatal (_("%P: unrecognized -a option `%s'\n"), optarg);
3314+ fatal (_("%F%P: unrecognized -a option `%s'\n"), optarg);
3315 break;
3316 case OPTION_ASSERT:
3317 /* FIXME: We just ignore these, but we should handle them. */
3318@@ -883,7 +883,7 @@ parse_args (unsigned argc, char **argv)
3319 else if (strcmp (optarg, "pure-text") == 0)
3320 ;
3321 else
3322- fatal (_("%P: unrecognized -assert option `%s'\n"), optarg);
3323+ fatal (_("%F%P: unrecognized -assert option `%s'\n"), optarg);
3324 break;
3325 case 'A':
3326 ldfile_add_arch (optarg);
3327@@ -927,7 +927,7 @@ parse_args (unsigned argc, char **argv)
3328
3329 style = cplus_demangle_name_to_style (optarg);
3330 if (style == unknown_demangling)
3331- fatal (_("%P: unknown demangling style `%s'\n"), optarg);
3332+ fatal (_("%F%P: unknown demangling style `%s'\n"), optarg);
3333
3334 cplus_demangle_set_style (style);
3335 }
3336@@ -1034,7 +1034,7 @@ parse_args (unsigned argc, char **argv)
3337 char *end;
3338 g_switch_value = strtoul (optarg, &end, 0);
3339 if (*end)
3340- fatal (_("%P: invalid number `%s'\n"), optarg);
3341+ fatal (_("%F%P: invalid number `%s'\n"), optarg);
3342 }
3343 break;
3344 case 'g':
3345@@ -1130,7 +1130,7 @@ parse_args (unsigned argc, char **argv)
3346 link_info.unresolved_syms_in_shared_libs = RM_IGNORE;
3347 }
3348 else
3349- fatal (_("%P: bad --unresolved-symbols option: %s\n"), optarg);
3350+ fatal (_("%F%P: bad --unresolved-symbols option: %s\n"), optarg);
3351 break;
3352 case OPTION_WARN_UNRESOLVED_SYMBOLS:
3353 link_info.warn_unresolved_syms = true;
3354@@ -1217,7 +1217,7 @@ parse_args (unsigned argc, char **argv)
3355 break;
3356 case OPTION_PLUGIN_OPT:
3357 if (plugin_opt_plugin_arg (optarg))
3358- fatal (_("%P: bad -plugin-opt option\n"));
3359+ fatal (_("%F%P: bad -plugin-opt option\n"));
3360 break;
3361 #endif /* BFD_SUPPORTS_PLUGINS */
3362 case 'q':
3363@@ -1234,10 +1234,10 @@ parse_args (unsigned argc, char **argv)
3364 an error message here. We cannot just make this a warning,
3365 increment optind, and continue because getopt is too confused
3366 and will seg-fault the next time around. */
3367- fatal(_("%P: unrecognised option: %s\n"), argv[optind]);
3368+ fatal(_("%F%P: unrecognised option: %s\n"), argv[optind]);
3369
3370 if (bfd_link_pic (&link_info))
3371- fatal (_("%P: -r and %s may not be used together\n"),
3372+ fatal (_("%F%P: -r and %s may not be used together\n"),
3373 bfd_link_dll (&link_info) ? "-shared" : "-pie");
3374
3375 link_info.type = type_relocatable;
3376@@ -1347,7 +1347,7 @@ parse_args (unsigned argc, char **argv)
3377 if (config.has_shared)
3378 {
3379 if (bfd_link_relocatable (&link_info))
3380- fatal (_("%P: -r and %s may not be used together\n"),
3381+ fatal (_("%F%P: -r and %s may not be used together\n"),
3382 "-shared");
3383
3384 link_info.type = type_dll;
3385@@ -1359,7 +1359,7 @@ parse_args (unsigned argc, char **argv)
3386 link_info.unresolved_syms_in_shared_libs = RM_IGNORE;
3387 }
3388 else
3389- fatal (_("%P: -shared not supported\n"));
3390+ fatal (_("%F%P: -shared not supported\n"));
3391 break;
3392 case OPTION_NO_PIE:
3393 link_info.type = type_pde;
3394@@ -1368,12 +1368,12 @@ parse_args (unsigned argc, char **argv)
3395 if (config.has_shared)
3396 {
3397 if (bfd_link_relocatable (&link_info))
3398- fatal (_("%P: -r and %s may not be used together\n"), "-pie");
3399+ fatal (_("%F%P: -r and %s may not be used together\n"), "-pie");
3400
3401 link_info.type = type_pie;
3402 }
3403 else
3404- fatal (_("%P: -pie not supported\n"));
3405+ fatal (_("%F%P: -pie not supported\n"));
3406 break;
3407 case 'h': /* Used on Solaris. */
3408 case OPTION_SONAME:
3409@@ -1390,7 +1390,7 @@ parse_args (unsigned argc, char **argv)
3410 else if (strcmp (optarg, N_("ascending")) == 0)
3411 config.sort_common = sort_ascending;
3412 else
3413- fatal (_("%P: invalid common section sorting option: %s\n"),
3414+ fatal (_("%F%P: invalid common section sorting option: %s\n"),
3415 optarg);
3416 break;
3417 case OPTION_SORT_SECTION:
3418@@ -1399,7 +1399,7 @@ parse_args (unsigned argc, char **argv)
3419 else if (strcmp (optarg, N_("alignment")) == 0)
3420 sort_section = by_alignment;
3421 else
3422- fatal (_("%P: invalid section sorting option: %s\n"), optarg);
3423+ fatal (_("%F%P: invalid section sorting option: %s\n"), optarg);
3424 break;
3425 case OPTION_STATS:
3426 config.stats = true;
3427@@ -1435,14 +1435,14 @@ parse_args (unsigned argc, char **argv)
3428 /* Check for <something>=<somthing>... */
3429 optarg2 = strchr (optarg, '=');
3430 if (optarg2 == NULL)
3431- fatal (_("%P: invalid argument to option"
3432+ fatal (_("%F%P: invalid argument to option"
3433 " \"--section-start\"\n"));
3434
3435 optarg2++;
3436
3437 /* So far so good. Are all the args present? */
3438 if ((*optarg == '\0') || (*optarg2 == '\0'))
3439- fatal (_("%P: missing argument(s) to option"
3440+ fatal (_("%F%P: missing argument(s) to option"
3441 " \"--section-start\"\n"));
3442
3443 /* We must copy the section name as set_section_start
3444@@ -1486,7 +1486,7 @@ parse_args (unsigned argc, char **argv)
3445 /* Fall through. */
3446 case OPTION_UR:
3447 if (bfd_link_pic (&link_info))
3448- fatal (_("%P: -r and %s may not be used together\n"),
3449+ fatal (_("%F%P: -r and %s may not be used together\n"),
3450 bfd_link_dll (&link_info) ? "-shared" : "-pie");
3451
3452 link_info.type = type_relocatable;
3453@@ -1517,7 +1517,7 @@ parse_args (unsigned argc, char **argv)
3454 char *end;
3455 int level ATTRIBUTE_UNUSED = strtoul (optarg, &end, 0);
3456 if (*end)
3457- fatal (_("%P: invalid number `%s'\n"), optarg);
3458+ fatal (_("%F%P: invalid number `%s'\n"), optarg);
3459 #if BFD_SUPPORTS_PLUGINS
3460 report_plugin_symbols = level > 1;
3461 #endif /* BFD_SUPPORTS_PLUGINS */
3462@@ -1712,7 +1712,7 @@ parse_args (unsigned argc, char **argv)
3463 break;
3464 case ')':
3465 if (! ingroup)
3466- fatal (_("%P: group ended before it began (--help for usage)\n"));
3467+ fatal (_("%F%P: group ended before it began (--help for usage)\n"));
3468
3469 lang_leave_group ();
3470 ingroup--;
3471@@ -1728,7 +1728,7 @@ parse_args (unsigned argc, char **argv)
3472
3473 case OPTION_REMAP_INPUTS_FILE:
3474 if (! ldfile_add_remap_file (optarg))
3475- fatal (_("%P: failed to add remap file %s\n"), optarg);
3476+ fatal (_("%F%P: failed to add remap file %s\n"), optarg);
3477 break;
3478
3479 case OPTION_REMAP_INPUTS:
3480@@ -1737,7 +1737,7 @@ parse_args (unsigned argc, char **argv)
3481 if (optarg2 == NULL)
3482 /* FIXME: Should we allow --remap-inputs=@myfile as a synonym
3483 for --remap-inputs-file=myfile ? */
3484- fatal (_("%P: invalid argument to option --remap-inputs\n"));
3485+ fatal (_("%F%P: invalid argument to option --remap-inputs\n"));
3486 size_t len = optarg2 - optarg;
3487 char * pattern = xmalloc (len + 1);
3488 memcpy (pattern, optarg, len);
3489@@ -1758,7 +1758,7 @@ parse_args (unsigned argc, char **argv)
3490 char *end;
3491 bfd_size_type cache_size = strtoul (optarg, &end, 0);
3492 if (*end != '\0')
3493- fatal (_("%P: invalid cache memory size: %s\n"), optarg);
3494+ fatal (_("%F%P: invalid cache memory size: %s\n"), optarg);
3495 link_info.max_cache_size = cache_size;
3496 }
3497 break;
3498@@ -1783,7 +1783,7 @@ parse_args (unsigned argc, char **argv)
3499
3500 case OPTION_POP_STATE:
3501 if (input_flags.pushed == NULL)
3502- fatal (_("%P: no state pushed before popping\n"));
3503+ fatal (_("%F%P: no state pushed before popping\n"));
3504 else
3505 {
3506 struct lang_input_statement_flags *oldp = input_flags.pushed;
3507@@ -1806,7 +1806,7 @@ parse_args (unsigned argc, char **argv)
3508 else if (strcasecmp (optarg, "discard") == 0)
3509 config.orphan_handling = orphan_handling_discard;
3510 else
3511- fatal (_("%P: invalid argument to option"
3512+ fatal (_("%F%P: invalid argument to option"
3513 " \"--orphan-handling\"\n"));
3514 break;
3515
3516@@ -1851,7 +1851,7 @@ parse_args (unsigned argc, char **argv)
3517 else if (strcmp (optarg, "share-duplicated") == 0)
3518 config.ctf_share_duplicated = true;
3519 else
3520- fatal (_("%P: bad --ctf-share-types option: %s\n"), optarg);
3521+ fatal (_("%F%P: bad --ctf-share-types option: %s\n"), optarg);
3522 break;
3523 }
3524 }
3525@@ -2046,7 +2046,7 @@ parse_args (unsigned argc, char **argv)
3526 if (config.no_section_header)
3527 {
3528 if (bfd_link_relocatable (&link_info))
3529- fatal (_("%P: -r and -z nosectionheader may not be used together\n"));
3530+ fatal (_("%F%P: -r and -z nosectionheader may not be used together\n"));
3531
3532 link_info.strip = strip_all;
3533 }
3534@@ -2054,9 +2054,9 @@ parse_args (unsigned argc, char **argv)
3535 if (!bfd_link_dll (&link_info))
3536 {
3537 if (command_line.filter_shlib)
3538- fatal (_("%P: -F may not be used without -shared\n"));
3539+ fatal (_("%F%P: -F may not be used without -shared\n"));
3540 if (command_line.auxiliary_filters)
3541- fatal (_("%P: -f may not be used without -shared\n"));
3542+ fatal (_("%F%P: -f may not be used without -shared\n"));
3543 }
3544
3545 /* Treat ld -r -s as ld -r -S -x (i.e., strip all local symbols). I
3546@@ -2097,7 +2097,7 @@ set_section_start (char *sect, char *valstr)
3547 const char *end;
3548 bfd_vma val = bfd_scan_vma (valstr, &end, 16);
3549 if (*end)
3550- fatal (_("%P: invalid hex number `%s'\n"), valstr);
3551+ fatal (_("%F%P: invalid hex number `%s'\n"), valstr);
3552 lang_section_start (sect, exp_intop (val), NULL);
3553 }
3554
3555@@ -2110,7 +2110,7 @@ set_segment_start (const char *section, char *valstr)
3556
3557 bfd_vma val = bfd_scan_vma (valstr, &end, 16);
3558 if (*end)
3559- fatal (_("%P: invalid hex number `%s'\n"), valstr);
3560+ fatal (_("%F%P: invalid hex number `%s'\n"), valstr);
3561 /* If we already have an entry for this segment, update the existing
3562 value. */
3563 name = section + 1;
3564diff --git a/ld/mri.c b/ld/mri.c
3565index 7c8e59fa..aea2bd44 100644
3566--- a/ld/mri.c
3567+++ b/ld/mri.c
3568@@ -288,7 +288,7 @@ mri_format (const char *name)
3569 lang_add_output_format ("srec", NULL, NULL, 1);
3570
3571 else
3572- fatal (_("%P: unknown format type %s\n"), name);
3573+ fatal (_("%F%P: unknown format type %s\n"), name);
3574 }
3575
3576 void
3577diff --git a/ld/pe-dll.c b/ld/pe-dll.c
3578index 800d00c8..ae294986 100644
3579--- a/ld/pe-dll.c
3580+++ b/ld/pe-dll.c
3581@@ -756,7 +756,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
3582
3583 if (!bfd_generic_link_read_symbols (b))
3584 {
3585- fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3586+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), b);
3587 return;
3588 }
3589
3590@@ -1048,7 +1048,7 @@ build_filler_bfd (bool include_edata)
3591 bfd_get_arch (link_info.output_bfd),
3592 bfd_get_mach (link_info.output_bfd)))
3593 {
3594- fatal (_("%P: can not create BFD: %E\n"));
3595+ fatal (_("%F%P: can not create BFD: %E\n"));
3596 return;
3597 }
3598
3599@@ -1326,7 +1326,7 @@ pe_walk_relocs (struct bfd_link_info *info,
3600
3601 if (!bfd_generic_link_read_symbols (b))
3602 {
3603- fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3604+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), b);
3605 return;
3606 }
3607
3608@@ -1407,7 +1407,7 @@ pe_find_data_imports (const char *symhead,
3609 if (!bfd_hash_table_init (import_hash,
3610 bfd_hash_newfunc,
3611 sizeof (struct bfd_hash_entry)))
3612- fatal (_("%P: bfd_hash_table_init failed: %E\n"));
3613+ fatal (_("%F%P: bfd_hash_table_init failed: %E\n"));
3614 }
3615 else
3616 import_hash = NULL;
3617@@ -1447,7 +1447,7 @@ pe_find_data_imports (const char *symhead,
3618
3619 if (!bfd_generic_link_read_symbols (b))
3620 {
3621- fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3622+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), b);
3623 return;
3624 }
3625
3626@@ -1549,7 +1549,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
3627
3628 if (!bfd_generic_link_read_symbols (b))
3629 {
3630- fatal (_("%P: %pB: could not read symbols: %E\n"), b);
3631+ fatal (_("%F%P: %pB: could not read symbols: %E\n"), b);
3632 return;
3633 }
3634
3635diff --git a/ld/plugin.c b/ld/plugin.c
3636index 0a99d406..27f69b97 100644
3637--- a/ld/plugin.c
3638+++ b/ld/plugin.c
3639@@ -252,7 +252,7 @@ plugin_opt_plugin (const char *plugin)
3640 newplug->name = plugin;
3641 newplug->dlhandle = dlopen (plugin, RTLD_NOW);
3642 if (!newplug->dlhandle)
3643- fatal (_("%P: %s: error loading plugin: %s\n"), plugin, dlerror ());
3644+ fatal (_("%F%P: %s: error loading plugin: %s\n"), plugin, dlerror ());
3645
3646 /* Check if plugin has been loaded already. */
3647 while (curplug)
3648@@ -345,7 +345,7 @@ plugin_get_ir_dummy_bfd (const char *name, bfd *srctemplate)
3649 }
3650 }
3651 report_error:
3652- fatal (_("%P: could not create dummy IR bfd: %E\n"));
3653+ fatal (_("%F%P: could not create dummy IR bfd: %E\n"));
3654 return NULL;
3655 }
3656
3657@@ -426,7 +426,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
3658 unsigned char visibility;
3659
3660 if (!elfsym)
3661- fatal (_("%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
3662+ fatal (_("%F%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
3663
3664 if (ldsym->def == LDPK_COMMON)
3665 {
3666@@ -437,7 +437,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
3667 switch (ldsym->visibility)
3668 {
3669 default:
3670- fatal (_("%P: unknown ELF symbol visibility: %d!\n"),
3671+ fatal (_("%F%P: unknown ELF symbol visibility: %d!\n"),
3672 ldsym->visibility);
3673 return LDPS_ERR;
3674
3675@@ -555,7 +555,7 @@ get_view (const void *handle, const void **viewp)
3676
3677 /* FIXME: einfo should support %lld. */
3678 if ((off_t) size != input->filesize)
3679- fatal (_("%P: unsupported input file size: %s (%ld bytes)\n"),
3680+ fatal (_("%F%P: unsupported input file size: %s (%ld bytes)\n"),
3681 input->name, (long) input->filesize);
3682
3683 /* Check the cached view buffer. */
3684@@ -826,7 +826,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms,
3685 && blhe->type != bfd_link_hash_common)
3686 {
3687 /* We should not have a new, indirect or warning symbol here. */
3688- fatal (_("%P: %s: plugin symbol table corrupt (sym type %d)\n"),
3689+ fatal (_("%F%P: %s: plugin symbol table corrupt (sym type %d)\n"),
3690 called_plugin->name, blhe->type);
3691 }
3692
3693@@ -978,14 +978,13 @@ message (int level, const char *format, ...)
3694 case LDPL_ERROR:
3695 default:
3696 {
3697- char *newfmt = concat (_("%X%P: error: "), format, "\n",
3698+ char *newfmt = concat (level == LDPL_FATAL ? "%F" : "%X",
3699+ _("%P: error: "), format, "\n",
3700 (const char *) NULL);
3701 fflush (stdout);
3702 vfinfo (stderr, newfmt, args, true);
3703 fflush (stderr);
3704 free (newfmt);
3705- if (level == LDPL_FATAL)
3706- fatal ("");
3707 }
3708 break;
3709 }
3710@@ -1128,14 +1127,14 @@ plugin_load_plugins (void)
3711 if (!onloadfn)
3712 onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "_onload");
3713 if (!onloadfn)
3714- fatal (_("%P: %s: error loading plugin: %s\n"),
3715+ fatal (_("%F%P: %s: error loading plugin: %s\n"),
3716 curplug->name, dlerror ());
3717 set_tv_plugin_args (curplug, &my_tv[tv_header_size]);
3718 called_plugin = curplug;
3719 rv = (*onloadfn) (my_tv);
3720 called_plugin = NULL;
3721 if (rv != LDPS_OK)
3722- fatal (_("%P: %s: plugin error: %d\n"), curplug->name, rv);
3723+ fatal (_("%F%P: %s: plugin error: %d\n"), curplug->name, rv);
3724 curplug = curplug->next;
3725 }
3726
3727@@ -1194,7 +1193,7 @@ plugin_strdup (bfd *abfd, const char *str)
3728 strlength = strlen (str) + 1;
3729 copy = bfd_alloc (abfd, strlength);
3730 if (copy == NULL)
3731- fatal (_("%P: plugin_strdup failed to allocate memory: %s\n"),
3732+ fatal (_("%F%P: plugin_strdup failed to allocate memory: %s\n"),
3733 bfd_get_error ());
3734 memcpy (copy, str, strlength);
3735 return copy;
3736@@ -1231,7 +1230,7 @@ plugin_object_p (bfd *ibfd, bool known_used)
3737
3738 input = bfd_alloc (abfd, sizeof (*input));
3739 if (input == NULL)
3740- fatal (_("%P: plugin failed to allocate memory for input: %s\n"),
3741+ fatal (_("%F%P: plugin failed to allocate memory for input: %s\n"),
3742 bfd_get_error ());
3743
3744 if (!bfd_plugin_open_input (ibfd, &file))
3745@@ -1259,7 +1258,7 @@ plugin_object_p (bfd *ibfd, bool known_used)
3746 claimed = 0;
3747
3748 if (plugin_call_claim_file (&file, &claimed, known_used))
3749- fatal (_("%P: %s: plugin reported error claiming file\n"),
3750+ fatal (_("%F%P: %s: plugin reported error claiming file\n"),
3751 plugin_error_plugin ());
3752
3753 if (input->fd != -1
3754--
37552.43.0
3756
diff --git a/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5244.patch b/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5244.patch
new file mode 100644
index 0000000000..e8855a4b4b
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5244.patch
@@ -0,0 +1,25 @@
1From: Alan Modra <amodra@gmail.com>
2Date: Thu, 10 Apr 2025 19:41:49 +0930
3
4Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=d1458933830456e54223d9fc61f0d9b3a19256f5]
5CVE: CVE-2025-5244
6
7PR32858 ld segfault on fuzzed object
8We missed one place where it is necessary to check for empty groups.
9
10Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
11
12diff --git a/bfd/elflink.c b/bfd/elflink.c
13index a76e8e38da7..549b7b7dd92 100644
14--- a/bfd/elflink.c
15+++ b/bfd/elflink.c
16@@ -14408,7 +14408,8 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
17 if (o->flags & SEC_GROUP)
18 {
19 asection *first = elf_next_in_group (o);
20- o->gc_mark = first->gc_mark;
21+ if (first != NULL)
22+ o->gc_mark = first->gc_mark;
23 }
24
25 if (o->gc_mark)
diff --git a/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5245.patch b/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5245.patch
new file mode 100644
index 0000000000..d4b7d55966
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0022-CVE-2025-5245.patch
@@ -0,0 +1,38 @@
1From: Alan Modra <amodra@gmail.com>
2Date: Tue, 1 Apr 2025 22:36:54 +1030
3
4PR32829, SEGV on objdump function debug_type_samep
5u.kenum is always non-NULL, see debug_make_enum_type.
6
7Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=6c3458a8b7ee7d39f070c7b2350851cb2110c65a]
8CVE: CVE-2025-5245
9
10Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
11
12diff --git a/binutils/debug.c b/binutils/debug.c
13index dcc8ccde..465b18e7 100644
14--- a/binutils/debug.c
15+++ b/binutils/debug.c
16@@ -2554,9 +2554,6 @@ debug_write_type (struct debug_handle *info,
17 case DEBUG_KIND_UNION_CLASS:
18 return debug_write_class_type (info, fns, fhandle, type, tag);
19 case DEBUG_KIND_ENUM:
20- if (type->u.kenum == NULL)
21- return (*fns->enum_type) (fhandle, tag, (const char **) NULL,
22- (bfd_signed_vma *) NULL);
23 return (*fns->enum_type) (fhandle, tag, type->u.kenum->names,
24 type->u.kenum->values);
25 case DEBUG_KIND_POINTER:
26@@ -3097,9 +3094,9 @@ debug_type_samep (struct debug_handle *info, struct debug_type_s *t1,
27 break;
28
29 case DEBUG_KIND_ENUM:
30- if (t1->u.kenum == NULL)
31- ret = t2->u.kenum == NULL;
32- else if (t2->u.kenum == NULL)
33+ if (t1->u.kenum->names == NULL)
34+ ret = t2->u.kenum->names == NULL;
35+ else if (t2->u.kenum->names == NULL)
36 ret = false;
37 else
38 {
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2024-57360.patch b/meta/recipes-devtools/binutils/binutils/CVE-2024-57360.patch
new file mode 100644
index 0000000000..6d9720414b
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2024-57360.patch
@@ -0,0 +1,75 @@
1From 5f8987d3999edb26e757115fe87be55787d510b9 Mon Sep 17 00:00:00 2001
2From: Nick Clifton <nickc@redhat.com>
3Date: Tue, 17 Dec 2024 09:18:57 +0000
4Subject: [PATCH] nm: Avoid potential segmentation fault when displaying
5 symbols without version info.
6
7PR 32467
8
9Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=75086e9de1707281172cc77f178e7949a4414ed0]
10CVE: CVE-2024-57360
11Signed-off-by: Ashish Sharma <asharma@mvista.com>
12
13 binutils/nm.c | 24 ++++++++++++++++--------
14 1 file changed, 16 insertions(+), 8 deletions(-)
15
16diff --git a/binutils/nm.c b/binutils/nm.c
17index faf27c59b4d..0ba7604d34f 100644
18--- a/binutils/nm.c
19+++ b/binutils/nm.c
20@@ -682,7 +682,7 @@ print_symname (const char *form, struct extended_symbol_info *info,
21 const char *name, bfd *abfd)
22 {
23 char *alloc = NULL;
24- char *atver = NULL;
25+ char *atname = NULL;
26
27 if (name == NULL)
28 name = info->sinfo->name;
29@@ -690,9 +690,19 @@ print_symname (const char *form, struct extended_symbol_info *info,
30 if (!with_symbol_versions
31 && bfd_get_flavour (abfd) == bfd_target_elf_flavour)
32 {
33- atver = strchr (name, '@');
34+ char *atver = strchr (name, '@');
35+
36 if (atver)
37- *atver = 0;
38+ {
39+ /* PR 32467 - Corrupt binaries might include an @ character in a
40+ symbol name. Since non-versioned symbol names can be in
41+ read-only memory (via memory mapping of a file's contents) we
42+ cannot just replace the @ character with a NUL. Instead we
43+ create a truncated copy of the name. */
44+ atname = xstrdup (name);
45+ atname [atver - name] = 0;
46+ name = atname;
47+ }
48 }
49
50 if (do_demangle && *name)
51@@ -703,9 +713,7 @@ print_symname (const char *form, struct extended_symbol_info *info,
52 }
53
54 if (unicode_display != unicode_default)
55- {
56- name = convert_utf8 (name);
57- }
58+ name = convert_utf8 (name);
59
60 if (info != NULL && info->elfinfo && with_symbol_versions)
61 {
62@@ -726,8 +734,8 @@ print_symname (const char *form, struct extended_symbol_info *info,
63 }
64 }
65 printf (form, name);
66- if (atver)
67- *atver = '@';
68+
69+ free (atname);
70 free (alloc);
71 }
72
73--
742.43.5
75
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2025-1176.patch b/meta/recipes-devtools/binutils/binutils/CVE-2025-1176.patch
new file mode 100644
index 0000000000..1ecf09569d
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2025-1176.patch
@@ -0,0 +1,156 @@
1From f9978defb6fab0bd8583942d97c112b0932ac814 Mon Sep 17 00:00:00 2001
2From: Nick Clifton <nickc@redhat.com>
3Date: Wed, 5 Feb 2025 11:15:11 +0000
4Subject: [PATCH] Prevent illegal memory access when indexing into the
5 sym_hashes array of the elf bfd cookie structure.
6
7PR 32636
8
9Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/binutils/plain/debian/patches/CVE-2025-1176.patch?h=applied/ubuntu/jammy-security&id=62a5cc5a49f4be036cf98d2b8fc7d618620ba672
10Upstream commit https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=f9978defb6fab0bd8583942d97c112b0932ac814]
11CVE: CVE-2025-1176
12Signed-off-by: Ashish Sharma <asharma@mvista.com>
13
14Index: binutils-2.38/bfd/elflink.c
15===================================================================
16--- binutils-2.38.orig/bfd/elflink.c
17+++ binutils-2.38/bfd/elflink.c
18@@ -62,15 +62,16 @@ struct elf_find_verdep_info
19 static bool _bfd_elf_fix_symbol_flags
20 (struct elf_link_hash_entry *, struct elf_info_failed *);
21
22-asection *
23-_bfd_elf_section_for_symbol (struct elf_reloc_cookie *cookie,
24- unsigned long r_symndx,
25- bool discard)
26+static struct elf_link_hash_entry *
27+get_ext_sym_hash (struct elf_reloc_cookie *cookie, unsigned long r_symndx)
28 {
29- if (r_symndx >= cookie->locsymcount
30- || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
31+ struct elf_link_hash_entry *h = NULL;
32+
33+ if ((r_symndx >= cookie->locsymcount
34+ || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
35+ /* Guard against corrupt input. See PR 32636 for an example. */
36+ && r_symndx >= cookie->extsymoff)
37 {
38- struct elf_link_hash_entry *h;
39
40 h = cookie->sym_hashes[r_symndx - cookie->extsymoff];
41
42@@ -78,6 +79,22 @@ _bfd_elf_section_for_symbol (struct elf_
43 || h->root.type == bfd_link_hash_warning)
44 h = (struct elf_link_hash_entry *) h->root.u.i.link;
45
46+ }
47+
48+ return h;
49+}
50+
51+asection *
52+_bfd_elf_section_for_symbol (struct elf_reloc_cookie *cookie,
53+ unsigned long r_symndx,
54+ bool discard)
55+{
56+ struct elf_link_hash_entry *h;
57+
58+ h = get_ext_sym_hash (cookie, r_symndx);
59+
60+ if (h != NULL)
61+ {
62 if ((h->root.type == bfd_link_hash_defined
63 || h->root.type == bfd_link_hash_defweak)
64 && discarded_section (h->root.u.def.section))
65@@ -85,21 +102,20 @@ _bfd_elf_section_for_symbol (struct elf_
66 else
67 return NULL;
68 }
69- else
70- {
71- /* It's not a relocation against a global symbol,
72- but it could be a relocation against a local
73- symbol for a discarded section. */
74- asection *isec;
75- Elf_Internal_Sym *isym;
76
77- /* Need to: get the symbol; get the section. */
78- isym = &cookie->locsyms[r_symndx];
79- isec = bfd_section_from_elf_index (cookie->abfd, isym->st_shndx);
80- if (isec != NULL
81- && discard ? discarded_section (isec) : 1)
82- return isec;
83- }
84+ /* It's not a relocation against a global symbol,
85+ but it could be a relocation against a local
86+ symbol for a discarded section. */
87+ asection *isec;
88+ Elf_Internal_Sym *isym;
89+
90+ /* Need to: get the symbol; get the section. */
91+ isym = &cookie->locsyms[r_symndx];
92+ isec = bfd_section_from_elf_index (cookie->abfd, isym->st_shndx);
93+ if (isec != NULL
94+ && discard ? discarded_section (isec) : 1)
95+ return isec;
96+
97 return NULL;
98 }
99
100@@ -13642,22 +13658,12 @@ _bfd_elf_gc_mark_rsec (struct bfd_link_i
101 if (r_symndx == STN_UNDEF)
102 return NULL;
103
104- if (r_symndx >= cookie->locsymcount
105- || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
106+ h = get_ext_sym_hash (cookie, r_symndx);
107+
108+ if (h != NULL)
109 {
110 bool was_marked;
111
112- h = cookie->sym_hashes[r_symndx - cookie->extsymoff];
113- if (h == NULL)
114- {
115- info->callbacks->einfo (_("%F%P: corrupt input: %pB\n"),
116- sec->owner);
117- return NULL;
118- }
119- while (h->root.type == bfd_link_hash_indirect
120- || h->root.type == bfd_link_hash_warning)
121- h = (struct elf_link_hash_entry *) h->root.u.i.link;
122-
123 was_marked = h->mark;
124 h->mark = 1;
125 /* Keep all aliases of the symbol too. If an object symbol
126@@ -14703,17 +14709,12 @@ bfd_elf_reloc_symbol_deleted_p (bfd_vma
127 if (r_symndx == STN_UNDEF)
128 return true;
129
130- if (r_symndx >= rcookie->locsymcount
131- || ELF_ST_BIND (rcookie->locsyms[r_symndx].st_info) != STB_LOCAL)
132- {
133- struct elf_link_hash_entry *h;
134-
135- h = rcookie->sym_hashes[r_symndx - rcookie->extsymoff];
136-
137- while (h->root.type == bfd_link_hash_indirect
138- || h->root.type == bfd_link_hash_warning)
139- h = (struct elf_link_hash_entry *) h->root.u.i.link;
140+ struct elf_link_hash_entry *h;
141
142+ h = get_ext_sym_hash (rcookie, r_symndx);
143+
144+ if (h != NULL)
145+ {
146 if ((h->root.type == bfd_link_hash_defined
147 || h->root.type == bfd_link_hash_defweak)
148 && (h->root.u.def.section->owner != rcookie->abfd
149@@ -14737,6 +14738,7 @@ bfd_elf_reloc_symbol_deleted_p (bfd_vma
150 || discarded_section (isec)))
151 return true;
152 }
153+
154 return false;
155 }
156 return false;
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2025-1178.patch b/meta/recipes-devtools/binutils/binutils/CVE-2025-1178.patch
new file mode 100644
index 0000000000..a68a5e1c3c
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2025-1178.patch
@@ -0,0 +1,38 @@
1From 75086e9de1707281172cc77f178e7949a4414ed0 Mon Sep 17 00:00:00 2001
2From: Nick Clifton <nickc@redhat.com>
3Date: Wed, 5 Feb 2025 13:26:51 +0000
4Subject: [PATCH] Prevent an abort in the bfd linker when attempting to
5 generate dynamic relocs for a corrupt input file.
6
7PR 32638
8
9Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=75086e9de1707281172cc77f178e7949a4414ed0]
10CVE: CVE-2025-1178
11Signed-off-by: Ashish Sharma <asharma@mvista.com>
12
13 bfd/elf64-x86-64.c | 9 +++++++++
14 1 file changed, 9 insertions(+)
15
16diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
17index 61334c3ab04..32db254ba6c 100644
18--- a/bfd/elf64-x86-64.c
19+++ b/bfd/elf64-x86-64.c
20@@ -5303,6 +5303,15 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
21
22 if (generate_dynamic_reloc)
23 {
24+ /* If the relgot section has not been created, then
25+ generate an error instead of a reloc. cf PR 32638. */
26+ if (relgot == NULL || relgot->size == 0)
27+ {
28+ info->callbacks->einfo (_("%F%pB: Unable to generate dynamic relocs because a suitable section does not exist\n"),
29+ output_bfd);
30+ return false;
31+ }
32+
33 if (relative_reloc_name != NULL
34 && htab->params->report_relative_reloc)
35 _bfd_x86_elf_link_report_relative_reloc
36--
372.43.5
38
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2025-1179-pre.patch b/meta/recipes-devtools/binutils/binutils/CVE-2025-1179-pre.patch
new file mode 100644
index 0000000000..b5bf27ec6d
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2025-1179-pre.patch
@@ -0,0 +1,1086 @@
1From 1d68a49ac5d71b648304f69af978fce0f4413800 Mon Sep 17 00:00:00 2001
2From: "H.J. Lu" <hjl.tools@gmail.com>
3Date: Tue, 23 Jul 2024 23:39:50 -0700
4Subject: [PATCH 1/2] x86: Improve TLS transition error check
5
6Provide detailed TLS transition errors when unsupported instructions are
7used. Treat R_X86_64_CODE_4_GOTTPOFF and R_X86_64_CODE_6_GOTTPOFF as
8R_X86_64_GOTTPOFF when performing TLS transition.
9
10bfd/
11
12 PR ld/32017
13 * elf32-i386.c (elf_i386_check_tls_transition): Return different
14 enums for different errors.
15 (elf_i386_tls_transition): Change argument from r_symndx to sym.
16 Call _bfd_x86_elf_link_report_tls_transition_error to report TLS
17 transition errors.
18 (elf_i386_scan_relocs): Pass isym instead of r_symndx to
19 elf_i386_tls_transition.
20 (elf_i386_relocate_section): Pass sym instead of r_symndx to
21 elf_i386_tls_transition.
22 * elf64-x86-64.c (elf_x86_64_check_tls_transition): Return
23 different enums for different errors.
24 (elf_x86_64_tls_transition): Change argument from r_symndx to sym.
25 Treat R_X86_64_CODE_4_GOTTPOFF and R_X86_64_CODE_6_GOTTPOFF as
26 R_X86_64_GOTTPOFF. Call
27 _bfd_x86_elf_link_report_tls_transition_error to report TLS
28 transition errors.
29 (elf_x86_64_scan_relocs): Pass isym instead of r_symndx to
30 elf_x86_64_tls_transition.
31 (elf_x86_64_relocate_section): Pass sym instead of r_symndx to
32 elf_x86_64_tls_transition.
33 * elfxx-x86.c (_bfd_x86_elf_link_report_tls_transition_error): New.
34 * elfxx-x86.h (elf_x86_tls_error_type): Likewise.
35 (_bfd_x86_elf_link_report_tls_transition_error): Likewise.
36
37ld/
38
39 PR ld/32017
40 * testsuite/ld-i386/i386.exp: Run tlsgdesc1 and tlsgdesc2.
41 * testsuite/ld-i386/tlsie2.d: Updated.
42 * testsuite/ld-i386/tlsie3.d: Likewise.
43 * testsuite/ld-i386/tlsie4.d: Likewise.
44 * testsuite/ld-i386/tlsie5.d: Likewise.
45 * testsuite/ld-x86-64/tlsie2.d: Likewise.
46 * testsuite/ld-x86-64/tlsie3.d: Likewise.
47 * testsuite/ld-i386/tlsgdesc1.d: New file.
48 * testsuite/ld-i386/tlsgdesc1.s: Likewise.
49 * testsuite/ld-i386/tlsgdesc2.d: Likewise.
50 * testsuite/ld-i386/tlsgdesc2.s: Likewise.
51 * testsuite/ld-x86-64/tlsdesc3.d: Likewise.
52 * testsuite/ld-x86-64/tlsdesc3.s: Likewise.
53 * testsuite/ld-x86-64/tlsdesc4.d: Likewise.
54 * testsuite/ld-x86-64/tlsdesc4.s: Likewise.
55 * testsuite/ld-x86-64/tlsie5.d: Likewise.
56 * testsuite/ld-x86-64/tlsie5.s: Likewise.
57 * testsuite/ld-x86-64/x86-64.exp: Run tlsie5, tlsdesc3 and
58 tlsdesc4.
59
60(cherry picked from commit:1d68a49ac5d71b648304f69af978fce0f4413800)
61Upstream-Status: Submitted [https://sourceware.org/pipermail/binutils/2025-May/141322.html]
62CVE: CVE-2025-1179
63
64Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
65---
66 bfd/elf32-i386.c | 118 +++++++++++++-------------
67 bfd/elf64-x86-64.c | 133 ++++++++++++++++--------------
68 bfd/elfxx-x86.c | 85 +++++++++++++++++++
69 bfd/elfxx-x86.h | 18 ++++
70 ld/testsuite/ld-i386/i386.exp | 2 +
71 ld/testsuite/ld-i386/tlsgdesc1.d | 4 +
72 ld/testsuite/ld-i386/tlsgdesc1.s | 11 +++
73 ld/testsuite/ld-i386/tlsgdesc2.d | 4 +
74 ld/testsuite/ld-i386/tlsgdesc2.s | 11 +++
75 ld/testsuite/ld-i386/tlsie2.d | 2 +-
76 ld/testsuite/ld-i386/tlsie3.d | 2 +-
77 ld/testsuite/ld-i386/tlsie4.d | 2 +-
78 ld/testsuite/ld-i386/tlsie5.d | 2 +-
79 ld/testsuite/ld-x86-64/tlsdesc3.d | 4 +
80 ld/testsuite/ld-x86-64/tlsdesc3.s | 13 +++
81 ld/testsuite/ld-x86-64/tlsdesc4.d | 4 +
82 ld/testsuite/ld-x86-64/tlsdesc4.s | 13 +++
83 ld/testsuite/ld-x86-64/tlsie2.d | 2 +-
84 ld/testsuite/ld-x86-64/tlsie3.d | 2 +-
85 ld/testsuite/ld-x86-64/tlsie5.d | 4 +
86 ld/testsuite/ld-x86-64/tlsie5.s | 12 +++
87 ld/testsuite/ld-x86-64/x86-64.exp | 3 +
88 22 files changed, 319 insertions(+), 132 deletions(-)
89 create mode 100644 ld/testsuite/ld-i386/tlsgdesc1.d
90 create mode 100644 ld/testsuite/ld-i386/tlsgdesc1.s
91 create mode 100644 ld/testsuite/ld-i386/tlsgdesc2.d
92 create mode 100644 ld/testsuite/ld-i386/tlsgdesc2.s
93 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc3.d
94 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc3.s
95 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc4.d
96 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc4.s
97 create mode 100644 ld/testsuite/ld-x86-64/tlsie5.d
98 create mode 100644 ld/testsuite/ld-x86-64/tlsie5.s
99
100diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
101index e2f88a11487..18a28d2491c 100644
102--- a/bfd/elf32-i386.c
103+++ b/bfd/elf32-i386.c
104@@ -839,7 +839,7 @@ static const struct elf_x86_non_lazy_plt_layout elf_i386_non_lazy_ibt_plt =
105 /* Return TRUE if the TLS access code sequence support transition
106 from R_TYPE. */
107
108-static bool
109+static enum elf_x86_tls_error_type
110 elf_i386_check_tls_transition (asection *sec,
111 bfd_byte *contents,
112 Elf_Internal_Shdr *symtab_hdr,
113@@ -861,7 +861,7 @@ elf_i386_check_tls_transition (asection *sec,
114 case R_386_TLS_GD:
115 case R_386_TLS_LDM:
116 if (offset < 2 || (rel + 1) >= relend)
117- return false;
118+ return elf_x86_tls_error_yes;
119
120 indirect_call = false;
121 call = contents + offset + 4;
122@@ -884,19 +884,19 @@ elf_i386_check_tls_transition (asection *sec,
123 can transit to different access model. */
124 if ((offset + 10) > sec->size
125 || (type != 0x8d && type != 0x04))
126- return false;
127+ return elf_x86_tls_error_yes;
128
129 if (type == 0x04)
130 {
131 /* leal foo@tlsgd(,%ebx,1), %eax
132 call ___tls_get_addr@PLT */
133 if (offset < 3)
134- return false;
135+ return elf_x86_tls_error_yes;
136
137 if (*(call - 7) != 0x8d
138 || val != 0x1d
139 || call[0] != 0xe8)
140- return false;
141+ return elf_x86_tls_error_yes;
142 }
143 else
144 {
145@@ -914,7 +914,7 @@ elf_i386_check_tls_transition (asection *sec,
146 is used to pass parameter to ___tls_get_addr. */
147 reg = val & 7;
148 if ((val & 0xf8) != 0x80 || reg == 4 || reg == 0)
149- return false;
150+ return elf_x86_tls_error_yes;
151
152 indirect_call = call[0] == 0xff;
153 if (!(reg == 3 && call[0] == 0xe8 && call[5] == 0x90)
154@@ -922,7 +922,7 @@ elf_i386_check_tls_transition (asection *sec,
155 && !(indirect_call
156 && (call[1] & 0xf8) == 0x90
157 && (call[1] & 0x7) == reg))
158- return false;
159+ return elf_x86_tls_error_yes;
160 }
161 }
162 else
163@@ -937,13 +937,13 @@ elf_i386_check_tls_transition (asection *sec,
164 addr32 call ___tls_get_addr
165 can transit to different access model. */
166 if (type != 0x8d || (offset + 9) > sec->size)
167- return false;
168+ return elf_x86_tls_error_yes;
169
170 /* %eax can't be used as the GOT base register since it is
171 used to pass parameter to ___tls_get_addr. */
172 reg = val & 7;
173 if ((val & 0xf8) != 0x80 || reg == 4 || reg == 0)
174- return false;
175+ return elf_x86_tls_error_yes;
176
177 indirect_call = call[0] == 0xff;
178 if (!(reg == 3 && call[0] == 0xe8)
179@@ -951,23 +951,27 @@ elf_i386_check_tls_transition (asection *sec,
180 && !(indirect_call
181 && (call[1] & 0xf8) == 0x90
182 && (call[1] & 0x7) == reg))
183- return false;
184+ return elf_x86_tls_error_yes;
185 }
186
187 r_symndx = ELF32_R_SYM (rel[1].r_info);
188 if (r_symndx < symtab_hdr->sh_info)
189- return false;
190+ return elf_x86_tls_error_yes;
191
192 h = sym_hashes[r_symndx - symtab_hdr->sh_info];
193 if (h == NULL
194 || !((struct elf_x86_link_hash_entry *) h)->tls_get_addr)
195- return false;
196+ return elf_x86_tls_error_yes;
197 else if (indirect_call)
198- return (ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32X
199- || ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32);
200+ return ((ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32X
201+ || ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32)
202+ ? elf_x86_tls_error_none
203+ : elf_x86_tls_error_yes);
204 else
205- return (ELF32_R_TYPE (rel[1].r_info) == R_386_PC32
206- || ELF32_R_TYPE (rel[1].r_info) == R_386_PLT32);
207+ return ((ELF32_R_TYPE (rel[1].r_info) == R_386_PC32
208+ || ELF32_R_TYPE (rel[1].r_info) == R_386_PLT32)
209+ ? elf_x86_tls_error_none
210+ : elf_x86_tls_error_yes);
211
212 case R_386_TLS_IE:
213 /* Check transition from IE access model:
214@@ -977,20 +981,23 @@ elf_i386_check_tls_transition (asection *sec,
215 */
216
217 if (offset < 1 || (offset + 4) > sec->size)
218- return false;
219+ return elf_x86_tls_error_yes;
220
221 /* Check "movl foo@tpoff(%rip), %eax" first. */
222 val = bfd_get_8 (abfd, contents + offset - 1);
223 if (val == 0xa1)
224- return true;
225+ return elf_x86_tls_error_none;
226
227 if (offset < 2)
228- return false;
229+ return elf_x86_tls_error_yes;
230
231 /* Check movl|addl foo@tpoff(%rip), %reg. */
232 type = bfd_get_8 (abfd, contents + offset - 2);
233- return ((type == 0x8b || type == 0x03)
234- && (val & 0xc7) == 0x05);
235+ if (type != 0x8b && type != 0x03)
236+ return elf_x86_tls_error_add_mov;
237+ return ((val & 0xc7) == 0x05
238+ ? elf_x86_tls_error_none
239+ : elf_x86_tls_error_yes);
240
241 case R_386_TLS_GOTIE:
242 case R_386_TLS_IE_32:
243@@ -1001,14 +1008,16 @@ elf_i386_check_tls_transition (asection *sec,
244 */
245
246 if (offset < 2 || (offset + 4) > sec->size)
247- return false;
248+ return elf_x86_tls_error_yes;
249
250 val = bfd_get_8 (abfd, contents + offset - 1);
251 if ((val & 0xc0) != 0x80 || (val & 7) == 4)
252- return false;
253+ return elf_x86_tls_error_yes;
254
255 type = bfd_get_8 (abfd, contents + offset - 2);
256- return type == 0x8b || type == 0x2b || type == 0x03;
257+ return (type == 0x8b || type == 0x2b || type == 0x03
258+ ? elf_x86_tls_error_none
259+ : elf_x86_tls_error_add_sub_mov);
260
261 case R_386_TLS_GOTDESC:
262 /* Check transition from GDesc access model:
263@@ -1019,13 +1028,15 @@ elf_i386_check_tls_transition (asection *sec,
264 going to be eax. */
265
266 if (offset < 2 || (offset + 4) > sec->size)
267- return false;
268+ return elf_x86_tls_error_yes;
269
270 if (bfd_get_8 (abfd, contents + offset - 2) != 0x8d)
271- return false;
272+ return elf_x86_tls_error_lea;
273
274 val = bfd_get_8 (abfd, contents + offset - 1);
275- return (val & 0xc7) == 0x83;
276+ return ((val & 0xc7) == 0x83
277+ ? elf_x86_tls_error_none
278+ : elf_x86_tls_error_yes);
279
280 case R_386_TLS_DESC_CALL:
281 /* Check transition from GDesc access model:
282@@ -1035,10 +1046,12 @@ elf_i386_check_tls_transition (asection *sec,
283 {
284 /* Make sure that it's a call *x@tlsdesc(%eax). */
285 call = contents + offset;
286- return call[0] == 0xff && call[1] == 0x10;
287+ return (call[0] == 0xff && call[1] == 0x10
288+ ? elf_x86_tls_error_none
289+ : elf_x86_tls_error_indirect_call);
290 }
291
292- return false;
293+ return elf_x86_tls_error_yes;
294
295 default:
296 abort ();
297@@ -1057,7 +1070,7 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
298 const Elf_Internal_Rela *rel,
299 const Elf_Internal_Rela *relend,
300 struct elf_link_hash_entry *h,
301- unsigned long r_symndx,
302+ Elf_Internal_Sym *sym,
303 bool from_relocate_section)
304 {
305 unsigned int from_type = *r_type;
306@@ -1142,43 +1155,24 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
307 return true;
308
309 /* Check if the transition can be performed. */
310+ enum elf_x86_tls_error_type tls_error;
311 if (check
312- && ! elf_i386_check_tls_transition (sec, contents,
313- symtab_hdr, sym_hashes,
314- from_type, rel, relend))
315+ && ((tls_error = elf_i386_check_tls_transition (sec, contents,
316+ symtab_hdr,
317+ sym_hashes,
318+ from_type, rel,
319+ relend))
320+ != elf_x86_tls_error_none))
321 {
322 reloc_howto_type *from, *to;
323- const char *name;
324
325 from = elf_i386_rtype_to_howto (from_type);
326 to = elf_i386_rtype_to_howto (to_type);
327
328- if (h)
329- name = h->root.root.string;
330- else
331- {
332- struct elf_x86_link_hash_table *htab;
333-
334- htab = elf_x86_hash_table (info, I386_ELF_DATA);
335- if (htab == NULL)
336- name = "*unknown*";
337- else
338- {
339- Elf_Internal_Sym *isym;
340-
341- isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
342- abfd, r_symndx);
343- name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
344- }
345- }
346+ _bfd_x86_elf_link_report_tls_transition_error
347+ (info, abfd, sec, symtab_hdr, h, sym, rel, from->name,
348+ to->name, tls_error);
349
350- _bfd_error_handler
351- /* xgettext:c-format */
352- (_("%pB: TLS transition from %s to %s against `%s'"
353- " at %#" PRIx64 " in section `%pA' failed"),
354- abfd, from->name, to->name, name,
355- (uint64_t) rel->r_offset, sec);
356- bfd_set_error (bfd_error_bad_value);
357 return false;
358 }
359
360@@ -1600,7 +1594,7 @@ elf_i386_scan_relocs (bfd *abfd,
361 if (! elf_i386_tls_transition (info, abfd, sec, contents,
362 symtab_hdr, sym_hashes,
363 &r_type, GOT_UNKNOWN,
364- rel, rel_end, h, r_symndx, false))
365+ rel, rel_end, h, isym, false))
366 goto error_return;
367
368 /* Check if _GLOBAL_OFFSET_TABLE_ is referenced. */
369@@ -2875,7 +2869,7 @@ elf_i386_relocate_section (bfd *output_bfd,
370 input_section, contents,
371 symtab_hdr, sym_hashes,
372 &r_type_tls, tls_type, rel,
373- relend, h, r_symndx, true))
374+ relend, h, sym, true))
375 return false;
376
377 expected_tls_le = htab->elf.target_os == is_solaris
378@@ -3365,7 +3359,7 @@ elf_i386_relocate_section (bfd *output_bfd,
379 input_section, contents,
380 symtab_hdr, sym_hashes,
381 &r_type, GOT_UNKNOWN, rel,
382- relend, h, r_symndx, true))
383+ relend, h, sym, true))
384 return false;
385
386 if (r_type != R_386_TLS_LDM)
387diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
388index 2ed120af780..f116e423f61 100644
389--- a/bfd/elf64-x86-64.c
390+++ b/bfd/elf64-x86-64.c
391@@ -1120,7 +1120,7 @@ elf32_x86_64_elf_object_p (bfd *abfd)
392 /* Return TRUE if the TLS access code sequence support transition
393 from R_TYPE. */
394
395-static bool
396+static enum elf_x86_tls_error_type
397 elf_x86_64_check_tls_transition (bfd *abfd,
398 struct bfd_link_info *info,
399 asection *sec,
400@@ -1147,7 +1147,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
401 case R_X86_64_TLSGD:
402 case R_X86_64_TLSLD:
403 if ((rel + 1) >= relend)
404- return false;
405+ return elf_x86_tls_error_yes;
406
407 if (r_type == R_X86_64_TLSGD)
408 {
409@@ -1184,7 +1184,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
410 static const unsigned char leaq[] = { 0x66, 0x48, 0x8d, 0x3d };
411
412 if ((offset + 12) > sec->size)
413- return false;
414+ return elf_x86_tls_error_yes;
415
416 call = contents + offset + 4;
417 if (call[0] != 0x66
418@@ -1208,20 +1208,20 @@ elf_x86_64_check_tls_transition (bfd *abfd,
419 || call[14] != 0xd0
420 || !((call[10] == 0x48 && call[12] == 0xd8)
421 || (call[10] == 0x4c && call[12] == 0xf8)))
422- return false;
423+ return elf_x86_tls_error_yes;
424 largepic = true;
425 }
426 else if (ABI_64_P (abfd))
427 {
428 if (offset < 4
429 || memcmp (contents + offset - 4, leaq, 4) != 0)
430- return false;
431+ return elf_x86_tls_error_yes;
432 }
433 else
434 {
435 if (offset < 3
436 || memcmp (contents + offset - 3, leaq + 1, 3) != 0)
437- return false;
438+ return elf_x86_tls_error_yes;
439 }
440 indirect_call = call[2] == 0xff;
441 }
442@@ -1250,10 +1250,10 @@ elf_x86_64_check_tls_transition (bfd *abfd,
443 static const unsigned char lea[] = { 0x48, 0x8d, 0x3d };
444
445 if (offset < 3 || (offset + 9) > sec->size)
446- return false;
447+ return elf_x86_tls_error_yes;
448
449 if (memcmp (contents + offset - 3, lea, 3) != 0)
450- return false;
451+ return elf_x86_tls_error_yes;
452
453 call = contents + offset + 4;
454 if (!(call[0] == 0xe8
455@@ -1268,7 +1268,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
456 || call[14] != 0xd0
457 || !((call[10] == 0x48 && call[12] == 0xd8)
458 || (call[10] == 0x4c && call[12] == 0xf8)))
459- return false;
460+ return elf_x86_tls_error_yes;
461 largepic = true;
462 }
463 indirect_call = call[0] == 0xff;
464@@ -1276,22 +1276,30 @@ elf_x86_64_check_tls_transition (bfd *abfd,
465
466 r_symndx = htab->r_sym (rel[1].r_info);
467 if (r_symndx < symtab_hdr->sh_info)
468- return false;
469+ return elf_x86_tls_error_yes;
470
471 h = sym_hashes[r_symndx - symtab_hdr->sh_info];
472 if (h == NULL
473 || !((struct elf_x86_link_hash_entry *) h)->tls_get_addr)
474- return false;
475+ return elf_x86_tls_error_yes;
476 else
477 {
478 r_type = (ELF32_R_TYPE (rel[1].r_info)
479 & ~R_X86_64_converted_reloc_bit);
480 if (largepic)
481- return r_type == R_X86_64_PLTOFF64;
482+ return (r_type == R_X86_64_PLTOFF64
483+ ? elf_x86_tls_error_none
484+ : elf_x86_tls_error_yes);
485 else if (indirect_call)
486- return (r_type == R_X86_64_GOTPCRELX || r_type == R_X86_64_GOTPCREL);
487+ return ((r_type == R_X86_64_GOTPCRELX
488+ || r_type == R_X86_64_GOTPCREL)
489+ ? elf_x86_tls_error_none
490+ : elf_x86_tls_error_yes);
491 else
492- return (r_type == R_X86_64_PC32 || r_type == R_X86_64_PLT32);
493+ return ((r_type == R_X86_64_PC32
494+ || r_type == R_X86_64_PLT32)
495+ ? elf_x86_tls_error_none
496+ : elf_x86_tls_error_yes);
497 }
498
499 case R_X86_64_CODE_4_GOTTPOFF:
500@@ -1303,7 +1311,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
501 if (offset < 4
502 || (offset + 4) > sec->size
503 || contents[offset - 4] != 0xd5)
504- return false;
505+ return elf_x86_tls_error_yes;
506
507 goto check_gottpoff;
508
509@@ -1315,14 +1323,16 @@ elf_x86_64_check_tls_transition (bfd *abfd,
510 if (offset < 6
511 || (offset + 4) > sec->size
512 || contents[offset - 6] != 0x62)
513- return false;
514+ return elf_x86_tls_error_yes;
515
516 val = bfd_get_8 (abfd, contents + offset - 2);
517 if (val != 0x01 && val != 0x03)
518- return false;
519+ return elf_x86_tls_error_add;
520
521 val = bfd_get_8 (abfd, contents + offset - 1);
522- return (val & 0xc7) == 5;
523+ return ((val & 0xc7) == 5
524+ ? elf_x86_tls_error_none
525+ : elf_x86_tls_error_yes);
526
527 case R_X86_64_GOTTPOFF:
528 /* Check transition from IE access model:
529@@ -1338,25 +1348,27 @@ elf_x86_64_check_tls_transition (bfd *abfd,
530 {
531 /* X32 may have 0x44 REX prefix or no REX prefix. */
532 if (ABI_64_P (abfd))
533- return false;
534+ return elf_x86_tls_error_yes;
535 }
536 }
537 else
538 {
539 /* X32 may not have any REX prefix. */
540 if (ABI_64_P (abfd))
541- return false;
542+ return elf_x86_tls_error_yes;
543 if (offset < 2 || (offset + 3) > sec->size)
544- return false;
545+ return elf_x86_tls_error_yes;
546 }
547
548 check_gottpoff:
549 val = bfd_get_8 (abfd, contents + offset - 2);
550 if (val != 0x8b && val != 0x03)
551- return false;
552+ return elf_x86_tls_error_add_mov;
553
554 val = bfd_get_8 (abfd, contents + offset - 1);
555- return (val & 0xc7) == 5;
556+ return ((val & 0xc7) == 5
557+ ? elf_x86_tls_error_none
558+ : elf_x86_tls_error_yes);
559
560 case R_X86_64_CODE_4_GOTPC32_TLSDESC:
561 /* Check transition from GDesc access model:
562@@ -1366,7 +1378,7 @@ elf_x86_64_check_tls_transition (bfd *abfd,
563 if (offset < 4
564 || (offset + 4) > sec->size
565 || contents[offset - 4] != 0xd5)
566- return false;
567+ return elf_x86_tls_error_yes;
568
569 goto check_tlsdesc;
570
571@@ -1380,19 +1392,21 @@ elf_x86_64_check_tls_transition (bfd *abfd,
572 going to be rax. */
573
574 if (offset < 3 || (offset + 4) > sec->size)
575- return false;
576+ return elf_x86_tls_error_yes;
577
578 val = bfd_get_8 (abfd, contents + offset - 3);
579 val &= 0xfb;
580 if (val != 0x48 && (ABI_64_P (abfd) || val != 0x40))
581- return false;
582+ return elf_x86_tls_error_yes;
583
584 check_tlsdesc:
585 if (bfd_get_8 (abfd, contents + offset - 2) != 0x8d)
586- return false;
587+ return elf_x86_tls_error_lea;
588
589 val = bfd_get_8 (abfd, contents + offset - 1);
590- return (val & 0xc7) == 0x05;
591+ return ((val & 0xc7) == 0x05
592+ ? elf_x86_tls_error_none
593+ : elf_x86_tls_error_yes);
594
595 case R_X86_64_TLSDESC_CALL:
596 /* Check transition from GDesc access model:
597@@ -1411,14 +1425,16 @@ elf_x86_64_check_tls_transition (bfd *abfd,
598 {
599 prefix = 1;
600 if (offset + 3 > sec->size)
601- return false;
602+ return elf_x86_tls_error_yes;
603 }
604 }
605 /* Make sure that it's a call *x@tlsdesc(%rax). */
606- return call[prefix] == 0xff && call[1 + prefix] == 0x10;
607+ return (call[prefix] == 0xff && call[1 + prefix] == 0x10
608+ ? elf_x86_tls_error_none
609+ : elf_x86_tls_error_indirect_call);
610 }
611
612- return false;
613+ return elf_x86_tls_error_yes;
614
615 default:
616 abort ();
617@@ -1437,7 +1453,7 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
618 const Elf_Internal_Rela *rel,
619 const Elf_Internal_Rela *relend,
620 struct elf_link_hash_entry *h,
621- unsigned long r_symndx,
622+ Elf_Internal_Sym *sym,
623 bool from_relocate_section)
624 {
625 unsigned int from_type = *r_type;
626@@ -1488,7 +1504,12 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
627 /* We checked the transition before when we were called from
628 elf_x86_64_scan_relocs. We only want to check the new
629 transition which hasn't been checked before. */
630- check = new_to_type != to_type && from_type == to_type;
631+ check = (new_to_type != to_type
632+ && (from_type == to_type
633+ || (from_type == R_X86_64_CODE_4_GOTTPOFF
634+ && to_type == R_X86_64_GOTTPOFF)
635+ || (from_type == R_X86_64_CODE_6_GOTTPOFF
636+ && to_type == R_X86_64_GOTTPOFF)));
637 to_type = new_to_type;
638 }
639
640@@ -1512,13 +1533,18 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
641 return true;
642
643 /* Check if the transition can be performed. */
644+ enum elf_x86_tls_error_type tls_error;
645 if (check
646- && ! elf_x86_64_check_tls_transition (abfd, info, sec, contents,
647- symtab_hdr, sym_hashes,
648- from_type, rel, relend))
649+ && ((tls_error = elf_x86_64_check_tls_transition (abfd, info, sec,
650+ contents,
651+ symtab_hdr,
652+ sym_hashes,
653+ from_type, rel,
654+ relend))
655+ != elf_x86_tls_error_none))
656+
657 {
658 reloc_howto_type *from, *to;
659- const char *name;
660
661 from = elf_x86_64_rtype_to_howto (abfd, from_type);
662 to = elf_x86_64_rtype_to_howto (abfd, to_type);
663@@ -1526,31 +1552,10 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
664 if (from == NULL || to == NULL)
665 return false;
666
667- if (h)
668- name = h->root.root.string;
669- else
670- {
671- struct elf_x86_link_hash_table *htab;
672-
673- htab = elf_x86_hash_table (info, X86_64_ELF_DATA);
674- if (htab == NULL)
675- name = "*unknown*";
676- else
677- {
678- Elf_Internal_Sym *isym;
679+ _bfd_x86_elf_link_report_tls_transition_error
680+ (info, abfd, sec, symtab_hdr, h, sym, rel, from->name,
681+ to->name, tls_error);
682
683- isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
684- abfd, r_symndx);
685- name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
686- }
687- }
688-
689- _bfd_error_handler
690- /* xgettext:c-format */
691- (_("%pB: TLS transition from %s to %s against `%s' at %#" PRIx64
692- " in section `%pA' failed"),
693- abfd, from->name, to->name, name, (uint64_t) rel->r_offset, sec);
694- bfd_set_error (bfd_error_bad_value);
695 return false;
696 }
697
698@@ -2198,7 +2203,7 @@ elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info,
699 if (! elf_x86_64_tls_transition (info, abfd, sec, contents,
700 symtab_hdr, sym_hashes,
701 &r_type, GOT_UNKNOWN,
702- rel, rel_end, h, r_symndx, false))
703+ rel, rel_end, h, isym, false))
704 goto error_return;
705
706 /* Check if _GLOBAL_OFFSET_TABLE_ is referenced. */
707@@ -3648,7 +3653,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
708 input_section, contents,
709 symtab_hdr, sym_hashes,
710 &r_type_tls, tls_type, rel,
711- relend, h, r_symndx, true))
712+ relend, h, sym, true))
713 return false;
714
715 if (r_type_tls == R_X86_64_TPOFF32)
716@@ -4308,7 +4313,7 @@ elf_x86_64_relocate_section (bfd *output_bfd,
717 input_section, contents,
718 symtab_hdr, sym_hashes,
719 &r_type, GOT_UNKNOWN, rel,
720- relend, h, r_symndx, true))
721+ relend, h, sym, true))
722 return false;
723
724 if (r_type != R_X86_64_TLSLD)
725diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
726index 508fd771da3..b17dad759c8 100644
727--- a/bfd/elfxx-x86.c
728+++ b/bfd/elfxx-x86.c
729@@ -3202,6 +3202,91 @@ _bfd_x86_elf_link_report_relative_reloc
730 asect, abfd);
731 }
732
733+/* Report TLS transition error. */
734+
735+void
736+_bfd_x86_elf_link_report_tls_transition_error
737+ (struct bfd_link_info *info, bfd *abfd, asection *asect,
738+ Elf_Internal_Shdr *symtab_hdr, struct elf_link_hash_entry *h,
739+ Elf_Internal_Sym *sym, const Elf_Internal_Rela *rel,
740+ const char *from_reloc_name, const char *to_reloc_name,
741+ enum elf_x86_tls_error_type tls_error)
742+{
743+ const char *name;
744+
745+ if (h)
746+ name = h->root.root.string;
747+ else
748+ {
749+ const struct elf_backend_data *bed
750+ = get_elf_backend_data (abfd);
751+ struct elf_x86_link_hash_table *htab
752+ = elf_x86_hash_table (info, bed->target_id);
753+ if (htab == NULL)
754+ name = "*unknown*";
755+ else
756+ name = bfd_elf_sym_name (abfd, symtab_hdr, sym, NULL);
757+ }
758+
759+ switch (tls_error)
760+ {
761+ case elf_x86_tls_error_yes:
762+ info->callbacks->einfo
763+ /* xgettext:c-format */
764+ (_("%pB: TLS transition from %s to %s against `%s' at 0x%v in "
765+ "section `%pA' failed"),
766+ abfd, from_reloc_name, to_reloc_name, name, rel->r_offset,
767+ asect);
768+ break;
769+
770+ case elf_x86_tls_error_add:
771+ info->callbacks->einfo
772+ /* xgettext:c-format */
773+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
774+ "in ADD only"),
775+ abfd, asect, rel->r_offset, from_reloc_name, name);
776+ break;
777+
778+ case elf_x86_tls_error_add_mov:
779+ info->callbacks->einfo
780+ /* xgettext:c-format */
781+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
782+ "in ADD or MOV only"),
783+ abfd, asect, rel->r_offset, from_reloc_name, name);
784+ break;
785+
786+ case elf_x86_tls_error_add_sub_mov:
787+ info->callbacks->einfo
788+ /* xgettext:c-format */
789+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
790+ "in ADD, SUB or MOV only"),
791+ abfd, asect, rel->r_offset, from_reloc_name, name);
792+ break;
793+
794+ case elf_x86_tls_error_indirect_call:
795+ info->callbacks->einfo
796+ /* xgettext:c-format */
797+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
798+ "in indirect CALL only"),
799+ abfd, asect, rel->r_offset, from_reloc_name, name);
800+ break;
801+
802+ case elf_x86_tls_error_lea:
803+ info->callbacks->einfo
804+ /* xgettext:c-format */
805+ (_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
806+ "in LEA only"),
807+ abfd, asect, rel->r_offset, from_reloc_name, name);
808+ break;
809+
810+ default:
811+ abort ();
812+ break;
813+ }
814+
815+ bfd_set_error (bfd_error_bad_value);
816+}
817+
818 /* Return TRUE if symbol should be hashed in the `.gnu.hash' section. */
819
820 bool
821diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h
822index 110bcb9ad71..02e2efa6c56 100644
823--- a/bfd/elfxx-x86.h
824+++ b/bfd/elfxx-x86.h
825@@ -767,6 +767,18 @@ struct elf_x86_plt
826 long count;
827 };
828
829+enum elf_x86_tls_error_type
830+{
831+ elf_x86_tls_error_none,
832+ elf_x86_tls_error_add,
833+ elf_x86_tls_error_add_mov,
834+ elf_x86_tls_error_add_sub_mov,
835+ elf_x86_tls_error_indirect_call,
836+ elf_x86_tls_error_lea,
837+ elf_x86_tls_error_yes
838+};
839+
840+
841 /* Set if a relocation is converted from a GOTPCREL relocation. */
842 #define R_X86_64_converted_reloc_bit (1 << 7)
843
844@@ -908,6 +920,12 @@ extern void _bfd_x86_elf_link_fixup_ifunc_symbol
845 extern void _bfd_x86_elf_link_report_relative_reloc
846 (struct bfd_link_info *, asection *, struct elf_link_hash_entry *,
847 Elf_Internal_Sym *, const char *, const void *);
848+extern void _bfd_x86_elf_link_report_tls_transition_error
849+ (struct bfd_link_info *, bfd *, asection *, Elf_Internal_Shdr *,
850+ struct elf_link_hash_entry *, Elf_Internal_Sym *,
851+ const Elf_Internal_Rela *, const char *, const char *,
852+ enum elf_x86_tls_error_type);
853+
854
855 #define bfd_elf64_mkobject \
856 _bfd_x86_elf_mkobject
857diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
858index 18d1c9198ca..a8db2c713f3 100644
859--- a/ld/testsuite/ld-i386/i386.exp
860+++ b/ld/testsuite/ld-i386/i386.exp
861@@ -541,6 +541,8 @@ run_dump_test "tlsdesc2"
862 run_dump_test "report-reloc-1"
863 run_dump_test "pr27998a"
864 run_dump_test "pr27998b"
865+run_dump_test "tlsgdesc1"
866+run_dump_test "tlsgdesc2"
867
868 proc undefined_weak {cflags ldflags} {
869 set testname "Undefined weak symbol"
870diff --git a/ld/testsuite/ld-i386/tlsgdesc1.d b/ld/testsuite/ld-i386/tlsgdesc1.d
871new file mode 100644
872index 00000000000..2a70e81c444
873--- /dev/null
874+++ b/ld/testsuite/ld-i386/tlsgdesc1.d
875@@ -0,0 +1,4 @@
876+#name: TLS GDesc->LE transition check (LEA)
877+#as: --32
878+#ld: -melf_i386
879+#error: .*: relocation R_386_TLS_GOTDESC against `foo' must be used in LEA only
880diff --git a/ld/testsuite/ld-i386/tlsgdesc1.s b/ld/testsuite/ld-i386/tlsgdesc1.s
881new file mode 100644
882index 00000000000..c30f7523462
883--- /dev/null
884+++ b/ld/testsuite/ld-i386/tlsgdesc1.s
885@@ -0,0 +1,11 @@
886+ .text
887+ .globl _start
888+_start:
889+ movl foo@tlsdesc(%ebx), %eax
890+ call *foo@tlscall(%eax)
891+ .section .tdata,"awT",@progbits
892+ .align 4
893+ .type foo, @object
894+ .size foo, 4
895+foo:
896+ .long 100
897diff --git a/ld/testsuite/ld-i386/tlsgdesc2.d b/ld/testsuite/ld-i386/tlsgdesc2.d
898new file mode 100644
899index 00000000000..2e6a66d372c
900--- /dev/null
901+++ b/ld/testsuite/ld-i386/tlsgdesc2.d
902@@ -0,0 +1,4 @@
903+#name: TLS GDesc->LE transition check (indirect CALL)
904+#as: --32
905+#ld: -melf_i386
906+#error: .*: relocation R_386_TLS_DESC_CALL against `foo' must be used in indirect CALL only
907diff --git a/ld/testsuite/ld-i386/tlsgdesc2.s b/ld/testsuite/ld-i386/tlsgdesc2.s
908new file mode 100644
909index 00000000000..7d9d556e2ab
910--- /dev/null
911+++ b/ld/testsuite/ld-i386/tlsgdesc2.s
912@@ -0,0 +1,11 @@
913+ .text
914+ .globl _start
915+_start:
916+ leal foo@tlsdesc(%ebx), %eax
917+ jmp *foo@tlscall(%eax)
918+ .section .tdata,"awT",@progbits
919+ .align 4
920+ .type foo, @object
921+ .size foo, 4
922+foo:
923+ .long 100
924diff --git a/ld/testsuite/ld-i386/tlsie2.d b/ld/testsuite/ld-i386/tlsie2.d
925index ebb85fde7e7..9f9e63029d6 100644
926--- a/ld/testsuite/ld-i386/tlsie2.d
927+++ b/ld/testsuite/ld-i386/tlsie2.d
928@@ -1,4 +1,4 @@
929 #name: TLS IE->LE transition check (R_386_TLS_GOTIE with %eax)
930 #as: --32
931 #ld: -melf_i386
932-#error: .*TLS transition from R_386_TLS_GOTIE to R_386_TLS_LE_32 against `foo'.*failed.*
933+#error: .*: relocation R_386_TLS_GOTIE against `foo' must be used in ADD, SUB or MOV only
934diff --git a/ld/testsuite/ld-i386/tlsie3.d b/ld/testsuite/ld-i386/tlsie3.d
935index d993f303c25..506f1a02605 100644
936--- a/ld/testsuite/ld-i386/tlsie3.d
937+++ b/ld/testsuite/ld-i386/tlsie3.d
938@@ -1,4 +1,4 @@
939 #name: TLS IE->LE transition check (R_386_TLS_GOTIE)
940 #as: --32
941 #ld: -melf_i386
942-#error: .*TLS transition from R_386_TLS_GOTIE to R_386_TLS_LE_32 against `foo'.*failed.*
943+#error: .*: relocation R_386_TLS_GOTIE against `foo' must be used in ADD, SUB or MOV only
944diff --git a/ld/testsuite/ld-i386/tlsie4.d b/ld/testsuite/ld-i386/tlsie4.d
945index 3ca8fddf5dd..a516d002660 100644
946--- a/ld/testsuite/ld-i386/tlsie4.d
947+++ b/ld/testsuite/ld-i386/tlsie4.d
948@@ -1,4 +1,4 @@
949 #name: TLS IE->LE transition check (R_386_TLS_IE with %eax)
950 #as: --32
951 #ld: -melf_i386
952-#error: .*TLS transition from R_386_TLS_IE to R_386_TLS_LE_32 against `foo'.*failed.*
953+#error: .*: relocation R_386_TLS_IE against `foo' must be used in ADD or MOV only
954diff --git a/ld/testsuite/ld-i386/tlsie5.d b/ld/testsuite/ld-i386/tlsie5.d
955index 3febeb159a9..d3447182e19 100644
956--- a/ld/testsuite/ld-i386/tlsie5.d
957+++ b/ld/testsuite/ld-i386/tlsie5.d
958@@ -1,4 +1,4 @@
959 #name: TLS IE->LE transition check (R_386_TLS_IE)
960 #as: --32
961 #ld: -melf_i386
962-#error: .*TLS transition from R_386_TLS_IE to R_386_TLS_LE_32 against `foo'.*failed.*
963+#error: .*: relocation R_386_TLS_IE against `foo' must be used in ADD or MOV only
964diff --git a/ld/testsuite/ld-x86-64/tlsdesc3.d b/ld/testsuite/ld-x86-64/tlsdesc3.d
965new file mode 100644
966index 00000000000..bbf22ebeafe
967--- /dev/null
968+++ b/ld/testsuite/ld-x86-64/tlsdesc3.d
969@@ -0,0 +1,4 @@
970+#name: TLS GDesc->LE transition check (LEA)
971+#as: --64
972+#ld: -melf_x86_64
973+#error: .*: relocation R_X86_64_GOTPC32_TLSDESC against `foo' must be used in LEA only
974diff --git a/ld/testsuite/ld-x86-64/tlsdesc3.s b/ld/testsuite/ld-x86-64/tlsdesc3.s
975new file mode 100644
976index 00000000000..45310654ffc
977--- /dev/null
978+++ b/ld/testsuite/ld-x86-64/tlsdesc3.s
979@@ -0,0 +1,13 @@
980+ .text
981+ .globl _start
982+ .type _start,@function
983+_start:
984+ movq foo@tlsdesc(%rip), %rax
985+ call *foo@tlscall(%rax)
986+ .globl foo
987+ .section .tdata,"awT",@progbits
988+ .align 8
989+ .type foo, @object
990+ .size foo, 8
991+foo:
992+ .quad 100
993diff --git a/ld/testsuite/ld-x86-64/tlsdesc4.d b/ld/testsuite/ld-x86-64/tlsdesc4.d
994new file mode 100644
995index 00000000000..b50115c7178
996--- /dev/null
997+++ b/ld/testsuite/ld-x86-64/tlsdesc4.d
998@@ -0,0 +1,4 @@
999+#name: TLS GDesc->LE transition check (indirect CALL)
1000+#as: --64
1001+#ld: -melf_x86_64
1002+#error: .*: relocation R_X86_64_TLSDESC_CALL against `foo' must be used in indirect CALL only
1003diff --git a/ld/testsuite/ld-x86-64/tlsdesc4.s b/ld/testsuite/ld-x86-64/tlsdesc4.s
1004new file mode 100644
1005index 00000000000..b3d6c12d4fc
1006--- /dev/null
1007+++ b/ld/testsuite/ld-x86-64/tlsdesc4.s
1008@@ -0,0 +1,13 @@
1009+ .text
1010+ .globl _start
1011+ .type _start,@function
1012+_start:
1013+ leaq foo@tlsdesc(%rip), %rax
1014+ jmp *foo@tlscall(%rax)
1015+ .globl foo
1016+ .section .tdata,"awT",@progbits
1017+ .align 8
1018+ .type foo, @object
1019+ .size foo, 8
1020+foo:
1021+ .quad 100
1022diff --git a/ld/testsuite/ld-x86-64/tlsie2.d b/ld/testsuite/ld-x86-64/tlsie2.d
1023index 97dcc288a3d..bf8a8198b5b 100644
1024--- a/ld/testsuite/ld-x86-64/tlsie2.d
1025+++ b/ld/testsuite/ld-x86-64/tlsie2.d
1026@@ -1,4 +1,4 @@
1027 #name: TLS IE->LE transition check
1028 #as: --64
1029 #ld: -melf_x86_64
1030-#error: .*TLS transition from R_X86_64_GOTTPOFF to R_X86_64_TPOFF32 against `foo'.*failed.*
1031+#error: .*: relocation R_X86_64_GOTTPOFF against `foo' must be used in ADD or MOV only
1032diff --git a/ld/testsuite/ld-x86-64/tlsie3.d b/ld/testsuite/ld-x86-64/tlsie3.d
1033index 8c982a69838..49d8464fbaf 100644
1034--- a/ld/testsuite/ld-x86-64/tlsie3.d
1035+++ b/ld/testsuite/ld-x86-64/tlsie3.d
1036@@ -1,4 +1,4 @@
1037 #name: TLS IE->LE transition check (%r12)
1038 #as: --64
1039 #ld: -melf_x86_64
1040-#error: .*TLS transition from R_X86_64_GOTTPOFF to R_X86_64_TPOFF32 against `foo'.*failed.*
1041+#error: .*: relocation R_X86_64_GOTTPOFF against `foo' must be used in ADD or MOV only
1042diff --git a/ld/testsuite/ld-x86-64/tlsie5.d b/ld/testsuite/ld-x86-64/tlsie5.d
1043new file mode 100644
1044index 00000000000..29de1cebf8e
1045--- /dev/null
1046+++ b/ld/testsuite/ld-x86-64/tlsie5.d
1047@@ -0,0 +1,4 @@
1048+#name: TLS IE->LE transition check (APX)
1049+#as: --64
1050+#ld: -melf_x86_64
1051+#error: .*: relocation R_X86_64_CODE_6_GOTTPOFF against `foo' must be used in ADD only
1052diff --git a/ld/testsuite/ld-x86-64/tlsie5.s b/ld/testsuite/ld-x86-64/tlsie5.s
1053new file mode 100644
1054index 00000000000..c39e46fd97b
1055--- /dev/null
1056+++ b/ld/testsuite/ld-x86-64/tlsie5.s
1057@@ -0,0 +1,12 @@
1058+ .text
1059+ .globl _start
1060+_start:
1061+ xorq %rax, foo@GOTTPOFF(%rip), %rax
1062+ movq (%rax), %rax
1063+ .globl foo
1064+ .section .tdata,"awT",@progbits
1065+ .align 4
1066+ .type foo, @object
1067+ .size foo, 4
1068+foo:
1069+ .long 100
1070diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
1071index 2a40f0b095b..811813466f8 100644
1072--- a/ld/testsuite/ld-x86-64/x86-64.exp
1073+++ b/ld/testsuite/ld-x86-64/x86-64.exp
1074@@ -741,6 +741,9 @@ run_dump_test "pr27016b"
1075 run_dump_test "report-reloc-1"
1076 run_dump_test "report-reloc-1-x32"
1077 run_dump_test "pr29820"
1078+run_dump_test "tlsie5"
1079+run_dump_test "tlsdesc3"
1080+run_dump_test "tlsdesc4"
1081
1082 proc undefined_weak {cflags ldflags} {
1083 set testname "Undefined weak symbol"
1084--
10852.49.0
1086
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2025-1179.patch b/meta/recipes-devtools/binutils/binutils/CVE-2025-1179.patch
new file mode 100644
index 0000000000..89312d8501
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2025-1179.patch
@@ -0,0 +1,269 @@
1From 67e30b15212adc1502b898a1ca224fdf65dc110d Mon Sep 17 00:00:00 2001
2From: "H.J. Lu" <hjl.tools@gmail.com>
3Date: Thu, 29 Aug 2024 08:47:00 -0700
4Subject: [PATCH] x86: Check invalid TLS descriptor call TLS descriptor
5 call,
6
7call *x@tlsdesc(%rax)
8
9or
10
11call *x@tlsdesc(%eax)
12
13calls _dl_tlsdesc_return which expects that RAX/EAX points to the TLS
14descriptor. Update x86 linker to issue an error with or without TLS
15transition.
16
17bfd/
18
19 PR ld/32123
20 * elf32-i386.c (elf_i386_check_tls_transition): Move
21 R_386_TLS_DESC_CALL to ...
22 (elf_i386_tls_transition): Here.
23 * elf64-x86-64.c (elf_x86_64_check_tls_transition): Move.
24 R_X86_64_TLSDESC_CALL check to ...
25 (elf_x86_64_tls_transition): Here.
26
27ld/
28
29 PR ld/32123
30 * testsuite/ld-i386/i386.exp: Run tlsgdesc3.
31 * testsuite/ld-i386/tlsgdesc3.d: New file.
32 * testsuite/ld-x86-64/tlsdesc5.d: Likewise.
33 * testsuite/ld-x86-64/x86-64.exp: Run tlsdesc5.
34
35(cherry picked from commit:67e30b15212adc1502b898a1ca224fdf65dc110d)
36Upstream-Status: Submitted [https://sourceware.org/pipermail/binutils/2025-May/141321.html]
37CVE: CVE-2025-1179
38
39Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
40---
41 bfd/elf32-i386.c | 44 +++++++++++++------
42 bfd/elf64-x86-64.c | 71 +++++++++++++++++++------------
43 ld/testsuite/ld-i386/i386.exp | 1 +
44 ld/testsuite/ld-i386/tlsgdesc3.d | 5 +++
45 ld/testsuite/ld-x86-64/tlsdesc5.d | 5 +++
46 ld/testsuite/ld-x86-64/x86-64.exp | 1 +
47 6 files changed, 86 insertions(+), 41 deletions(-)
48 create mode 100644 ld/testsuite/ld-i386/tlsgdesc3.d
49 create mode 100644 ld/testsuite/ld-x86-64/tlsdesc5.d
50
51diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
52index 18a28d2491c..9dea465f721 100644
53--- a/bfd/elf32-i386.c
54+++ b/bfd/elf32-i386.c
55@@ -1039,19 +1039,8 @@ elf_i386_check_tls_transition (asection *sec,
56 : elf_x86_tls_error_yes);
57
58 case R_386_TLS_DESC_CALL:
59- /* Check transition from GDesc access model:
60- call *x@tlsdesc(%eax)
61- */
62- if (offset + 2 <= sec->size)
63- {
64- /* Make sure that it's a call *x@tlsdesc(%eax). */
65- call = contents + offset;
66- return (call[0] == 0xff && call[1] == 0x10
67- ? elf_x86_tls_error_none
68- : elf_x86_tls_error_indirect_call);
69- }
70-
71- return elf_x86_tls_error_yes;
72+ /* It has been checked in elf_i386_tls_transition. */
73+ return elf_x86_tls_error_none;
74
75 default:
76 abort ();
77@@ -1077,6 +1066,8 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
78 unsigned int to_type = from_type;
79 bool check = true;
80 unsigned int to_le_type, to_ie_type;
81+ bfd_vma offset;
82+ bfd_byte *call;
83
84 /* Skip TLS transition for functions. */
85 if (h != NULL
86@@ -1098,9 +1089,34 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
87
88 switch (from_type)
89 {
90+ case R_386_TLS_DESC_CALL:
91+ /* Check valid GDesc call:
92+ call *x@tlsdesc(%eax)
93+ */
94+ offset = rel->r_offset;
95+ call = NULL;
96+ if (offset + 2 <= sec->size)
97+ {
98+ /* Make sure that it's a call *x@tlsdesc(%eax). */
99+ call = contents + offset;
100+ if (call[0] != 0xff || call[1] != 0x10)
101+ call = NULL;
102+ }
103+
104+ if (call == NULL)
105+ {
106+ _bfd_x86_elf_link_report_tls_transition_error
107+ (info, abfd, sec, symtab_hdr, h, sym, rel,
108+ "R_386_TLS_DESC_CALL", NULL,
109+ elf_x86_tls_error_indirect_call);
110+
111+ return false;
112+ }
113+
114+ /* Fall through. */
115+
116 case R_386_TLS_GD:
117 case R_386_TLS_GOTDESC:
118- case R_386_TLS_DESC_CALL:
119 case R_386_TLS_IE_32:
120 case R_386_TLS_IE:
121 case R_386_TLS_GOTIE:
122diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
123index f116e423f61..7af2e607b02 100644
124--- a/bfd/elf64-x86-64.c
125+++ b/bfd/elf64-x86-64.c
126@@ -1409,32 +1409,8 @@ elf_x86_64_check_tls_transition (bfd *abfd,
127 : elf_x86_tls_error_yes);
128
129 case R_X86_64_TLSDESC_CALL:
130- /* Check transition from GDesc access model:
131- call *x@tlsdesc(%rax) <--- LP64 mode.
132- call *x@tlsdesc(%eax) <--- X32 mode.
133- */
134- if (offset + 2 <= sec->size)
135- {
136- unsigned int prefix;
137- call = contents + offset;
138- prefix = 0;
139- if (!ABI_64_P (abfd))
140- {
141- /* Check for call *x@tlsdesc(%eax). */
142- if (call[0] == 0x67)
143- {
144- prefix = 1;
145- if (offset + 3 > sec->size)
146- return elf_x86_tls_error_yes;
147- }
148- }
149- /* Make sure that it's a call *x@tlsdesc(%rax). */
150- return (call[prefix] == 0xff && call[1 + prefix] == 0x10
151- ? elf_x86_tls_error_none
152- : elf_x86_tls_error_indirect_call);
153- }
154-
155- return elf_x86_tls_error_yes;
156+ /* It has been checked in elf_x86_64_tls_transition. */
157+ return elf_x86_tls_error_none;
158
159 default:
160 abort ();
161@@ -1459,6 +1435,8 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
162 unsigned int from_type = *r_type;
163 unsigned int to_type = from_type;
164 bool check = true;
165+ bfd_vma offset;
166+ bfd_byte *call;
167
168 /* Skip TLS transition for functions. */
169 if (h != NULL
170@@ -1468,10 +1446,49 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
171
172 switch (from_type)
173 {
174+ case R_X86_64_TLSDESC_CALL:
175+ /* Check valid GDesc call:
176+ call *x@tlsdesc(%rax) <--- LP64 mode.
177+ call *x@tlsdesc(%eax) <--- X32 mode.
178+ */
179+ offset = rel->r_offset;
180+ call = NULL;
181+ if (offset + 2 <= sec->size)
182+ {
183+ unsigned int prefix;
184+ call = contents + offset;
185+ prefix = 0;
186+ if (!ABI_64_P (abfd))
187+ {
188+ /* Check for call *x@tlsdesc(%eax). */
189+ if (call[0] == 0x67)
190+ {
191+ prefix = 1;
192+ if (offset + 3 > sec->size)
193+ call = NULL;
194+ }
195+ }
196+
197+ /* Make sure that it's a call *x@tlsdesc(%rax). */
198+ if (call != NULL
199+ && (call[prefix] != 0xff || call[1 + prefix] != 0x10))
200+ call = NULL;
201+ }
202+
203+ if (call == NULL)
204+ {
205+ _bfd_x86_elf_link_report_tls_transition_error
206+ (info, abfd, sec, symtab_hdr, h, sym, rel,
207+ "R_X86_64_TLSDESC_CALL", NULL,
208+ elf_x86_tls_error_indirect_call);
209+ return false;
210+ }
211+
212+ /* Fall through. */
213+
214 case R_X86_64_TLSGD:
215 case R_X86_64_GOTPC32_TLSDESC:
216 case R_X86_64_CODE_4_GOTPC32_TLSDESC:
217- case R_X86_64_TLSDESC_CALL:
218 case R_X86_64_GOTTPOFF:
219 case R_X86_64_CODE_4_GOTTPOFF:
220 case R_X86_64_CODE_6_GOTTPOFF:
221diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
222index a8db2c713f3..41e8725d059 100644
223--- a/ld/testsuite/ld-i386/i386.exp
224+++ b/ld/testsuite/ld-i386/i386.exp
225@@ -543,6 +543,7 @@ run_dump_test "pr27998a"
226 run_dump_test "pr27998b"
227 run_dump_test "tlsgdesc1"
228 run_dump_test "tlsgdesc2"
229+run_dump_test "tlsgdesc3"
230
231 proc undefined_weak {cflags ldflags} {
232 set testname "Undefined weak symbol"
233diff --git a/ld/testsuite/ld-i386/tlsgdesc3.d b/ld/testsuite/ld-i386/tlsgdesc3.d
234new file mode 100644
235index 00000000000..f2c29d880f2
236--- /dev/null
237+++ b/ld/testsuite/ld-i386/tlsgdesc3.d
238@@ -0,0 +1,5 @@
239+#source: tlsgdesc2.s
240+#name: TLS GDesc call (indirect CALL)
241+#as: --32
242+#ld: -shared -melf_i386
243+#error: .*: relocation R_386_TLS_DESC_CALL against `foo' must be used in indirect CALL with EAX register only
244diff --git a/ld/testsuite/ld-x86-64/tlsdesc5.d b/ld/testsuite/ld-x86-64/tlsdesc5.d
245new file mode 100644
246index 00000000000..6a0158b44b7
247--- /dev/null
248+++ b/ld/testsuite/ld-x86-64/tlsdesc5.d
249@@ -0,0 +1,5 @@
250+#source: tlsdesc4.s
251+#name: TLS GDesc call (indirect CALL)
252+#as: --64
253+#ld: -shared -melf_x86_64
254+#error: .*: relocation R_X86_64_TLSDESC_CALL against `foo' must be used in indirect CALL with RAX register only
255diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
256index 811813466f8..82b0520c52a 100644
257--- a/ld/testsuite/ld-x86-64/x86-64.exp
258+++ b/ld/testsuite/ld-x86-64/x86-64.exp
259@@ -744,6 +744,7 @@ run_dump_test "pr29820"
260 run_dump_test "tlsie5"
261 run_dump_test "tlsdesc3"
262 run_dump_test "tlsdesc4"
263+run_dump_test "tlsdesc5"
264
265 proc undefined_weak {cflags ldflags} {
266 set testname "Undefined weak symbol"
267--
2682.49.0
269
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2025-1181-pre.patch b/meta/recipes-devtools/binutils/binutils/CVE-2025-1181-pre.patch
new file mode 100644
index 0000000000..280e522a28
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2025-1181-pre.patch
@@ -0,0 +1,151 @@
1Backported of:
2
3From 18cc11a2771d9e40180485da9a4fb660c03efac3 Mon Sep 17 00:00:00 2001
4From: Nick Clifton <nickc@redhat.com>
5Date: Wed, 5 Feb 2025 14:31:10 +0000
6Subject: [PATCH] Prevent illegal memory access when checking relocs in a
7 corrupt ELF binary.
8
9PR 32641
10
11Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/binutils/plain/debian/patches/CVE-2025-1181-pre.patch?h=applied/ubuntu/noble-security&id=d6b5bf57cf048c42e4bcd3a4ab32116d0b809774]
12Upstream commit [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=931494c9a89558acb36a03a340c01726545eef24]
13
14CVE: CVE-2025-1181
15
16Signed-off-by: Ashish Sharma <asharma@mvista.com>
17
18 bfd/elf-bfd.h | 3 +++
19 bfd/elf64-x86-64.c | 10 +++++-----
20 bfd/elflink.c | 24 ++++++++++++++++++++++++
21 bfd/elfxx-x86.c | 20 +++++++-------------
22 4 files changed, 39 insertions(+), 18 deletions(-)
23diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
24index 3ed22fa6..07add7d0 100644
25--- a/bfd/elf-bfd.h
26+++ b/bfd/elf-bfd.h
27@@ -3126,6 +3126,9 @@ extern bool _bfd_elf_maybe_set_textrel
28 extern bool _bfd_elf_add_dynamic_tags
29 (bfd *, struct bfd_link_info *, bool);
30
31+extern struct elf_link_hash_entry * _bfd_elf_get_link_hash_entry
32+ (struct elf_link_hash_entry **, unsigned int, Elf_Internal_Shdr *);
33+
34 /* Large common section. */
35 extern asection _bfd_elf_large_com_section;
36
37diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
38index d0d3b0e5..c3fb375c 100644
39--- a/bfd/elf64-x86-64.c
40+++ b/bfd/elf64-x86-64.c
41@@ -1665,7 +1665,7 @@ elf_x86_64_convert_load_reloc (bfd *abfd,
42 bool to_reloc_pc32;
43 bool abs_symbol;
44 bool local_ref;
45- asection *tsec;
46+ asection *tsec = NULL;
47 bfd_signed_vma raddend;
48 unsigned int opcode;
49 unsigned int modrm;
50@@ -1831,6 +1831,9 @@ elf_x86_64_convert_load_reloc (bfd *abfd,
51 return true;
52 }
53
54+ if (tsec == NULL)
55+ return false;
56+
57 /* Don't convert GOTPCREL relocation against large section. */
58 if (elf_section_data (tsec) != NULL
59 && (elf_section_flags (tsec) & SHF_X86_64_LARGE) != 0)
60@@ -2127,10 +2130,7 @@ elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info,
61 else
62 {
63 isym = NULL;
64- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
65- while (h->root.type == bfd_link_hash_indirect
66- || h->root.type == bfd_link_hash_warning)
67- h = (struct elf_link_hash_entry *) h->root.u.i.link;
68+ h = _bfd_elf_get_link_hash_entry (sym_hashes, r_symndx, symtab_hdr);
69 }
70
71 /* Check invalid x32 relocations. */
72diff --git a/bfd/elflink.c b/bfd/elflink.c
73index 11ec6bd9..e5521d7b 100644
74--- a/bfd/elflink.c
75+++ b/bfd/elflink.c
76@@ -49,6 +49,27 @@ struct elf_info_failed
77 static bool _bfd_elf_fix_symbol_flags
78 (struct elf_link_hash_entry *, struct elf_info_failed *);
79
80+struct elf_link_hash_entry *
81+_bfd_elf_get_link_hash_entry (struct elf_link_hash_entry ** sym_hashes,
82+ unsigned int symndx,
83+ Elf_Internal_Shdr * symtab_hdr)
84+{
85+ if (symndx < symtab_hdr->sh_info)
86+ return NULL;
87+
88+ struct elf_link_hash_entry *h = sym_hashes[symndx - symtab_hdr->sh_info];
89+
90+ /* The hash might be empty. See PR 32641 for an example of this. */
91+ if (h == NULL)
92+ return NULL;
93+
94+ while (h->root.type == bfd_link_hash_indirect
95+ || h->root.type == bfd_link_hash_warning)
96+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
97+
98+ return h;
99+}
100+
101 static struct elf_link_hash_entry *
102 get_ext_sym_hash (struct elf_reloc_cookie *cookie, unsigned long r_symndx)
103 {
104@@ -62,6 +83,9 @@ get_ext_sym_hash (struct elf_reloc_cookie *cookie, unsigned long r_symndx)
105
106 h = cookie->sym_hashes[r_symndx - cookie->extsymoff];
107
108+ if (h == NULL)
109+ return NULL;
110+
111 while (h->root.type == bfd_link_hash_indirect
112 || h->root.type == bfd_link_hash_warning)
113 h = (struct elf_link_hash_entry *) h->root.u.i.link;
114diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
115index 508fd771..8c261cf8 100644
116--- a/bfd/elfxx-x86.c
117+++ b/bfd/elfxx-x86.c
118@@ -972,15 +972,7 @@ _bfd_x86_elf_check_relocs (bfd *abfd,
119 goto error_return;
120 }
121
122- if (r_symndx < symtab_hdr->sh_info)
123- h = NULL;
124- else
125- {
126- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
127- while (h->root.type == bfd_link_hash_indirect
128- || h->root.type == bfd_link_hash_warning)
129- h = (struct elf_link_hash_entry *) h->root.u.i.link;
130- }
131+ h = _bfd_elf_get_link_hash_entry (sym_hashes, r_symndx, symtab_hdr);
132
133 if (X86_NEED_DYNAMIC_RELOC_TYPE_P (is_x86_64, r_type)
134 && NEED_DYNAMIC_RELOCATION_P (is_x86_64, info, true, h, sec,
135@@ -1205,10 +1197,12 @@ _bfd_x86_elf_link_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
136 else
137 {
138 /* Get H and SEC for GENERATE_DYNAMIC_RELOCATION_P below. */
139- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
140- while (h->root.type == bfd_link_hash_indirect
141- || h->root.type == bfd_link_hash_warning)
142- h = (struct elf_link_hash_entry *) h->root.u.i.link;
143+ h = _bfd_elf_get_link_hash_entry (sym_hashes, r_symndx, symtab_hdr);
144+ if (h == NULL)
145+ {
146+ /* FIXMEL: Issue an error message ? */
147+ continue;
148+ }
149
150 if (h->root.type == bfd_link_hash_defined
151 || h->root.type == bfd_link_hash_defweak)
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2025-1181.patch b/meta/recipes-devtools/binutils/binutils/CVE-2025-1181.patch
new file mode 100644
index 0000000000..70b7485777
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2025-1181.patch
@@ -0,0 +1,345 @@
1Backported of:
2
3From 931494c9a89558acb36a03a340c01726545eef24 Mon Sep 17 00:00:00 2001
4From: Nick Clifton <nickc@redhat.com>
5Date: Wed, 5 Feb 2025 15:43:04 +0000
6Subject: [PATCH] Add even more checks for corrupt input when processing
7 relocations for ELF files.
8
9PR 32643
10
11Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/binutils/plain/debian/patches/CVE-2025-1181.patch?h=applied/ubuntu/noble-security&id=d6b5bf57cf048c42e4bcd3a4ab32116d0b809774]
12Upstream commit [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=931494c9a89558acb36a03a340c01726545eef24]
13
14CVE: CVE-2025-1181
15
16Signed-off-by: Ashish Sharma <asharma@mvista.com>
17
18
19diff --git a/bfd/elflink.c b/bfd/elflink.c
20index e5521d7b..ff84229c 100644
21--- a/bfd/elflink.c
22+++ b/bfd/elflink.c
23@@ -49,15 +49,17 @@ struct elf_info_failed
24 static bool _bfd_elf_fix_symbol_flags
25 (struct elf_link_hash_entry *, struct elf_info_failed *);
26
27-struct elf_link_hash_entry *
28-_bfd_elf_get_link_hash_entry (struct elf_link_hash_entry ** sym_hashes,
29- unsigned int symndx,
30- Elf_Internal_Shdr * symtab_hdr)
31+static struct elf_link_hash_entry *
32+get_link_hash_entry (struct elf_link_hash_entry ** sym_hashes,
33+ unsigned int symndx,
34+ unsigned int ext_sym_start)
35 {
36- if (symndx < symtab_hdr->sh_info)
37+ if (sym_hashes == NULL
38+ /* Guard against corrupt input. See PR 32636 for an example. */
39+ || symndx < ext_sym_start)
40 return NULL;
41
42- struct elf_link_hash_entry *h = sym_hashes[symndx - symtab_hdr->sh_info];
43+ struct elf_link_hash_entry *h = sym_hashes[symndx - ext_sym_start];
44
45 /* The hash might be empty. See PR 32641 for an example of this. */
46 if (h == NULL)
47@@ -70,29 +72,28 @@ _bfd_elf_get_link_hash_entry (struct elf_link_hash_entry ** sym_hashes,
48 return h;
49 }
50
51-static struct elf_link_hash_entry *
52-get_ext_sym_hash (struct elf_reloc_cookie *cookie, unsigned long r_symndx)
53+struct elf_link_hash_entry *
54+_bfd_elf_get_link_hash_entry (struct elf_link_hash_entry ** sym_hashes,
55+ unsigned int symndx,
56+ Elf_Internal_Shdr * symtab_hdr)
57 {
58- struct elf_link_hash_entry *h = NULL;
59-
60- if ((r_symndx >= cookie->locsymcount
61- || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
62- /* Guard against corrupt input. See PR 32636 for an example. */
63- && r_symndx >= cookie->extsymoff)
64- {
65-
66- h = cookie->sym_hashes[r_symndx - cookie->extsymoff];
67-
68- if (h == NULL)
69- return NULL;
70+ if (symtab_hdr == NULL)
71+ return NULL;
72
73- while (h->root.type == bfd_link_hash_indirect
74- || h->root.type == bfd_link_hash_warning)
75- h = (struct elf_link_hash_entry *) h->root.u.i.link;
76+ return get_link_hash_entry (sym_hashes, symndx, symtab_hdr->sh_info);
77+}
78
79- }
80+static struct elf_link_hash_entry *
81+get_ext_sym_hash_from_cookie (struct elf_reloc_cookie *cookie, unsigned long r_symndx)
82+{
83+ if (cookie == NULL || cookie->sym_hashes == NULL)
84+ return NULL;
85+
86+ if (r_symndx >= cookie->locsymcount
87+ || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
88+ return get_link_hash_entry (cookie->sym_hashes, r_symndx, cookie->extsymoff);
89
90- return h;
91+ return NULL;
92 }
93
94 asection *
95@@ -102,7 +103,7 @@ _bfd_elf_section_for_symbol (struct elf_reloc_cookie *cookie,
96 {
97 struct elf_link_hash_entry *h;
98
99- h = get_ext_sym_hash (cookie, r_symndx);
100+ h = get_ext_sym_hash_from_cookie (cookie, r_symndx);
101
102 if (h != NULL)
103 {
104@@ -8906,7 +8907,6 @@ set_symbol_value (bfd *bfd_with_globals,
105 size_t symidx,
106 bfd_vma val)
107 {
108- struct elf_link_hash_entry **sym_hashes;
109 struct elf_link_hash_entry *h;
110 size_t extsymoff = locsymcount;
111
112@@ -8929,12 +8929,12 @@ set_symbol_value (bfd *bfd_with_globals,
113
114 /* It is a global symbol: set its link type
115 to "defined" and give it a value. */
116-
117- sym_hashes = elf_sym_hashes (bfd_with_globals);
118- h = sym_hashes [symidx - extsymoff];
119- while (h->root.type == bfd_link_hash_indirect
120- || h->root.type == bfd_link_hash_warning)
121- h = (struct elf_link_hash_entry *) h->root.u.i.link;
122+ h = get_link_hash_entry (elf_sym_hashes (bfd_with_globals), symidx, extsymoff);
123+ if (h == NULL)
124+ {
125+ /* FIXMEL What should we do ? */
126+ return;
127+ }
128 h->root.type = bfd_link_hash_defined;
129 h->root.u.def.value = val;
130 h->root.u.def.section = bfd_abs_section_ptr;
131@@ -11405,10 +11405,19 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
132 || (elf_bad_symtab (input_bfd)
133 && flinfo->sections[symndx] == NULL))
134 {
135- struct elf_link_hash_entry *h = sym_hashes[symndx - extsymoff];
136- while (h->root.type == bfd_link_hash_indirect
137- || h->root.type == bfd_link_hash_warning)
138- h = (struct elf_link_hash_entry *) h->root.u.i.link;
139+ struct elf_link_hash_entry *h;
140+
141+ h = get_link_hash_entry (sym_hashes, symndx, extsymoff);
142+ if (h == NULL)
143+ {
144+ _bfd_error_handler
145+ /* xgettext:c-format */
146+ (_("error: %pB: unable to create group section symbol"),
147+ input_bfd);
148+ bfd_set_error (bfd_error_bad_value);
149+ return false;
150+ }
151+
152 /* Arrange for symbol to be output. */
153 h->indx = -2;
154 elf_section_data (osec)->this_hdr.sh_info = -2;
155@@ -11542,7 +11551,7 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
156 || (elf_bad_symtab (input_bfd)
157 && flinfo->sections[r_symndx] == NULL))
158 {
159- h = sym_hashes[r_symndx - extsymoff];
160+ h = get_link_hash_entry (sym_hashes, r_symndx, extsymoff);
161
162 /* Badly formatted input files can contain relocs that
163 reference non-existant symbols. Check here so that
164@@ -11551,17 +11560,13 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
165 {
166 _bfd_error_handler
167 /* xgettext:c-format */
168- (_("error: %pB contains a reloc (%#" PRIx64 ") for section %pA "
169+ (_("error: %pB contains a reloc (%#" PRIx64 ") for section '%pA' "
170 "that references a non-existent global symbol"),
171 input_bfd, (uint64_t) rel->r_info, o);
172 bfd_set_error (bfd_error_bad_value);
173 return false;
174 }
175
176- while (h->root.type == bfd_link_hash_indirect
177- || h->root.type == bfd_link_hash_warning)
178- h = (struct elf_link_hash_entry *) h->root.u.i.link;
179-
180 s_type = h->type;
181
182 /* If a plugin symbol is referenced from a non-IR file,
183@@ -11777,7 +11782,6 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
184 && flinfo->sections[r_symndx] == NULL))
185 {
186 struct elf_link_hash_entry *rh;
187- unsigned long indx;
188
189 /* This is a reloc against a global symbol. We
190 have not yet output all the local symbols, so
191@@ -11786,15 +11790,16 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
192 reloc to point to the global hash table entry
193 for this symbol. The symbol index is then
194 set at the end of bfd_elf_final_link. */
195- indx = r_symndx - extsymoff;
196- rh = elf_sym_hashes (input_bfd)[indx];
197- while (rh->root.type == bfd_link_hash_indirect
198- || rh->root.type == bfd_link_hash_warning)
199- rh = (struct elf_link_hash_entry *) rh->root.u.i.link;
200-
201- /* Setting the index to -2 tells
202- elf_link_output_extsym that this symbol is
203- used by a reloc. */
204+ rh = get_link_hash_entry (elf_sym_hashes (input_bfd),
205+ r_symndx, extsymoff);
206+ if (rh == NULL)
207+ {
208+ /* FIXME: Generate an error ? */
209+ continue;
210+ }
211+
212+ /* Setting the index to -2 tells elf_link_output_extsym
213+ that this symbol is used by a reloc. */
214 BFD_ASSERT (rh->indx < 0);
215 rh->indx = -2;
216 *rel_hash = rh;
217@@ -13758,25 +13763,21 @@ _bfd_elf_gc_mark_hook (asection *sec,
218 struct elf_link_hash_entry *h,
219 Elf_Internal_Sym *sym)
220 {
221- if (h != NULL)
222+ if (h == NULL)
223+ return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
224+
225+ switch (h->root.type)
226 {
227- switch (h->root.type)
228- {
229- case bfd_link_hash_defined:
230- case bfd_link_hash_defweak:
231- return h->root.u.def.section;
232+ case bfd_link_hash_defined:
233+ case bfd_link_hash_defweak:
234+ return h->root.u.def.section;
235
236- case bfd_link_hash_common:
237- return h->root.u.c.p->section;
238+ case bfd_link_hash_common:
239+ return h->root.u.c.p->section;
240
241- default:
242- break;
243- }
244+ default:
245+ return NULL;
246 }
247- else
248- return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
249-
250- return NULL;
251 }
252
253 /* Return the debug definition section. */
254@@ -13825,46 +13826,49 @@ _bfd_elf_gc_mark_rsec (struct bfd_link_info *info, asection *sec,
255 if (r_symndx == STN_UNDEF)
256 return NULL;
257
258- h = get_ext_sym_hash (cookie, r_symndx);
259-
260- if (h != NULL)
261+ h = get_ext_sym_hash_from_cookie (cookie, r_symndx);
262+ if (h == NULL)
263 {
264- bool was_marked;
265+ /* A corrup tinput file can lead to a situation where the index
266+ does not reference either a local or an external symbol. */
267+ if (r_symndx >= cookie->locsymcount)
268+ return NULL;
269
270- was_marked = h->mark;
271- h->mark = 1;
272- /* Keep all aliases of the symbol too. If an object symbol
273- needs to be copied into .dynbss then all of its aliases
274- should be present as dynamic symbols, not just the one used
275- on the copy relocation. */
276- hw = h;
277- while (hw->is_weakalias)
278- {
279- hw = hw->u.alias;
280- hw->mark = 1;
281- }
282+ return (*gc_mark_hook) (sec, info, cookie->rel, NULL,
283+ &cookie->locsyms[r_symndx]);
284+ }
285
286- if (!was_marked && h->start_stop && !h->root.ldscript_def)
287- {
288- if (info->start_stop_gc)
289- return NULL;
290+ bool was_marked = h->mark;
291
292- /* To work around a glibc bug, mark XXX input sections
293- when there is a reference to __start_XXX or __stop_XXX
294- symbols. */
295- else if (start_stop != NULL)
296- {
297- asection *s = h->u2.start_stop_section;
298- *start_stop = true;
299- return s;
300- }
301- }
302+ h->mark = 1;
303+ /* Keep all aliases of the symbol too. If an object symbol
304+ needs to be copied into .dynbss then all of its aliases
305+ should be present as dynamic symbols, not just the one used
306+ on the copy relocation. */
307+ hw = h;
308+ while (hw->is_weakalias)
309+ {
310+ hw = hw->u.alias;
311+ hw->mark = 1;
312+ }
313
314- return (*gc_mark_hook) (sec, info, cookie->rel, h, NULL);
315+ if (!was_marked && h->start_stop && !h->root.ldscript_def)
316+ {
317+ if (info->start_stop_gc)
318+ return NULL;
319+
320+ /* To work around a glibc bug, mark XXX input sections
321+ when there is a reference to __start_XXX or __stop_XXX
322+ symbols. */
323+ else if (start_stop != NULL)
324+ {
325+ asection *s = h->u2.start_stop_section;
326+ *start_stop = true;
327+ return s;
328+ }
329 }
330
331- return (*gc_mark_hook) (sec, info, cookie->rel, NULL,
332- &cookie->locsyms[r_symndx]);
333+ return (*gc_mark_hook) (sec, info, cookie->rel, h, NULL);
334 }
335
336 /* COOKIE->rel describes a relocation against section SEC, which is
337@@ -14878,7 +14882,7 @@ bfd_elf_reloc_symbol_deleted_p (bfd_vma offset, void *cookie)
338
339 struct elf_link_hash_entry *h;
340
341- h = get_ext_sym_hash (rcookie, r_symndx);
342+ h = get_ext_sym_hash_from_cookie (rcookie, r_symndx);
343
344 if (h != NULL)
345 {
diff --git a/meta/recipes-devtools/binutils/binutils/CVE-2025-1182.patch b/meta/recipes-devtools/binutils/binutils/CVE-2025-1182.patch
new file mode 100644
index 0000000000..15b40fddb6
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/CVE-2025-1182.patch
@@ -0,0 +1,33 @@
1From b425859021d17adf62f06fb904797cf8642986ad Mon Sep 17 00:00:00 2001
2From: Nick Clifton <nickc@redhat.com>
3Date: Wed, 5 Feb 2025 16:27:38 +0000
4Subject: [PATCH] Fix another illegal memory access triggered by corrupt ELF
5 input files.
6
7PR 32644
8
9Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=b425859021d17adf62f06fb904797cf8642986ad]
10CVE: CVE-2025-1182
11Signed-off-by: Ashish Sharma <asharma@mvista.com>
12
13 bfd/elflink.c | 4 ++++
14 1 file changed, 4 insertions(+)
15
16diff --git a/bfd/elflink.c b/bfd/elflink.c
17index bf940942ec3..df6eb250961 100644
18--- a/bfd/elflink.c
19+++ b/bfd/elflink.c
20@@ -15116,6 +15116,10 @@ bfd_elf_reloc_symbol_deleted_p (bfd_vma offset, void *cookie)
21 }
22 else
23 {
24+ if (r_symndx >= rcookie->locsymcount)
25+ /* This can happen with corrupt input. */
26+ return false;
27+
28 /* It's not a relocation against a global symbol,
29 but it could be a relocation against a local
30 symbol for a discarded section. */
31--
322.43.5
33
diff --git a/meta/recipes-devtools/binutils/binutils_2.42.bb b/meta/recipes-devtools/binutils/binutils_2.42.bb
index 2cce40f1ef..8594db9bfb 100644
--- a/meta/recipes-devtools/binutils/binutils_2.42.bb
+++ b/meta/recipes-devtools/binutils/binutils_2.42.bb
@@ -72,5 +72,9 @@ SRC_URI:append:class-nativesdk = " file://0003-binutils-nativesdk-Search-for-al
72 72
73USE_ALTERNATIVES_FOR:class-nativesdk = "" 73USE_ALTERNATIVES_FOR:class-nativesdk = ""
74FILES:${PN}:append:class-nativesdk = " ${bindir}" 74FILES:${PN}:append:class-nativesdk = " ${bindir}"
75RDEPENDS:gprofng:class-nativesdk = " nativesdk-perl-module-bignum \
76 nativesdk-perl-module-bigint \
77 nativesdk-perl-module-math-bigint \
78"
75 79
76BBCLASSEXTEND = "native nativesdk" 80BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/cmake/cmake-native_3.28.3.bb b/meta/recipes-devtools/cmake/cmake-native_3.28.3.bb
index 546d117156..376da3254b 100644
--- a/meta/recipes-devtools/cmake/cmake-native_3.28.3.bb
+++ b/meta/recipes-devtools/cmake/cmake-native_3.28.3.bb
@@ -51,7 +51,7 @@ do_compile() {
51do_install() { 51do_install() {
52 oe_runmake 'DESTDIR=${D}' install 52 oe_runmake 'DESTDIR=${D}' install
53 53
54 # The following codes are here because eSDK needs to provide compatibilty 54 # The following codes are here because eSDK needs to provide compatibility
55 # for SDK. That is, eSDK could also be used like traditional SDK. 55 # for SDK. That is, eSDK could also be used like traditional SDK.
56 mkdir -p ${D}${datadir}/cmake 56 mkdir -p ${D}${datadir}/cmake
57 install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/ 57 install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/
diff --git a/meta/recipes-devtools/cmake/cmake.inc b/meta/recipes-devtools/cmake/cmake.inc
index ab9f459c05..a52506a8ea 100644
--- a/meta/recipes-devtools/cmake/cmake.inc
+++ b/meta/recipes-devtools/cmake/cmake.inc
@@ -17,7 +17,8 @@ LIC_FILES_CHKSUM = "file://Copyright.txt;md5=9d3d12c5f3b4c1f83650adcc65b59c06 \
17CMAKE_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}" 17CMAKE_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
18 18
19SRC_URI = "https://cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz \ 19SRC_URI = "https://cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz \
20" 20 file://0001-CMakeDetermineCompilerABI-Strip-pipe-from-compile-fl.patch \
21 "
21 22
22SRC_URI[sha256sum] = "72b7570e5c8593de6ac4ab433b73eab18c5fb328880460c86ce32608141ad5c1" 23SRC_URI[sha256sum] = "72b7570e5c8593de6ac4ab433b73eab18c5fb328880460c86ce32608141ad5c1"
23 24
diff --git a/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineCompilerABI-Strip-pipe-from-compile-fl.patch b/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineCompilerABI-Strip-pipe-from-compile-fl.patch
new file mode 100644
index 0000000000..7ffcc95ac3
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineCompilerABI-Strip-pipe-from-compile-fl.patch
@@ -0,0 +1,52 @@
1From bd94bbdc35a9da4c73d538e0cc55bc95944f620d Mon Sep 17 00:00:00 2001
2From: Philip Lorenz <philip.lorenz@bmw.de>
3Date: Mon, 3 Jun 2024 13:19:24 +0200
4Subject: [PATCH] CMakeDetermineCompilerABI: Strip -pipe from compile flags
5
6When `-pipe` is enabled, GCC passes data between its different
7executables using pipes instead of temporary files. This leads to issues
8when cmake attempts to infer compiler internals via the `-v` parameter
9as each executable will print to `stderr` in parallel.
10
11For example we have observed the following outputs in our builds which
12sporadically lead to build failures as system include directories were
13not detected reliably:
14
15Parsed CXX implicit include dir info from above output: rv=done
16 found start of include info
17 found start of implicit include info
18 add: [.../usr/bin/x86_64-poky-linux/../../lib/x86_64-poky-linux/gcc/x86_64-poky-linux/11.4.0/include]
19 add: [.../usr/bin/x86_64-poky-linux/../../lib/x86_64-poky-linux/gcc/x86_64-poky-linux/11.4.0/include-fixed]
20 add: [.../usr/include/c++/11.4.0]
21 add: [.../usr/include/c++/11.4.0/x86_64-poky-linux]
22 add: [.../usr/include/c++/11.4.0/backward]
23 add: [.../usr/lib/x86_64-poky-linux/11.4.0/include]
24 add: [...GNU assembler version 2.38 (x86_64-poky-linux) using BFD version (GNU Binutils) 2.38.20220708]
25 add: [/usr/include]
26 end of search list found
27
28Fix this issue by stripping the `-pipe` parameter from the compilation
29flag when determining the toolchain configuration.
30
31Upstream-Status: Backport [3.32.0, 71be059f3f32b6791427893a48ba4815a19e2e78]
32Signed-off-by: Philip Lorenz <philip.lorenz@bmw.de>
33---
34 Modules/CMakeDetermineCompilerABI.cmake | 5 +++++
35 1 file changed, 5 insertions(+)
36
37diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake
38index efc18f93c2..f2e40479b1 100644
39--- a/Modules/CMakeDetermineCompilerABI.cmake
40+++ b/Modules/CMakeDetermineCompilerABI.cmake
41@@ -43,6 +43,11 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
42
43 # Avoid failing ABI detection on warnings.
44 string(REGEX REPLACE "(^| )-Werror([= ][^-][^ ]*)?( |$)" " " CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}")
45+ # Avoid passing of "-pipe" when determining the compiler internals. With
46+ # "-pipe" GCC will use pipes to pass data between the involved
47+ # executables. This may lead to issues when their stderr output (which
48+ # contains the relevant compiler internals) becomes interweaved.
49+ string(REGEX REPLACE "(^| )-pipe( |$)" " " CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}")
50
51 # Save the current LC_ALL, LC_MESSAGES, and LANG environment variables
52 # and set them to "C" that way GCC's "search starts here" text is in
diff --git a/meta/recipes-devtools/cmake/cmake/0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch b/meta/recipes-devtools/cmake/cmake/0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch
new file mode 100644
index 0000000000..77c1d6378d
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake/0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch
@@ -0,0 +1,205 @@
1From 49576cf1df618609be4aa1000749ad087c143df0 Mon Sep 17 00:00:00 2001
2From: John Drouhard <john@drouhard.dev>
3Date: Thu, 9 Jan 2025 20:34:42 -0600
4Subject: [PATCH] ctest: Allow arbitrary characters in test names of
5 CTestCostData.txt
6
7This changes the way lines in CTestCostData.txt are parsed to allow for
8spaces in the test name.
9
10It does so by looking for space characters from the end; and once two
11have been found, assumes everything from the beginning up to that
12second-to-last-space is the test name.
13
14Additionally, parsing the file should be much more efficient since there
15is no string or vector heap allocation per line. The std::string used by
16the parse function to convert the int and float should be within most
17standard libraries' small string optimization.
18
19Fixes: #26594
20
21Upstream-Status: Backport [4.0.0, 040da7d83216ace59710407e8ce35d5fd38e1340]
22Signed-off-by: Moritz Haase <Moritz.Haase@bmw.de>
23---
24 Source/CTest/cmCTestMultiProcessHandler.cxx | 80 +++++++++++++++------
25 Source/CTest/cmCTestMultiProcessHandler.h | 3 +-
26 Tests/CTestTestScheduler/CMakeLists.txt | 4 +-
27 3 files changed, 64 insertions(+), 23 deletions(-)
28
29diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx
30index ca07a081eafced40697d82b08c0e2a504939fc4d..59a101454b84367d219e79a01ff72702df0dfa7f 100644
31--- a/Source/CTest/cmCTestMultiProcessHandler.cxx
32+++ b/Source/CTest/cmCTestMultiProcessHandler.cxx
33@@ -20,6 +20,7 @@
34
35 #include <cm/memory>
36 #include <cm/optional>
37+#include <cm/string_view>
38 #include <cmext/algorithm>
39
40 #include <cm3p/json/value.h>
41@@ -43,6 +44,51 @@
42 #include "cmUVSignalHackRAII.h" // IWYU pragma: keep
43 #include "cmWorkingDirectory.h"
44
45+namespace {
46+
47+struct CostEntry
48+{
49+ cm::string_view name;
50+ int prevRuns;
51+ float cost;
52+};
53+
54+cm::optional<CostEntry> splitCostLine(cm::string_view line)
55+{
56+ std::string part;
57+ cm::string_view::size_type pos1 = line.size();
58+ cm::string_view::size_type pos2 = line.find_last_of(' ', pos1);
59+ auto findNext = [line, &part, &pos1, &pos2]() -> bool {
60+ if (pos2 != cm::string_view::npos) {
61+ cm::string_view sub = line.substr(pos2 + 1, pos1 - pos2 - 1);
62+ part.assign(sub.begin(), sub.end());
63+ pos1 = pos2;
64+ if (pos1 > 0) {
65+ pos2 = line.find_last_of(' ', pos1 - 1);
66+ }
67+ return true;
68+ }
69+ return false;
70+ };
71+
72+ // parse the cost
73+ if (!findNext()) {
74+ return cm::nullopt;
75+ }
76+ float cost = static_cast<float>(atof(part.c_str()));
77+
78+ // parse the previous runs
79+ if (!findNext()) {
80+ return cm::nullopt;
81+ }
82+ int prev = atoi(part.c_str());
83+
84+ // from start to the last found space is the name
85+ return CostEntry{ line.substr(0, pos1), prev, cost };
86+}
87+
88+}
89+
90 namespace cmsys {
91 class RegularExpression;
92 }
93@@ -697,24 +743,21 @@ void cmCTestMultiProcessHandler::UpdateCostData()
94 if (line == "---") {
95 break;
96 }
97- std::vector<std::string> parts = cmSystemTools::SplitString(line, ' ');
98 // Format: <name> <previous_runs> <avg_cost>
99- if (parts.size() < 3) {
100+ cm::optional<CostEntry> entry = splitCostLine(line);
101+ if (!entry) {
102 break;
103 }
104
105- std::string name = parts[0];
106- int prev = atoi(parts[1].c_str());
107- float cost = static_cast<float>(atof(parts[2].c_str()));
108-
109- int index = this->SearchByName(name);
110+ int index = this->SearchByName(entry->name);
111 if (index == -1) {
112 // This test is not in memory. We just rewrite the entry
113- fout << name << " " << prev << " " << cost << "\n";
114+ fout << entry->name << " " << entry->prevRuns << " " << entry->cost
115+ << "\n";
116 } else {
117 // Update with our new average cost
118- fout << name << " " << this->Properties[index]->PreviousRuns << " "
119- << this->Properties[index]->Cost << "\n";
120+ fout << entry->name << " " << this->Properties[index]->PreviousRuns
121+ << " " << this->Properties[index]->Cost << "\n";
122 temp.erase(index);
123 }
124 }
125@@ -750,28 +793,25 @@ void cmCTestMultiProcessHandler::ReadCostData()
126 break;
127 }
128
129- std::vector<std::string> parts = cmSystemTools::SplitString(line, ' ');
130+ // Format: <name> <previous_runs> <avg_cost>
131+ cm::optional<CostEntry> entry = splitCostLine(line);
132
133 // Probably an older version of the file, will be fixed next run
134- if (parts.size() < 3) {
135+ if (!entry) {
136 fin.close();
137 return;
138 }
139
140- std::string name = parts[0];
141- int prev = atoi(parts[1].c_str());
142- float cost = static_cast<float>(atof(parts[2].c_str()));
143-
144- int index = this->SearchByName(name);
145+ int index = this->SearchByName(entry->name);
146 if (index == -1) {
147 continue;
148 }
149
150- this->Properties[index]->PreviousRuns = prev;
151+ this->Properties[index]->PreviousRuns = entry->prevRuns;
152 // When not running in parallel mode, don't use cost data
153 if (this->ParallelLevel > 1 && this->Properties[index] &&
154 this->Properties[index]->Cost == 0) {
155- this->Properties[index]->Cost = cost;
156+ this->Properties[index]->Cost = entry->cost;
157 }
158 }
159 // Next part of the file is the failed tests
160@@ -784,7 +824,7 @@ void cmCTestMultiProcessHandler::ReadCostData()
161 }
162 }
163
164-int cmCTestMultiProcessHandler::SearchByName(std::string const& name)
165+int cmCTestMultiProcessHandler::SearchByName(cm::string_view name)
166 {
167 int index = -1;
168
169diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h
170index 3b4e9c59ad1871168d8528be0586831e2416ae36..8d33dabcf0d9fc6e11459105c65eadaa1de33e42 100644
171--- a/Source/CTest/cmCTestMultiProcessHandler.h
172+++ b/Source/CTest/cmCTestMultiProcessHandler.h
173@@ -12,6 +12,7 @@
174 #include <vector>
175
176 #include <cm/optional>
177+#include <cm/string_view>
178
179 #include <cm3p/uv.h>
180
181@@ -113,7 +114,7 @@ protected:
182 void UpdateCostData();
183 void ReadCostData();
184 // Return index of a test based on its name
185- int SearchByName(std::string const& name);
186+ int SearchByName(cm::string_view name);
187
188 void CreateTestCostList();
189
190diff --git a/Tests/CTestTestScheduler/CMakeLists.txt b/Tests/CTestTestScheduler/CMakeLists.txt
191index 91d565d4020aafda6d49462cd8616d168d5844b6..daf6ce2b23d8c048334ae1047759130b246dccef 100644
192--- a/Tests/CTestTestScheduler/CMakeLists.txt
193+++ b/Tests/CTestTestScheduler/CMakeLists.txt
194@@ -1,9 +1,9 @@
195-cmake_minimum_required (VERSION 3.5)
196+cmake_minimum_required(VERSION 3.19)
197 project (CTestTestScheduler)
198 include (CTest)
199
200 add_executable (Sleep sleep.c)
201
202 foreach (time RANGE 1 4)
203- add_test (TestSleep${time} Sleep ${time})
204+ add_test ("TestSleep ${time}" Sleep ${time})
205 endforeach ()
diff --git a/meta/recipes-devtools/cmake/cmake_3.28.3.bb b/meta/recipes-devtools/cmake/cmake_3.28.3.bb
index 6a9a3266df..63d483801a 100644
--- a/meta/recipes-devtools/cmake/cmake_3.28.3.bb
+++ b/meta/recipes-devtools/cmake/cmake_3.28.3.bb
@@ -5,6 +5,7 @@ inherit cmake bash-completion
5DEPENDS += "curl expat zlib libarchive xz ncurses bzip2" 5DEPENDS += "curl expat zlib libarchive xz ncurses bzip2"
6 6
7SRC_URI:append:class-nativesdk = " \ 7SRC_URI:append:class-nativesdk = " \
8 file://0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch \
8 file://OEToolchainConfig.cmake \ 9 file://OEToolchainConfig.cmake \
9 file://SDKToolchainConfig.cmake.template \ 10 file://SDKToolchainConfig.cmake.template \
10 file://cmake-setup.py \ 11 file://cmake-setup.py \
diff --git a/meta/recipes-devtools/dnf/dnf_4.19.0.bb b/meta/recipes-devtools/dnf/dnf_4.19.0.bb
index 37a2cc7de2..9c7c59818e 100644
--- a/meta/recipes-devtools/dnf/dnf_4.19.0.bb
+++ b/meta/recipes-devtools/dnf/dnf_4.19.0.bb
@@ -27,7 +27,7 @@ S = "${WORKDIR}/git"
27 27
28inherit cmake gettext bash-completion setuptools3-base systemd 28inherit cmake gettext bash-completion setuptools3-base systemd
29 29
30DEPENDS += "libdnf librepo libcomps python3-iniparse" 30DEPENDS += "libdnf librepo libcomps"
31 31
32# manpages generation requires http://www.sphinx-doc.org/ 32# manpages generation requires http://www.sphinx-doc.org/
33EXTRA_OECMAKE = " -DWITH_MAN=0 -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3" 33EXTRA_OECMAKE = " -DWITH_MAN=0 -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
@@ -49,7 +49,6 @@ RDEPENDS:${PN} += " \
49 python3-sqlite3 \ 49 python3-sqlite3 \
50 python3-compression \ 50 python3-compression \
51 python3-rpm \ 51 python3-rpm \
52 python3-iniparse \
53 python3-json \ 52 python3-json \
54 python3-curses \ 53 python3-curses \
55 python3-misc \ 54 python3-misc \
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/run-ptest b/meta/recipes-devtools/e2fsprogs/e2fsprogs/run-ptest
index 279923db8e..1857a17189 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/run-ptest
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/run-ptest
@@ -1,7 +1,8 @@
1#!/bin/sh 1#!/bin/sh
2 2
3set -eux
3cd ./test 4cd ./test
4SKIP_SLOW_TESTS=yes ./test_script | sed -u -e '/:[[:space:]]ok/s/^/PASS: /' -e '/:[[:space:]]failed/s/^/FAIL: /' -e '/:[[:space:]]skipped/s/^/SKIP: /' 5SKIP_SLOW_TESTS=yes ./test_script | sed -e '/:[[:space:]]ok/s/^/PASS: /' -e '/:[[:space:]]failed/s/^/FAIL: /' -e '/:[[:space:]]skipped/s/^/SKIP: /'
5rm -rf /var/volatile/tmp/*e2fsprogs* 6rm -rf /var/volatile/tmp/*e2fsprogs*
6rm -f tmp-* 7rm -f tmp-*
7rm -f *.tmp 8rm -f *.tmp
diff --git a/meta/recipes-devtools/elfutils/elfutils_0.191.bb b/meta/recipes-devtools/elfutils/elfutils_0.191.bb
index c4d872430b..bab3d94d12 100644
--- a/meta/recipes-devtools/elfutils/elfutils_0.191.bb
+++ b/meta/recipes-devtools/elfutils/elfutils_0.191.bb
@@ -23,6 +23,10 @@ SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
23 file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \ 23 file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
24 file://0001-debuginfod-Remove-unused-variable.patch \ 24 file://0001-debuginfod-Remove-unused-variable.patch \
25 file://0001-srcfiles-fix-unused-variable-BUFFER_SIZE.patch \ 25 file://0001-srcfiles-fix-unused-variable-BUFFER_SIZE.patch \
26 file://CVE-2025-1352.patch \
27 file://CVE-2025-1365.patch \
28 file://CVE-2025-1372.patch \
29 file://CVE-2025-1371.patch \
26 " 30 "
27SRC_URI:append:libc-musl = " \ 31SRC_URI:append:libc-musl = " \
28 file://0003-musl-utils.patch \ 32 file://0003-musl-utils.patch \
diff --git a/meta/recipes-devtools/elfutils/files/CVE-2025-1352.patch b/meta/recipes-devtools/elfutils/files/CVE-2025-1352.patch
new file mode 100644
index 0000000000..5710905449
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/CVE-2025-1352.patch
@@ -0,0 +1,153 @@
1From 2636426a091bd6c6f7f02e49ab20d4cdc6bfc753 Mon Sep 17 00:00:00 2001
2From: Mark Wielaard <mark@klomp.org>
3Date: Sat, 8 Feb 2025 20:00:12 +0100
4Subject: [PATCH] libdw: Simplify __libdw_getabbrev and fix dwarf_offabbrev
5 issue
6
7__libdw_getabbrev could crash on reading a bad abbrev by trying to
8deallocate memory it didn't allocate itself. This could happen because
9dwarf_offabbrev would supply its own memory when calling
10__libdw_getabbrev. No other caller did this.
11
12Simplify the __libdw_getabbrev common code by not taking external
13memory to put the abbrev result in (this would also not work correctly
14if the abbrev was already cached). And make dwarf_offabbrev explicitly
15copy the result (if there was no error or end of abbrev).
16
17 * libdw/dwarf_getabbrev.c (__libdw_getabbrev): Don't take
18 Dwarf_Abbrev result argument. Always just allocate abb when
19 abbrev not found in cache.
20 (dwarf_getabbrev): Don't pass NULL as last argument to
21 __libdw_getabbrev.
22 * libdw/dwarf_tag.c (__libdw_findabbrev): Likewise.
23 * libdw/dwarf_offabbrev.c (dwarf_offabbrev): Likewise. And copy
24 abbrev into abbrevp on success.
25 * libdw/libdw.h (dwarf_offabbrev): Document return values.
26 * libdw/libdwP.h (__libdw_getabbrev): Don't take Dwarf_Abbrev
27 result argument.
28
29https://sourceware.org/bugzilla/show_bug.cgi?id=32650
30
31Signed-off-by: Mark Wielaard <mark@klomp.org>
32
33Upstream-Status: Backport [https://sourceware.org/git/?p=elfutils.git;a=commit;h=2636426a091bd6c6f7f02e49ab20d4cdc6bfc753]
34CVE: CVE-2025-1352
35Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
36---
37 libdw/dwarf_getabbrev.c | 12 ++++--------
38 libdw/dwarf_offabbrev.c | 10 +++++++---
39 libdw/dwarf_tag.c | 3 +--
40 libdw/libdw.h | 4 +++-
41 libdw/libdwP.h | 3 +--
42 5 files changed, 16 insertions(+), 16 deletions(-)
43
44diff --git a/libdw/dwarf_getabbrev.c b/libdw/dwarf_getabbrev.c
45index 5b02333..d9a6c02 100644
46--- a/libdw/dwarf_getabbrev.c
47+++ b/libdw/dwarf_getabbrev.c
48@@ -1,5 +1,6 @@
49 /* Get abbreviation at given offset.
50 Copyright (C) 2003, 2004, 2005, 2006, 2014, 2017 Red Hat, Inc.
51+ Copyright (C) 2025 Mark J. Wielaard <mark@klomp.org>
52 This file is part of elfutils.
53 Written by Ulrich Drepper <drepper@redhat.com>, 2003.
54
55@@ -38,7 +39,7 @@
56 Dwarf_Abbrev *
57 internal_function
58 __libdw_getabbrev (Dwarf *dbg, struct Dwarf_CU *cu, Dwarf_Off offset,
59- size_t *lengthp, Dwarf_Abbrev *result)
60+ size_t *lengthp)
61 {
62 /* Don't fail if there is not .debug_abbrev section. */
63 if (dbg->sectiondata[IDX_debug_abbrev] == NULL)
64@@ -85,12 +86,7 @@ __libdw_getabbrev (Dwarf *dbg, struct Dwarf_CU *cu, Dwarf_Off offset,
65 Dwarf_Abbrev *abb = NULL;
66 if (cu == NULL
67 || (abb = Dwarf_Abbrev_Hash_find (&cu->abbrev_hash, code)) == NULL)
68- {
69- if (result == NULL)
70- abb = libdw_typed_alloc (dbg, Dwarf_Abbrev);
71- else
72- abb = result;
73- }
74+ abb = libdw_typed_alloc (dbg, Dwarf_Abbrev);
75 else
76 {
77 foundit = true;
78@@ -183,5 +179,5 @@ dwarf_getabbrev (Dwarf_Die *die, Dwarf_Off offset, size_t *lengthp)
79 return NULL;
80 }
81
82- return __libdw_getabbrev (dbg, cu, abbrev_offset + offset, lengthp, NULL);
83+ return __libdw_getabbrev (dbg, cu, abbrev_offset + offset, lengthp);
84 }
85diff --git a/libdw/dwarf_offabbrev.c b/libdw/dwarf_offabbrev.c
86index 27cdad6..41df69b 100644
87--- a/libdw/dwarf_offabbrev.c
88+++ b/libdw/dwarf_offabbrev.c
89@@ -41,11 +41,15 @@ dwarf_offabbrev (Dwarf *dbg, Dwarf_Off offset, size_t *lengthp,
90 if (dbg == NULL)
91 return -1;
92
93- Dwarf_Abbrev *abbrev = __libdw_getabbrev (dbg, NULL, offset, lengthp,
94- abbrevp);
95+ Dwarf_Abbrev *abbrev = __libdw_getabbrev (dbg, NULL, offset, lengthp);
96
97 if (abbrev == NULL)
98 return -1;
99
100- return abbrev == DWARF_END_ABBREV ? 1 : 0;
101+ if (abbrev == DWARF_END_ABBREV)
102+ return 1;
103+
104+ *abbrevp = *abbrev;
105+
106+ return 0;
107 }
108diff --git a/libdw/dwarf_tag.c b/libdw/dwarf_tag.c
109index d784970..218382a 100644
110--- a/libdw/dwarf_tag.c
111+++ b/libdw/dwarf_tag.c
112@@ -53,8 +53,7 @@ __libdw_findabbrev (struct Dwarf_CU *cu, unsigned int code)
113
114 /* Find the next entry. It gets automatically added to the
115 hash table. */
116- abb = __libdw_getabbrev (cu->dbg, cu, cu->last_abbrev_offset, &length,
117- NULL);
118+ abb = __libdw_getabbrev (cu->dbg, cu, cu->last_abbrev_offset, &length);
119 if (abb == NULL || abb == DWARF_END_ABBREV)
120 {
121 /* Make sure we do not try to search for it again. */
122diff --git a/libdw/libdw.h b/libdw/libdw.h
123index d53dc78..ec4713a 100644
124--- a/libdw/libdw.h
125+++ b/libdw/libdw.h
126@@ -587,7 +587,9 @@ extern int dwarf_srclang (Dwarf_Die *die);
127 extern Dwarf_Abbrev *dwarf_getabbrev (Dwarf_Die *die, Dwarf_Off offset,
128 size_t *lengthp);
129
130-/* Get abbreviation at given offset in .debug_abbrev section. */
131+/* Get abbreviation at given offset in .debug_abbrev section. On
132+ success return zero and fills in ABBREVP. When there is no (more)
133+ abbrev at offset returns one. On error returns a negative value. */
134 extern int dwarf_offabbrev (Dwarf *dbg, Dwarf_Off offset, size_t *lengthp,
135 Dwarf_Abbrev *abbrevp)
136 __nonnull_attribute__ (4);
137diff --git a/libdw/libdwP.h b/libdw/libdwP.h
138index 8b2f06f..f0f4b78 100644
139--- a/libdw/libdwP.h
140+++ b/libdw/libdwP.h
141@@ -783,8 +783,7 @@ extern Dwarf_Abbrev *__libdw_findabbrev (struct Dwarf_CU *cu,
142
143 /* Get abbreviation at given offset. */
144 extern Dwarf_Abbrev *__libdw_getabbrev (Dwarf *dbg, struct Dwarf_CU *cu,
145- Dwarf_Off offset, size_t *lengthp,
146- Dwarf_Abbrev *result)
147+ Dwarf_Off offset, size_t *lengthp)
148 __nonnull_attribute__ (1) internal_function;
149
150 /* Get abbreviation of given DIE, and optionally set *READP to the DIE memory
151--
1522.25.1
153
diff --git a/meta/recipes-devtools/elfutils/files/CVE-2025-1365.patch b/meta/recipes-devtools/elfutils/files/CVE-2025-1365.patch
new file mode 100644
index 0000000000..002ce334a3
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/CVE-2025-1365.patch
@@ -0,0 +1,151 @@
1From 5e5c0394d82c53e97750fe7b18023e6f84157b81 Mon Sep 17 00:00:00 2001
2From: Mark Wielaard <mark@klomp.org>
3Date: Sat, 8 Feb 2025 21:44:56 +0100
4Subject: [PATCH] libelf, readelf: Use validate_str also to check dynamic
5 symstr data
6
7When dynsym/str was read through eu-readelf --dynamic by readelf
8process_symtab the string data was not validated, possibly printing
9unallocated memory past the end of the symstr data. Fix this by
10turning the elf_strptr validate_str function into a generic
11lib/system.h helper function and use it in readelf to validate the
12strings before use.
13
14 * libelf/elf_strptr.c (validate_str): Remove to...
15 * lib/system.h (validate_str): ... here. Make inline, simplify
16 check and document.
17 * src/readelf.c (process_symtab): Use validate_str on symstr_data.
18
19https://sourceware.org/bugzilla/show_bug.cgi?id=32654
20
21Signed-off-by: Mark Wielaard <mark@klomp.org>
22
23Upstream-Status: Backport [https://sourceware.org/git/?p=elfutils.git;a=commit;h=5e5c0394d82c53e97750fe7b18023e6f84157b81]
24CVE: CVE-2025-1365
25Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
26---
27 lib/system.h | 27 +++++++++++++++++++++++++++
28 libelf/elf_strptr.c | 18 ------------------
29 src/readelf.c | 18 +++++++++++++++---
30 3 files changed, 42 insertions(+), 21 deletions(-)
31
32diff --git a/lib/system.h b/lib/system.h
33index 0db12d9..0698e5f 100644
34--- a/lib/system.h
35+++ b/lib/system.h
36@@ -34,6 +34,7 @@
37 #include <config.h>
38
39 #include <errno.h>
40+#include <stdbool.h>
41 #include <stddef.h>
42 #include <stdint.h>
43 #include <string.h>
44@@ -117,6 +118,32 @@ startswith (const char *str, const char *prefix)
45 return strncmp (str, prefix, strlen (prefix)) == 0;
46 }
47
48+/* Return TRUE if STR[FROM] is a valid string with a zero terminator
49+ at or before STR[TO - 1]. Note FROM is an index into the STR
50+ array, while TO is the maximum size of the STR array. This
51+ function returns FALSE when TO is zero or FROM >= TO. */
52+static inline bool
53+validate_str (const char *str, size_t from, size_t to)
54+{
55+#if HAVE_DECL_MEMRCHR
56+ // Check end first, which is likely a zero terminator,
57+ // to prevent function call
58+ return (to > 0
59+ && (str[to - 1] == '\0'
60+ || (to > from
61+ && memrchr (&str[from], '\0', to - from - 1) != NULL)));
62+#else
63+ do {
64+ if (to <= from)
65+ return false;
66+
67+ to--;
68+ } while (str[to]);
69+
70+ return true;
71+#endif
72+}
73+
74 /* A special gettext function we use if the strings are too short. */
75 #define sgettext(Str) \
76 ({ const char *__res = strrchr (_(Str), '|'); \
77diff --git a/libelf/elf_strptr.c b/libelf/elf_strptr.c
78index 79a24d2..c5a94f8 100644
79--- a/libelf/elf_strptr.c
80+++ b/libelf/elf_strptr.c
81@@ -53,24 +53,6 @@ get_zdata (Elf_Scn *strscn)
82 return zdata;
83 }
84
85-static bool validate_str (const char *str, size_t from, size_t to)
86-{
87-#if HAVE_DECL_MEMRCHR
88- // Check end first, which is likely a zero terminator, to prevent function call
89- return ((to > 0 && str[to - 1] == '\0')
90- || (to - from > 0 && memrchr (&str[from], '\0', to - from - 1) != NULL));
91-#else
92- do {
93- if (to <= from)
94- return false;
95-
96- to--;
97- } while (str[to]);
98-
99- return true;
100-#endif
101-}
102-
103 char *
104 elf_strptr (Elf *elf, size_t idx, size_t offset)
105 {
106diff --git a/src/readelf.c b/src/readelf.c
107index 0e93118..63eb548 100644
108--- a/src/readelf.c
109+++ b/src/readelf.c
110@@ -2639,6 +2639,7 @@ process_symtab (Ebl *ebl, unsigned int nsyms, Elf64_Word idx,
111 char typebuf[64];
112 char bindbuf[64];
113 char scnbuf[64];
114+ const char *sym_name;
115 Elf32_Word xndx;
116 GElf_Sym sym_mem;
117 GElf_Sym *sym
118@@ -2650,6 +2651,19 @@ process_symtab (Ebl *ebl, unsigned int nsyms, Elf64_Word idx,
119 /* Determine the real section index. */
120 if (likely (sym->st_shndx != SHN_XINDEX))
121 xndx = sym->st_shndx;
122+ if (use_dynamic_segment == true)
123+ {
124+ if (validate_str (symstr_data->d_buf, sym->st_name,
125+ symstr_data->d_size))
126+ sym_name = (char *)symstr_data->d_buf + sym->st_name;
127+ else
128+ sym_name = NULL;
129+ }
130+ else
131+ sym_name = elf_strptr (ebl->elf, idx, sym->st_name);
132+
133+ if (sym_name == NULL)
134+ sym_name = "???";
135
136 printf (_ ("\
137 %5u: %0*" PRIx64 " %6" PRId64 " %-7s %-6s %-9s %6s %s"),
138@@ -2662,9 +2676,7 @@ process_symtab (Ebl *ebl, unsigned int nsyms, Elf64_Word idx,
139 get_visibility_type (GELF_ST_VISIBILITY (sym->st_other)),
140 ebl_section_name (ebl, sym->st_shndx, xndx, scnbuf,
141 sizeof (scnbuf), NULL, shnum),
142- use_dynamic_segment == true
143- ? (char *)symstr_data->d_buf + sym->st_name
144- : elf_strptr (ebl->elf, idx, sym->st_name));
145+ sym_name);
146
147 if (versym_data != NULL)
148 {
149--
1502.25.1
151
diff --git a/meta/recipes-devtools/elfutils/files/CVE-2025-1371.patch b/meta/recipes-devtools/elfutils/files/CVE-2025-1371.patch
new file mode 100644
index 0000000000..ebb57bd4e5
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/CVE-2025-1371.patch
@@ -0,0 +1,41 @@
1From b38e562a4c907e08171c76b8b2def8464d5a104a Mon Sep 17 00:00:00 2001
2From: Mark Wielaard <mark@klomp.org>
3Date: Sun, 9 Feb 2025 00:07:13 +0100
4Subject: [PATCH] readelf: Handle NULL phdr in handle_dynamic_symtab
5
6A corrupt ELF file can have broken program headers, in which case
7gelf_getphdr returns NULL. This could crash handle_dynamic_symtab
8while searching for the PT_DYNAMIC phdr. Fix this by checking whether
9gelf_phdr returns NULL.
10
11 * src/readelf.c (handle_dynamic_symtab): Check whether
12 gelf_getphdr returns NULL.
13
14https://sourceware.org/bugzilla/show_bug.cgi?id=32655
15
16Signed-off-by: Mark Wielaard <mark@klomp.org>
17
18CVE: CVE-2025-1371
19
20Upstream-Status: Backport [https://sourceware.org/cgit/elfutils/commit/?id=b38e562a4c907e08171c76b8b2def8464d5a104a]
21
22Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
23---
24 src/readelf.c | 2 +-
25 1 file changed, 1 insertion(+), 1 deletion(-)
26
27diff --git a/src/readelf.c b/src/readelf.c
28index fc04556..13344bf 100644
29--- a/src/readelf.c
30+++ b/src/readelf.c
31@@ -2912,7 +2912,7 @@ handle_dynamic_symtab (Ebl *ebl)
32 for (size_t i = 0; i < phnum; ++i)
33 {
34 phdr = gelf_getphdr (ebl->elf, i, &phdr_mem);
35- if (phdr->p_type == PT_DYNAMIC)
36+ if (phdr == NULL || phdr->p_type == PT_DYNAMIC)
37 break;
38 }
39 if (phdr == NULL)
40--
412.40.0
diff --git a/meta/recipes-devtools/elfutils/files/CVE-2025-1372.patch b/meta/recipes-devtools/elfutils/files/CVE-2025-1372.patch
new file mode 100644
index 0000000000..812a098447
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/CVE-2025-1372.patch
@@ -0,0 +1,50 @@
1From 73db9d2021cab9e23fd734b0a76a612d52a6f1db Mon Sep 17 00:00:00 2001
2From: Mark Wielaard <mark@klomp.org>
3Date: Sun, 9 Feb 2025 00:07:39 +0100
4Subject: [PATCH] readelf: Skip trying to uncompress sections without a name
5
6When combining eu-readelf -z with -x or -p to dump the data or strings
7in an (corrupted ELF) unnamed numbered section eu-readelf could crash
8trying to check whether the section name starts with .zdebug. Fix this
9by skipping sections without a name.
10
11 * src/readelf.c (dump_data_section): Don't try to gnu decompress a
12 section without a name.
13 (print_string_section): Likewise.
14
15https://sourceware.org/bugzilla/show_bug.cgi?id=32656
16
17Signed-off-by: Mark Wielaard <mark@klomp.org>
18
19Upstream-Status: Backport [https://sourceware.org/git/?p=elfutils.git;a=commit;h=73db9d2021cab9e23fd734b0a76a612d52a6f1db]
20CVE: CVE-2025-1372
21Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
22---
23 src/readelf.c | 4 ++--
24 1 file changed, 2 insertions(+), 2 deletions(-)
25
26diff --git a/src/readelf.c b/src/readelf.c
27index 63eb548..fc04556 100644
28--- a/src/readelf.c
29+++ b/src/readelf.c
30@@ -13327,7 +13327,7 @@ dump_data_section (Elf_Scn *scn, const GElf_Shdr *shdr, const char *name)
31 _("Couldn't uncompress section"),
32 elf_ndxscn (scn));
33 }
34- else if (startswith (name, ".zdebug"))
35+ else if (name && startswith (name, ".zdebug"))
36 {
37 if (elf_compress_gnu (scn, 0, 0) < 0)
38 printf ("WARNING: %s [%zd]\n",
39@@ -13378,7 +13378,7 @@ print_string_section (Elf_Scn *scn, const GElf_Shdr *shdr, const char *name)
40 _("Couldn't uncompress section"),
41 elf_ndxscn (scn));
42 }
43- else if (startswith (name, ".zdebug"))
44+ else if (name && startswith (name, ".zdebug"))
45 {
46 if (elf_compress_gnu (scn, 0, 0) < 0)
47 printf ("WARNING: %s [%zd]\n",
48--
492.25.1
50
diff --git a/meta/recipes-devtools/gcc/gcc-13.3.inc b/meta/recipes-devtools/gcc/gcc-13.4.inc
index 90f5ef88a9..eefae13530 100644
--- a/meta/recipes-devtools/gcc/gcc-13.3.inc
+++ b/meta/recipes-devtools/gcc/gcc-13.4.inc
@@ -2,11 +2,11 @@ require gcc-common.inc
2 2
3# Third digit in PV should be incremented after a minor release 3# Third digit in PV should be incremented after a minor release
4 4
5PV = "13.3.0" 5PV = "13.4.0"
6 6
7# BINV should be incremented to a revision after a minor gcc release 7# BINV should be incremented to a revision after a minor gcc release
8 8
9BINV = "13.3.0" 9BINV = "13.4.0"
10 10
11FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:" 11FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:"
12 12
@@ -67,7 +67,7 @@ SRC_URI = "${BASEURI} \
67 file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \ 67 file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \
68 file://0027-Fix-gcc-vect-module-testcases.patch \ 68 file://0027-Fix-gcc-vect-module-testcases.patch \
69" 69"
70SRC_URI[sha256sum] = "0845e9621c9543a13f484e94584a49ffc0129970e9914624235fc1d061a0c083" 70SRC_URI[sha256sum] = "9c4ce6dbb040568fdc545588ac03c5cbc95a8dbf0c7aa490170843afb59ca8f5"
71 71
72S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${SOURCEDIR}" 72S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/${SOURCEDIR}"
73B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}" 73B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc
index 5ac82b1b57..01de93cc3c 100644
--- a/meta/recipes-devtools/gcc/gcc-common.inc
+++ b/meta/recipes-devtools/gcc/gcc-common.inc
@@ -116,3 +116,29 @@ target_prefix ?= "${prefix}"
116# The real WORKDIR location isn't a dependency for the shared workdir. 116# The real WORKDIR location isn't a dependency for the shared workdir.
117src_patches[vardepsexclude] = "WORKDIR" 117src_patches[vardepsexclude] = "WORKDIR"
118should_apply[vardepsexclude] += "PN" 118should_apply[vardepsexclude] += "PN"
119
120remove_sysroot_paths_from_configargs () {
121 replacement=${1}
122 # Prevent sysroot path from being used in configargs.h header, as it will
123 # be rewritten when used by other sysroots preventing support for gcc
124 # plugins. Additionally the path is embeddeded into the output binary, this
125 # prevents building a reproducible binary.
126 oe_runmake configure-gcc
127 sed -i "s@${STAGING_DIR_TARGET}@$replacement@g" ${B}/gcc/configargs.h
128 sed -i "s@${STAGING_DIR_HOST}@/$replacement@g" ${B}/gcc/configargs.h
129}
130
131remove_sysroot_paths_from_checksum_options () {
132 stagingdir=${1}
133 replacement=${2}
134 # Prevent sysroot/workdir paths from being used in checksum-options.
135 # checksum-options is used to generate a checksum which is embedded into
136 # the output binary.
137 oe_runmake TARGET-gcc=checksum-options all-gcc
138 sed -i "s@${DEBUG_PREFIX_MAP}@@g" ${B}/gcc/checksum-options
139 sed -i "s@$stagingdir@$replacement@g" ${B}/gcc/checksum-options
140}
141
142cleanup_installed_include_fixed () {
143 find ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed -type f -not -name "README" -not -name limits.h -not -name syslimits.h | xargs rm -f
144}
diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc b/meta/recipes-devtools/gcc/gcc-configure-common.inc
index dba25eb754..bc17f10468 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
@@ -119,4 +119,3 @@ do_configure () {
119 119
120 oe_runconf 120 oe_runconf
121} 121}
122
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
index ec87b46219..69ca18bf6e 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
@@ -63,6 +63,9 @@ do_configure () {
63} 63}
64 64
65do_compile () { 65do_compile () {
66 remove_sysroot_paths_from_configargs '/host'
67 remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' '/host'
68
66 oe_runmake all-host configure-target-libgcc 69 oe_runmake all-host configure-target-libgcc
67 (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h) 70 (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
68} 71}
@@ -171,6 +174,8 @@ do_install () {
171 done 174 done
172 done 175 done
173 done 176 done
177
178 cleanup_installed_include_fixed
174} 179}
175 180
176ELFUTILS = "nativesdk-elfutils" 181ELFUTILS = "nativesdk-elfutils"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_13.3.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_13.4.bb
index bf53c5cd78..bf53c5cd78 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-cross.inc b/meta/recipes-devtools/gcc/gcc-cross.inc
index a540fb2434..9c8cc94c3a 100644
--- a/meta/recipes-devtools/gcc/gcc-cross.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross.inc
@@ -61,19 +61,8 @@ do_compile () {
61 export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}" 61 export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}"
62 export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}" 62 export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}"
63 63
64 # Prevent native/host sysroot path from being used in configargs.h header, 64 remove_sysroot_paths_from_configargs '/host'
65 # as it will be rewritten when used by other sysroots preventing support 65 remove_sysroot_paths_from_checksum_options '${STAGING_DIR_HOST}' '/host'
66 # for gcc plugins
67 oe_runmake configure-gcc
68 sed -i 's@${STAGING_DIR_TARGET}@/host@g' ${B}/gcc/configargs.h
69 sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/configargs.h
70
71 # Prevent sysroot/workdir paths from being used in checksum-options.
72 # checksum-options is used to generate a checksum which is embedded into
73 # the output binary.
74 oe_runmake TARGET-gcc=checksum-options all-gcc
75 sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options
76 sed -i 's@${STAGING_DIR_HOST}@/host@g' ${B}/gcc/checksum-options
77 66
78 oe_runmake all-host configure-target-libgcc 67 oe_runmake all-host configure-target-libgcc
79 (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h) 68 (cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
@@ -119,7 +108,7 @@ do_install () {
119 cp ${S}/libquadmath/quadmath.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ 108 cp ${S}/libquadmath/quadmath.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
120 cp ${S}/libquadmath/quadmath_weak.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ 109 cp ${S}/libquadmath/quadmath_weak.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
121 110
122 find ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed -type f -not -name "README" -not -name limits.h -not -name syslimits.h | xargs rm -f 111 cleanup_installed_include_fixed
123 112
124 # install LTO linker plugins where binutils tools can find it 113 # install LTO linker plugins where binutils tools can find it
125 install -d ${D}${libdir}/bfd-plugins 114 install -d ${D}${libdir}/bfd-plugins
diff --git a/meta/recipes-devtools/gcc/gcc-cross_13.3.bb b/meta/recipes-devtools/gcc/gcc-cross_13.4.bb
index b43cca0c52..b43cca0c52 100644
--- a/meta/recipes-devtools/gcc/gcc-cross_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_13.3.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_13.4.bb
index 40a6c4feff..40a6c4feff 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_13.3.bb b/meta/recipes-devtools/gcc/gcc-runtime_13.4.bb
index dd430b57eb..dd430b57eb 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_13.3.bb b/meta/recipes-devtools/gcc/gcc-sanitizers_13.4.bb
index 8bda2ccad6..8bda2ccad6 100644
--- a/meta/recipes-devtools/gcc/gcc-sanitizers_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-sanitizers_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-source_13.3.bb b/meta/recipes-devtools/gcc/gcc-source_13.4.bb
index b890fa33ea..b890fa33ea 100644
--- a/meta/recipes-devtools/gcc/gcc-source_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc-source_13.4.bb
diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
index 7dac3ef422..08141f32e6 100644
--- a/meta/recipes-devtools/gcc/gcc-target.inc
+++ b/meta/recipes-devtools/gcc/gcc-target.inc
@@ -140,20 +140,8 @@ FILES:${PN}-doc = "\
140" 140"
141 141
142do_compile () { 142do_compile () {
143 # Prevent full target sysroot path from being used in configargs.h header, 143 remove_sysroot_paths_from_configargs '/'
144 # as it will be rewritten when used by other sysroots preventing support 144 remove_sysroot_paths_from_checksum_options '${STAGING_DIR_TARGET}' '/'
145 # for gcc plugins. Additionally the path is embeddeded into the output
146 # binary, this prevents building a reproducible binary.
147 oe_runmake configure-gcc
148 sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/configargs.h
149 sed -i 's@${STAGING_DIR_HOST}@/@g' ${B}/gcc/configargs.h
150
151 # Prevent sysroot/workdir paths from being used in checksum-options.
152 # checksum-options is used to generate a checksum which is embedded into
153 # the output binary.
154 oe_runmake TARGET-gcc=checksum-options all-gcc
155 sed -i 's@${DEBUG_PREFIX_MAP}@@g' ${B}/gcc/checksum-options
156 sed -i 's@${STAGING_DIR_TARGET}@/@g' ${B}/gcc/checksum-options
157 145
158 oe_runmake all-host 146 oe_runmake all-host
159} 147}
@@ -218,37 +206,8 @@ do_install () {
218 install -d ${D}${libdir}/bfd-plugins 206 install -d ${D}${libdir}/bfd-plugins
219 ln -sf ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/liblto_plugin.so ${D}${libdir}/bfd-plugins/liblto_plugin.so 207 ln -sf ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/liblto_plugin.so ${D}${libdir}/bfd-plugins/liblto_plugin.so
220 chown -R root:root ${D} 208 chown -R root:root ${D}
221}
222 209
223do_install:append () { 210 cleanup_installed_include_fixed
224 #
225 # Thefixinc.sh script, run on the gcc's compile phase, looks into sysroot header
226 # files and places the modified files into
227 # {D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed folder. This makes the
228 # build not deterministic. The following code prunes all those headers
229 # except those under include-fixed/linux, *limits.h and README, yielding
230 # the same include-fixed folders no matter what sysroot
231
232 include_fixed="${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed"
233 for f in $(find ${include_fixed} -type f); do
234 case $f in
235 */include-fixed/linux/*)
236 continue
237 ;;
238 */include-fixed/*limits.h)
239 continue
240 ;;
241 */include-fixed/README)
242 continue
243 ;;
244 *)
245 # remove file and directory if empty
246 bbdebug 2 "Pruning $f"
247 rm $f
248 find $(dirname $f) -maxdepth 0 -empty -exec rmdir {} \;
249 ;;
250 esac
251 done
252} 211}
253 212
254# Installing /usr/lib/gcc/* means we'd have two copies, one from gcc-cross 213# Installing /usr/lib/gcc/* means we'd have two copies, one from gcc-cross
diff --git a/meta/recipes-devtools/gcc/gcc-testsuite.inc b/meta/recipes-devtools/gcc/gcc-testsuite.inc
index f16d471478..eb9ddead08 100644
--- a/meta/recipes-devtools/gcc/gcc-testsuite.inc
+++ b/meta/recipes-devtools/gcc/gcc-testsuite.inc
@@ -53,8 +53,8 @@ python check_prepare() {
53 # - valid for x86*, powerpc, arm, arm64 53 # - valid for x86*, powerpc, arm, arm64
54 if qemu_binary.endswith(("x86_64", "i386", "arm", "aarch64")): 54 if qemu_binary.endswith(("x86_64", "i386", "arm", "aarch64")):
55 args += ["-cpu", "max"] 55 args += ["-cpu", "max"]
56 elif qemu_binary.endswith(("ppc", "mips", "mips64")): 56 else:
57 extra = d.getVar("QEMU_EXTRAOPTIONS_%s" % d.getVar('PACKAGE_ARCH')) 57 extra = d.getVar("QEMU_EXTRAOPTIONS_%s" % d.getVar('TUNE_PKGARCH'))
58 if extra: 58 if extra:
59 args += extra.split() 59 args += extra.split()
60 # For mips64 we could set a maximal CPU (e.g. Loongson-3A4000) however they either have MSA 60 # For mips64 we could set a maximal CPU (e.g. Loongson-3A4000) however they either have MSA
diff --git a/meta/recipes-devtools/gcc/gcc_13.3.bb b/meta/recipes-devtools/gcc/gcc_13.4.bb
index 255fe552bd..255fe552bd 100644
--- a/meta/recipes-devtools/gcc/gcc_13.3.bb
+++ b/meta/recipes-devtools/gcc/gcc_13.4.bb
diff --git a/meta/recipes-devtools/gcc/libgcc-initial_13.3.bb b/meta/recipes-devtools/gcc/libgcc-initial_13.4.bb
index a259082b47..a259082b47 100644
--- a/meta/recipes-devtools/gcc/libgcc-initial_13.3.bb
+++ b/meta/recipes-devtools/gcc/libgcc-initial_13.4.bb
diff --git a/meta/recipes-devtools/gcc/libgcc_13.3.bb b/meta/recipes-devtools/gcc/libgcc_13.4.bb
index fdcd6cc0da..fdcd6cc0da 100644
--- a/meta/recipes-devtools/gcc/libgcc_13.3.bb
+++ b/meta/recipes-devtools/gcc/libgcc_13.4.bb
diff --git a/meta/recipes-devtools/gcc/libgfortran.inc b/meta/recipes-devtools/gcc/libgfortran.inc
index c68645e392..2a08872c25 100644
--- a/meta/recipes-devtools/gcc/libgfortran.inc
+++ b/meta/recipes-devtools/gcc/libgfortran.inc
@@ -8,7 +8,7 @@ EXTRA_OECONF_PATHS = "\
8# An arm hard float target like raspberrypi4 won't build 8# An arm hard float target like raspberrypi4 won't build
9# as CFLAGS don't make it to the fortran compiler otherwise 9# as CFLAGS don't make it to the fortran compiler otherwise
10# (the configure script sets FC to $GFORTRAN unconditionally) 10# (the configure script sets FC to $GFORTRAN unconditionally)
11export GFORTRAN = "${FC}" 11export GFORTRAN = "${FC} -fcanon-prefix-map -fdebug-prefix-map=${S}=${TARGET_DBGSRC_DIR} -fdebug-prefix-map=${B}=${TARGET_DBGSRC_DIR} -gno-record-gcc-switches"
12 12
13do_configure () { 13do_configure () {
14 for target in libbacktrace libgfortran 14 for target in libbacktrace libgfortran
diff --git a/meta/recipes-devtools/gcc/libgfortran_13.3.bb b/meta/recipes-devtools/gcc/libgfortran_13.4.bb
index 71dd8b4bdc..71dd8b4bdc 100644
--- a/meta/recipes-devtools/gcc/libgfortran_13.3.bb
+++ b/meta/recipes-devtools/gcc/libgfortran_13.4.bb
diff --git a/meta/recipes-devtools/git/git/environment.d-git.sh b/meta/recipes-devtools/git/git/environment.d-git.sh
new file mode 100644
index 0000000000..9c7b5a9251
--- /dev/null
+++ b/meta/recipes-devtools/git/git/environment.d-git.sh
@@ -0,0 +1,19 @@
1# Respect host env GIT_SSL_CAINFO/GIT_SSL_CAPATH first, then auto-detected host cert, then cert in buildtools
2# CAFILE/CAPATH is auto-deteced when source buildtools
3if [ -z "$GIT_SSL_CAINFO" ]; then
4 if [ -n "$CAFILE" ];then
5 export GIT_SSL_CAINFO="$CAFILE"
6 elif [ -e "${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt" ];then
7 export GIT_SSL_CAINFO="${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt"
8 fi
9fi
10
11if [ -z "$GIT_SSL_CAPATH" ]; then
12 if [ -n "$CAPATH" ];then
13 export GIT_SSL_CAPATH="$CAPATH"
14 elif [ -e "${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt" ];then
15 export GIT_SSL_CAPATH="${OECORE_NATIVE_SYSROOT}/etc/ssl/certs"
16 fi
17fi
18
19export BB_ENV_PASSTHROUGH_ADDITIONS="${BB_ENV_PASSTHROUGH_ADDITIONS:-} GIT_SSL_CAINFO GIT_SSL_CAPATH"
diff --git a/meta/recipes-devtools/git/git_2.44.1.bb b/meta/recipes-devtools/git/git_2.44.3.bb
index 53d67eb40a..7b33d6071e 100644
--- a/meta/recipes-devtools/git/git_2.44.1.bb
+++ b/meta/recipes-devtools/git/git_2.44.3.bb
@@ -13,6 +13,10 @@ SRC_URI = "${KERNELORG_MIRROR}/software/scm/git/git-${PV}.tar.gz;name=tarball \
13 file://0001-config.mak.uname-do-not-force-RHEL-7-specific-build-.patch \ 13 file://0001-config.mak.uname-do-not-force-RHEL-7-specific-build-.patch \
14 " 14 "
15 15
16SRC_URI:append:class-nativesdk = " \
17 file://environment.d-git.sh \
18 "
19
16S = "${WORKDIR}/git-${PV}" 20S = "${WORKDIR}/git-${PV}"
17 21
18LIC_FILES_CHKSUM = "\ 22LIC_FILES_CHKSUM = "\
@@ -115,6 +119,9 @@ do_install:append:class-nativesdk() {
115 GIT_EXEC_PATH='`dirname $''realpath`'/${REL_GIT_EXEC_PATH} \ 119 GIT_EXEC_PATH='`dirname $''realpath`'/${REL_GIT_EXEC_PATH} \
116 GIT_TEMPLATE_DIR='`dirname $''realpath`'/${REL_GIT_TEMPLATE_DIR} 120 GIT_TEMPLATE_DIR='`dirname $''realpath`'/${REL_GIT_TEMPLATE_DIR}
117 perl_native_fixup 121 perl_native_fixup
122
123 mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
124 install -m 644 ${WORKDIR}/environment.d-git.sh ${D}${SDKPATHNATIVE}/environment-setup.d/git.sh
118} 125}
119 126
120FILES:${PN} += "${datadir}/git-core ${libexecdir}/git-core/" 127FILES:${PN} += "${datadir}/git-core ${libexecdir}/git-core/"
@@ -155,6 +162,7 @@ FILES:${PN}-tk = " \
155 162
156PACKAGES =+ "gitweb" 163PACKAGES =+ "gitweb"
157FILES:gitweb = "${datadir}/gitweb/" 164FILES:gitweb = "${datadir}/gitweb/"
165FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/git.sh"
158RDEPENDS:gitweb = "perl" 166RDEPENDS:gitweb = "perl"
159 167
160BBCLASSEXTEND = "native nativesdk" 168BBCLASSEXTEND = "native nativesdk"
@@ -164,4 +172,4 @@ EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
164 " 172 "
165EXTRA_OEMAKE += "NO_GETTEXT=1" 173EXTRA_OEMAKE += "NO_GETTEXT=1"
166 174
167SRC_URI[tarball.sha256sum] = "118214bb8d7ba971a62741416e757562b8f5451cefc087a407e91857897c92cc" 175SRC_URI[tarball.sha256sum] = "4237c37cdf7b3d38102117b22993b2f761a4c02758dfbe33f7b7423c0b096ca9"
diff --git a/meta/recipes-devtools/go/go-1.22.6.inc b/meta/recipes-devtools/go/go-1.22.12.inc
index 834debaf9b..b154aa3984 100644
--- a/meta/recipes-devtools/go/go-1.22.6.inc
+++ b/meta/recipes-devtools/go/go-1.22.12.inc
@@ -14,5 +14,7 @@ SRC_URI += "\
14 file://0007-exec.go-filter-out-build-specific-paths-from-linker-.patch \ 14 file://0007-exec.go-filter-out-build-specific-paths-from-linker-.patch \
15 file://0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \ 15 file://0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
16 file://0009-go-Filter-build-paths-on-staticly-linked-arches.patch \ 16 file://0009-go-Filter-build-paths-on-staticly-linked-arches.patch \
17 file://CVE-2025-22870.patch \
18 file://CVE-2025-22871.patch \
17" 19"
18SRC_URI[main.sha256sum] = "9e48d99d519882579917d8189c17e98c373ce25abaebb98772e2927088992a51" 20SRC_URI[main.sha256sum] = "012a7e1f37f362c0918c1dfa3334458ac2da1628c4b9cf4d9ca02db986e17d71"
diff --git a/meta/recipes-devtools/go/go-binary-native_1.22.6.bb b/meta/recipes-devtools/go/go-binary-native_1.22.12.bb
index ea4577f20a..b15b60a691 100644
--- a/meta/recipes-devtools/go/go-binary-native_1.22.6.bb
+++ b/meta/recipes-devtools/go/go-binary-native_1.22.12.bb
@@ -9,14 +9,15 @@ PROVIDES = "go-native"
9 9
10# Checksums available at https://go.dev/dl/ 10# Checksums available at https://go.dev/dl/
11SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}" 11SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}"
12SRC_URI[go_linux_amd64.sha256sum] = "999805bed7d9039ec3da1a53bfbcafc13e367da52aa823cb60b68ba22d44c616" 12SRC_URI[go_linux_amd64.sha256sum] = "4fa4f869b0f7fc6bb1eb2660e74657fbf04cdd290b5aef905585c86051b34d43"
13SRC_URI[go_linux_arm64.sha256sum] = "c15fa895341b8eaf7f219fada25c36a610eb042985dc1a912410c1c90098eaf2" 13SRC_URI[go_linux_arm64.sha256sum] = "fd017e647ec28525e86ae8203236e0653242722a7436929b1f775744e26278e7"
14SRC_URI[go_linux_ppc64le.sha256sum] = "9d99fce3f6f72a76630fe91ec0884dfe3db828def4713368424900fa98bb2bd6" 14SRC_URI[go_linux_ppc64le.sha256sum] = "9573d30003b0796717a99d9e2e96c48fddd4fc0f29d840f212c503b03d7de112"
15 15
16UPSTREAM_CHECK_URI = "https://golang.org/dl/" 16UPSTREAM_CHECK_URI = "https://golang.org/dl/"
17UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux" 17UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
18 18
19CVE_PRODUCT = "golang:go" 19CVE_PRODUCT = "golang:go"
20CVE_STATUS[CVE-2024-3566] = "not-applicable-platform: Issue only applies on Windows"
20 21
21S = "${WORKDIR}/go" 22S = "${WORKDIR}/go"
22 23
diff --git a/meta/recipes-devtools/go/go-common.inc b/meta/recipes-devtools/go/go-common.inc
index db165792dc..a39dea6c1c 100644
--- a/meta/recipes-devtools/go/go-common.inc
+++ b/meta/recipes-devtools/go/go-common.inc
@@ -21,6 +21,7 @@ UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.src\.tar"
21 21
22# all recipe variants are created from the same product 22# all recipe variants are created from the same product
23CVE_PRODUCT = "golang:go" 23CVE_PRODUCT = "golang:go"
24CVE_STATUS[CVE-2024-3566] = "not-applicable-platform: Issue only applies on Windows"
24 25
25INHIBIT_PACKAGE_DEBUG_SPLIT = "1" 26INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
26SSTATE_SCAN_CMD = "true" 27SSTATE_SCAN_CMD = "true"
diff --git a/meta/recipes-devtools/go/go-cross-canadian_1.22.6.bb b/meta/recipes-devtools/go/go-cross-canadian_1.22.12.bb
index 7ac9449e47..7ac9449e47 100644
--- a/meta/recipes-devtools/go/go-cross-canadian_1.22.6.bb
+++ b/meta/recipes-devtools/go/go-cross-canadian_1.22.12.bb
diff --git a/meta/recipes-devtools/go/go-cross_1.22.6.bb b/meta/recipes-devtools/go/go-cross_1.22.12.bb
index 80b5a03f6c..80b5a03f6c 100644
--- a/meta/recipes-devtools/go/go-cross_1.22.6.bb
+++ b/meta/recipes-devtools/go/go-cross_1.22.12.bb
diff --git a/meta/recipes-devtools/go/go-crosssdk_1.22.6.bb b/meta/recipes-devtools/go/go-crosssdk_1.22.12.bb
index 1857c8a577..1857c8a577 100644
--- a/meta/recipes-devtools/go/go-crosssdk_1.22.6.bb
+++ b/meta/recipes-devtools/go/go-crosssdk_1.22.12.bb
diff --git a/meta/recipes-devtools/go/go-runtime_1.22.6.bb b/meta/recipes-devtools/go/go-runtime_1.22.12.bb
index 63464a1501..63464a1501 100644
--- a/meta/recipes-devtools/go/go-runtime_1.22.6.bb
+++ b/meta/recipes-devtools/go/go-runtime_1.22.12.bb
diff --git a/meta/recipes-devtools/go/go/CVE-2025-22870.patch b/meta/recipes-devtools/go/go/CVE-2025-22870.patch
new file mode 100644
index 0000000000..6ed394c8e5
--- /dev/null
+++ b/meta/recipes-devtools/go/go/CVE-2025-22870.patch
@@ -0,0 +1,80 @@
1From 25177ecde0922c50753c043579d17828b7ee88e7 Mon Sep 17 00:00:00 2001
2From: Damien Neil <dneil@google.com>
3Date: Wed, 26 Feb 2025 16:08:57 -0800
4Subject: [PATCH] all: updated vendored x/net with security fix
5
60b6d719 [internal-branch.go1.23-vendor] proxy, http/httpproxy: do not mismatch IPv6 zone ids against hosts
7
8Fixes CVE-2025-22870
9For #71985
10
11Change-Id: Ib72c96bd0ab44d9ed2ac1428e0a9fc245464b3fc
12Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2141
13Commit-Queue: Damien Neil <dneil@google.com>
14Reviewed-by: Roland Shoemaker <bracewell@google.com>
15Reviewed-by: Neal Patel <nealpatel@google.com>
16Reviewed-on: https://go-review.googlesource.com/c/go/+/654695
17Reviewed-by: Damien Neil <dneil@google.com>
18Reviewed-by: Michael Pratt <mpratt@google.com>
19LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
20Auto-Submit: Junyang Shao <shaojunyang@google.com>
21
22CVE: CVE-2025-22870
23
24Upstream-Status: Backport [https://github.com/golang/go/commit/25177ecde0922c50753c043579d17828b7ee88e7]
25
26Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
27---
28 src/cmd/internal/moddeps/moddeps_test.go | 1 +
29 src/vendor/golang.org/x/net/http/httpproxy/proxy.go | 10 ++++++++--
30 2 files changed, 9 insertions(+), 2 deletions(-)
31
32diff --git a/src/cmd/internal/moddeps/moddeps_test.go b/src/cmd/internal/moddeps/moddeps_test.go
33index 3d4c99e..ffaa16c 100644
34--- a/src/cmd/internal/moddeps/moddeps_test.go
35+++ b/src/cmd/internal/moddeps/moddeps_test.go
36@@ -33,6 +33,7 @@ import (
37 // See issues 36852, 41409, and 43687.
38 // (Also see golang.org/issue/27348.)
39 func TestAllDependencies(t *testing.T) {
40+ t.Skip("TODO(#71985) 1.23.7 contains unreleased changes from vendored modules")
41 goBin := testenv.GoToolPath(t)
42
43 // Ensure that all packages imported within GOROOT
44diff --git a/src/vendor/golang.org/x/net/http/httpproxy/proxy.go b/src/vendor/golang.org/x/net/http/httpproxy/proxy.go
45index c3bd9a1..864961c 100644
46--- a/src/vendor/golang.org/x/net/http/httpproxy/proxy.go
47+++ b/src/vendor/golang.org/x/net/http/httpproxy/proxy.go
48@@ -14,6 +14,7 @@ import (
49 "errors"
50 "fmt"
51 "net"
52+ "net/netip"
53 "net/url"
54 "os"
55 "strings"
56@@ -180,8 +181,10 @@ func (cfg *config) useProxy(addr string) bool {
57 if host == "localhost" {
58 return false
59 }
60- ip := net.ParseIP(host)
61- if ip != nil {
62+ nip, err := netip.ParseAddr(host)
63+ var ip net.IP
64+ if err == nil {
65+ ip = net.IP(nip.AsSlice())
66 if ip.IsLoopback() {
67 return false
68 }
69@@ -363,6 +366,9 @@ type domainMatch struct {
70 }
71
72 func (m domainMatch) match(host, port string, ip net.IP) bool {
73+ if ip != nil {
74+ return false
75+ }
76 if strings.HasSuffix(host, m.host) || (m.matchHost && host == m.host[1:]) {
77 return m.port == "" || m.port == port
78 }
79--
802.40.0
diff --git a/meta/recipes-devtools/go/go/CVE-2025-22871.patch b/meta/recipes-devtools/go/go/CVE-2025-22871.patch
new file mode 100644
index 0000000000..2750178a42
--- /dev/null
+++ b/meta/recipes-devtools/go/go/CVE-2025-22871.patch
@@ -0,0 +1,172 @@
1From 15e01a2e43ecb8c7e15ff7e9d62fe3f10dcac931 Mon Sep 17 00:00:00 2001
2From: Damien Neil <dneil@google.com>
3Date: Wed, 26 Feb 2025 13:40:00 -0800
4Subject: [PATCH] [release-branch.go1.23] net/http: reject newlines in
5 chunk-size lines
6
7Unlike request headers, where we are allowed to leniently accept
8a bare LF in place of a CRLF, chunked bodies must always use CRLF
9line terminators. We were already enforcing this for chunk-data lines;
10do so for chunk-size lines as well. Also reject bare CRs anywhere
11other than as part of the CRLF terminator.
12
13Fixes CVE-2025-22871
14Fixes #72010
15For #71988
16
17Change-Id: Ib0e21af5a8ba28c2a1ca52b72af8e2265ec79e4a
18Reviewed-on: https://go-review.googlesource.com/c/go/+/652998
19Reviewed-by: Jonathan Amsterdam <jba@google.com>
20LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
21(cherry picked from commit d31c805535f3fde95646ee4d87636aaaea66847b)
22Reviewed-on: https://go-review.googlesource.com/c/go/+/657216
23
24Upstream-Status: Backport [https://github.com/golang/go/commit/15e01a2e43ecb8c7e15ff7e9d62fe3f10dcac931]
25CVE: CVE-2025-22871
26Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
27---
28 src/net/http/internal/chunked.go | 19 +++++++++--
29 src/net/http/internal/chunked_test.go | 27 +++++++++++++++
30 src/net/http/serve_test.go | 49 +++++++++++++++++++++++++++
31 3 files changed, 92 insertions(+), 3 deletions(-)
32
33diff --git a/src/net/http/internal/chunked.go b/src/net/http/internal/chunked.go
34index 196b5d8..0b08a97 100644
35--- a/src/net/http/internal/chunked.go
36+++ b/src/net/http/internal/chunked.go
37@@ -164,6 +164,19 @@ func readChunkLine(b *bufio.Reader) ([]byte, error) {
38 }
39 return nil, err
40 }
41+
42+ // RFC 9112 permits parsers to accept a bare \n as a line ending in headers,
43+ // but not in chunked encoding lines. See https://www.rfc-editor.org/errata/eid7633,
44+ // which explicitly rejects a clarification permitting \n as a chunk terminator.
45+ //
46+ // Verify that the line ends in a CRLF, and that no CRs appear before the end.
47+ if idx := bytes.IndexByte(p, '\r'); idx == -1 {
48+ return nil, errors.New("chunked line ends with bare LF")
49+ } else if idx != len(p)-2 {
50+ return nil, errors.New("invalid CR in chunked line")
51+ }
52+ p = p[:len(p)-2] // trim CRLF
53+
54 if len(p) >= maxLineLength {
55 return nil, ErrLineTooLong
56 }
57@@ -171,14 +184,14 @@ func readChunkLine(b *bufio.Reader) ([]byte, error) {
58 }
59
60 func trimTrailingWhitespace(b []byte) []byte {
61- for len(b) > 0 && isASCIISpace(b[len(b)-1]) {
62+ for len(b) > 0 && isOWS(b[len(b)-1]) {
63 b = b[:len(b)-1]
64 }
65 return b
66 }
67
68-func isASCIISpace(b byte) bool {
69- return b == ' ' || b == '\t' || b == '\n' || b == '\r'
70+func isOWS(b byte) bool {
71+ return b == ' ' || b == '\t'
72 }
73
74 var semi = []byte(";")
75diff --git a/src/net/http/internal/chunked_test.go b/src/net/http/internal/chunked_test.go
76index af79711..312f173 100644
77--- a/src/net/http/internal/chunked_test.go
78+++ b/src/net/http/internal/chunked_test.go
79@@ -280,6 +280,33 @@ func TestChunkReaderByteAtATime(t *testing.T) {
80 }
81 }
82
83+func TestChunkInvalidInputs(t *testing.T) {
84+ for _, test := range []struct {
85+ name string
86+ b string
87+ }{{
88+ name: "bare LF in chunk size",
89+ b: "1\na\r\n0\r\n",
90+ }, {
91+ name: "extra LF in chunk size",
92+ b: "1\r\r\na\r\n0\r\n",
93+ }, {
94+ name: "bare LF in chunk data",
95+ b: "1\r\na\n0\r\n",
96+ }, {
97+ name: "bare LF in chunk extension",
98+ b: "1;\na\r\n0\r\n",
99+ }} {
100+ t.Run(test.name, func(t *testing.T) {
101+ r := NewChunkedReader(strings.NewReader(test.b))
102+ got, err := io.ReadAll(r)
103+ if err == nil {
104+ t.Fatalf("unexpectedly parsed invalid chunked data:\n%q", got)
105+ }
106+ })
107+ }
108+}
109+
110 type funcReader struct {
111 f func(iteration int) ([]byte, error)
112 i int
113diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go
114index 0c76f1b..0e8af02 100644
115--- a/src/net/http/serve_test.go
116+++ b/src/net/http/serve_test.go
117@@ -6980,3 +6980,52 @@ func testDisableContentLength(t *testing.T, mode testMode) {
118 t.Fatal(err)
119 }
120 }
121+
122+func TestInvalidChunkedBodies(t *testing.T) {
123+ for _, test := range []struct {
124+ name string
125+ b string
126+ }{{
127+ name: "bare LF in chunk size",
128+ b: "1\na\r\n0\r\n\r\n",
129+ }, {
130+ name: "bare LF at body end",
131+ b: "1\r\na\r\n0\r\n\n",
132+ }} {
133+ t.Run(test.name, func(t *testing.T) {
134+ reqc := make(chan error)
135+ ts := newClientServerTest(t, http1Mode, HandlerFunc(func(w ResponseWriter, r *Request) {
136+ got, err := io.ReadAll(r.Body)
137+ if err == nil {
138+ t.Logf("read body: %q", got)
139+ }
140+ reqc <- err
141+ })).ts
142+
143+ serverURL, err := url.Parse(ts.URL)
144+ if err != nil {
145+ t.Fatal(err)
146+ }
147+
148+ conn, err := net.Dial("tcp", serverURL.Host)
149+ if err != nil {
150+ t.Fatal(err)
151+ }
152+
153+ if _, err := conn.Write([]byte(
154+ "POST / HTTP/1.1\r\n" +
155+ "Host: localhost\r\n" +
156+ "Transfer-Encoding: chunked\r\n" +
157+ "Connection: close\r\n" +
158+ "\r\n" +
159+ test.b)); err != nil {
160+ t.Fatal(err)
161+ }
162+ conn.(*net.TCPConn).CloseWrite()
163+
164+ if err := <-reqc; err == nil {
165+ t.Errorf("server handler: io.ReadAll(r.Body) succeeded, want error")
166+ }
167+ })
168+ }
169+}
170--
1712.25.1
172
diff --git a/meta/recipes-devtools/go/go_1.22.6.bb b/meta/recipes-devtools/go/go_1.22.12.bb
index 46f5fbc6be..46f5fbc6be 100644
--- a/meta/recipes-devtools/go/go_1.22.6.bb
+++ b/meta/recipes-devtools/go/go_1.22.12.bb
diff --git a/meta/recipes-devtools/libtool/libtool_2.4.7.bb b/meta/recipes-devtools/libtool/libtool_2.4.7.bb
index 44a4950574..c1e315aece 100644
--- a/meta/recipes-devtools/libtool/libtool_2.4.7.bb
+++ b/meta/recipes-devtools/libtool/libtool_2.4.7.bb
@@ -1,4 +1,5 @@
1require libtool-${PV}.inc 1require libtool-${PV}.inc
2require remove-buildpaths.inc
2 3
3SRC_URI += "file://multilib.patch" 4SRC_URI += "file://multilib.patch"
4 5
@@ -15,20 +16,6 @@ SYSROOT_DIRS_IGNORE += " \
15 16
16ACLOCALEXTRAPATH:class-target = "" 17ACLOCALEXTRAPATH:class-target = ""
17 18
18do_install:append () {
19 sed -e 's@--sysroot=${STAGING_DIR_HOST}@@g' \
20 -e "s@${DEBUG_PREFIX_MAP}@@g" \
21 -e 's@${STAGING_DIR_HOST}@@g' \
22 -e 's@${STAGING_DIR_NATIVE}@@g' \
23 -e 's@^\(sys_lib_search_path_spec="\).*@\1${libdir} ${base_libdir}"@' \
24 -e 's@^\(compiler_lib_search_dirs="\).*@\1${libdir} ${base_libdir}"@' \
25 -e 's@^\(compiler_lib_search_path="\).*@\1${libdir} ${base_libdir}"@' \
26 -e 's@^\(predep_objects="\).*@\1"@' \
27 -e 's@^\(postdep_objects="\).*@\1"@' \
28 -e "s@${HOSTTOOLS_DIR}/@@g" \
29 -i ${D}${bindir}/libtool
30}
31
32inherit multilib_script 19inherit multilib_script
33 20
34MULTILIB_SCRIPTS = "${PN}:${bindir}/libtool" 21MULTILIB_SCRIPTS = "${PN}:${bindir}/libtool"
diff --git a/meta/recipes-devtools/libtool/nativesdk-libtool_2.4.7.bb b/meta/recipes-devtools/libtool/nativesdk-libtool_2.4.7.bb
index 86c55ded7b..ac460decf6 100644
--- a/meta/recipes-devtools/libtool/nativesdk-libtool_2.4.7.bb
+++ b/meta/recipes-devtools/libtool/nativesdk-libtool_2.4.7.bb
@@ -1,4 +1,5 @@
1require libtool-${PV}.inc 1require libtool-${PV}.inc
2require remove-buildpaths.inc
2 3
3FILESEXTRAPATHS =. "${FILE_DIRNAME}/libtool:" 4FILESEXTRAPATHS =. "${FILE_DIRNAME}/libtool:"
4 5
diff --git a/meta/recipes-devtools/libtool/remove-buildpaths.inc b/meta/recipes-devtools/libtool/remove-buildpaths.inc
new file mode 100644
index 0000000000..1ca95aeace
--- /dev/null
+++ b/meta/recipes-devtools/libtool/remove-buildpaths.inc
@@ -0,0 +1,13 @@
1do_install:append () {
2 sed -e 's@--sysroot=${STAGING_DIR_HOST}@@g' \
3 -e "s@${DEBUG_PREFIX_MAP}@@g" \
4 -e 's@${STAGING_DIR_HOST}@@g' \
5 -e 's@${STAGING_DIR_NATIVE}@@g' \
6 -e 's@^\(sys_lib_search_path_spec="\).*@\1${libdir} ${base_libdir}"@' \
7 -e 's@^\(compiler_lib_search_dirs="\).*@\1${libdir} ${base_libdir}"@' \
8 -e 's@^\(compiler_lib_search_path="\).*@\1${libdir} ${base_libdir}"@' \
9 -e 's@^\(predep_objects="\).*@\1"@' \
10 -e 's@^\(postdep_objects="\).*@\1"@' \
11 -e "s@${HOSTTOOLS_DIR}/@@g" \
12 -i ${D}${bindir}/libtool
13}
diff --git a/meta/recipes-devtools/llvm/llvm_18.1.6.bb b/meta/recipes-devtools/llvm/llvm_18.1.6.bb
index 0496b8ed14..caad611d7a 100644
--- a/meta/recipes-devtools/llvm/llvm_18.1.6.bb
+++ b/meta/recipes-devtools/llvm/llvm_18.1.6.bb
@@ -93,6 +93,8 @@ EXTRA_OECMAKE:append:class-nativesdk = "\
93 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen${PV} \ 93 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen${PV} \
94 -DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config${PV} \ 94 -DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config${PV} \
95 " 95 "
96# Unless DEBUG_BUILD is enabled, pass -g1 to massively reduce the size of the debug symbols
97DEBUG_FLAGS:append = "${@oe.utils.vartrue('DEBUG_BUILD', '', ' -g1', d)}"
96 98
97# patch out build host paths for reproducibility 99# patch out build host paths for reproducibility
98do_compile:prepend:class-target() { 100do_compile:prepend:class-target() {
diff --git a/meta/recipes-devtools/makedevs/makedevs/makedevs.c b/meta/recipes-devtools/makedevs/makedevs/makedevs.c
index df2e3cfad5..411a669153 100644
--- a/meta/recipes-devtools/makedevs/makedevs/makedevs.c
+++ b/meta/recipes-devtools/makedevs/makedevs/makedevs.c
@@ -36,6 +36,7 @@ static const char *const app_name = "makedevs";
36static const char *const memory_exhausted = "memory exhausted"; 36static const char *const memory_exhausted = "memory exhausted";
37static char default_rootdir[]="."; 37static char default_rootdir[]=".";
38static char *rootdir = default_rootdir; 38static char *rootdir = default_rootdir;
39static char *rootdir_prepend = default_rootdir;
39static int trace = 0; 40static int trace = 0;
40 41
41struct name_id { 42struct name_id {
@@ -201,7 +202,7 @@ static unsigned long convert2guid(char *id_buf, struct name_id *search_list)
201 // Check for bad user/group name 202 // Check for bad user/group name
202 node = search_list; 203 node = search_list;
203 while (node != NULL) { 204 while (node != NULL) {
204 if (!strncmp(node->name, id_buf, strlen(id_buf))) { 205 if (!strncmp(node->name, id_buf, MAX_ID_LEN)) {
205 fprintf(stderr, "WARNING: Bad user/group name %s detected\n", id_buf); 206 fprintf(stderr, "WARNING: Bad user/group name %s detected\n", id_buf);
206 break; 207 break;
207 } 208 }
@@ -211,12 +212,15 @@ static unsigned long convert2guid(char *id_buf, struct name_id *search_list)
211 } else { 212 } else {
212 node = search_list; 213 node = search_list;
213 while (node != NULL) { 214 while (node != NULL) {
214 if (!strncmp(node->name, id_buf, strlen(id_buf))) 215 if (!strncmp(node->name, id_buf, MAX_ID_LEN))
215 return node->id; 216 return node->id;
216 node = node->next; 217 node = node->next;
217 } 218 }
218 error_msg_and_die("No entry for %s in search list", id_buf); 219 error_msg_and_die("No entry for %s in search list", id_buf);
219 } 220 }
221
222 // Unreachable, but avoid an error with -Werror=return-type
223 return 0;
220} 224}
221 225
222static void free_list(struct name_id *list) 226static void free_list(struct name_id *list)
@@ -358,13 +362,13 @@ static void add_new_fifo(char *name, char *path, unsigned long uid,
358static int interpret_table_entry(char *line) 362static int interpret_table_entry(char *line)
359{ 363{
360 char *name; 364 char *name;
361 char usr_buf[MAX_ID_LEN]; 365 char usr_buf[MAX_ID_LEN+1];
362 char grp_buf[MAX_ID_LEN]; 366 char grp_buf[MAX_ID_LEN+1];
363 char path[4096], type; 367 char path[PATH_MAX], type;
364 unsigned long mode = 0755, uid = 0, gid = 0, major = 0, minor = 0; 368 unsigned long mode = 0755, uid = 0, gid = 0, major = 0, minor = 0;
365 unsigned long start = 0, increment = 1, count = 0; 369 unsigned long start = 0, increment = 1, count = 0;
366 370
367 if (0 > sscanf(line, "%4095s %c %lo %39s %39s %lu %lu %lu %lu %lu", path, 371 if (0 > sscanf(line, "%4095s %c %lo %40s %40s %lu %lu %lu %lu %lu", path,
368 &type, &mode, usr_buf, grp_buf, &major, &minor, &start, 372 &type, &mode, usr_buf, grp_buf, &major, &minor, &start,
369 &increment, &count)) 373 &increment, &count))
370 { 374 {
@@ -379,8 +383,8 @@ static int interpret_table_entry(char *line)
379 error_msg_and_die("Device table entries require absolute paths"); 383 error_msg_and_die("Device table entries require absolute paths");
380 } 384 }
381 name = xstrdup(path + 1); 385 name = xstrdup(path + 1);
382 /* prefix path with rootdir */ 386 /* prefix path with rootdir_prepend */
383 sprintf(path, "%s/%s", rootdir, name); 387 sprintf(path, "%s/%s", rootdir_prepend, name);
384 388
385 /* XXX Why is name passed into all of the add_new_*() routines? */ 389 /* XXX Why is name passed into all of the add_new_*() routines? */
386 switch (type) { 390 switch (type) {
@@ -406,11 +410,11 @@ static int interpret_table_entry(char *line)
406 410
407 for (i = start; i < start + count; i++) { 411 for (i = start; i < start + count; i++) {
408 sprintf(buf, "%s%d", name, i); 412 sprintf(buf, "%s%d", name, i);
409 sprintf(path, "%s/%s%d", rootdir, name, i); 413 sprintf(path, "%s/%s%d", rootdir_prepend, name, i);
410 /* FIXME: MKDEV uses illicit insider knowledge of kernel 414 /* FIXME: MKDEV uses illicit insider knowledge of kernel
411 * major/minor representation... */ 415 * major/minor representation... */
412 rdev = MKDEV(major, minor + (i - start) * increment); 416 rdev = MKDEV(major, minor + (i - start) * increment);
413 sprintf(path, "%s/%s\0", rootdir, buf); 417 sprintf(path, "%s/%s\0", rootdir_prepend, buf);
414 add_new_device(buf, path, uid, gid, mode, rdev); 418 add_new_device(buf, path, uid, gid, mode, rdev);
415 } 419 }
416 } else { 420 } else {
@@ -541,12 +545,11 @@ int main(int argc, char **argv)
541 } else { 545 } else {
542 closedir(dir); 546 closedir(dir);
543 } 547 }
544 /* If "/" is specified, use "" because rootdir is always prepended to a 548 rootdir = xstrdup(optarg);
545 * string that starts with "/" */ 549 if (0 == strcmp(rootdir, "/"))
546 if (0 == strcmp(optarg, "/")) 550 rootdir_prepend = xstrdup("");
547 rootdir = xstrdup("");
548 else 551 else
549 rootdir = xstrdup(optarg); 552 rootdir_prepend = xstrdup(rootdir);
550 break; 553 break;
551 554
552 case 't': 555 case 't':
diff --git a/meta/recipes-devtools/ninja/ninja/885b4efb41c039789b81f0dc0d67c1ed0faea17c.patch b/meta/recipes-devtools/ninja/ninja/885b4efb41c039789b81f0dc0d67c1ed0faea17c.patch
new file mode 100644
index 0000000000..b23bedd04b
--- /dev/null
+++ b/meta/recipes-devtools/ninja/ninja/885b4efb41c039789b81f0dc0d67c1ed0faea17c.patch
@@ -0,0 +1,62 @@
1From 9cf13cd1ecb7ae649394f4133d121a01e191560b Mon Sep 17 00:00:00 2001
2From: Byoungchan Lee <byoungchan.lee@gmx.com>
3Date: Mon, 9 Oct 2023 20:13:20 +0900
4Subject: [PATCH 1/2] Replace pipes.quote with shlex.quote in configure.py
5
6Python 3.12 deprecated the pipes module and it will be removed
7in Python 3.13. In configure.py, I have replaced the usage of pipes.quote
8with shlex.quote, which is the exactly same function as pipes.quote.
9
10For more details, refer to PEP 0594: https://peps.python.org/pep-0594
11
12Upstream-Status: Backport [https://github.com/ninja-build/ninja/commit/885b4efb41c039789b81f0dc0d67c1ed0faea17c]
13
14Signed-off-by: Markus Volk <f_l_k@t-online.de>
15---
16 configure.py | 4 ++--
17 1 file changed, 2 insertions(+), 2 deletions(-)
18
19diff --git a/configure.py b/configure.py
20index 588250aa8a..c6973cd1a5 100755
21--- a/configure.py
22+++ b/configure.py
23@@ -21,7 +21,7 @@
24
25 from optparse import OptionParser
26 import os
27-import pipes
28+import shlex
29 import string
30 import subprocess
31 import sys
32@@ -262,7 +262,7 @@ def _run_command(self, cmdline):
33 env_keys = set(['CXX', 'AR', 'CFLAGS', 'CXXFLAGS', 'LDFLAGS'])
34 configure_env = dict((k, os.environ[k]) for k in os.environ if k in env_keys)
35 if configure_env:
36- config_str = ' '.join([k + '=' + pipes.quote(configure_env[k])
37+ config_str = ' '.join([k + '=' + shlex.quote(configure_env[k])
38 for k in configure_env])
39 n.variable('configure_env', config_str + '$ ')
40 n.newline()
41
42From 0a9c9c5f50c60de4a7acfed8aaa048c74cd2f43b Mon Sep 17 00:00:00 2001
43From: Byoungchan Lee <byoungchan.lee@gmx.com>
44Date: Mon, 9 Oct 2023 20:13:50 +0900
45Subject: [PATCH 2/2] Remove unused module string in configure.py
46
47---
48 configure.py | 1 -
49 1 file changed, 1 deletion(-)
50
51diff --git a/configure.py b/configure.py
52index c6973cd1a5..939153df60 100755
53--- a/configure.py
54+++ b/configure.py
55@@ -22,7 +22,6 @@
56 from optparse import OptionParser
57 import os
58 import shlex
59-import string
60 import subprocess
61 import sys
62
diff --git a/meta/recipes-devtools/ninja/ninja_1.11.1.bb b/meta/recipes-devtools/ninja/ninja_1.11.1.bb
index 8e297ec4d4..b74150bc64 100644
--- a/meta/recipes-devtools/ninja/ninja_1.11.1.bb
+++ b/meta/recipes-devtools/ninja/ninja_1.11.1.bb
@@ -8,7 +8,10 @@ DEPENDS = "re2c-native ninja-native"
8 8
9SRCREV = "a524bf3f6bacd1b4ad85d719eed2737d8562f27a" 9SRCREV = "a524bf3f6bacd1b4ad85d719eed2737d8562f27a"
10 10
11SRC_URI = "git://github.com/ninja-build/ninja.git;branch=release;protocol=https" 11SRC_URI = " \
12 git://github.com/ninja-build/ninja.git;branch=release;protocol=https \
13 file://885b4efb41c039789b81f0dc0d67c1ed0faea17c.patch \
14"
12UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)" 15UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)"
13 16
14S = "${WORKDIR}/git" 17S = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/orc/orc_0.4.39.bb b/meta/recipes-devtools/orc/orc_0.4.40.bb
index 320abf536a..e437831cd7 100644
--- a/meta/recipes-devtools/orc/orc_0.4.39.bb
+++ b/meta/recipes-devtools/orc/orc_0.4.40.bb
@@ -5,7 +5,7 @@ LICENSE = "BSD-2-Clause & BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://COPYING;md5=1400bd9d09e8af56b9ec982b3d85797e" 5LIC_FILES_CHKSUM = "file://COPYING;md5=1400bd9d09e8af56b9ec982b3d85797e"
6 6
7SRC_URI = "http://gstreamer.freedesktop.org/src/orc/orc-${PV}.tar.xz" 7SRC_URI = "http://gstreamer.freedesktop.org/src/orc/orc-${PV}.tar.xz"
8SRC_URI[sha256sum] = "33ed2387f49b825fa1b9c3b0072e05f259141b895474ad085ae51143d3040cc0" 8SRC_URI[sha256sum] = "3fc2bee78dfb7c41fd9605061fc69138db7df007eae2f669a1f56e8bacef74ab"
9 9
10inherit meson pkgconfig gtk-doc 10inherit meson pkgconfig gtk-doc
11 11
diff --git a/meta/recipes-devtools/perl-cross/files/0001-Makefile-check-the-file-if-patched-or-not.patch b/meta/recipes-devtools/perl-cross/files/0001-Makefile-check-the-file-if-patched-or-not.patch
index 4e9153ebf1..7efee733c6 100644
--- a/meta/recipes-devtools/perl-cross/files/0001-Makefile-check-the-file-if-patched-or-not.patch
+++ b/meta/recipes-devtools/perl-cross/files/0001-Makefile-check-the-file-if-patched-or-not.patch
@@ -1,4 +1,4 @@
1From 3eb33dce6e3c93e1b3efcc9649f871100adada30 Mon Sep 17 00:00:00 2001 1From d0292a4f91ca22f8919a0f13d8961f98743bdbf1 Mon Sep 17 00:00:00 2001
2From: Mingli Yu <mingli.yu@windriver.com> 2From: Mingli Yu <mingli.yu@windriver.com>
3Date: Fri, 2 Jul 2021 09:08:21 +0000 3Date: Fri, 2 Jul 2021 09:08:21 +0000
4Subject: [PATCH] Makefile: check the file if patched or not 4Subject: [PATCH] Makefile: check the file if patched or not
@@ -9,7 +9,6 @@ one time.
9Upstream-Status: Inappropriate (OE-specific) 9Upstream-Status: Inappropriate (OE-specific)
10 10
11Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 11Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
12
13--- 12---
14 Makefile | 2 +- 13 Makefile | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-) 14 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch b/meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch
index 6c3f08c432..6d387fe66a 100644
--- a/meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch
+++ b/meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch
@@ -1,4 +1,4 @@
1From f824cbec9ac8f113a4ae35d57bd18625d415a71b Mon Sep 17 00:00:00 2001 1From c4ebb6d11d690185f66a3f0a591f193fd6611122 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Tue, 27 Nov 2018 15:37:40 +0100 3Date: Tue, 27 Nov 2018 15:37:40 +0100
4Subject: [PATCH] perl-cross: add LDFLAGS when linking libperl 4Subject: [PATCH] perl-cross: add LDFLAGS when linking libperl
@@ -10,10 +10,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10 1 file changed, 1 insertion(+), 1 deletion(-) 10 1 file changed, 1 insertion(+), 1 deletion(-)
11 11
12diff --git a/Makefile b/Makefile 12diff --git a/Makefile b/Makefile
13index 01644cd..be811a7 100644 13index 4b80079..c6d6042 100644
14--- a/Makefile 14--- a/Makefile
15+++ b/Makefile 15+++ b/Makefile
16@@ -180,7 +180,7 @@ endif 16@@ -191,7 +191,7 @@ endif
17 17
18 ifeq ($(useshrplib),true) 18 ifeq ($(useshrplib),true)
19 $(LIBPERL): 19 $(LIBPERL):
@@ -22,6 +22,3 @@ index 01644cd..be811a7 100644
22 else 22 else
23 $(LIBPERL): 23 $(LIBPERL):
24 $(AR) cru $@ $(filter %$o,$^) 24 $(AR) cru $@ $(filter %$o,$^)
25--
262.17.1
27
diff --git a/meta/recipes-devtools/perl-cross/files/determinism.patch b/meta/recipes-devtools/perl-cross/files/determinism.patch
index e9bf752bcb..ef11b12a35 100644
--- a/meta/recipes-devtools/perl-cross/files/determinism.patch
+++ b/meta/recipes-devtools/perl-cross/files/determinism.patch
@@ -1,4 +1,7 @@
1Fixes to make the perl build reproducible: 1From 8fd84d6d760b21bad2c499b572951cc3f2235953 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Wed, 5 Feb 2020 23:54:02 +0000
4Subject: [PATCH] Fixes to make the perl build reproducible:
2 5
3a) Remove the \n from configure_attr.sh since it gets quoted differently depending on 6a) Remove the \n from configure_attr.sh since it gets quoted differently depending on
4 whether the shell is bash or dash which can cause the test result to be incorrect. 7 whether the shell is bash or dash which can cause the test result to be incorrect.
@@ -8,7 +11,7 @@ b) Sort the order of the module lists from configure_mods.sh since otherwise
8 the result isn't the same leading to makefile differences. 11 the result isn't the same leading to makefile differences.
9 Reported upstream: https://github.com/arsv/perl-cross/issues/88 12 Reported upstream: https://github.com/arsv/perl-cross/issues/88
10 13
11c) Sort the Encode::Byte byte_t.fnm file output (and the makefile depends whilst 14c) Sort the Encode::Byte byte_t.fnm file output (and the makefile depends whilst
12 there for good measure) 15 there for good measure)
13 This needs to go to upstream perl (not done) 16 This needs to go to upstream perl (not done)
14 17
@@ -20,12 +23,26 @@ RP 2020/2/7
20 23
21Upstream-Status: Pending [75% submitted] 24Upstream-Status: Pending [75% submitted]
22Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org 25Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
26---
27 cnf/configure | 2 +-
28 cnf/configure_mods.sh | 2 +-
29 2 files changed, 2 insertions(+), 2 deletions(-)
23 30
24Index: perl-5.30.1/cnf/configure_mods.sh 31diff --git a/cnf/configure b/cnf/configure
25=================================================================== 32index 2f451c6..86bc865 100755
26--- perl-5.30.1.orig/cnf/configure_mods.sh 33--- a/cnf/configure
27+++ perl-5.30.1/cnf/configure_mods.sh 34+++ b/cnf/configure
28@@ -82,7 +82,7 @@ extonlyif() { 35@@ -1,4 +1,4 @@
36-#!/bin/sh
37+#!/bin/bash
38
39 base=${0%/*}; test -z "$base" && base=.
40
41diff --git a/cnf/configure_mods.sh b/cnf/configure_mods.sh
42index d4ef5a7..8e88b48 100644
43--- a/cnf/configure_mods.sh
44+++ b/cnf/configure_mods.sh
45@@ -108,7 +108,7 @@ extonlyif() {
29 } 46 }
30 47
31 definetrimspaces() { 48 definetrimspaces() {
@@ -34,13 +51,3 @@ Index: perl-5.30.1/cnf/configure_mods.sh
34 define $1 "$v" 51 define $1 "$v"
35 } 52 }
36 53
37Index: perl-5.30.1/cnf/configure
38===================================================================
39--- perl-5.30.1.orig/cnf/configure
40+++ perl-5.30.1/cnf/configure
41@@ -1,4 +1,4 @@
42-#!/bin/sh
43+#!/bin/bash
44
45 base=${0%/*}; test -z "$base" && base=.
46
diff --git a/meta/recipes-devtools/perl-cross/perlcross_1.5.2.bb b/meta/recipes-devtools/perl-cross/perlcross_1.6.2.bb
index b41c182fad..e4bd90c572 100644
--- a/meta/recipes-devtools/perl-cross/perlcross_1.5.2.bb
+++ b/meta/recipes-devtools/perl-cross/perlcross_1.6.2.bb
@@ -18,7 +18,7 @@ SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/perl-cross-${PV}.tar.gz;name=perl-c
18 " 18 "
19GITHUB_BASE_URI = "https://github.com/arsv/perl-cross/releases/" 19GITHUB_BASE_URI = "https://github.com/arsv/perl-cross/releases/"
20 20
21SRC_URI[perl-cross.sha256sum] = "584dc54c48dca25e032b676a15bef377c1fed9de318b4fc140292a5dbf326e90" 21SRC_URI[perl-cross.sha256sum] = "131f7496152ee32067dbac2bc9b44b2f582fc778140e545701b3b2faee782f1d"
22 22
23S = "${WORKDIR}/perl-cross-${PV}" 23S = "${WORKDIR}/perl-cross-${PV}"
24 24
diff --git a/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb b/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb
index cffc133a45..803164f713 100644
--- a/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb
+++ b/meta/recipes-devtools/perl/libxml-parser-perl_2.47.bb
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=4342f85bf14a1fdd6a751573f1e61c03"
6 6
7DEPENDS += "expat" 7DEPENDS += "expat"
8 8
9SRC_URI = "${CPAN_MIRROR}/modules/by-module/XML/XML-Parser-${PV}.tar.gz \ 9SRC_URI = "${CPAN_MIRROR}/authors/id/T/TO/TODDR/XML-Parser-${PV}.tar.gz \
10 file://0001-Makefile.PL-make-check_lib-cross-friendly.patch \ 10 file://0001-Makefile.PL-make-check_lib-cross-friendly.patch \
11 " 11 "
12 12
diff --git a/meta/recipes-devtools/perl/perl_5.38.2.bb b/meta/recipes-devtools/perl/perl_5.38.4.bb
index b6c9cda7ae..e59022e2bd 100644
--- a/meta/recipes-devtools/perl/perl_5.38.2.bb
+++ b/meta/recipes-devtools/perl/perl_5.38.4.bb
@@ -26,7 +26,7 @@ SRC_URI:append:class-target = " \
26 file://encodefix.patch \ 26 file://encodefix.patch \
27" 27"
28 28
29SRC_URI[perl.sha256sum] = "a0a31534451eb7b83c7d6594a497543a54d488bc90ca00f5e34762577f40655e" 29SRC_URI[perl.sha256sum] = "fb888accf8b50b5180e91166e5153608be294c57c19878e95f7659c1f1f12758"
30 30
31B = "${WORKDIR}/perl-${PV}-build" 31B = "${WORKDIR}/perl-${PV}-build"
32 32
diff --git a/meta/recipes-devtools/pkgconf/pkgconf/pkg-config-native.in b/meta/recipes-devtools/pkgconf/pkgconf/pkg-config-native.in
index 9ed30a0d80..fd5ab6b1fa 100644
--- a/meta/recipes-devtools/pkgconf/pkgconf/pkg-config-native.in
+++ b/meta/recipes-devtools/pkgconf/pkgconf/pkg-config-native.in
@@ -1,6 +1,6 @@
1#! /bin/sh 1#! /bin/sh
2 2
3PKG_CONFIG_PATH="@PATH_NATIVE@" 3PKG_CONFIG_PATH="$EXTRA_NATIVE_PKGCONFIG_PATH@PATH_NATIVE@"
4unset PKG_CONFIG_SYSROOT_DIR 4unset PKG_CONFIG_SYSROOT_DIR
5 5
6pkg-config "$@" 6pkg-config "$@"
diff --git a/meta/recipes-devtools/pkgconfig/pkgconfig/pkg-config-native.in b/meta/recipes-devtools/pkgconfig/pkgconfig/pkg-config-native.in
index a9324de4cf..d4bb4f8c06 100644
--- a/meta/recipes-devtools/pkgconfig/pkgconfig/pkg-config-native.in
+++ b/meta/recipes-devtools/pkgconfig/pkgconfig/pkg-config-native.in
@@ -1,6 +1,6 @@
1#! /bin/sh 1#! /bin/sh
2 2
3export PKG_CONFIG_PATH="@PATH_NATIVE@" 3export PKG_CONFIG_PATH="$EXTRA_NATIVE_PKGCONFIG_PATH@PATH_NATIVE@"
4export PKG_CONFIG_LIBDIR="@LIBDIR_NATIVE@" 4export PKG_CONFIG_LIBDIR="@LIBDIR_NATIVE@"
5unset PKG_CONFIG_SYSROOT_DIR 5unset PKG_CONFIG_SYSROOT_DIR
6 6
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb
index 7d8f71f65d..87c62e0678 100644
--- a/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -14,7 +14,7 @@ SRC_URI:append:class-nativesdk = " \
14 file://older-glibc-symbols.patch" 14 file://older-glibc-symbols.patch"
15SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa" 15SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
16 16
17SRCREV = "374089f2ed83da4d0d4e58df067142ff99c7eb12" 17SRCREV = "28dcefb809ce95db997811b5662f0b893b9923e0"
18S = "${WORKDIR}/git" 18S = "${WORKDIR}/git"
19PV = "1.9.0+git" 19PV = "1.9.0+git"
20 20
diff --git a/meta/recipes-devtools/python/python3-jinja2_3.1.4.bb b/meta/recipes-devtools/python/python3-jinja2_3.1.6.bb
index 2c02037011..de2b251049 100644
--- a/meta/recipes-devtools/python/python3-jinja2_3.1.4.bb
+++ b/meta/recipes-devtools/python/python3-jinja2_3.1.6.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "https://pypi.org/project/Jinja2/"
4LICENSE = "BSD-3-Clause" 4LICENSE = "BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5dc88300786f1c214c1e9827a5229462" 5LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5dc88300786f1c214c1e9827a5229462"
6 6
7SRC_URI[sha256sum] = "4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369" 7SRC_URI[sha256sum] = "0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"
8 8
9PYPI_PACKAGE = "jinja2" 9PYPI_PACKAGE = "jinja2"
10 10
@@ -21,6 +21,9 @@ SRC_URI += " \
21do_install_ptest() { 21do_install_ptest() {
22 install -d ${D}${PTEST_PATH}/tests 22 install -d ${D}${PTEST_PATH}/tests
23 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ 23 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
24
25 # test_async items require trio module
26 rm -f ${D}${PTEST_PATH}/tests/test_async.py ${D}${PTEST_PATH}/tests/test_async_filters.py
24} 27}
25 28
26RDEPENDS:${PN}-ptest += " \ 29RDEPENDS:${PN}-ptest += " \
diff --git a/meta/recipes-devtools/python/python3-lxml_5.0.0.bb b/meta/recipes-devtools/python/python3-lxml_5.0.2.bb
index 66cb8b0938..c0b385c7ea 100644
--- a/meta/recipes-devtools/python/python3-lxml_5.0.0.bb
+++ b/meta/recipes-devtools/python/python3-lxml_5.0.2.bb
@@ -18,11 +18,10 @@ LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=e4c045ebad958ead4b48008f70838403 \
18 18
19DEPENDS += "libxml2 libxslt" 19DEPENDS += "libxml2 libxslt"
20 20
21SRC_URI[sha256sum] = "2219cbf790e701acf9a21a31ead75f983e73daf0eceb9da6990212e4d20ebefe" 21SRC_URI[sha256sum] = "6399703c40ba53e2c3b72fdb56cb908d2b83c08082ecf17de839b27e68d1e598"
22 22
23SRC_URI += "${PYPI_SRC_URI}" 23SRC_URI += "${PYPI_SRC_URI}"
24inherit pkgconfig pypi setuptools3 24inherit pkgconfig pypi setuptools3
25PYPI_PACKAGE_EXT = "zip"
26 25
27# {standard input}: Assembler messages: 26# {standard input}: Assembler messages:
28# {standard input}:1488805: Error: branch out of range 27# {standard input}:1488805: Error: branch out of range
diff --git a/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb b/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb
index 540fdffaed..d1a8b939c0 100644
--- a/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb
+++ b/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb
@@ -36,7 +36,6 @@ RDEPENDS:${PN}:append:class-target = "\
36 36
37RDEPENDS:${PN} += "\ 37RDEPENDS:${PN} += "\
38 python3-pip \ 38 python3-pip \
39 python3-six \
40" 39"
41 40
42BBCLASSEXTEND = "native nativesdk" 41BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-requests/environment.d-python3-requests.sh b/meta/recipes-devtools/python/python3-requests/environment.d-python3-requests.sh
new file mode 100644
index 0000000000..492177a9c3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-requests/environment.d-python3-requests.sh
@@ -0,0 +1,11 @@
1# Respect host env REQUESTS_CA_BUNDLE first, then auto-detected host cert, then cert in buildtools
2# CAFILE/CAPATH is auto-deteced when source buildtools
3if [ -z "$REQUESTS_CA_BUNDLE" ]; then
4 if [ -n "$CAFILE" ];then
5 export REQUESTS_CA_BUNDLE="$CAFILE"
6 elif [ -e "${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt" ];then
7 export REQUESTS_CA_BUNDLE="${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt"
8 fi
9fi
10
11export BB_ENV_PASSTHROUGH_ADDITIONS="${BB_ENV_PASSTHROUGH_ADDITIONS:-} REQUESTS_CA_BUNDLE"
diff --git a/meta/recipes-devtools/python/python3-requests_2.31.0.bb b/meta/recipes-devtools/python/python3-requests_2.31.0.bb
deleted file mode 100644
index 287b4f8eee..0000000000
--- a/meta/recipes-devtools/python/python3-requests_2.31.0.bb
+++ /dev/null
@@ -1,24 +0,0 @@
1SUMMARY = "Python HTTP for Humans."
2HOMEPAGE = "https://requests.readthedocs.io"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
5
6SRC_URI[sha256sum] = "942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"
7
8inherit pypi setuptools3
9
10RDEPENDS:${PN} += " \
11 python3-certifi \
12 python3-email \
13 python3-json \
14 python3-netserver \
15 python3-pysocks \
16 python3-urllib3 \
17 python3-chardet \
18 python3-idna \
19 python3-compression \
20"
21
22CVE_PRODUCT = "requests"
23
24BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-requests_2.32.4.bb b/meta/recipes-devtools/python/python3-requests_2.32.4.bb
new file mode 100644
index 0000000000..b86ecfba52
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-requests_2.32.4.bb
@@ -0,0 +1,35 @@
1SUMMARY = "Python HTTP for Humans."
2HOMEPAGE = "https://requests.readthedocs.io"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
5
6SRC_URI:append:class-nativesdk = " \
7 file://environment.d-python3-requests.sh \
8"
9
10SRC_URI[sha256sum] = "27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"
11
12inherit pypi python_setuptools_build_meta
13
14do_install:append:class-nativesdk() {
15 mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
16 install -m 644 ${WORKDIR}/environment.d-python3-requests.sh ${D}${SDKPATHNATIVE}/environment-setup.d/python3-requests.sh
17}
18
19RDEPENDS:${PN} += " \
20 python3-certifi \
21 python3-email \
22 python3-json \
23 python3-netserver \
24 python3-pysocks \
25 python3-urllib3 \
26 python3-chardet \
27 python3-idna \
28 python3-compression \
29"
30
31FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/python3-requests.sh"
32
33CVE_PRODUCT = "requests"
34
35BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-setuptools-scm/0001-respect-GIT_CEILING_DIRECTORIES.patch b/meta/recipes-devtools/python/python3-setuptools-scm/0001-respect-GIT_CEILING_DIRECTORIES.patch
new file mode 100644
index 0000000000..7d2808cc0c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools-scm/0001-respect-GIT_CEILING_DIRECTORIES.patch
@@ -0,0 +1,36 @@
1From a1cc419a118560d63e1ab8838c256a3622185750 Mon Sep 17 00:00:00 2001
2From: Etienne Cordonnier <ecordonnier@snap.com>
3Date: Thu, 13 Feb 2025 15:44:40 +0100
4Subject: [PATCH] respect GIT_CEILING_DIRECTORIES
5
6Fix for https://github.com/pypa/setuptools-scm/issues/1103
7
8When searching for the root-directory of the git repository e.g. with git rev-parse --show-toplevel,
9git stops the search when reaching $GIT_CEILING_DIRECTORIES. By ignoring this variable, the function
10_git_toplevel can go above the real git repository (e.g. when packaging a tarball without .git repository),
11and then runs "git archive" on an unrelated git repository.
12
13Upstream-Status: Pending
14
15Signed-off-by: Ross Burton <ross.burton@arm.com>
16Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
17---
18 src/setuptools_scm/_run_cmd.py | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/src/setuptools_scm/_run_cmd.py b/src/setuptools_scm/_run_cmd.py
22index f2a8285..7e13d9f 100644
23--- a/src/setuptools_scm/_run_cmd.py
24+++ b/src/setuptools_scm/_run_cmd.py
25@@ -98,7 +98,7 @@ def no_git_env(env: Mapping[str, str]) -> dict[str, str]:
26 k: v
27 for k, v in env.items()
28 if not k.startswith("GIT_")
29- or k in ("GIT_EXEC_PATH", "GIT_SSH", "GIT_SSH_COMMAND")
30+ or k in ("GIT_CEILING_DIRECTORIES", "GIT_EXEC_PATH", "GIT_SSH", "GIT_SSH_COMMAND")
31 }
32
33
34--
352.43.0
36
diff --git a/meta/recipes-devtools/python/python3-setuptools-scm_8.0.4.bb b/meta/recipes-devtools/python/python3-setuptools-scm_8.0.4.bb
index 64b5050c3b..d5f8358a61 100644
--- a/meta/recipes-devtools/python/python3-setuptools-scm_8.0.4.bb
+++ b/meta/recipes-devtools/python/python3-setuptools-scm_8.0.4.bb
@@ -6,6 +6,7 @@ argument or in a SCM managed file."
6LICENSE = "MIT" 6LICENSE = "MIT"
7LIC_FILES_CHKSUM = "file://LICENSE;md5=838c366f69b72c5df05c96dff79b35f2" 7LIC_FILES_CHKSUM = "file://LICENSE;md5=838c366f69b72c5df05c96dff79b35f2"
8 8
9SRC_URI += "file://0001-respect-GIT_CEILING_DIRECTORIES.patch"
9SRC_URI[sha256sum] = "b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7" 10SRC_URI[sha256sum] = "b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7"
10 11
11inherit pypi python_setuptools_build_meta 12inherit pypi python_setuptools_build_meta
diff --git a/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273-pre1.patch b/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273-pre1.patch
new file mode 100644
index 0000000000..72bcaea435
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273-pre1.patch
@@ -0,0 +1,54 @@
1From d8390feaa99091d1ba9626bec0e4ba7072fc507a Mon Sep 17 00:00:00 2001
2From: "Jason R. Coombs" <jaraco@jaraco.com>
3Date: Sat, 19 Apr 2025 12:49:55 -0400
4Subject: [PATCH] Extract _resolve_download_filename with test.
5
6Upstream-Status: Backport [https://github.com/pypa/setuptools/commit/d8390feaa99091d1ba9626bec0e4ba7072fc507a]
7CVE: CVE-2025-47273 #Dependency Patch
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9---
10 setuptools/package_index.py | 20 ++++++++++++++++----
11 1 file changed, 16 insertions(+), 4 deletions(-)
12
13diff --git a/setuptools/package_index.py b/setuptools/package_index.py
14index 00a972d..d460fcb 100644
15--- a/setuptools/package_index.py
16+++ b/setuptools/package_index.py
17@@ -815,9 +815,16 @@ class PackageIndex(Environment):
18 else:
19 raise DistutilsError("Download error for %s: %s" % (url, v)) from v
20
21- def _download_url(self, url, tmpdir):
22- # Determine download filename
23- #
24+ @staticmethod
25+ def _resolve_download_filename(url, tmpdir):
26+ """
27+ >>> du = PackageIndex._resolve_download_filename
28+ >>> root = getfixture('tmp_path')
29+ >>> url = 'https://files.pythonhosted.org/packages/a9/5a/0db.../setuptools-78.1.0.tar.gz'
30+ >>> import pathlib
31+ >>> str(pathlib.Path(du(url, root)).relative_to(root))
32+ 'setuptools-78.1.0.tar.gz'
33+ """
34 name, fragment = egg_info_for_url(url)
35 if name:
36 while '..' in name:
37@@ -828,8 +835,13 @@ class PackageIndex(Environment):
38 if name.endswith('.egg.zip'):
39 name = name[:-4] # strip the extra .zip before download
40
41- filename = os.path.join(tmpdir, name)
42+ return os.path.join(tmpdir, name)
43
44+ def _download_url(self, url, tmpdir):
45+ """
46+ Determine the download filename.
47+ """
48+ filename = self._resolve_download_filename(url, tmpdir)
49 return self._download_vcs(url, filename) or self._download_other(url, filename)
50
51 @staticmethod
52--
532.25.1
54
diff --git a/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273.patch b/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273.patch
new file mode 100644
index 0000000000..be6617e0f6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools/CVE-2025-47273.patch
@@ -0,0 +1,59 @@
1From 250a6d17978f9f6ac3ac887091f2d32886fbbb0b Mon Sep 17 00:00:00 2001
2From: "Jason R. Coombs" <jaraco@jaraco.com>
3Date: Sat, 19 Apr 2025 13:03:47 -0400
4Subject: [PATCH] Add a check to ensure the name resolves relative to the
5 tmpdir.
6
7Closes #4946
8
9Upstream-Status: Backport [https://github.com/pypa/setuptools/commit/250a6d17978f9f6ac3ac887091f2d32886fbbb0b]
10CVE: CVE-2025-47273
11Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
12---
13 setuptools/package_index.py | 18 ++++++++++++++++--
14 1 file changed, 16 insertions(+), 2 deletions(-)
15
16diff --git a/setuptools/package_index.py b/setuptools/package_index.py
17index d460fcb..6c7874d 100644
18--- a/setuptools/package_index.py
19+++ b/setuptools/package_index.py
20@@ -818,12 +818,20 @@ class PackageIndex(Environment):
21 @staticmethod
22 def _resolve_download_filename(url, tmpdir):
23 """
24+ >>> import pathlib
25 >>> du = PackageIndex._resolve_download_filename
26 >>> root = getfixture('tmp_path')
27 >>> url = 'https://files.pythonhosted.org/packages/a9/5a/0db.../setuptools-78.1.0.tar.gz'
28- >>> import pathlib
29 >>> str(pathlib.Path(du(url, root)).relative_to(root))
30 'setuptools-78.1.0.tar.gz'
31+
32+ Ensures the target is always in tmpdir.
33+
34+ >>> url = 'https://anyhost/%2fhome%2fuser%2f.ssh%2fauthorized_keys'
35+ >>> du(url, root)
36+ Traceback (most recent call last):
37+ ...
38+ ValueError: Invalid filename...
39 """
40 name, fragment = egg_info_for_url(url)
41 if name:
42@@ -835,7 +843,13 @@ class PackageIndex(Environment):
43 if name.endswith('.egg.zip'):
44 name = name[:-4] # strip the extra .zip before download
45
46- return os.path.join(tmpdir, name)
47+ filename = os.path.join(tmpdir, name)
48+
49+ # ensure path resolves within the tmpdir
50+ if not filename.startswith(str(tmpdir)):
51+ raise ValueError(f"Invalid filename {filename}")
52+
53+ return filename
54
55 def _download_url(self, url, tmpdir):
56 """
57--
582.25.1
59
diff --git a/meta/recipes-devtools/python/python3-setuptools_69.1.1.bb b/meta/recipes-devtools/python/python3-setuptools_69.1.1.bb
index 7b9b02059f..46b2f0ab00 100644
--- a/meta/recipes-devtools/python/python3-setuptools_69.1.1.bb
+++ b/meta/recipes-devtools/python/python3-setuptools_69.1.1.bb
@@ -6,11 +6,15 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=141643e11c48898150daa83802dbc65f"
6 6
7inherit pypi python_setuptools_build_meta 7inherit pypi python_setuptools_build_meta
8 8
9CVE_PRODUCT = "python3-setuptools python:setuptools"
10
9SRC_URI:append:class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch" 11SRC_URI:append:class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
10 12
11SRC_URI += " \ 13SRC_URI += " \
12 file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch \ 14 file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch \
13 file://CVE-2024-6345.patch \ 15 file://CVE-2024-6345.patch \
16 file://CVE-2025-47273-pre1.patch \
17 file://CVE-2025-47273.patch \
14" 18"
15 19
16SRC_URI[sha256sum] = "5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8" 20SRC_URI[sha256sum] = "5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"
diff --git a/meta/recipes-devtools/python/python3-urllib3_2.2.1.bb b/meta/recipes-devtools/python/python3-urllib3_2.2.2.bb
index fc1828b4ee..31a03a60b3 100644
--- a/meta/recipes-devtools/python/python3-urllib3_2.2.1.bb
+++ b/meta/recipes-devtools/python/python3-urllib3_2.2.2.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "https://github.com/shazow/urllib3"
3LICENSE = "MIT" 3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=52d273a3054ced561275d4d15260ecda" 4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=52d273a3054ced561275d4d15260ecda"
5 5
6SRC_URI[sha256sum] = "d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19" 6SRC_URI[sha256sum] = "dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"
7 7
8inherit pypi python_hatchling 8inherit pypi python_hatchling
9 9
diff --git a/meta/recipes-devtools/python/python3-zipp/CVE-2024-5569.patch b/meta/recipes-devtools/python/python3-zipp/CVE-2024-5569.patch
new file mode 100644
index 0000000000..1cc43243bf
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-zipp/CVE-2024-5569.patch
@@ -0,0 +1,138 @@
1From b1804347ec2db16452a7bff2b469d2c66776b904 Mon Sep 17 00:00:00 2001
2From: "Jason R. Coombs" <jaraco@jaraco.com>
3Date: Fri, 31 May 2024 11:20:57 -0400
4Subject: [PATCH] fix CVE-2024-5569
5
6The patch includes the following changes:
7c18417e Add news fragment.
858115d2 Employ SanitizedNames in CompleteDirs. Fixes broken test.
9564fcc1 Add SanitizedNames mixin.
1079a309f Add some assertions about malformed paths.
11
12Upstream-Status: Backport
13[https://github.com/jaraco/zipp/pull/120/commits/79a309fe54dc6b7934fb72e9f31bcb58f2e9f547]
14[https://github.com/jaraco/zipp/pull/120/commits/564fcc10cdbfdaecdb33688e149827465931c9e0]
15[https://github.com/jaraco/zipp/pull/120/commits/58115d2be968644ce71ce6bcc9b79826c82a1806]
16[https://github.com/jaraco/zipp/pull/120/commits/c18417ed2953e181728a7dac07bff88a2190abf7]
17
18CVE: CVE-2024-5569
19
20Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
21---
22 newsfragments/119.bugfix.rst | 1 +
23 tests/test_path.py | 17 ++++++++++
24 zipp/__init__.py | 64 +++++++++++++++++++++++++++++++++++-
25 3 files changed, 81 insertions(+), 1 deletion(-)
26 create mode 100644 newsfragments/119.bugfix.rst
27
28diff --git a/newsfragments/119.bugfix.rst b/newsfragments/119.bugfix.rst
29new file mode 100644
30index 0000000..6c72e2d
31--- /dev/null
32+++ b/newsfragments/119.bugfix.rst
33@@ -0,0 +1 @@
34+Improved handling of malformed zip files.
35\ No newline at end of file
36diff --git a/tests/test_path.py b/tests/test_path.py
37index a77a5de..3752243 100644
38--- a/tests/test_path.py
39+++ b/tests/test_path.py
40@@ -575,3 +575,20 @@ class TestPath(unittest.TestCase):
41 zipp.Path(alpharep)
42 with self.assertRaises(KeyError):
43 alpharep.getinfo('does-not-exist')
44+
45+ def test_malformed_paths(self):
46+ """
47+ Path should handle malformed paths.
48+ """
49+ data = io.BytesIO()
50+ zf = zipfile.ZipFile(data, "w")
51+ zf.writestr("/one-slash.txt", b"content")
52+ zf.writestr("//two-slash.txt", b"content")
53+ zf.writestr("../parent.txt", b"content")
54+ zf.filename = ''
55+ root = zipfile.Path(zf)
56+ assert list(map(str, root.iterdir())) == [
57+ 'one-slash.txt',
58+ 'two-slash.txt',
59+ 'parent.txt',
60+ ]
61diff --git a/zipp/__init__.py b/zipp/__init__.py
62index becd010..e980e9b 100644
63--- a/zipp/__init__.py
64+++ b/zipp/__init__.py
65@@ -84,7 +84,69 @@ class InitializedState:
66 super().__init__(*args, **kwargs)
67
68
69-class CompleteDirs(InitializedState, zipfile.ZipFile):
70+class SanitizedNames:
71+ """
72+ ZipFile mix-in to ensure names are sanitized.
73+ """
74+
75+ def namelist(self):
76+ return list(map(self._sanitize, super().namelist()))
77+
78+ @staticmethod
79+ def _sanitize(name):
80+ r"""
81+ Ensure a relative path with posix separators and no dot names.
82+
83+ Modeled after
84+ https://github.com/python/cpython/blob/bcc1be39cb1d04ad9fc0bd1b9193d3972835a57c/Lib/zipfile/__init__.py#L1799-L1813
85+ but provides consistent cross-platform behavior.
86+
87+ >>> san = SanitizedNames._sanitize
88+ >>> san('/foo/bar')
89+ 'foo/bar'
90+ >>> san('//foo.txt')
91+ 'foo.txt'
92+ >>> san('foo/.././bar.txt')
93+ 'foo/bar.txt'
94+ >>> san('foo../.bar.txt')
95+ 'foo../.bar.txt'
96+ >>> san('\\foo\\bar.txt')
97+ 'foo/bar.txt'
98+ >>> san('D:\\foo.txt')
99+ 'D/foo.txt'
100+ >>> san('\\\\server\\share\\file.txt')
101+ 'server/share/file.txt'
102+ >>> san('\\\\?\\GLOBALROOT\\Volume3')
103+ '?/GLOBALROOT/Volume3'
104+ >>> san('\\\\.\\PhysicalDrive1\\root')
105+ 'PhysicalDrive1/root'
106+
107+ Retain any trailing slash.
108+ >>> san('abc/')
109+ 'abc/'
110+
111+ Raises a ValueError if the result is empty.
112+ >>> san('../..')
113+ Traceback (most recent call last):
114+ ...
115+ ValueError: Empty filename
116+ """
117+
118+ def allowed(part):
119+ return part and part not in {'..', '.'}
120+
121+ # Remove the drive letter.
122+ # Don't use ntpath.splitdrive, because that also strips UNC paths
123+ bare = re.sub('^([A-Z]):', r'\1', name, flags=re.IGNORECASE)
124+ clean = bare.replace('\\', '/')
125+ parts = clean.split('/')
126+ joined = '/'.join(filter(allowed, parts))
127+ if not joined:
128+ raise ValueError("Empty filename")
129+ return joined + '/' * name.endswith('/')
130+
131+
132+class CompleteDirs(InitializedState, SanitizedNames, zipfile.ZipFile):
133 """
134 A ZipFile subclass that ensures that implied directories
135 are always included in the namelist.
136--
1372.25.1
138
diff --git a/meta/recipes-devtools/python/python3-zipp_3.17.0.bb b/meta/recipes-devtools/python/python3-zipp_3.17.0.bb
index e9e220e315..9f756887b5 100644
--- a/meta/recipes-devtools/python/python3-zipp_3.17.0.bb
+++ b/meta/recipes-devtools/python/python3-zipp_3.17.0.bb
@@ -3,6 +3,7 @@ HOMEPAGE = "https://github.com/jaraco/zipp"
3LICENSE = "MIT" 3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=141643e11c48898150daa83802dbc65f" 4LIC_FILES_CHKSUM = "file://LICENSE;md5=141643e11c48898150daa83802dbc65f"
5 5
6SRC_URI += "file://CVE-2024-5569.patch"
6SRC_URI[sha256sum] = "84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" 7SRC_URI[sha256sum] = "84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"
7 8
8DEPENDS += "python3-setuptools-scm-native" 9DEPENDS += "python3-setuptools-scm-native"
diff --git a/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch b/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
index 0d807db39f..a8f98d873e 100644
--- a/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
+++ b/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
@@ -1,4 +1,4 @@
1From 365399f17d35719d828ddd49182dcb401fb7791c Mon Sep 17 00:00:00 2001 1From e8bd4f8ee56cbb12a61c1dcabf35a1835a863132 Mon Sep 17 00:00:00 2001
2From: Paulo Neves <ptsneves@gmail.com> 2From: Paulo Neves <ptsneves@gmail.com>
3Date: Tue, 7 Jun 2022 16:16:41 +0200 3Date: Tue, 7 Jun 2022 16:16:41 +0200
4Subject: [PATCH] Avoid shebang overflow on python-config.py 4Subject: [PATCH] Avoid shebang overflow on python-config.py
@@ -16,10 +16,10 @@ Upstream-Status: Denied [distribution]
16 1 file changed, 2 insertions(+) 16 1 file changed, 2 insertions(+)
17 17
18diff --git a/Makefile.pre.in b/Makefile.pre.in 18diff --git a/Makefile.pre.in b/Makefile.pre.in
19index 77bf09a..6353c57 100644 19index 2d235d2..1ac2263 100644
20--- a/Makefile.pre.in 20--- a/Makefile.pre.in
21+++ b/Makefile.pre.in 21+++ b/Makefile.pre.in
22@@ -2339,6 +2339,8 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh 22@@ -2356,6 +2356,8 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
23 @ # Substitution happens here, as the completely-expanded BINDIR 23 @ # Substitution happens here, as the completely-expanded BINDIR
24 @ # is not available in configure 24 @ # is not available in configure
25 sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py 25 sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
index 026150f0e2..5ca09c6f3c 100644
--- a/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
+++ b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
@@ -1,4 +1,4 @@
1From f8a664cf1fc73e381d57d6927207286059744837 Mon Sep 17 00:00:00 2001 1From bbfb7fdf01f0502c7bf3d418f3a912ea76c93f24 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de> 2From: Alexander Kanavin <alex@linutronix.de>
3Date: Thu, 16 Sep 2021 16:35:37 +0200 3Date: Thu, 16 Sep 2021 16:35:37 +0200
4Subject: [PATCH] Lib/pty.py: handle stdin I/O errors same way as master I/O 4Subject: [PATCH] Lib/pty.py: handle stdin I/O errors same way as master I/O
@@ -24,7 +24,6 @@ So let's treat both channels the same.
24 24
25Upstream-Status: Submitted [https://github.com/python/cpython/pull/28388] 25Upstream-Status: Submitted [https://github.com/python/cpython/pull/28388]
26Signed-off-by: Alexander Kanavin <alex@linutronix.de> 26Signed-off-by: Alexander Kanavin <alex@linutronix.de>
27
28--- 27---
29 Lib/pty.py | 5 ++++- 28 Lib/pty.py | 5 ++++-
30 1 file changed, 4 insertions(+), 1 deletion(-) 29 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
index 680254fab9..c42a56bcb3 100644
--- a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
+++ b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
@@ -1,4 +1,4 @@
1From 71c194077bb907bfe423d3f3275f33a6c8ca0e74 Mon Sep 17 00:00:00 2001 1From c739bf214b9dd6060db216b79077806fccb582ae Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de> 2From: Alexander Kanavin <alex@linutronix.de>
3Date: Fri, 17 Nov 2023 14:26:32 +0100 3Date: Fri, 17 Nov 2023 14:26:32 +0100
4Subject: [PATCH] Lib/sysconfig.py: use prefix value from build configuration 4Subject: [PATCH] Lib/sysconfig.py: use prefix value from build configuration
@@ -9,16 +9,15 @@ native python.
9 9
10Upstream-Status: Inappropriate [oe-core cross builds] 10Upstream-Status: Inappropriate [oe-core cross builds]
11Signed-off-by: Alexander Kanavin <alex@linutronix.de> 11Signed-off-by: Alexander Kanavin <alex@linutronix.de>
12
13--- 12---
14 Lib/sysconfig.py | 5 +++++ 13 Lib/sysconfig.py | 5 +++++
15 1 file changed, 5 insertions(+) 14 1 file changed, 5 insertions(+)
16 15
17diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py 16diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
18index 79c0510..91ebcb6 100644 17index 6258b68..d59ec6e 100644
19--- a/Lib/sysconfig.py 18--- a/Lib/sysconfig.py
20+++ b/Lib/sysconfig.py 19+++ b/Lib/sysconfig.py
21@@ -668,6 +668,11 @@ def _init_config_vars(): 20@@ -675,6 +675,11 @@ def _init_config_vars():
22 _CONFIG_VARS['VPATH'] = sys._vpath 21 _CONFIG_VARS['VPATH'] = sys._vpath
23 if os.name == 'posix': 22 if os.name == 'posix':
24 _init_posix(_CONFIG_VARS) 23 _init_posix(_CONFIG_VARS)
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
index ee33128fa1..b78f619958 100644
--- a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
+++ b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
@@ -1,4 +1,4 @@
1From 38278339832a57dbf5fa3ef21accaa03e2c814d7 Mon Sep 17 00:00:00 2001 1From b9081b2e21983f2a828bc40a47ab278ef69f4dfe Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Wed, 30 Jan 2019 12:41:04 +0100 3Date: Wed, 30 Jan 2019 12:41:04 +0100
4Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data 4Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data
@@ -10,10 +10,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10 1 file changed, 1 insertion(+), 2 deletions(-) 10 1 file changed, 1 insertion(+), 2 deletions(-)
11 11
12diff --git a/Makefile.pre.in b/Makefile.pre.in 12diff --git a/Makefile.pre.in b/Makefile.pre.in
13index dd5e69f..381feb0 100644 13index 083f4c7..dce36a5 100644
14--- a/Makefile.pre.in 14--- a/Makefile.pre.in
15+++ b/Makefile.pre.in 15+++ b/Makefile.pre.in
16@@ -658,8 +658,7 @@ profile-run-stamp: 16@@ -660,8 +660,7 @@ profile-run-stamp:
17 # enabled. 17 # enabled.
18 $(MAKE) profile-gen-stamp 18 $(MAKE) profile-gen-stamp
19 # Next, run the profile task to generate the profile information. 19 # Next, run the profile task to generate the profile information.
diff --git a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
index 197daa71a5..051ec2c635 100644
--- a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
+++ b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
@@ -1,4 +1,4 @@
1From 3471e3478e0760c42e04f8046cee2367ab5706d2 Mon Sep 17 00:00:00 2001 1From b4014e3d1d9e38b25f2840e65e2acd757f3e5d41 Mon Sep 17 00:00:00 2001
2From: Yi Fan Yu <yifan.yu@windriver.com> 2From: Yi Fan Yu <yifan.yu@windriver.com>
3Date: Thu, 1 Apr 2021 13:08:37 -0700 3Date: Thu, 1 Apr 2021 13:08:37 -0700
4Subject: [PATCH] Skip failing tests due to load variability on YP AB 4Subject: [PATCH] Skip failing tests due to load variability on YP AB
@@ -23,10 +23,10 @@ Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
23 2 files changed, 5 insertions(+) 23 2 files changed, 5 insertions(+)
24 24
25diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py 25diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
26index e42c7ab..dff5227 100644 26index 3b4415b..1f94dec 100644
27--- a/Lib/test/_test_multiprocessing.py 27--- a/Lib/test/_test_multiprocessing.py
28+++ b/Lib/test/_test_multiprocessing.py 28+++ b/Lib/test/_test_multiprocessing.py
29@@ -682,6 +682,7 @@ class _TestProcess(BaseTestCase): 29@@ -692,6 +692,7 @@ class _TestProcess(BaseTestCase):
30 close_queue(q) 30 close_queue(q)
31 31
32 @support.requires_resource('walltime') 32 @support.requires_resource('walltime')
@@ -34,7 +34,7 @@ index e42c7ab..dff5227 100644
34 def test_many_processes(self): 34 def test_many_processes(self):
35 if self.TYPE == 'threads': 35 if self.TYPE == 'threads':
36 self.skipTest('test not appropriate for {}'.format(self.TYPE)) 36 self.skipTest('test not appropriate for {}'.format(self.TYPE))
37@@ -2066,6 +2067,7 @@ class _TestBarrier(BaseTestCase): 37@@ -2223,6 +2224,7 @@ class _TestBarrier(BaseTestCase):
38 except threading.BrokenBarrierError: 38 except threading.BrokenBarrierError:
39 results.append(True) 39 results.append(True)
40 40
@@ -42,7 +42,7 @@ index e42c7ab..dff5227 100644
42 def test_timeout(self): 42 def test_timeout(self):
43 """ 43 """
44 Test wait(timeout) 44 Test wait(timeout)
45@@ -5024,6 +5026,7 @@ class TestWait(unittest.TestCase): 45@@ -5220,6 +5222,7 @@ class TestWait(unittest.TestCase):
46 time.sleep(period) 46 time.sleep(period)
47 47
48 @support.requires_resource('walltime') 48 @support.requires_resource('walltime')
@@ -51,10 +51,10 @@ index e42c7ab..dff5227 100644
51 from multiprocessing.connection import wait 51 from multiprocessing.connection import wait
52 52
53diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py 53diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
54index 02cc3f4..51a4548 100644 54index 9463add..4e0f39d 100644
55--- a/Lib/test/test_time.py 55--- a/Lib/test/test_time.py
56+++ b/Lib/test/test_time.py 56+++ b/Lib/test/test_time.py
57@@ -492,6 +492,7 @@ class TimeTestCase(unittest.TestCase): 57@@ -536,6 +536,7 @@ class TimeTestCase(unittest.TestCase):
58 @unittest.skipIf( 58 @unittest.skipIf(
59 support.is_wasi, "process_time not available on WASI" 59 support.is_wasi, "process_time not available on WASI"
60 ) 60 )
@@ -62,7 +62,7 @@ index 02cc3f4..51a4548 100644
62 def test_process_time(self): 62 def test_process_time(self):
63 # process_time() should not include time spend during a sleep 63 # process_time() should not include time spend during a sleep
64 start = time.process_time() 64 start = time.process_time()
65@@ -505,6 +506,7 @@ class TimeTestCase(unittest.TestCase): 65@@ -549,6 +550,7 @@ class TimeTestCase(unittest.TestCase):
66 self.assertTrue(info.monotonic) 66 self.assertTrue(info.monotonic)
67 self.assertFalse(info.adjustable) 67 self.assertFalse(info.adjustable)
68 68
diff --git a/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch b/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
index b6c6ac5a28..08142617c0 100644
--- a/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
+++ b/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
@@ -1,4 +1,4 @@
1From 37d058e841ba3bd89b5746cc5381afb014b11581 Mon Sep 17 00:00:00 2001 1From 5224cc0ac21f4c2574c24e0fee38b145ca15175b Mon Sep 17 00:00:00 2001
2From: Wentao Zhang <wentao.zhang@windriver.com> 2From: Wentao Zhang <wentao.zhang@windriver.com>
3Date: Mon, 20 Mar 2023 13:39:52 +0800 3Date: Mon, 20 Mar 2023 13:39:52 +0800
4Subject: [PATCH] Update test_sysconfig for posix_user purelib 4Subject: [PATCH] Update test_sysconfig for posix_user purelib
@@ -17,16 +17,15 @@ Update test_sysconfig.test_user_similar() for the posix_user scheme:
17 17
18Upstream-Status: Inappropriate [oe-core specific] 18Upstream-Status: Inappropriate [oe-core specific]
19Signed-off-by: Wentao Zhang <wentao.zhang@windriver.com> 19Signed-off-by: Wentao Zhang <wentao.zhang@windriver.com>
20
21--- 20---
22 Lib/test/test_sysconfig.py | 2 +- 21 Lib/test/test_sysconfig.py | 2 +-
23 1 file changed, 1 insertion(+), 1 deletion(-) 22 1 file changed, 1 insertion(+), 1 deletion(-)
24 23
25diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py 24diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py
26index b6dbf3d..5672590 100644 25index 3468d0c..9ff174c 100644
27--- a/Lib/test/test_sysconfig.py 26--- a/Lib/test/test_sysconfig.py
28+++ b/Lib/test/test_sysconfig.py 27+++ b/Lib/test/test_sysconfig.py
29@@ -372,7 +372,7 @@ class TestSysConfig(unittest.TestCase): 28@@ -390,7 +390,7 @@ class TestSysConfig(unittest.TestCase):
30 expected = os.path.normpath(global_path.replace(base, user, 1)) 29 expected = os.path.normpath(global_path.replace(base, user, 1))
31 # bpo-44860: platlib of posix_user doesn't use sys.platlibdir, 30 # bpo-44860: platlib of posix_user doesn't use sys.platlibdir,
32 # whereas posix_prefix does. 31 # whereas posix_prefix does.
diff --git a/meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch b/meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch
index 88b84c6024..1cffdd6e05 100644
--- a/meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch
+++ b/meta/recipes-devtools/python/python3/0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch
@@ -1,4 +1,4 @@
1From 999d4e74d34afa233ad8ad0c70b989d77a21957f Mon Sep 17 00:00:00 2001 1From 6e3868c8c330f997bc242a8d51d742baac449ecc Mon Sep 17 00:00:00 2001
2From: Petr Viktorin <encukou@gmail.com> 2From: Petr Viktorin <encukou@gmail.com>
3Date: Wed, 23 Aug 2023 20:00:07 +0200 3Date: Wed, 23 Aug 2023 20:00:07 +0200
4Subject: [PATCH] gh-107811: tarfile: treat overflow in UID/GID as failure to 4Subject: [PATCH] gh-107811: tarfile: treat overflow in UID/GID as failure to
@@ -13,10 +13,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
13 create mode 100644 Misc/NEWS.d/next/Library/2023-08-23-17-34-39.gh-issue-107811.3Fng72.rst 13 create mode 100644 Misc/NEWS.d/next/Library/2023-08-23-17-34-39.gh-issue-107811.3Fng72.rst
14 14
15diff --git a/Lib/tarfile.py b/Lib/tarfile.py 15diff --git a/Lib/tarfile.py b/Lib/tarfile.py
16index 3bbbcaa..473167d 100755 16index 0a0f31e..4dfb67d 100755
17--- a/Lib/tarfile.py 17--- a/Lib/tarfile.py
18+++ b/Lib/tarfile.py 18+++ b/Lib/tarfile.py
19@@ -2557,7 +2557,8 @@ class TarFile(object): 19@@ -2685,7 +2685,8 @@ class TarFile(object):
20 os.lchown(targetpath, u, g) 20 os.lchown(targetpath, u, g)
21 else: 21 else:
22 os.chown(targetpath, u, g) 22 os.chown(targetpath, u, g)
@@ -35,6 +35,3 @@ index 0000000..ffca413
35+:mod:`tarfile`: extraction of members with overly large UID or GID (e.g. on 35+:mod:`tarfile`: extraction of members with overly large UID or GID (e.g. on
36+an OS with 32-bit :c:type:`!id_t`) now fails in the same way as failing to 36+an OS with 32-bit :c:type:`!id_t`) now fails in the same way as failing to
37+set the ID. 37+set the ID.
38--
392.45.0
40
diff --git a/meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch b/meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch
deleted file mode 100644
index 8406ef30a2..0000000000
--- a/meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch
+++ /dev/null
@@ -1,26 +0,0 @@
1From 439aa02f42d6e6715c172076261757fcb89a936a Mon Sep 17 00:00:00 2001
2From: "Miss Islington (bot)"
3 <31488909+miss-islington@users.noreply.github.com>
4Date: Tue, 23 Jan 2024 23:02:02 +0100
5Subject: [PATCH] gh-114492: Initialize struct termios before calling
6 tcgetattr() (GH-114495) (GH-114502)
7
8On Alpine Linux it could leave some field non-initialized.
9(cherry picked from commit d22c066b802592932f9eb18434782299e80ca42e)
10
11Upstream-Status: Backport [https://github.com/python/cpython/commit/386c72d9928c51aa2c855ce592bd8022da3b407f]
12Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15 .../next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst | 2 ++
16 1 file changed, 2 insertions(+)
17 create mode 100644 Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst
18
19diff --git a/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst b/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst
20new file mode 100644
21index 0000000..8df8299
22--- /dev/null
23+++ b/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst
24@@ -0,0 +1,2 @@
25+Make the result of :func:`termios.tcgetattr` reproducible on Alpine Linux.
26+Previously it could leave a random garbage in some fields.
diff --git a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
index bbeabe4389..5a1f9ffccf 100644
--- a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
+++ b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
@@ -1,4 +1,4 @@
1From ababc7b1db8c406910766e11cdd04cbef7a706c9 Mon Sep 17 00:00:00 2001 1From 82576cdb9d6d9736ba122592974b0e7727216a3f Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com> 2From: Changqing Li <changqing.li@windriver.com>
3Date: Mon, 22 Oct 2018 15:19:51 +0800 3Date: Mon, 22 Oct 2018 15:19:51 +0800
4Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler 4Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler
@@ -26,7 +26,7 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com>
26 1 file changed, 10 insertions(+), 9 deletions(-) 26 1 file changed, 10 insertions(+), 9 deletions(-)
27 27
28diff --git a/configure.ac b/configure.ac 28diff --git a/configure.ac b/configure.ac
29index 384718d..5a1d58b 100644 29index 9270b5f..955daad 100644
30--- a/configure.ac 30--- a/configure.ac
31+++ b/configure.ac 31+++ b/configure.ac
32@@ -137,6 +137,7 @@ AC_CONFIG_HEADERS([pyconfig.h]) 32@@ -137,6 +137,7 @@ AC_CONFIG_HEADERS([pyconfig.h])
@@ -46,7 +46,7 @@ index 384718d..5a1d58b 100644
46 gcc) AC_PATH_TOOL([CXX], [g++], [g++], [notfound]) ;; 46 gcc) AC_PATH_TOOL([CXX], [g++], [g++], [notfound]) ;;
47 cc) AC_PATH_TOOL([CXX], [c++], [c++], [notfound]) ;; 47 cc) AC_PATH_TOOL([CXX], [c++], [c++], [notfound]) ;;
48 clang|*/clang) AC_PATH_TOOL([CXX], [clang++], [clang++], [notfound]) ;; 48 clang|*/clang) AC_PATH_TOOL([CXX], [clang++], [clang++], [notfound]) ;;
49@@ -1328,7 +1329,7 @@ rmdir CaseSensitiveTestDir 49@@ -1331,7 +1332,7 @@ rmdir CaseSensitiveTestDir
50 50
51 case $ac_sys_system in 51 case $ac_sys_system in
52 hp*|HP*) 52 hp*|HP*)
@@ -55,7 +55,7 @@ index 384718d..5a1d58b 100644
55 cc|*/cc) CC="$CC -Ae";; 55 cc|*/cc) CC="$CC -Ae";;
56 esac;; 56 esac;;
57 esac 57 esac
58@@ -1854,7 +1855,7 @@ esac 58@@ -1857,7 +1858,7 @@ esac
59 ], 59 ],
60 [AC_MSG_RESULT([no])]) 60 [AC_MSG_RESULT([no])])
61 if test "$Py_LTO" = 'true' ; then 61 if test "$Py_LTO" = 'true' ; then
@@ -64,7 +64,7 @@ index 384718d..5a1d58b 100644
64 *clang*) 64 *clang*)
65 LDFLAGS_NOLTO="-fno-lto" 65 LDFLAGS_NOLTO="-fno-lto"
66 dnl Clang linker requires -flto in order to link objects with LTO information. 66 dnl Clang linker requires -flto in order to link objects with LTO information.
67@@ -1983,7 +1984,7 @@ then 67@@ -1986,7 +1987,7 @@ then
68 fi 68 fi
69 fi 69 fi
70 LLVM_PROF_ERR=no 70 LLVM_PROF_ERR=no
@@ -73,7 +73,7 @@ index 384718d..5a1d58b 100644
73 *clang*) 73 *clang*)
74 # Any changes made here should be reflected in the GCC+Darwin case below 74 # Any changes made here should be reflected in the GCC+Darwin case below
75 PGO_PROF_GEN_FLAG="-fprofile-instr-generate" 75 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
76@@ -2147,7 +2148,7 @@ AC_MSG_RESULT([$BOLT_APPLY_FLAGS]) 76@@ -2179,7 +2180,7 @@ AC_MSG_RESULT([$BOLT_APPLY_FLAGS])
77 # compiler and platform. BASECFLAGS tweaks need to be made even if the 77 # compiler and platform. BASECFLAGS tweaks need to be made even if the
78 # user set OPT. 78 # user set OPT.
79 79
@@ -82,7 +82,7 @@ index 384718d..5a1d58b 100644
82 *clang*) 82 *clang*)
83 cc_is_clang=1 83 cc_is_clang=1
84 ;; 84 ;;
85@@ -2419,7 +2420,7 @@ yes) 85@@ -2451,7 +2452,7 @@ yes)
86 86
87 # ICC doesn't recognize the option, but only emits a warning 87 # ICC doesn't recognize the option, but only emits a warning
88 ## XXX does it emit an unused result warning and can it be disabled? 88 ## XXX does it emit an unused result warning and can it be disabled?
@@ -91,7 +91,7 @@ index 384718d..5a1d58b 100644
91 [*icc*], [ac_cv_disable_unused_result_warning=no] 91 [*icc*], [ac_cv_disable_unused_result_warning=no]
92 [PY_CHECK_CC_WARNING([disable], [unused-result])]) 92 [PY_CHECK_CC_WARNING([disable], [unused-result])])
93 AS_VAR_IF([ac_cv_disable_unused_result_warning], [yes], 93 AS_VAR_IF([ac_cv_disable_unused_result_warning], [yes],
94@@ -2665,7 +2666,7 @@ yes) 94@@ -2697,7 +2698,7 @@ yes)
95 ;; 95 ;;
96 esac 96 esac
97 97
@@ -100,7 +100,7 @@ index 384718d..5a1d58b 100644
100 *mpicc*) 100 *mpicc*)
101 CFLAGS_NODIST="$CFLAGS_NODIST" 101 CFLAGS_NODIST="$CFLAGS_NODIST"
102 ;; 102 ;;
103@@ -3482,7 +3483,7 @@ then 103@@ -3532,7 +3533,7 @@ then
104 then 104 then
105 LINKFORSHARED="-Wl,--export-dynamic" 105 LINKFORSHARED="-Wl,--export-dynamic"
106 fi;; 106 fi;;
@@ -109,7 +109,7 @@ index 384718d..5a1d58b 100644
109 *gcc*) 109 *gcc*)
110 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null 110 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
111 then 111 then
112@@ -6803,7 +6804,7 @@ if test "$ac_cv_gcc_asm_for_x87" = yes; then 112@@ -6853,7 +6854,7 @@ if test "$ac_cv_gcc_asm_for_x87" = yes; then
113 # Some versions of gcc miscompile inline asm: 113 # Some versions of gcc miscompile inline asm:
114 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 114 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
115 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html 115 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
diff --git a/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
index 2d7bca6a77..4920cb9ad9 100644
--- a/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
+++ b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
@@ -1,4 +1,4 @@
1From 217cea231462e7703e8c9ea39c0a6833f799a420 Mon Sep 17 00:00:00 2001 1From 5944f707fc04fb65caec3f0e1ce3a42169426c47 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com> 2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Fri, 15 Sep 2023 08:48:33 -0400 3Date: Fri, 15 Sep 2023 08:48:33 -0400
4Subject: [PATCH] skip no_stdout_fileno test due to load variability 4Subject: [PATCH] skip no_stdout_fileno test due to load variability
@@ -16,10 +16,10 @@ Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
16 1 file changed, 1 insertion(+) 16 1 file changed, 1 insertion(+)
17 17
18diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py 18diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
19index 4d03c46..b329b7a 100644 19index c71c568..e41ab5e 100644
20--- a/Lib/test/test_builtin.py 20--- a/Lib/test/test_builtin.py
21+++ b/Lib/test/test_builtin.py 21+++ b/Lib/test/test_builtin.py
22@@ -2326,6 +2326,7 @@ class PtyTests(unittest.TestCase): 22@@ -2375,6 +2375,7 @@ class PtyTests(unittest.TestCase):
23 # Check stdin/stdout error handler is used when invoking PyOS_Readline() 23 # Check stdin/stdout error handler is used when invoking PyOS_Readline()
24 self.check_input_tty("prompté", b"quux\xe9", "ascii") 24 self.check_input_tty("prompté", b"quux\xe9", "ascii")
25 25
diff --git a/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
index fc52fdac26..c7ac43cc85 100644
--- a/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
+++ b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
@@ -1,4 +1,4 @@
1From a5d429a0e1a4809c1ded7be7e45dcabeb82c53d8 Mon Sep 17 00:00:00 2001 1From 3aeeddb1325679d5c0471ad86806e92e72187138 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de> 2From: Alexander Kanavin <alex@linutronix.de>
3Date: Sun, 12 Sep 2021 21:44:36 +0200 3Date: Sun, 12 Sep 2021 21:44:36 +0200
4Subject: [PATCH] sysconfig.py: use platlibdir also for purelib 4Subject: [PATCH] sysconfig.py: use platlibdir also for purelib
@@ -8,13 +8,12 @@ is not correct.
8 8
9Upstream-Status: Inappropriate [oe-core specific] 9Upstream-Status: Inappropriate [oe-core specific]
10Signed-off-by: Alexander Kanavin <alex@linutronix.de> 10Signed-off-by: Alexander Kanavin <alex@linutronix.de>
11
12--- 11---
13 Lib/sysconfig.py | 2 +- 12 Lib/sysconfig.py | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-) 13 1 file changed, 1 insertion(+), 1 deletion(-)
15 14
16diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py 15diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
17index 122d441..79c0510 100644 16index 517b13a..6258b68 100644
18--- a/Lib/sysconfig.py 17--- a/Lib/sysconfig.py
19+++ b/Lib/sysconfig.py 18+++ b/Lib/sysconfig.py
20@@ -28,7 +28,7 @@ _INSTALL_SCHEMES = { 19@@ -28,7 +28,7 @@ _INSTALL_SCHEMES = {
diff --git a/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch b/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch
index 6ebbaf10e0..164c8b5180 100644
--- a/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch
@@ -1,4 +1,4 @@
1From bf3eb28bba24509a3e1cd40f1f0e26db833779a2 Mon Sep 17 00:00:00 2001 1From a83311a1030b816f422dbb4457fc38c1289c224d Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com> 2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Thu, 13 Jun 2024 10:54:31 -0400 3Date: Thu, 13 Jun 2024 10:54:31 -0400
4Subject: [PATCH] test_active_children: skip problematic test 4Subject: [PATCH] test_active_children: skip problematic test
@@ -14,10 +14,10 @@ Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14 1 file changed, 1 insertion(+) 14 1 file changed, 1 insertion(+)
15 15
16diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py 16diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
17index 3955123455..a1861fa3a0 100644 17index 1f94dec..3632219 100644
18--- a/Lib/test/_test_multiprocessing.py 18--- a/Lib/test/_test_multiprocessing.py
19+++ b/Lib/test/_test_multiprocessing.py 19+++ b/Lib/test/_test_multiprocessing.py
20@@ -579,6 +579,7 @@ def test_cpu_count(self): 20@@ -585,6 +585,7 @@ class _TestProcess(BaseTestCase):
21 self.assertTrue(type(cpus) is int) 21 self.assertTrue(type(cpus) is int)
22 self.assertTrue(cpus >= 1) 22 self.assertTrue(cpus >= 1)
23 23
@@ -25,6 +25,3 @@ index 3955123455..a1861fa3a0 100644
25 def test_active_children(self): 25 def test_active_children(self):
26 self.assertEqual(type(self.active_children()), list) 26 self.assertEqual(type(self.active_children()), list)
27 27
28--
292.45.2
30
diff --git a/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
index b4fe946cba..307e4bf306 100644
--- a/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
@@ -1,4 +1,4 @@
1From b64c131a576a4b4f821514e711ab91b1394fb4ff Mon Sep 17 00:00:00 2001 1From fbbf04dbeae217b985073263499174960e5fd142 Mon Sep 17 00:00:00 2001
2From: Tim Orling <timothy.t.orling@intel.com> 2From: Tim Orling <timothy.t.orling@intel.com>
3Date: Fri, 18 Jun 2021 11:56:50 -0700 3Date: Fri, 18 Jun 2021 11:56:50 -0700
4Subject: [PATCH] test_ctypes.test_find: skip without tools-sdk 4Subject: [PATCH] test_ctypes.test_find: skip without tools-sdk
@@ -10,13 +10,12 @@ easiest way to dynamically check for that is looking for
10Upstream-Status: Inappropriate [oe-specific] 10Upstream-Status: Inappropriate [oe-specific]
11 11
12Signed-off-by: Tim Orling <timothy.t.orling@intel.com> 12Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
13
14--- 13---
15 Lib/test/test_ctypes/test_find.py | 2 ++ 14 Lib/test/test_ctypes/test_find.py | 2 ++
16 1 file changed, 2 insertions(+) 15 1 file changed, 2 insertions(+)
17 16
18diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py 17diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py
19index 1ff9d01..59def26 100644 18index a41e949..eb5fe19 100644
20--- a/Lib/test/test_ctypes/test_find.py 19--- a/Lib/test/test_ctypes/test_find.py
21+++ b/Lib/test/test_ctypes/test_find.py 20+++ b/Lib/test/test_ctypes/test_find.py
22@@ -113,10 +113,12 @@ class FindLibraryLinux(unittest.TestCase): 21@@ -113,10 +113,12 @@ class FindLibraryLinux(unittest.TestCase):
diff --git a/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch b/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch
index f0a7cfd39b..e07f7392f6 100644
--- a/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch
@@ -1,4 +1,4 @@
1From d7e3f26e7094fbe20e2271d75f18ac3b23a67f58 Mon Sep 17 00:00:00 2001 1From 9d658dd20f02edcf878b245d638c474c808ab8d1 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com> 2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Wed, 12 Jun 2024 10:29:03 -0400 3Date: Wed, 12 Jun 2024 10:29:03 -0400
4Subject: [PATCH] test_deadlock: skip problematic test 4Subject: [PATCH] test_deadlock: skip problematic test
@@ -14,10 +14,10 @@ Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14 1 file changed, 1 insertion(+) 14 1 file changed, 1 insertion(+)
15 15
16diff --git a/Lib/test/test_concurrent_futures/test_deadlock.py b/Lib/test/test_concurrent_futures/test_deadlock.py 16diff --git a/Lib/test/test_concurrent_futures/test_deadlock.py b/Lib/test/test_concurrent_futures/test_deadlock.py
17index 1db4cd0099..fd07895a17 100644 17index e8cd8f6..021906b 100644
18--- a/Lib/test/test_concurrent_futures/test_deadlock.py 18--- a/Lib/test/test_concurrent_futures/test_deadlock.py
19+++ b/Lib/test/test_concurrent_futures/test_deadlock.py 19+++ b/Lib/test/test_concurrent_futures/test_deadlock.py
20@@ -90,6 +90,7 @@ def __reduce__(self): 20@@ -90,6 +90,7 @@ class ErrorAtUnpickle(object):
21 return _raise_error_ignore_stderr, (UnpicklingError, ) 21 return _raise_error_ignore_stderr, (UnpicklingError, )
22 22
23 23
@@ -25,6 +25,3 @@ index 1db4cd0099..fd07895a17 100644
25 class ExecutorDeadlockTest: 25 class ExecutorDeadlockTest:
26 TIMEOUT = support.LONG_TIMEOUT 26 TIMEOUT = support.LONG_TIMEOUT
27 27
28--
292.45.2
30
diff --git a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
index 410a9fc7f1..535c48c769 100644
--- a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
@@ -1,4 +1,4 @@
1From ef5728f0af14da5c9f80b0f038fe5bf6d44cb0e9 Mon Sep 17 00:00:00 2001 1From fcd5b7d30d3245ce92ea45dfbab3c7b7da690c20 Mon Sep 17 00:00:00 2001
2From: Mingli Yu <mingli.yu@windriver.com> 2From: Mingli Yu <mingli.yu@windriver.com>
3Date: Mon, 5 Aug 2019 15:57:39 +0800 3Date: Mon, 5 Aug 2019 15:57:39 +0800
4Subject: [PATCH] test_locale.py: correct the test output format 4Subject: [PATCH] test_locale.py: correct the test output format
@@ -26,16 +26,15 @@ Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132]
26Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org> 26Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org>
27 27
28Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 28Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
29
30--- 29---
31 Lib/test/test_locale.py | 2 +- 30 Lib/test/test_locale.py | 2 +-
32 1 file changed, 1 insertion(+), 1 deletion(-) 31 1 file changed, 1 insertion(+), 1 deletion(-)
33 32
34diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py 33diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
35index b0d7998..cb12153 100644 34index cde80a4..e8ffd71 100644
36--- a/Lib/test/test_locale.py 35--- a/Lib/test/test_locale.py
37+++ b/Lib/test/test_locale.py 36+++ b/Lib/test/test_locale.py
38@@ -557,7 +557,7 @@ class TestMiscellaneous(unittest.TestCase): 37@@ -561,7 +561,7 @@ class TestMiscellaneous(unittest.TestCase):
39 self.skipTest('test needs Turkish locale') 38 self.skipTest('test needs Turkish locale')
40 loc = locale.getlocale(locale.LC_CTYPE) 39 loc = locale.getlocale(locale.LC_CTYPE)
41 if verbose: 40 if verbose:
diff --git a/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch b/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch
index e8d297c721..f9dc0ddcda 100644
--- a/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch
@@ -1,4 +1,4 @@
1From d9d916d5ea946c945323679d1709de1b87029b96 Mon Sep 17 00:00:00 2001 1From 34fd0bc8afc67a11eea5d73f9e0edf045c5ce541 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com> 2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Tue, 13 Aug 2024 11:07:05 -0400 3Date: Tue, 13 Aug 2024 11:07:05 -0400
4Subject: [PATCH] test_readline: skip limited history test 4Subject: [PATCH] test_readline: skip limited history test
@@ -16,11 +16,11 @@ Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
16 Lib/test/test_readline.py | 2 ++ 16 Lib/test/test_readline.py | 2 ++
17 1 file changed, 2 insertions(+) 17 1 file changed, 2 insertions(+)
18 18
19Index: Python-3.12.6/Lib/test/test_readline.py 19diff --git a/Lib/test/test_readline.py b/Lib/test/test_readline.py
20=================================================================== 20index fab124a..291dd48 100644
21--- Python-3.12.6.orig/Lib/test/test_readline.py 21--- a/Lib/test/test_readline.py
22+++ Python-3.12.6/Lib/test/test_readline.py 22+++ b/Lib/test/test_readline.py
23@@ -133,6 +133,7 @@ class TestHistoryManipulation (unittest. 23@@ -141,6 +141,7 @@ class TestHistoryManipulation (unittest.TestCase):
24 self.assertEqual(readline.get_history_item(1), "entrée 1") 24 self.assertEqual(readline.get_history_item(1), "entrée 1")
25 self.assertEqual(readline.get_history_item(2), "entrée 22") 25 self.assertEqual(readline.get_history_item(2), "entrée 22")
26 26
@@ -28,7 +28,7 @@ Index: Python-3.12.6/Lib/test/test_readline.py
28 def test_write_read_limited_history(self): 28 def test_write_read_limited_history(self):
29 previous_length = readline.get_history_length() 29 previous_length = readline.get_history_length()
30 self.addCleanup(readline.set_history_length, previous_length) 30 self.addCleanup(readline.set_history_length, previous_length)
31@@ -371,6 +372,7 @@ readline.write_history_file(history_file 31@@ -379,6 +380,7 @@ readline.write_history_file(history_file)
32 self.assertIn(b"done", output) 32 self.assertIn(b"done", output)
33 33
34 34
diff --git a/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch b/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch
index 1d4cda18b1..61fe5e9ba1 100644
--- a/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch
@@ -1,4 +1,4 @@
1From 9d4cdbde100798ba9fa1cf3f82dbaf18fd10a543 Mon Sep 17 00:00:00 2001 1From d09a034acba8922158d38fd16be970b5a454428a Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com> 2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Wed, 8 May 2024 11:58:09 -0400 3Date: Wed, 8 May 2024 11:58:09 -0400
4Subject: [PATCH] test_shutdown: skip problematic test 4Subject: [PATCH] test_shutdown: skip problematic test
@@ -14,7 +14,7 @@ Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14 1 file changed, 3 insertions(+) 14 1 file changed, 3 insertions(+)
15 15
16diff --git a/Lib/test/test_concurrent_futures/test_shutdown.py b/Lib/test/test_concurrent_futures/test_shutdown.py 16diff --git a/Lib/test/test_concurrent_futures/test_shutdown.py b/Lib/test/test_concurrent_futures/test_shutdown.py
17index 7a4065afd4..6b878a48bf 100644 17index 7a4065a..6b878a4 100644
18--- a/Lib/test/test_concurrent_futures/test_shutdown.py 18--- a/Lib/test/test_concurrent_futures/test_shutdown.py
19+++ b/Lib/test/test_concurrent_futures/test_shutdown.py 19+++ b/Lib/test/test_concurrent_futures/test_shutdown.py
20@@ -20,6 +20,7 @@ def sleep_and_print(t, msg): 20@@ -20,6 +20,7 @@ def sleep_and_print(t, msg):
@@ -25,7 +25,7 @@ index 7a4065afd4..6b878a48bf 100644
25 class ExecutorShutdownTest: 25 class ExecutorShutdownTest:
26 def test_run_after_shutdown(self): 26 def test_run_after_shutdown(self):
27 self.executor.shutdown() 27 self.executor.shutdown()
28@@ -156,6 +157,7 @@ def timeout(_signum, _frame): 28@@ -156,6 +157,7 @@ class ExecutorShutdownTest:
29 signal.signal(signal.SIGALRM, old_handler) 29 signal.signal(signal.SIGALRM, old_handler)
30 30
31 31
@@ -33,7 +33,7 @@ index 7a4065afd4..6b878a48bf 100644
33 class ThreadPoolShutdownTest(ThreadPoolMixin, ExecutorShutdownTest, BaseTestCase): 33 class ThreadPoolShutdownTest(ThreadPoolMixin, ExecutorShutdownTest, BaseTestCase):
34 def test_threads_terminate(self): 34 def test_threads_terminate(self):
35 def acquire_lock(lock): 35 def acquire_lock(lock):
36@@ -252,6 +254,7 @@ def test_cancel_futures_wait_false(self): 36@@ -252,6 +254,7 @@ class ThreadPoolShutdownTest(ThreadPoolMixin, ExecutorShutdownTest, BaseTestCase
37 self.assertIn(out.strip(), [b"apple", b""]) 37 self.assertIn(out.strip(), [b"apple", b""])
38 38
39 39
@@ -41,6 +41,3 @@ index 7a4065afd4..6b878a48bf 100644
41 class ProcessPoolShutdownTest(ExecutorShutdownTest): 41 class ProcessPoolShutdownTest(ExecutorShutdownTest):
42 def test_processes_terminate(self): 42 def test_processes_terminate(self):
43 def acquire_lock(lock): 43 def acquire_lock(lock):
44--
452.45.0
46
diff --git a/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
index 0d0eb08459..88cd93a51f 100644
--- a/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
@@ -1,4 +1,4 @@
1From dc69a1afdb3ba619705ff71e14f19ed3142e422f Mon Sep 17 00:00:00 2001 1From 6715560de4d622c2d72ee7b587c916ac647c54bb Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com> 2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Fri, 6 Oct 2023 10:59:44 -0400 3Date: Fri, 6 Oct 2023 10:59:44 -0400
4Subject: [PATCH] test_storlines: skip due to load variability 4Subject: [PATCH] test_storlines: skip due to load variability
@@ -11,16 +11,15 @@ Upstream-Status: Inappropriate [OE-Specific]
11[YOCTO #14933] 11[YOCTO #14933]
12 12
13Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> 13Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14
15--- 14---
16 Lib/test/test_ftplib.py | 1 + 15 Lib/test/test_ftplib.py | 1 +
17 1 file changed, 1 insertion(+) 16 1 file changed, 1 insertion(+)
18 17
19diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py 18diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
20index 2f191ea..dc29346 100644 19index 4c4a449..b8c79a4 100644
21--- a/Lib/test/test_ftplib.py 20--- a/Lib/test/test_ftplib.py
22+++ b/Lib/test/test_ftplib.py 21+++ b/Lib/test/test_ftplib.py
23@@ -626,6 +626,7 @@ class TestFTPClass(TestCase): 22@@ -629,6 +629,7 @@ class TestFTPClass(TestCase):
24 self.client.storbinary('stor', f, rest=r) 23 self.client.storbinary('stor', f, rest=r)
25 self.assertEqual(self.server.handler_instance.rest, str(r)) 24 self.assertEqual(self.server.handler_instance.rest, str(r))
26 25
diff --git a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
index 0661249bfd..e917c8bdf0 100644
--- a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
+++ b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
@@ -1,4 +1,4 @@
1From d0205c60d08f51d84bd8ddc07a57e8c71710fdad Mon Sep 17 00:00:00 2001 1From 011b21dc9b090c0b97eaecbd80a9e0c1cd39b12d Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de> 2From: Alexander Kanavin <alex@linutronix.de>
3Date: Fri, 17 Nov 2023 14:16:40 +0100 3Date: Fri, 17 Nov 2023 14:16:40 +0100
4Subject: [PATCH] configure.ac: do not add a curses include path from the host 4Subject: [PATCH] configure.ac: do not add a curses include path from the host
@@ -15,10 +15,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
15 1 file changed, 6 deletions(-) 15 1 file changed, 6 deletions(-)
16 16
17diff --git a/configure.ac b/configure.ac 17diff --git a/configure.ac b/configure.ac
18index c49cd4f..affdedf 100644 18index 6e465a4..13c4835 100644
19--- a/configure.ac 19--- a/configure.ac
20+++ b/configure.ac 20+++ b/configure.ac
21@@ -6508,12 +6508,6 @@ AS_VAR_IF([have_panel], [no], [ 21@@ -6558,12 +6558,6 @@ AS_VAR_IF([have_panel], [no], [
22 AC_MSG_RESULT([$have_panel (CFLAGS: $PANEL_CFLAGS, LIBS: $PANEL_LIBS)]) 22 AC_MSG_RESULT([$have_panel (CFLAGS: $PANEL_CFLAGS, LIBS: $PANEL_LIBS)])
23 ]) 23 ])
24 24
diff --git a/meta/recipes-devtools/python/python3/cgi_py.patch b/meta/recipes-devtools/python/python3/cgi_py.patch
index 8262c88e73..880a463760 100644
--- a/meta/recipes-devtools/python/python3/cgi_py.patch
+++ b/meta/recipes-devtools/python/python3/cgi_py.patch
@@ -1,4 +1,4 @@
1From a56778372fe8dc7c42f5ffd911d89498c22dd064 Mon Sep 17 00:00:00 2001 1From 6ebd9de3505be0965cfc37e2e4d0d882d75f0ec2 Mon Sep 17 00:00:00 2001
2From: Mark Hatle <mark.hatle@windriver.com> 2From: Mark Hatle <mark.hatle@windriver.com>
3Date: Wed, 21 Sep 2011 20:55:33 -0500 3Date: Wed, 21 Sep 2011 20:55:33 -0500
4Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment 4Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment
@@ -6,7 +6,6 @@ Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment
6Upstream-Status: Inappropriate [distribution] 6Upstream-Status: Inappropriate [distribution]
7 7
8Signed-off-by: Mark Hatle <mark.hatle@windriver.com> 8Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
9
10--- 9---
11 Lib/cgi.py | 11 +---------- 10 Lib/cgi.py | 11 +----------
12 1 file changed, 1 insertion(+), 10 deletions(-) 11 1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/meta/recipes-devtools/python/python3/crosspythonpath.patch b/meta/recipes-devtools/python/python3/crosspythonpath.patch
index 2c4aef0511..24268fb91a 100644
--- a/meta/recipes-devtools/python/python3/crosspythonpath.patch
+++ b/meta/recipes-devtools/python/python3/crosspythonpath.patch
@@ -1,4 +1,4 @@
1From 5b66463c10fec1440e977d5a21a0167862d6d79c Mon Sep 17 00:00:00 2001 1From 0bcdb84db7801507b155a40db2228ba516edeb73 Mon Sep 17 00:00:00 2001
2From: Ricardo Ribalda <ricardo@ribalda.com> 2From: Ricardo Ribalda <ricardo@ribalda.com>
3Date: Tue, 18 Nov 2014 03:35:33 -0500 3Date: Tue, 18 Nov 2014 03:35:33 -0500
4Subject: [PATCH] configure.ac: add CROSSPYTHONPATH into PYTHONPATH for 4Subject: [PATCH] configure.ac: add CROSSPYTHONPATH into PYTHONPATH for
@@ -14,13 +14,12 @@ Upstream-Status: Inappropriate [OE-Core integration specific]
14Credits-to: Mark Hatle <mark.hatle@windriver.com> 14Credits-to: Mark Hatle <mark.hatle@windriver.com>
15Credits-to: Jackie Huang <jackie.huang@windriver.com> 15Credits-to: Jackie Huang <jackie.huang@windriver.com>
16Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com> 16Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com>
17
18--- 17---
19 configure.ac | 2 +- 18 configure.ac | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-) 19 1 file changed, 1 insertion(+), 1 deletion(-)
21 20
22diff --git a/configure.ac b/configure.ac 21diff --git a/configure.ac b/configure.ac
23index cb9e198..d81c19a 100644 22index 955daad..6e465a4 100644
24--- a/configure.ac 23--- a/configure.ac
25+++ b/configure.ac 24+++ b/configure.ac
26@@ -165,7 +165,7 @@ AC_ARG_WITH([build-python], 25@@ -165,7 +165,7 @@ AC_ARG_WITH([build-python],
diff --git a/meta/recipes-devtools/python/python3/deterministic_imports.patch b/meta/recipes-devtools/python/python3/deterministic_imports.patch
index 2de6ae2e98..9bfdf5cd47 100644
--- a/meta/recipes-devtools/python/python3/deterministic_imports.patch
+++ b/meta/recipes-devtools/python/python3/deterministic_imports.patch
@@ -1,4 +1,4 @@
1From 039d5e652796b55f1132afa568c7432b6ed89afd Mon Sep 17 00:00:00 2001 1From 1d6f0f5f8a1279fc9bc06266caa3f3b6f234c4cb Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org> 2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Fri, 27 May 2022 17:05:44 +0100 3Date: Fri, 27 May 2022 17:05:44 +0100
4Subject: [PATCH] python3: Ensure stale empty python module directories don't 4Subject: [PATCH] python3: Ensure stale empty python module directories don't
@@ -13,13 +13,12 @@ As a result, patch this to a behaviour which works for us.
13 13
14Upstream-Status: Submitted [https://github.com/python/cpython/issues/120492; need to first talk to upstream to see if they'll take one or both fixes] 14Upstream-Status: Submitted [https://github.com/python/cpython/issues/120492; need to first talk to upstream to see if they'll take one or both fixes]
15Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> 15Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
16
17--- 16---
18 Lib/importlib/metadata/__init__.py | 9 ++++++++- 17 Lib/importlib/metadata/__init__.py | 9 ++++++++-
19 1 file changed, 8 insertions(+), 1 deletion(-) 18 1 file changed, 8 insertions(+), 1 deletion(-)
20 19
21diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py 20diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py
22index 82e0ce1..969cac4 100644 21index e6ca178..ac5a75b 100644
23--- a/Lib/importlib/metadata/__init__.py 22--- a/Lib/importlib/metadata/__init__.py
24+++ b/Lib/importlib/metadata/__init__.py 23+++ b/Lib/importlib/metadata/__init__.py
25@@ -710,7 +710,14 @@ class Lookup: 24@@ -710,7 +710,14 @@ class Lookup:
diff --git a/meta/recipes-devtools/python/python3/makerace.patch b/meta/recipes-devtools/python/python3/makerace.patch
index c1b20703e6..fbe12a5fca 100644
--- a/meta/recipes-devtools/python/python3/makerace.patch
+++ b/meta/recipes-devtools/python/python3/makerace.patch
@@ -1,4 +1,4 @@
1From 9f827c29adbe656af3c8fc963fdd8f47aec0c442 Mon Sep 17 00:00:00 2001 1From be22dd9b091af8f971f924fdbce5b439d9b2e850 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org> 2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Tue, 13 Jul 2021 23:19:29 +0100 3Date: Tue, 13 Jul 2021 23:19:29 +0100
4Subject: [PATCH] python3: Fix make race 4Subject: [PATCH] python3: Fix make race
@@ -17,10 +17,10 @@ Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
17 1 file changed, 1 insertion(+), 1 deletion(-) 17 1 file changed, 1 insertion(+), 1 deletion(-)
18 18
19diff --git a/Makefile.pre.in b/Makefile.pre.in 19diff --git a/Makefile.pre.in b/Makefile.pre.in
20index 381feb0..77bf09a 100644 20index dce36a5..2d235d2 100644
21--- a/Makefile.pre.in 21--- a/Makefile.pre.in
22+++ b/Makefile.pre.in 22+++ b/Makefile.pre.in
23@@ -2250,7 +2250,7 @@ COMPILEALL_OPTS=-j0 23@@ -2267,7 +2267,7 @@ COMPILEALL_OPTS=-j0
24 TEST_MODULES=@TEST_MODULES@ 24 TEST_MODULES=@TEST_MODULES@
25 25
26 .PHONY: libinstall 26 .PHONY: libinstall
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json
index 46092d4004..292c5bbc5d 100644
--- a/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -216,7 +216,7 @@
216 }, 216 },
217 "core": { 217 "core": {
218 "summary": "Python interpreter and core modules", 218 "summary": "Python interpreter and core modules",
219 "rdepends": [], 219 "rdepends": ["compression"],
220 "files": [ 220 "files": [
221 "${bindir}/python${PYTHON_MAJMIN}", 221 "${bindir}/python${PYTHON_MAJMIN}",
222 "${bindir}/python${PYTHON_MAJMIN}.real", 222 "${bindir}/python${PYTHON_MAJMIN}.real",
diff --git a/meta/recipes-devtools/python/python3_3.12.6.bb b/meta/recipes-devtools/python/python3_3.12.11.bb
index ae69f0e781..706dabb5cd 100644
--- a/meta/recipes-devtools/python/python3_3.12.6.bb
+++ b/meta/recipes-devtools/python/python3_3.12.11.bb
@@ -29,7 +29,6 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
29 file://0001-Update-test_sysconfig-for-posix_user-purelib.patch \ 29 file://0001-Update-test_sysconfig-for-posix_user-purelib.patch \
30 file://0001-skip-no_stdout_fileno-test-due-to-load-variability.patch \ 30 file://0001-skip-no_stdout_fileno-test-due-to-load-variability.patch \
31 file://0001-test_storlines-skip-due-to-load-variability.patch \ 31 file://0001-test_storlines-skip-due-to-load-variability.patch \
32 file://0001-gh-114492-Initialize-struct-termios-before-calling-t.patch \
33 file://0001-test_shutdown-skip-problematic-test.patch \ 32 file://0001-test_shutdown-skip-problematic-test.patch \
34 file://0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch \ 33 file://0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch \
35 file://0001-test_deadlock-skip-problematic-test.patch \ 34 file://0001-test_deadlock-skip-problematic-test.patch \
@@ -41,7 +40,7 @@ SRC_URI:append:class-native = " \
41 file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \ 40 file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \
42 " 41 "
43 42
44SRC_URI[sha256sum] = "1999658298cf2fb837dffed8ff3c033ef0c98ef20cf73c5d5f66bed5ab89697c" 43SRC_URI[sha256sum] = "c30bb24b7f1e9a19b11b55a546434f74e739bb4c271a3e3a80ff4380d49f7adb"
45 44
46# exclude pre-releases for both python 2.x and 3.x 45# exclude pre-releases for both python 2.x and 3.x
47UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" 46UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
diff --git a/meta/recipes-devtools/qemu/qemu-native_8.2.3.bb b/meta/recipes-devtools/qemu/qemu-native_8.2.7.bb
index a77953529b..a77953529b 100644
--- a/meta/recipes-devtools/qemu/qemu-native_8.2.3.bb
+++ b/meta/recipes-devtools/qemu/qemu-native_8.2.7.bb
diff --git a/meta/recipes-devtools/qemu/qemu-system-native_8.2.3.bb b/meta/recipes-devtools/qemu/qemu-system-native_8.2.7.bb
index 0634b34242..0634b34242 100644
--- a/meta/recipes-devtools/qemu/qemu-system-native_8.2.3.bb
+++ b/meta/recipes-devtools/qemu/qemu-system-native_8.2.7.bb
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index e9f63b9eaf..38ed637b93 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -38,20 +38,9 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
38 file://0003-linux-user-Add-strace-for-shmat.patch \ 38 file://0003-linux-user-Add-strace-for-shmat.patch \
39 file://0004-linux-user-Rewrite-target_shmat.patch \ 39 file://0004-linux-user-Rewrite-target_shmat.patch \
40 file://0005-tests-tcg-Check-that-shmat-does-not-break-proc-self-.patch \ 40 file://0005-tests-tcg-Check-that-shmat-does-not-break-proc-self-.patch \
41 file://0001-sched_attr-Do-not-define-for-glibc-2.41.patch \
41 file://qemu-guest-agent.init \ 42 file://qemu-guest-agent.init \
42 file://qemu-guest-agent.udev \ 43 file://qemu-guest-agent.udev \
43 file://CVE-2024-4467-0001.patch \
44 file://CVE-2024-4467-0002.patch \
45 file://CVE-2024-4467-0003.patch \
46 file://CVE-2024-4467-0004.patch \
47 file://CVE-2024-4467-0005.patch \
48 file://CVE-2024-7409-0001.patch \
49 file://CVE-2024-7409-0002.patch \
50 file://CVE-2024-7409-0003.patch \
51 file://CVE-2024-7409-0004.patch \
52 file://0001-target-riscv-kvm-change-KVM_REG_RISCV_FP_F-to-u32.patch \
53 file://0002-target-riscv-kvm-change-KVM_REG_RISCV_FP_D-to-u64.patch \
54 file://0003-target-riscv-kvm-change-timer-regs-size-to-u64.patch \
55 " 44 "
56UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" 45UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
57 46
@@ -68,7 +57,7 @@ SRC_URI:append:class-native = " \
68 file://0012-linux-user-workaround-for-missing-MAP_SHARED_VALIDAT.patch \ 57 file://0012-linux-user-workaround-for-missing-MAP_SHARED_VALIDAT.patch \
69 " 58 "
70 59
71SRC_URI[sha256sum] = "dc747fb366809455317601c4876bd1f6829a32a23e83fb76e45ab12c2a569964" 60SRC_URI[sha256sum] = "1f0604f296ab9acb4854c054764a1ba408643fc299bd54a6500cccfaaca65b55"
72 61
73CVE_STATUS[CVE-2007-0998] = "not-applicable-config: The VNC server can expose host files uder some circumstances. We don't enable it by default." 62CVE_STATUS[CVE-2007-0998] = "not-applicable-config: The VNC server can expose host files uder some circumstances. We don't enable it by default."
74 63
@@ -90,6 +79,11 @@ CVE_STATUS[CVE-2023-6683] = "cpe-incorrect: Applies only against version 8.2.1 a
90 79
91CVE_STATUS[CVE-2023-6693] = "cpe-incorrect: Applies only against version 8.2.0 and earlier" 80CVE_STATUS[CVE-2023-6693] = "cpe-incorrect: Applies only against version 8.2.0 and earlier"
92 81
82# NVD DB has this CVE as version-less (with "-")
83CVE_STATUS[CVE-2024-6505] = "fixed-version: this CVE is fixed since 9.1.0"
84
85CVE_STATUS[CVE-2023-1386] = "disputed: not an issue as per https://bugzilla.redhat.com/show_bug.cgi?id=2223985"
86
93COMPATIBLE_HOST:mipsarchn32 = "null" 87COMPATIBLE_HOST:mipsarchn32 = "null"
94COMPATIBLE_HOST:mipsarchn64 = "null" 88COMPATIBLE_HOST:mipsarchn64 = "null"
95COMPATIBLE_HOST:riscv32 = "null" 89COMPATIBLE_HOST:riscv32 = "null"
diff --git a/meta/recipes-devtools/qemu/qemu/0001-sched_attr-Do-not-define-for-glibc-2.41.patch b/meta/recipes-devtools/qemu/qemu/0001-sched_attr-Do-not-define-for-glibc-2.41.patch
new file mode 100644
index 0000000000..edb3e304c9
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0001-sched_attr-Do-not-define-for-glibc-2.41.patch
@@ -0,0 +1,47 @@
1From ddb27569449c941014fa44b1b542de0831d993a0 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Thu, 10 Oct 2024 22:40:32 -0700
4Subject: [PATCH v2] sched_attr: Do not define for glibc >= 2.41
5
6glibc 2.41+ has added [1] definitions for sched_setattr and sched_getattr functions
7and struct sched_attr. Therefore, it needs to be checked for here as well before
8defining sched_attr
9
10Define sched_attr conditionally on SCHED_ATTR_SIZE_VER0
11
12Fixes builds with glibc/trunk
13
14[1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8
15
16Upstream-Status: Submitted [https://patchwork.ozlabs.org/project/qemu-devel/patch/20241011193140.1047648-1-raj.khem@gmail.com/]
17Signed-off-by: Khem Raj <raj.khem@gmail.com>
18Cc: Laurent Vivier <laurent@vivier.eu>
19Cc: Paolo Bonzini <pbonzini@redhat.com>
20---
21v2: Use SCHED_ATTR_SIZE_VER0 instead of glibc version check
22
23 linux-user/syscall.c | 4 +++-
24 1 file changed, 3 insertions(+), 1 deletion(-)
25
26diff --git a/linux-user/syscall.c b/linux-user/syscall.c
27index 1354e75694..caecbb765d 100644
28--- a/linux-user/syscall.c
29+++ b/linux-user/syscall.c
30@@ -359,7 +359,8 @@ _syscall3(int, sys_sched_getaffinity, pid_t, pid, unsigned int, len,
31 #define __NR_sys_sched_setaffinity __NR_sched_setaffinity
32 _syscall3(int, sys_sched_setaffinity, pid_t, pid, unsigned int, len,
33 unsigned long *, user_mask_ptr);
34-/* sched_attr is not defined in glibc */
35+/* sched_attr is not defined in glibc < 2.41 */
36+#ifndef SCHED_ATTR_SIZE_VER0
37 struct sched_attr {
38 uint32_t size;
39 uint32_t sched_policy;
40@@ -372,6 +373,7 @@ struct sched_attr {
41 uint32_t sched_util_min;
42 uint32_t sched_util_max;
43 };
44+#endif
45 #define __NR_sys_sched_getattr __NR_sched_getattr
46 _syscall4(int, sys_sched_getattr, pid_t, pid, struct sched_attr *, attr,
47 unsigned int, size, unsigned int, flags);
diff --git a/meta/recipes-devtools/qemu/qemu/0001-target-riscv-kvm-change-KVM_REG_RISCV_FP_F-to-u32.patch b/meta/recipes-devtools/qemu/qemu/0001-target-riscv-kvm-change-KVM_REG_RISCV_FP_F-to-u32.patch
deleted file mode 100644
index 39a6a85162..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0001-target-riscv-kvm-change-KVM_REG_RISCV_FP_F-to-u32.patch
+++ /dev/null
@@ -1,75 +0,0 @@
1From bbdcc89678daa5cb131ef22a6cd41a5f7f9dcea9 Mon Sep 17 00:00:00 2001
2From: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
3Date: Fri, 8 Dec 2023 15:38:31 -0300
4Subject: [PATCH 1/3] target/riscv/kvm: change KVM_REG_RISCV_FP_F to u32
5
6KVM_REG_RISCV_FP_F regs have u32 size according to the API, but by using
7kvm_riscv_reg_id() in RISCV_FP_F_REG() we're returning u64 sizes when
8running with TARGET_RISCV64. The most likely reason why no one noticed
9this is because we're not implementing kvm_cpu_synchronize_state() in
10RISC-V yet.
11
12Create a new helper that returns a KVM ID with u32 size and use it in
13RISCV_FP_F_REG().
14
15Reported-by: Andrew Jones <ajones@ventanamicro.com>
16Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
17Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
18Message-ID: <20231208183835.2411523-2-dbarboza@ventanamicro.com>
19Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
20(cherry picked from commit 49c211ffca00fdf7c0c29072c224e88527a14838)
21Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
22
23Upstream-Status: Backport [bbdcc89678daa5cb131ef22a6cd41a5f7f9dcea9]
24
25Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
26---
27 target/riscv/kvm/kvm-cpu.c | 11 ++++++++---
28 1 file changed, 8 insertions(+), 3 deletions(-)
29
30diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c
31index c1675158fe..2eef2be86a 100644
32--- a/target/riscv/kvm/kvm-cpu.c
33+++ b/target/riscv/kvm/kvm-cpu.c
34@@ -72,6 +72,11 @@ static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type,
35 return id;
36 }
37
38+static uint64_t kvm_riscv_reg_id_u32(uint64_t type, uint64_t idx)
39+{
40+ return KVM_REG_RISCV | KVM_REG_SIZE_U32 | type | idx;
41+}
42+
43 #define RISCV_CORE_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_CORE, \
44 KVM_REG_RISCV_CORE_REG(name))
45
46@@ -81,7 +86,7 @@ static uint64_t kvm_riscv_reg_id(CPURISCVState *env, uint64_t type,
47 #define RISCV_TIMER_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_TIMER, \
48 KVM_REG_RISCV_TIMER_REG(name))
49
50-#define RISCV_FP_F_REG(env, idx) kvm_riscv_reg_id(env, KVM_REG_RISCV_FP_F, idx)
51+#define RISCV_FP_F_REG(idx) kvm_riscv_reg_id_u32(KVM_REG_RISCV_FP_F, idx)
52
53 #define RISCV_FP_D_REG(env, idx) kvm_riscv_reg_id(env, KVM_REG_RISCV_FP_D, idx)
54
55@@ -586,7 +591,7 @@ static int kvm_riscv_get_regs_fp(CPUState *cs)
56 if (riscv_has_ext(env, RVF)) {
57 uint32_t reg;
58 for (i = 0; i < 32; i++) {
59- ret = kvm_get_one_reg(cs, RISCV_FP_F_REG(env, i), &reg);
60+ ret = kvm_get_one_reg(cs, RISCV_FP_F_REG(i), &reg);
61 if (ret) {
62 return ret;
63 }
64@@ -620,7 +625,7 @@ static int kvm_riscv_put_regs_fp(CPUState *cs)
65 uint32_t reg;
66 for (i = 0; i < 32; i++) {
67 reg = env->fpr[i];
68- ret = kvm_set_one_reg(cs, RISCV_FP_F_REG(env, i), &reg);
69+ ret = kvm_set_one_reg(cs, RISCV_FP_F_REG(i), &reg);
70 if (ret) {
71 return ret;
72 }
73--
742.25.1
75
diff --git a/meta/recipes-devtools/qemu/qemu/0002-target-riscv-kvm-change-KVM_REG_RISCV_FP_D-to-u64.patch b/meta/recipes-devtools/qemu/qemu/0002-target-riscv-kvm-change-KVM_REG_RISCV_FP_D-to-u64.patch
deleted file mode 100644
index 9480d3e0b5..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0002-target-riscv-kvm-change-KVM_REG_RISCV_FP_D-to-u64.patch
+++ /dev/null
@@ -1,73 +0,0 @@
1From 125b95d79e746cbab6b72683b3382dd372e38c61 Mon Sep 17 00:00:00 2001
2From: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
3Date: Fri, 8 Dec 2023 15:38:32 -0300
4Subject: [PATCH 2/3] target/riscv/kvm: change KVM_REG_RISCV_FP_D to u64
5
6KVM_REG_RISCV_FP_D regs are always u64 size. Using kvm_riscv_reg_id() in
7RISCV_FP_D_REG() ends up encoding the wrong size if we're running with
8TARGET_RISCV32.
9
10Create a new helper that returns a KVM ID with u64 size and use it with
11RISCV_FP_D_REG().
12
13Reported-by: Andrew Jones <ajones@ventanamicro.com>
14Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
15Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
16Message-ID: <20231208183835.2411523-3-dbarboza@ventanamicro.com>
17Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
18(cherry picked from commit 450bd6618fda3d2e2ab02b2fce1c79efd5b66084)
19Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
20
21Upstream-Status: Backport [125b95d79e746cbab6b72683b3382dd372e38c61]
22
23Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
24---
25 target/riscv/kvm/kvm-cpu.c | 11 ++++++++---
26 1 file changed, 8 insertions(+), 3 deletions(-)
27
28diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c
29index 2eef2be86a..82ed4455a5 100644
30--- a/target/riscv/kvm/kvm-cpu.c
31+++ b/target/riscv/kvm/kvm-cpu.c
32@@ -77,6 +77,11 @@ static uint64_t kvm_riscv_reg_id_u32(uint64_t type, uint64_t idx)
33 return KVM_REG_RISCV | KVM_REG_SIZE_U32 | type | idx;
34 }
35
36+static uint64_t kvm_riscv_reg_id_u64(uint64_t type, uint64_t idx)
37+{
38+ return KVM_REG_RISCV | KVM_REG_SIZE_U64 | type | idx;
39+}
40+
41 #define RISCV_CORE_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_CORE, \
42 KVM_REG_RISCV_CORE_REG(name))
43
44@@ -88,7 +93,7 @@ static uint64_t kvm_riscv_reg_id_u32(uint64_t type, uint64_t idx)
45
46 #define RISCV_FP_F_REG(idx) kvm_riscv_reg_id_u32(KVM_REG_RISCV_FP_F, idx)
47
48-#define RISCV_FP_D_REG(env, idx) kvm_riscv_reg_id(env, KVM_REG_RISCV_FP_D, idx)
49+#define RISCV_FP_D_REG(idx) kvm_riscv_reg_id_u64(KVM_REG_RISCV_FP_D, idx)
50
51 #define KVM_RISCV_GET_CSR(cs, env, csr, reg) \
52 do { \
53@@ -579,7 +584,7 @@ static int kvm_riscv_get_regs_fp(CPUState *cs)
54 if (riscv_has_ext(env, RVD)) {
55 uint64_t reg;
56 for (i = 0; i < 32; i++) {
57- ret = kvm_get_one_reg(cs, RISCV_FP_D_REG(env, i), &reg);
58+ ret = kvm_get_one_reg(cs, RISCV_FP_D_REG(i), &reg);
59 if (ret) {
60 return ret;
61 }
62@@ -613,7 +618,7 @@ static int kvm_riscv_put_regs_fp(CPUState *cs)
63 uint64_t reg;
64 for (i = 0; i < 32; i++) {
65 reg = env->fpr[i];
66- ret = kvm_set_one_reg(cs, RISCV_FP_D_REG(env, i), &reg);
67+ ret = kvm_set_one_reg(cs, RISCV_FP_D_REG(i), &reg);
68 if (ret) {
69 return ret;
70 }
71--
722.25.1
73
diff --git a/meta/recipes-devtools/qemu/qemu/0003-target-riscv-kvm-change-timer-regs-size-to-u64.patch b/meta/recipes-devtools/qemu/qemu/0003-target-riscv-kvm-change-timer-regs-size-to-u64.patch
deleted file mode 100644
index 1ea1bcfe70..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0003-target-riscv-kvm-change-timer-regs-size-to-u64.patch
+++ /dev/null
@@ -1,107 +0,0 @@
1From cbae1080988e0f1af0fb4c816205f7647f6de16f Mon Sep 17 00:00:00 2001
2From: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
3Date: Fri, 8 Dec 2023 15:38:33 -0300
4Subject: [PATCH 3/3] target/riscv/kvm: change timer regs size to u64
5
6KVM_REG_RISCV_TIMER regs are always u64 according to the KVM API, but at
7this moment we'll return u32 regs if we're running a RISCV32 target.
8
9Use the kvm_riscv_reg_id_u64() helper in RISCV_TIMER_REG() to fix it.
10
11Reported-by: Andrew Jones <ajones@ventanamicro.com>
12Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
13Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
14Message-ID: <20231208183835.2411523-4-dbarboza@ventanamicro.com>
15Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
16(cherry picked from commit 10f86d1b845087d14b58d65dd2a6e3411d1b6529)
17Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
18
19Upstream-Status: Backport [cbae1080988e0f1af0fb4c816205f7647f6de16f]
20
21Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
22---
23 target/riscv/kvm/kvm-cpu.c | 26 +++++++++++++-------------
24 1 file changed, 13 insertions(+), 13 deletions(-)
25
26diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c
27index 82ed4455a5..ddbe820e10 100644
28--- a/target/riscv/kvm/kvm-cpu.c
29+++ b/target/riscv/kvm/kvm-cpu.c
30@@ -88,7 +88,7 @@ static uint64_t kvm_riscv_reg_id_u64(uint64_t type, uint64_t idx)
31 #define RISCV_CSR_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_CSR, \
32 KVM_REG_RISCV_CSR_REG(name))
33
34-#define RISCV_TIMER_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_TIMER, \
35+#define RISCV_TIMER_REG(name) kvm_riscv_reg_id_u64(KVM_REG_RISCV_TIMER, \
36 KVM_REG_RISCV_TIMER_REG(name))
37
38 #define RISCV_FP_F_REG(idx) kvm_riscv_reg_id_u32(KVM_REG_RISCV_FP_F, idx)
39@@ -111,17 +111,17 @@ static uint64_t kvm_riscv_reg_id_u64(uint64_t type, uint64_t idx)
40 } \
41 } while (0)
42
43-#define KVM_RISCV_GET_TIMER(cs, env, name, reg) \
44+#define KVM_RISCV_GET_TIMER(cs, name, reg) \
45 do { \
46- int ret = kvm_get_one_reg(cs, RISCV_TIMER_REG(env, name), &reg); \
47+ int ret = kvm_get_one_reg(cs, RISCV_TIMER_REG(name), &reg); \
48 if (ret) { \
49 abort(); \
50 } \
51 } while (0)
52
53-#define KVM_RISCV_SET_TIMER(cs, env, name, reg) \
54+#define KVM_RISCV_SET_TIMER(cs, name, reg) \
55 do { \
56- int ret = kvm_set_one_reg(cs, RISCV_TIMER_REG(env, name), &reg); \
57+ int ret = kvm_set_one_reg(cs, RISCV_TIMER_REG(name), &reg); \
58 if (ret) { \
59 abort(); \
60 } \
61@@ -649,10 +649,10 @@ static void kvm_riscv_get_regs_timer(CPUState *cs)
62 return;
63 }
64
65- KVM_RISCV_GET_TIMER(cs, env, time, env->kvm_timer_time);
66- KVM_RISCV_GET_TIMER(cs, env, compare, env->kvm_timer_compare);
67- KVM_RISCV_GET_TIMER(cs, env, state, env->kvm_timer_state);
68- KVM_RISCV_GET_TIMER(cs, env, frequency, env->kvm_timer_frequency);
69+ KVM_RISCV_GET_TIMER(cs, time, env->kvm_timer_time);
70+ KVM_RISCV_GET_TIMER(cs, compare, env->kvm_timer_compare);
71+ KVM_RISCV_GET_TIMER(cs, state, env->kvm_timer_state);
72+ KVM_RISCV_GET_TIMER(cs, frequency, env->kvm_timer_frequency);
73
74 env->kvm_timer_dirty = true;
75 }
76@@ -666,8 +666,8 @@ static void kvm_riscv_put_regs_timer(CPUState *cs)
77 return;
78 }
79
80- KVM_RISCV_SET_TIMER(cs, env, time, env->kvm_timer_time);
81- KVM_RISCV_SET_TIMER(cs, env, compare, env->kvm_timer_compare);
82+ KVM_RISCV_SET_TIMER(cs, time, env->kvm_timer_time);
83+ KVM_RISCV_SET_TIMER(cs, compare, env->kvm_timer_compare);
84
85 /*
86 * To set register of RISCV_TIMER_REG(state) will occur a error from KVM
87@@ -676,7 +676,7 @@ static void kvm_riscv_put_regs_timer(CPUState *cs)
88 * TODO If KVM changes, adapt here.
89 */
90 if (env->kvm_timer_state) {
91- KVM_RISCV_SET_TIMER(cs, env, state, env->kvm_timer_state);
92+ KVM_RISCV_SET_TIMER(cs, state, env->kvm_timer_state);
93 }
94
95 /*
96@@ -685,7 +685,7 @@ static void kvm_riscv_put_regs_timer(CPUState *cs)
97 * during the migration.
98 */
99 if (migration_is_running(migrate_get_current()->state)) {
100- KVM_RISCV_GET_TIMER(cs, env, frequency, reg);
101+ KVM_RISCV_GET_TIMER(cs, frequency, reg);
102 if (reg != env->kvm_timer_frequency) {
103 error_report("Dst Hosts timer frequency != Src Hosts");
104 }
105--
1062.25.1
107
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0001.patch b/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0001.patch
deleted file mode 100644
index dbcc71bb4e..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0001.patch
+++ /dev/null
@@ -1,112 +0,0 @@
1From bd385a5298d7062668e804d73944d52aec9549f1 Mon Sep 17 00:00:00 2001
2From: Kevin Wolf <kwolf@redhat.com>
3Date: Fri, 16 Aug 2024 08:29:04 +0000
4Subject: [PATCH] qcow2: Don't open data_file with BDRV_O_NO_IO
5
6One use case for 'qemu-img info' is verifying that untrusted images
7don't reference an unwanted external file, be it as a backing file or an
8external data file. To make sure that calling 'qemu-img info' can't
9already have undesired side effects with a malicious image, just don't
10open the data file at all with BDRV_O_NO_IO. If nothing ever tries to do
11I/O, we don't need to have it open.
12
13This changes the output of iotests case 061, which used 'qemu-img info'
14to show that opening an image with an invalid data file fails. After
15this patch, it succeeds. Replace this part of the test with a qemu-io
16call, but keep the final 'qemu-img info' to show that the invalid data
17file is correctly displayed in the output.
18
19Fixes: CVE-2024-4467
20Cc: qemu-stable@nongnu.org
21Signed-off-by: Kevin Wolf <kwolf@redhat.com>
22Reviewed-by: Eric Blake <eblake@redhat.com>
23Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
24Reviewed-by: Hanna Czenczek <hreitz@redhat.com>
25
26CVE: CVE-2024-4667
27Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/bd385a5298d7062668e804d73944d52aec9549f1]
28
29Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
30---
31 block/qcow2.c | 17 ++++++++++++++++-
32 tests/qemu-iotests/061 | 6 ++++--
33 tests/qemu-iotests/061.out | 8 ++++++--
34 3 files changed, 26 insertions(+), 5 deletions(-)
35
36diff --git a/block/qcow2.c b/block/qcow2.c
37index 13e032bd5..7af7c0bee 100644
38--- a/block/qcow2.c
39+++ b/block/qcow2.c
40@@ -1636,7 +1636,22 @@ qcow2_do_open(BlockDriverState *bs, QDict *options, int flags,
41 goto fail;
42 }
43
44- if (open_data_file) {
45+ if (open_data_file && (flags & BDRV_O_NO_IO)) {
46+ /*
47+ * Don't open the data file for 'qemu-img info' so that it can be used
48+ * to verify that an untrusted qcow2 image doesn't refer to external
49+ * files.
50+ *
51+ * Note: This still makes has_data_file() return true.
52+ */
53+ if (s->incompatible_features & QCOW2_INCOMPAT_DATA_FILE) {
54+ s->data_file = NULL;
55+ } else {
56+ s->data_file = bs->file;
57+ }
58+ qdict_extract_subqdict(options, NULL, "data-file.");
59+ qdict_del(options, "data-file");
60+ } else if (open_data_file) {
61 /* Open external data file */
62 bdrv_graph_co_rdunlock();
63 s->data_file = bdrv_co_open_child(NULL, options, "data-file", bs,
64diff --git a/tests/qemu-iotests/061 b/tests/qemu-iotests/061
65index 53c7d428e..b71ac097d 100755
66--- a/tests/qemu-iotests/061
67+++ b/tests/qemu-iotests/061
68@@ -326,12 +326,14 @@ $QEMU_IMG amend -o "data_file=foo" "$TEST_IMG"
69 echo
70 _make_test_img -o "compat=1.1,data_file=$TEST_IMG.data" 64M
71 $QEMU_IMG amend -o "data_file=foo" "$TEST_IMG"
72-_img_info --format-specific
73+$QEMU_IO -c "read 0 4k" "$TEST_IMG" 2>&1 | _filter_testdir | _filter_imgfmt
74+$QEMU_IO -c "open -o data-file.filename=$TEST_IMG.data,file.filename=$TEST_IMG" -c "read 0 4k" | _filter_qemu_io
75 TEST_IMG="data-file.filename=$TEST_IMG.data,file.filename=$TEST_IMG" _img_info --format-specific --image-opts
76
77 echo
78 $QEMU_IMG amend -o "data_file=" --image-opts "data-file.filename=$TEST_IMG.data,file.filename=$TEST_IMG"
79-_img_info --format-specific
80+$QEMU_IO -c "read 0 4k" "$TEST_IMG" 2>&1 | _filter_testdir | _filter_imgfmt
81+$QEMU_IO -c "open -o data-file.filename=$TEST_IMG.data,file.filename=$TEST_IMG" -c "read 0 4k" | _filter_qemu_io
82 TEST_IMG="data-file.filename=$TEST_IMG.data,file.filename=$TEST_IMG" _img_info --format-specific --image-opts
83
84 echo
85diff --git a/tests/qemu-iotests/061.out b/tests/qemu-iotests/061.out
86index 139fc6817..24c33add7 100644
87--- a/tests/qemu-iotests/061.out
88+++ b/tests/qemu-iotests/061.out
89@@ -545,7 +545,9 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
90 qemu-img: data-file can only be set for images that use an external data file
91
92 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data
93-qemu-img: Could not open 'TEST_DIR/t.IMGFMT': Could not open 'foo': No such file or directory
94+qemu-io: can't open device TEST_DIR/t.IMGFMT: Could not open 'foo': No such file or directory
95+read 4096/4096 bytes at offset 0
96+4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
97 image: TEST_DIR/t.IMGFMT
98 file format: IMGFMT
99 virtual size: 64 MiB (67108864 bytes)
100@@ -560,7 +562,9 @@ Format specific information:
101 corrupt: false
102 extended l2: false
103
104-qemu-img: Could not open 'TEST_DIR/t.IMGFMT': 'data-file' is required for this image
105+qemu-io: can't open device TEST_DIR/t.IMGFMT: 'data-file' is required for this image
106+read 4096/4096 bytes at offset 0
107+4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
108 image: TEST_DIR/t.IMGFMT
109 file format: IMGFMT
110 virtual size: 64 MiB (67108864 bytes)
111--
1122.40.0
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0002.patch b/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0002.patch
deleted file mode 100644
index 686176189c..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0002.patch
+++ /dev/null
@@ -1,55 +0,0 @@
1From 2eb42a728d27a43fdcad5f37d3f65706ce6deba5 Mon Sep 17 00:00:00 2001
2From: Kevin Wolf <kwolf@redhat.com>
3Date: Fri, 16 Aug 2024 09:35:24 +0000
4Subject: [PATCH] iotests/244: Don't store data-file with protocol in image
5
6We want to disable filename parsing for data files because it's too easy
7to abuse in malicious image files. Make the test ready for the change by
8passing the data file explicitly in command line options.
9
10Cc: qemu-stable@nongnu.org
11Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12Reviewed-by: Eric Blake <eblake@redhat.com>
13Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
14Reviewed-by: Hanna Czenczek <hreitz@redhat.com>
15
16CVE: CVE-2024-4467
17Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/2eb42a728d27a43fdcad5f37d3f65706ce6deba5]
18
19Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
20---
21 tests/qemu-iotests/244 | 19 ++++++++++++++++---
22 1 file changed, 16 insertions(+), 3 deletions(-)
23
24diff --git a/tests/qemu-iotests/244 b/tests/qemu-iotests/244
25index 3e61fa25b..bb9cc6512 100755
26--- a/tests/qemu-iotests/244
27+++ b/tests/qemu-iotests/244
28@@ -215,9 +215,22 @@ $QEMU_IMG convert -f $IMGFMT -O $IMGFMT -n -C "$TEST_IMG.src" "$TEST_IMG"
29 $QEMU_IMG compare -f $IMGFMT -F $IMGFMT "$TEST_IMG.src" "$TEST_IMG"
30
31 # blkdebug doesn't support copy offloading, so this tests the error path
32-$QEMU_IMG amend -f $IMGFMT -o "data_file=blkdebug::$TEST_IMG.data" "$TEST_IMG"
33-$QEMU_IMG convert -f $IMGFMT -O $IMGFMT -n -C "$TEST_IMG.src" "$TEST_IMG"
34-$QEMU_IMG compare -f $IMGFMT -F $IMGFMT "$TEST_IMG.src" "$TEST_IMG"
35+test_img_with_blkdebug="json:{
36+ 'driver': 'qcow2',
37+ 'file': {
38+ 'driver': 'file',
39+ 'filename': '$TEST_IMG'
40+ },
41+ 'data-file': {
42+ 'driver': 'blkdebug',
43+ 'image': {
44+ 'driver': 'file',
45+ 'filename': '$TEST_IMG.data'
46+ }
47+ }
48+}"
49+$QEMU_IMG convert -f $IMGFMT -O $IMGFMT -n -C "$TEST_IMG.src" "$test_img_with_blkdebug"
50+$QEMU_IMG compare -f $IMGFMT -F $IMGFMT "$TEST_IMG.src" "$test_img_with_blkdebug"
51
52 echo
53 echo "=== Flushing should flush the data file ==="
54--
552.40.0
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0003.patch b/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0003.patch
deleted file mode 100644
index 02611d6732..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0003.patch
+++ /dev/null
@@ -1,57 +0,0 @@
1From 7e1110664ecbc4826f3c978ccb06b6c1bce823e6 Mon Sep 17 00:00:00 2001
2From: Kevin Wolf <kwolf@redhat.com>
3Date: Fri, 16 Aug 2024 10:24:58 +0000
4Subject: [PATCH] iotests/270: Don't store data-file with json: prefix in image
5
6We want to disable filename parsing for data files because it's too easy
7to abuse in malicious image files. Make the test ready for the change by
8passing the data file explicitly in command line options.
9
10Cc: qemu-stable@nongnu.org
11Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12Reviewed-by: Eric Blake <eblake@redhat.com>
13Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
14Reviewed-by: Hanna Czenczek <hreitz@redhat.com>
15
16CVE: CVE-2024-4467
17Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/7e1110664ecbc4826f3c978ccb06b6c1bce823e6]
18
19Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
20---
21 tests/qemu-iotests/270 | 14 +++++++++++---
22 1 file changed, 11 insertions(+), 3 deletions(-)
23
24diff --git a/tests/qemu-iotests/270 b/tests/qemu-iotests/270
25index 74352342d..c37b674aa 100755
26--- a/tests/qemu-iotests/270
27+++ b/tests/qemu-iotests/270
28@@ -60,8 +60,16 @@ _make_test_img -o cluster_size=2M,data_file="$TEST_IMG.orig" \
29 # "write" 2G of data without using any space.
30 # (qemu-img create does not like it, though, because null-co does not
31 # support image creation.)
32-$QEMU_IMG amend -o data_file="json:{'driver':'null-co',,'size':'4294967296'}" \
33- "$TEST_IMG"
34+test_img_with_null_data="json:{
35+ 'driver': '$IMGFMT',
36+ 'file': {
37+ 'filename': '$TEST_IMG'
38+ },
39+ 'data-file': {
40+ 'driver': 'null-co',
41+ 'size':'4294967296'
42+ }
43+}"
44
45 # This gives us a range of:
46 # 2^31 - 512 + 768 - 1 = 2^31 + 255 > 2^31
47@@ -74,7 +82,7 @@ $QEMU_IMG amend -o data_file="json:{'driver':'null-co',,'size':'4294967296'}" \
48 # on L2 boundaries, we need large L2 tables; hence the cluster size of
49 # 2 MB. (Anything from 256 kB should work, though, because then one L2
50 # table covers 8 GB.)
51-$QEMU_IO -c "write 768 $((2 ** 31 - 512))" "$TEST_IMG" | _filter_qemu_io
52+$QEMU_IO -c "write 768 $((2 ** 31 - 512))" "$test_img_with_null_data" | _filter_qemu_io
53
54 _check_test_img
55
56--
572.40.0
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0004.patch b/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0004.patch
deleted file mode 100644
index 7568a453c4..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0004.patch
+++ /dev/null
@@ -1,1187 +0,0 @@
1From 6bc30f19498547fac9cef98316a65cf6c1f14205 Mon Sep 17 00:00:00 2001
2From: Stefan Hajnoczi <stefanha@redhat.com>
3Date: Tue, 5 Dec 2023 13:20:02 -0500
4Subject: [PATCH] graph-lock: remove AioContext locking
5
6Stop acquiring/releasing the AioContext lock in
7bdrv_graph_wrlock()/bdrv_graph_unlock() since the lock no longer has any
8effect.
9
10The distinction between bdrv_graph_wrunlock() and
11bdrv_graph_wrunlock_ctx() becomes meaningless and they can be collapsed
12into one function.
13
14Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
15Reviewed-by: Eric Blake <eblake@redhat.com>
16Reviewed-by: Kevin Wolf <kwolf@redhat.com>
17Message-ID: <20231205182011.1976568-6-stefanha@redhat.com>
18Signed-off-by: Kevin Wolf <kwolf@redhat.com>
19
20CVE: CVE-2024-4467
21Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/6bc30f19498547fac9cef98316a65cf6c1f14205]
22
23Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
24---
25 block.c | 50 +++++++++++++++---------------
26 block/backup.c | 4 +--
27 block/blklogwrites.c | 8 ++---
28 block/blkverify.c | 4 +--
29 block/block-backend.c | 11 +++----
30 block/commit.c | 16 +++++-----
31 block/graph-lock.c | 44 ++------------------------
32 block/mirror.c | 22 ++++++-------
33 block/qcow2.c | 4 +--
34 block/quorum.c | 8 ++---
35 block/replication.c | 14 ++++-----
36 block/snapshot.c | 4 +--
37 block/stream.c | 12 +++----
38 block/vmdk.c | 20 ++++++------
39 blockdev.c | 8 ++---
40 blockjob.c | 12 +++----
41 include/block/graph-lock.h | 21 ++-----------
42 scripts/block-coroutine-wrapper.py | 4 +--
43 tests/unit/test-bdrv-drain.c | 40 ++++++++++++------------
44 tests/unit/test-bdrv-graph-mod.c | 20 ++++++------
45 20 files changed, 133 insertions(+), 193 deletions(-)
46
47diff --git a/block.c b/block.c
48index bfb0861ec..25e1ebc60 100644
49--- a/block.c
50+++ b/block.c
51@@ -1708,12 +1708,12 @@ bdrv_open_driver(BlockDriverState *bs, BlockDriver *drv, const char *node_name,
52 open_failed:
53 bs->drv = NULL;
54
55- bdrv_graph_wrlock(NULL);
56+ bdrv_graph_wrlock();
57 if (bs->file != NULL) {
58 bdrv_unref_child(bs, bs->file);
59 assert(!bs->file);
60 }
61- bdrv_graph_wrunlock(NULL);
62+ bdrv_graph_wrunlock();
63
64 g_free(bs->opaque);
65 bs->opaque = NULL;
66@@ -3575,9 +3575,9 @@ int bdrv_set_backing_hd(BlockDriverState *bs, BlockDriverState *backing_hd,
67
68 bdrv_ref(drain_bs);
69 bdrv_drained_begin(drain_bs);
70- bdrv_graph_wrlock(backing_hd);
71+ bdrv_graph_wrlock();
72 ret = bdrv_set_backing_hd_drained(bs, backing_hd, errp);
73- bdrv_graph_wrunlock(backing_hd);
74+ bdrv_graph_wrunlock();
75 bdrv_drained_end(drain_bs);
76 bdrv_unref(drain_bs);
77
78@@ -3790,13 +3790,13 @@ BdrvChild *bdrv_open_child(const char *filename,
79 return NULL;
80 }
81
82- bdrv_graph_wrlock(NULL);
83+ bdrv_graph_wrlock();
84 ctx = bdrv_get_aio_context(bs);
85 aio_context_acquire(ctx);
86 child = bdrv_attach_child(parent, bs, bdref_key, child_class, child_role,
87 errp);
88 aio_context_release(ctx);
89- bdrv_graph_wrunlock(NULL);
90+ bdrv_graph_wrunlock();
91
92 return child;
93 }
94@@ -4650,9 +4650,9 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, Error **errp)
95 aio_context_release(ctx);
96 }
97
98- bdrv_graph_wrlock(NULL);
99+ bdrv_graph_wrlock();
100 tran_commit(tran);
101- bdrv_graph_wrunlock(NULL);
102+ bdrv_graph_wrunlock();
103
104 QTAILQ_FOREACH_REVERSE(bs_entry, bs_queue, entry) {
105 BlockDriverState *bs = bs_entry->state.bs;
106@@ -4669,9 +4669,9 @@ int bdrv_reopen_multiple(BlockReopenQueue *bs_queue, Error **errp)
107 goto cleanup;
108
109 abort:
110- bdrv_graph_wrlock(NULL);
111+ bdrv_graph_wrlock();
112 tran_abort(tran);
113- bdrv_graph_wrunlock(NULL);
114+ bdrv_graph_wrunlock();
115
116 QTAILQ_FOREACH_SAFE(bs_entry, bs_queue, entry, next) {
117 if (bs_entry->prepared) {
118@@ -4852,12 +4852,12 @@ bdrv_reopen_parse_file_or_backing(BDRVReopenState *reopen_state,
119 }
120
121 bdrv_graph_rdunlock_main_loop();
122- bdrv_graph_wrlock(new_child_bs);
123+ bdrv_graph_wrlock();
124
125 ret = bdrv_set_file_or_backing_noperm(bs, new_child_bs, is_backing,
126 tran, errp);
127
128- bdrv_graph_wrunlock_ctx(ctx);
129+ bdrv_graph_wrunlock();
130
131 if (old_ctx != ctx) {
132 aio_context_release(ctx);
133@@ -5209,14 +5209,14 @@ static void bdrv_close(BlockDriverState *bs)
134 bs->drv = NULL;
135 }
136
137- bdrv_graph_wrlock(bs);
138+ bdrv_graph_wrlock();
139 QLIST_FOREACH_SAFE(child, &bs->children, next, next) {
140 bdrv_unref_child(bs, child);
141 }
142
143 assert(!bs->backing);
144 assert(!bs->file);
145- bdrv_graph_wrunlock(bs);
146+ bdrv_graph_wrunlock();
147
148 g_free(bs->opaque);
149 bs->opaque = NULL;
150@@ -5509,9 +5509,9 @@ int bdrv_drop_filter(BlockDriverState *bs, Error **errp)
151 bdrv_graph_rdunlock_main_loop();
152
153 bdrv_drained_begin(child_bs);
154- bdrv_graph_wrlock(bs);
155+ bdrv_graph_wrlock();
156 ret = bdrv_replace_node_common(bs, child_bs, true, true, errp);
157- bdrv_graph_wrunlock(bs);
158+ bdrv_graph_wrunlock();
159 bdrv_drained_end(child_bs);
160
161 return ret;
162@@ -5561,7 +5561,7 @@ int bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top,
163 aio_context_acquire(old_context);
164 new_context = NULL;
165
166- bdrv_graph_wrlock(bs_top);
167+ bdrv_graph_wrlock();
168
169 child = bdrv_attach_child_noperm(bs_new, bs_top, "backing",
170 &child_of_bds, bdrv_backing_role(bs_new),
171@@ -5593,7 +5593,7 @@ out:
172 tran_finalize(tran, ret);
173
174 bdrv_refresh_limits(bs_top, NULL, NULL);
175- bdrv_graph_wrunlock(bs_top);
176+ bdrv_graph_wrunlock();
177
178 bdrv_drained_end(bs_top);
179 bdrv_drained_end(bs_new);
180@@ -5620,7 +5620,7 @@ int bdrv_replace_child_bs(BdrvChild *child, BlockDriverState *new_bs,
181 bdrv_ref(old_bs);
182 bdrv_drained_begin(old_bs);
183 bdrv_drained_begin(new_bs);
184- bdrv_graph_wrlock(new_bs);
185+ bdrv_graph_wrlock();
186
187 bdrv_replace_child_tran(child, new_bs, tran);
188
189@@ -5631,7 +5631,7 @@ int bdrv_replace_child_bs(BdrvChild *child, BlockDriverState *new_bs,
190
191 tran_finalize(tran, ret);
192
193- bdrv_graph_wrunlock(new_bs);
194+ bdrv_graph_wrunlock();
195 bdrv_drained_end(old_bs);
196 bdrv_drained_end(new_bs);
197 bdrv_unref(old_bs);
198@@ -5718,9 +5718,9 @@ BlockDriverState *bdrv_insert_node(BlockDriverState *bs, QDict *options,
199 bdrv_ref(bs);
200 bdrv_drained_begin(bs);
201 bdrv_drained_begin(new_node_bs);
202- bdrv_graph_wrlock(new_node_bs);
203+ bdrv_graph_wrlock();
204 ret = bdrv_replace_node(bs, new_node_bs, errp);
205- bdrv_graph_wrunlock(new_node_bs);
206+ bdrv_graph_wrunlock();
207 bdrv_drained_end(new_node_bs);
208 bdrv_drained_end(bs);
209 bdrv_unref(bs);
210@@ -5975,7 +5975,7 @@ int bdrv_drop_intermediate(BlockDriverState *top, BlockDriverState *base,
211
212 bdrv_ref(top);
213 bdrv_drained_begin(base);
214- bdrv_graph_wrlock(base);
215+ bdrv_graph_wrlock();
216
217 if (!top->drv || !base->drv) {
218 goto exit_wrlock;
219@@ -6015,7 +6015,7 @@ int bdrv_drop_intermediate(BlockDriverState *top, BlockDriverState *base,
220 * That's a FIXME.
221 */
222 bdrv_replace_node_common(top, base, false, false, &local_err);
223- bdrv_graph_wrunlock(base);
224+ bdrv_graph_wrunlock();
225
226 if (local_err) {
227 error_report_err(local_err);
228@@ -6052,7 +6052,7 @@ int bdrv_drop_intermediate(BlockDriverState *top, BlockDriverState *base,
229 goto exit;
230
231 exit_wrlock:
232- bdrv_graph_wrunlock(base);
233+ bdrv_graph_wrunlock();
234 exit:
235 bdrv_drained_end(base);
236 bdrv_unref(top);
237diff --git a/block/backup.c b/block/backup.c
238index 8aae5836d..ec29d6b81 100644
239--- a/block/backup.c
240+++ b/block/backup.c
241@@ -496,10 +496,10 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
242 block_copy_set_speed(bcs, speed);
243
244 /* Required permissions are taken by copy-before-write filter target */
245- bdrv_graph_wrlock(target);
246+ bdrv_graph_wrlock();
247 block_job_add_bdrv(&job->common, "target", target, 0, BLK_PERM_ALL,
248 &error_abort);
249- bdrv_graph_wrunlock(target);
250+ bdrv_graph_wrunlock();
251
252 return &job->common;
253
254diff --git a/block/blklogwrites.c b/block/blklogwrites.c
255index 84e03f309..ba717dab4 100644
256--- a/block/blklogwrites.c
257+++ b/block/blklogwrites.c
258@@ -251,9 +251,9 @@ static int blk_log_writes_open(BlockDriverState *bs, QDict *options, int flags,
259 ret = 0;
260 fail_log:
261 if (ret < 0) {
262- bdrv_graph_wrlock(NULL);
263+ bdrv_graph_wrlock();
264 bdrv_unref_child(bs, s->log_file);
265- bdrv_graph_wrunlock(NULL);
266+ bdrv_graph_wrunlock();
267 s->log_file = NULL;
268 }
269 fail:
270@@ -265,10 +265,10 @@ static void blk_log_writes_close(BlockDriverState *bs)
271 {
272 BDRVBlkLogWritesState *s = bs->opaque;
273
274- bdrv_graph_wrlock(NULL);
275+ bdrv_graph_wrlock();
276 bdrv_unref_child(bs, s->log_file);
277 s->log_file = NULL;
278- bdrv_graph_wrunlock(NULL);
279+ bdrv_graph_wrunlock();
280 }
281
282 static int64_t coroutine_fn GRAPH_RDLOCK
283diff --git a/block/blkverify.c b/block/blkverify.c
284index 9b17c4664..ec45d8335 100644
285--- a/block/blkverify.c
286+++ b/block/blkverify.c
287@@ -151,10 +151,10 @@ static void blkverify_close(BlockDriverState *bs)
288 {
289 BDRVBlkverifyState *s = bs->opaque;
290
291- bdrv_graph_wrlock(NULL);
292+ bdrv_graph_wrlock();
293 bdrv_unref_child(bs, s->test_file);
294 s->test_file = NULL;
295- bdrv_graph_wrunlock(NULL);
296+ bdrv_graph_wrunlock();
297 }
298
299 static int64_t coroutine_fn GRAPH_RDLOCK
300diff --git a/block/block-backend.c b/block/block-backend.c
301index 86315d62c..a2348b31e 100644
302--- a/block/block-backend.c
303+++ b/block/block-backend.c
304@@ -885,7 +885,6 @@ void blk_remove_bs(BlockBackend *blk)
305 {
306 ThrottleGroupMember *tgm = &blk->public.throttle_group_member;
307 BdrvChild *root;
308- AioContext *ctx;
309
310 GLOBAL_STATE_CODE();
311
312@@ -915,10 +914,9 @@ void blk_remove_bs(BlockBackend *blk)
313 root = blk->root;
314 blk->root = NULL;
315
316- ctx = bdrv_get_aio_context(root->bs);
317- bdrv_graph_wrlock(root->bs);
318+ bdrv_graph_wrlock();
319 bdrv_root_unref_child(root);
320- bdrv_graph_wrunlock_ctx(ctx);
321+ bdrv_graph_wrunlock();
322 }
323
324 /*
325@@ -929,16 +927,15 @@ void blk_remove_bs(BlockBackend *blk)
326 int blk_insert_bs(BlockBackend *blk, BlockDriverState *bs, Error **errp)
327 {
328 ThrottleGroupMember *tgm = &blk->public.throttle_group_member;
329- AioContext *ctx = bdrv_get_aio_context(bs);
330
331 GLOBAL_STATE_CODE();
332 bdrv_ref(bs);
333- bdrv_graph_wrlock(bs);
334+ bdrv_graph_wrlock();
335 blk->root = bdrv_root_attach_child(bs, "root", &child_root,
336 BDRV_CHILD_FILTERED | BDRV_CHILD_PRIMARY,
337 blk->perm, blk->shared_perm,
338 blk, errp);
339- bdrv_graph_wrunlock_ctx(ctx);
340+ bdrv_graph_wrunlock();
341 if (blk->root == NULL) {
342 return -EPERM;
343 }
344diff --git a/block/commit.c b/block/commit.c
345index 69cc75be0..1dd7a65ff 100644
346--- a/block/commit.c
347+++ b/block/commit.c
348@@ -100,9 +100,9 @@ static void commit_abort(Job *job)
349 bdrv_graph_rdunlock_main_loop();
350
351 bdrv_drained_begin(commit_top_backing_bs);
352- bdrv_graph_wrlock(commit_top_backing_bs);
353+ bdrv_graph_wrlock();
354 bdrv_replace_node(s->commit_top_bs, commit_top_backing_bs, &error_abort);
355- bdrv_graph_wrunlock(commit_top_backing_bs);
356+ bdrv_graph_wrunlock();
357 bdrv_drained_end(commit_top_backing_bs);
358
359 bdrv_unref(s->commit_top_bs);
360@@ -339,7 +339,7 @@ void commit_start(const char *job_id, BlockDriverState *bs,
361 * this is the responsibility of the interface (i.e. whoever calls
362 * commit_start()).
363 */
364- bdrv_graph_wrlock(top);
365+ bdrv_graph_wrlock();
366 s->base_overlay = bdrv_find_overlay(top, base);
367 assert(s->base_overlay);
368
369@@ -370,19 +370,19 @@ void commit_start(const char *job_id, BlockDriverState *bs,
370 ret = block_job_add_bdrv(&s->common, "intermediate node", iter, 0,
371 iter_shared_perms, errp);
372 if (ret < 0) {
373- bdrv_graph_wrunlock(top);
374+ bdrv_graph_wrunlock();
375 goto fail;
376 }
377 }
378
379 if (bdrv_freeze_backing_chain(commit_top_bs, base, errp) < 0) {
380- bdrv_graph_wrunlock(top);
381+ bdrv_graph_wrunlock();
382 goto fail;
383 }
384 s->chain_frozen = true;
385
386 ret = block_job_add_bdrv(&s->common, "base", base, 0, BLK_PERM_ALL, errp);
387- bdrv_graph_wrunlock(top);
388+ bdrv_graph_wrunlock();
389
390 if (ret < 0) {
391 goto fail;
392@@ -434,9 +434,9 @@ fail:
393 * otherwise this would fail because of lack of permissions. */
394 if (commit_top_bs) {
395 bdrv_drained_begin(top);
396- bdrv_graph_wrlock(top);
397+ bdrv_graph_wrlock();
398 bdrv_replace_node(commit_top_bs, top, &error_abort);
399- bdrv_graph_wrunlock(top);
400+ bdrv_graph_wrunlock();
401 bdrv_drained_end(top);
402 }
403 }
404diff --git a/block/graph-lock.c b/block/graph-lock.c
405index 079e878d9..c81162b14 100644
406--- a/block/graph-lock.c
407+++ b/block/graph-lock.c
408@@ -106,27 +106,12 @@ static uint32_t reader_count(void)
409 return rd;
410 }
411
412-void no_coroutine_fn bdrv_graph_wrlock(BlockDriverState *bs)
413+void no_coroutine_fn bdrv_graph_wrlock(void)
414 {
415- AioContext *ctx = NULL;
416-
417 GLOBAL_STATE_CODE();
418 assert(!qatomic_read(&has_writer));
419 assert(!qemu_in_coroutine());
420
421- /*
422- * Release only non-mainloop AioContext. The mainloop often relies on the
423- * BQL and doesn't lock the main AioContext before doing things.
424- */
425- if (bs) {
426- ctx = bdrv_get_aio_context(bs);
427- if (ctx != qemu_get_aio_context()) {
428- aio_context_release(ctx);
429- } else {
430- ctx = NULL;
431- }
432- }
433-
434 /* Make sure that constantly arriving new I/O doesn't cause starvation */
435 bdrv_drain_all_begin_nopoll();
436
437@@ -155,27 +140,13 @@ void no_coroutine_fn bdrv_graph_wrlock(BlockDriverState *bs)
438 } while (reader_count() >= 1);
439
440 bdrv_drain_all_end();
441-
442- if (ctx) {
443- aio_context_acquire(bdrv_get_aio_context(bs));
444- }
445 }
446
447-void no_coroutine_fn bdrv_graph_wrunlock_ctx(AioContext *ctx)
448+void no_coroutine_fn bdrv_graph_wrunlock(void)
449 {
450 GLOBAL_STATE_CODE();
451 assert(qatomic_read(&has_writer));
452
453- /*
454- * Release only non-mainloop AioContext. The mainloop often relies on the
455- * BQL and doesn't lock the main AioContext before doing things.
456- */
457- if (ctx && ctx != qemu_get_aio_context()) {
458- aio_context_release(ctx);
459- } else {
460- ctx = NULL;
461- }
462-
463 WITH_QEMU_LOCK_GUARD(&aio_context_list_lock) {
464 /*
465 * No need for memory barriers, this works in pair with
466@@ -197,17 +168,6 @@ void no_coroutine_fn bdrv_graph_wrunlock_ctx(AioContext *ctx)
467 * progress.
468 */
469 aio_bh_poll(qemu_get_aio_context());
470-
471- if (ctx) {
472- aio_context_acquire(ctx);
473- }
474-}
475-
476-void no_coroutine_fn bdrv_graph_wrunlock(BlockDriverState *bs)
477-{
478- AioContext *ctx = bs ? bdrv_get_aio_context(bs) : NULL;
479-
480- bdrv_graph_wrunlock_ctx(ctx);
481 }
482
483 void coroutine_fn bdrv_graph_co_rdlock(void)
484diff --git a/block/mirror.c b/block/mirror.c
485index abbddb39e..f9db6f0f7 100644
486--- a/block/mirror.c
487+++ b/block/mirror.c
488@@ -768,7 +768,7 @@ static int mirror_exit_common(Job *job)
489 * check for an op blocker on @to_replace, and we have our own
490 * there.
491 */
492- bdrv_graph_wrlock(target_bs);
493+ bdrv_graph_wrlock();
494 if (bdrv_recurse_can_replace(src, to_replace)) {
495 bdrv_replace_node(to_replace, target_bs, &local_err);
496 } else {
497@@ -777,7 +777,7 @@ static int mirror_exit_common(Job *job)
498 "would not lead to an abrupt change of visible data",
499 to_replace->node_name, target_bs->node_name);
500 }
501- bdrv_graph_wrunlock(target_bs);
502+ bdrv_graph_wrunlock();
503 bdrv_drained_end(to_replace);
504 if (local_err) {
505 error_report_err(local_err);
506@@ -800,9 +800,9 @@ static int mirror_exit_common(Job *job)
507 * valid.
508 */
509 block_job_remove_all_bdrv(bjob);
510- bdrv_graph_wrlock(mirror_top_bs);
511+ bdrv_graph_wrlock();
512 bdrv_replace_node(mirror_top_bs, mirror_top_bs->backing->bs, &error_abort);
513- bdrv_graph_wrunlock(mirror_top_bs);
514+ bdrv_graph_wrunlock();
515
516 bdrv_drained_end(target_bs);
517 bdrv_unref(target_bs);
518@@ -1916,13 +1916,13 @@ static BlockJob *mirror_start_job(
519 */
520 bdrv_disable_dirty_bitmap(s->dirty_bitmap);
521
522- bdrv_graph_wrlock(bs);
523+ bdrv_graph_wrlock();
524 ret = block_job_add_bdrv(&s->common, "source", bs, 0,
525 BLK_PERM_WRITE_UNCHANGED | BLK_PERM_WRITE |
526 BLK_PERM_CONSISTENT_READ,
527 errp);
528 if (ret < 0) {
529- bdrv_graph_wrunlock(bs);
530+ bdrv_graph_wrunlock();
531 goto fail;
532 }
533
534@@ -1967,17 +1967,17 @@ static BlockJob *mirror_start_job(
535 ret = block_job_add_bdrv(&s->common, "intermediate node", iter, 0,
536 iter_shared_perms, errp);
537 if (ret < 0) {
538- bdrv_graph_wrunlock(bs);
539+ bdrv_graph_wrunlock();
540 goto fail;
541 }
542 }
543
544 if (bdrv_freeze_backing_chain(mirror_top_bs, target, errp) < 0) {
545- bdrv_graph_wrunlock(bs);
546+ bdrv_graph_wrunlock();
547 goto fail;
548 }
549 }
550- bdrv_graph_wrunlock(bs);
551+ bdrv_graph_wrunlock();
552
553 QTAILQ_INIT(&s->ops_in_flight);
554
555@@ -2003,12 +2003,12 @@ fail:
556
557 bs_opaque->stop = true;
558 bdrv_drained_begin(bs);
559- bdrv_graph_wrlock(bs);
560+ bdrv_graph_wrlock();
561 assert(mirror_top_bs->backing->bs == bs);
562 bdrv_child_refresh_perms(mirror_top_bs, mirror_top_bs->backing,
563 &error_abort);
564 bdrv_replace_node(mirror_top_bs, bs, &error_abort);
565- bdrv_graph_wrunlock(bs);
566+ bdrv_graph_wrunlock();
567 bdrv_drained_end(bs);
568
569 bdrv_unref(mirror_top_bs);
570diff --git a/block/qcow2.c b/block/qcow2.c
571index 7af7c0bee..77dd49d4f 100644
572--- a/block/qcow2.c
573+++ b/block/qcow2.c
574@@ -2822,9 +2822,9 @@ qcow2_do_close(BlockDriverState *bs, bool close_data_file)
575 if (close_data_file && has_data_file(bs)) {
576 GLOBAL_STATE_CODE();
577 bdrv_graph_rdunlock_main_loop();
578- bdrv_graph_wrlock(NULL);
579+ bdrv_graph_wrlock();
580 bdrv_unref_child(bs, s->data_file);
581- bdrv_graph_wrunlock(NULL);
582+ bdrv_graph_wrunlock();
583 s->data_file = NULL;
584 bdrv_graph_rdlock_main_loop();
585 }
586diff --git a/block/quorum.c b/block/quorum.c
587index 505b8b3e1..db8fe891c 100644
588--- a/block/quorum.c
589+++ b/block/quorum.c
590@@ -1037,14 +1037,14 @@ static int quorum_open(BlockDriverState *bs, QDict *options, int flags,
591
592 close_exit:
593 /* cleanup on error */
594- bdrv_graph_wrlock(NULL);
595+ bdrv_graph_wrlock();
596 for (i = 0; i < s->num_children; i++) {
597 if (!opened[i]) {
598 continue;
599 }
600 bdrv_unref_child(bs, s->children[i]);
601 }
602- bdrv_graph_wrunlock(NULL);
603+ bdrv_graph_wrunlock();
604 g_free(s->children);
605 g_free(opened);
606 exit:
607@@ -1057,11 +1057,11 @@ static void quorum_close(BlockDriverState *bs)
608 BDRVQuorumState *s = bs->opaque;
609 int i;
610
611- bdrv_graph_wrlock(NULL);
612+ bdrv_graph_wrlock();
613 for (i = 0; i < s->num_children; i++) {
614 bdrv_unref_child(bs, s->children[i]);
615 }
616- bdrv_graph_wrunlock(NULL);
617+ bdrv_graph_wrunlock();
618
619 g_free(s->children);
620 }
621diff --git a/block/replication.c b/block/replication.c
622index 5ded5f1ca..424b537ff 100644
623--- a/block/replication.c
624+++ b/block/replication.c
625@@ -560,7 +560,7 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
626 return;
627 }
628
629- bdrv_graph_wrlock(bs);
630+ bdrv_graph_wrlock();
631
632 bdrv_ref(hidden_disk->bs);
633 s->hidden_disk = bdrv_attach_child(bs, hidden_disk->bs, "hidden disk",
634@@ -568,7 +568,7 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
635 &local_err);
636 if (local_err) {
637 error_propagate(errp, local_err);
638- bdrv_graph_wrunlock(bs);
639+ bdrv_graph_wrunlock();
640 aio_context_release(aio_context);
641 return;
642 }
643@@ -579,7 +579,7 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
644 BDRV_CHILD_DATA, &local_err);
645 if (local_err) {
646 error_propagate(errp, local_err);
647- bdrv_graph_wrunlock(bs);
648+ bdrv_graph_wrunlock();
649 aio_context_release(aio_context);
650 return;
651 }
652@@ -592,7 +592,7 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
653 if (!top_bs || !bdrv_is_root_node(top_bs) ||
654 !check_top_bs(top_bs, bs)) {
655 error_setg(errp, "No top_bs or it is invalid");
656- bdrv_graph_wrunlock(bs);
657+ bdrv_graph_wrunlock();
658 reopen_backing_file(bs, false, NULL);
659 aio_context_release(aio_context);
660 return;
661@@ -600,7 +600,7 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
662 bdrv_op_block_all(top_bs, s->blocker);
663 bdrv_op_unblock(top_bs, BLOCK_OP_TYPE_DATAPLANE, s->blocker);
664
665- bdrv_graph_wrunlock(bs);
666+ bdrv_graph_wrunlock();
667
668 s->backup_job = backup_job_create(
669 NULL, s->secondary_disk->bs, s->hidden_disk->bs,
670@@ -691,12 +691,12 @@ static void replication_done(void *opaque, int ret)
671 if (ret == 0) {
672 s->stage = BLOCK_REPLICATION_DONE;
673
674- bdrv_graph_wrlock(NULL);
675+ bdrv_graph_wrlock();
676 bdrv_unref_child(bs, s->secondary_disk);
677 s->secondary_disk = NULL;
678 bdrv_unref_child(bs, s->hidden_disk);
679 s->hidden_disk = NULL;
680- bdrv_graph_wrunlock(NULL);
681+ bdrv_graph_wrunlock();
682
683 s->error = 0;
684 } else {
685diff --git a/block/snapshot.c b/block/snapshot.c
686index c4d40e80d..6fd720aef 100644
687--- a/block/snapshot.c
688+++ b/block/snapshot.c
689@@ -292,9 +292,9 @@ int bdrv_snapshot_goto(BlockDriverState *bs,
690 }
691
692 /* .bdrv_open() will re-attach it */
693- bdrv_graph_wrlock(NULL);
694+ bdrv_graph_wrlock();
695 bdrv_unref_child(bs, fallback);
696- bdrv_graph_wrunlock(NULL);
697+ bdrv_graph_wrunlock();
698
699 ret = bdrv_snapshot_goto(fallback_bs, snapshot_id, errp);
700 open_ret = drv->bdrv_open(bs, options, bs->open_flags, &local_err);
701diff --git a/block/stream.c b/block/stream.c
702index 01fe7c0f1..048c2d282 100644
703--- a/block/stream.c
704+++ b/block/stream.c
705@@ -99,9 +99,9 @@ static int stream_prepare(Job *job)
706 }
707 }
708
709- bdrv_graph_wrlock(s->target_bs);
710+ bdrv_graph_wrlock();
711 bdrv_set_backing_hd_drained(unfiltered_bs, base, &local_err);
712- bdrv_graph_wrunlock(s->target_bs);
713+ bdrv_graph_wrunlock();
714
715 /*
716 * This call will do I/O, so the graph can change again from here on.
717@@ -366,10 +366,10 @@ void stream_start(const char *job_id, BlockDriverState *bs,
718 * already have our own plans. Also don't allow resize as the image size is
719 * queried only at the job start and then cached.
720 */
721- bdrv_graph_wrlock(bs);
722+ bdrv_graph_wrlock();
723 if (block_job_add_bdrv(&s->common, "active node", bs, 0,
724 basic_flags | BLK_PERM_WRITE, errp)) {
725- bdrv_graph_wrunlock(bs);
726+ bdrv_graph_wrunlock();
727 goto fail;
728 }
729
730@@ -389,11 +389,11 @@ void stream_start(const char *job_id, BlockDriverState *bs,
731 ret = block_job_add_bdrv(&s->common, "intermediate node", iter, 0,
732 basic_flags, errp);
733 if (ret < 0) {
734- bdrv_graph_wrunlock(bs);
735+ bdrv_graph_wrunlock();
736 goto fail;
737 }
738 }
739- bdrv_graph_wrunlock(bs);
740+ bdrv_graph_wrunlock();
741
742 s->base_overlay = base_overlay;
743 s->above_base = above_base;
744diff --git a/block/vmdk.c b/block/vmdk.c
745index d6971c706..bf78e1238 100644
746--- a/block/vmdk.c
747+++ b/block/vmdk.c
748@@ -272,7 +272,7 @@ static void vmdk_free_extents(BlockDriverState *bs)
749 BDRVVmdkState *s = bs->opaque;
750 VmdkExtent *e;
751
752- bdrv_graph_wrlock(NULL);
753+ bdrv_graph_wrlock();
754 for (i = 0; i < s->num_extents; i++) {
755 e = &s->extents[i];
756 g_free(e->l1_table);
757@@ -283,7 +283,7 @@ static void vmdk_free_extents(BlockDriverState *bs)
758 bdrv_unref_child(bs, e->file);
759 }
760 }
761- bdrv_graph_wrunlock(NULL);
762+ bdrv_graph_wrunlock();
763
764 g_free(s->extents);
765 }
766@@ -1247,9 +1247,9 @@ vmdk_parse_extents(const char *desc, BlockDriverState *bs, QDict *options,
767 0, 0, 0, 0, 0, &extent, errp);
768 if (ret < 0) {
769 bdrv_graph_rdunlock_main_loop();
770- bdrv_graph_wrlock(NULL);
771+ bdrv_graph_wrlock();
772 bdrv_unref_child(bs, extent_file);
773- bdrv_graph_wrunlock(NULL);
774+ bdrv_graph_wrunlock();
775 bdrv_graph_rdlock_main_loop();
776 goto out;
777 }
778@@ -1266,9 +1266,9 @@ vmdk_parse_extents(const char *desc, BlockDriverState *bs, QDict *options,
779 g_free(buf);
780 if (ret) {
781 bdrv_graph_rdunlock_main_loop();
782- bdrv_graph_wrlock(NULL);
783+ bdrv_graph_wrlock();
784 bdrv_unref_child(bs, extent_file);
785- bdrv_graph_wrunlock(NULL);
786+ bdrv_graph_wrunlock();
787 bdrv_graph_rdlock_main_loop();
788 goto out;
789 }
790@@ -1277,9 +1277,9 @@ vmdk_parse_extents(const char *desc, BlockDriverState *bs, QDict *options,
791 ret = vmdk_open_se_sparse(bs, extent_file, bs->open_flags, errp);
792 if (ret) {
793 bdrv_graph_rdunlock_main_loop();
794- bdrv_graph_wrlock(NULL);
795+ bdrv_graph_wrlock();
796 bdrv_unref_child(bs, extent_file);
797- bdrv_graph_wrunlock(NULL);
798+ bdrv_graph_wrunlock();
799 bdrv_graph_rdlock_main_loop();
800 goto out;
801 }
802@@ -1287,9 +1287,9 @@ vmdk_parse_extents(const char *desc, BlockDriverState *bs, QDict *options,
803 } else {
804 error_setg(errp, "Unsupported extent type '%s'", type);
805 bdrv_graph_rdunlock_main_loop();
806- bdrv_graph_wrlock(NULL);
807+ bdrv_graph_wrlock();
808 bdrv_unref_child(bs, extent_file);
809- bdrv_graph_wrunlock(NULL);
810+ bdrv_graph_wrunlock();
811 bdrv_graph_rdlock_main_loop();
812 ret = -ENOTSUP;
813 goto out;
814diff --git a/blockdev.c b/blockdev.c
815index c91f49e7b..9e1381169 100644
816--- a/blockdev.c
817+++ b/blockdev.c
818@@ -1611,9 +1611,9 @@ static void external_snapshot_abort(void *opaque)
819 }
820
821 bdrv_drained_begin(state->new_bs);
822- bdrv_graph_wrlock(state->old_bs);
823+ bdrv_graph_wrlock();
824 bdrv_replace_node(state->new_bs, state->old_bs, &error_abort);
825- bdrv_graph_wrunlock(state->old_bs);
826+ bdrv_graph_wrunlock();
827 bdrv_drained_end(state->new_bs);
828
829 bdrv_unref(state->old_bs); /* bdrv_replace_node() ref'ed old_bs */
830@@ -3657,7 +3657,7 @@ void qmp_x_blockdev_change(const char *parent, const char *child,
831 BlockDriverState *parent_bs, *new_bs = NULL;
832 BdrvChild *p_child;
833
834- bdrv_graph_wrlock(NULL);
835+ bdrv_graph_wrlock();
836
837 parent_bs = bdrv_lookup_bs(parent, parent, errp);
838 if (!parent_bs) {
839@@ -3693,7 +3693,7 @@ void qmp_x_blockdev_change(const char *parent, const char *child,
840 }
841
842 out:
843- bdrv_graph_wrunlock(NULL);
844+ bdrv_graph_wrunlock();
845 }
846
847 BlockJobInfoList *qmp_query_block_jobs(Error **errp)
848diff --git a/blockjob.c b/blockjob.c
849index b7a29052b..731041231 100644
850--- a/blockjob.c
851+++ b/blockjob.c
852@@ -199,7 +199,7 @@ void block_job_remove_all_bdrv(BlockJob *job)
853 * to process an already freed BdrvChild.
854 */
855 aio_context_release(job->job.aio_context);
856- bdrv_graph_wrlock(NULL);
857+ bdrv_graph_wrlock();
858 aio_context_acquire(job->job.aio_context);
859 while (job->nodes) {
860 GSList *l = job->nodes;
861@@ -212,7 +212,7 @@ void block_job_remove_all_bdrv(BlockJob *job)
862
863 g_slist_free_1(l);
864 }
865- bdrv_graph_wrunlock_ctx(job->job.aio_context);
866+ bdrv_graph_wrunlock();
867 }
868
869 bool block_job_has_bdrv(BlockJob *job, BlockDriverState *bs)
870@@ -514,7 +514,7 @@ void *block_job_create(const char *job_id, const BlockJobDriver *driver,
871 int ret;
872 GLOBAL_STATE_CODE();
873
874- bdrv_graph_wrlock(bs);
875+ bdrv_graph_wrlock();
876
877 if (job_id == NULL && !(flags & JOB_INTERNAL)) {
878 job_id = bdrv_get_device_name(bs);
879@@ -523,7 +523,7 @@ void *block_job_create(const char *job_id, const BlockJobDriver *driver,
880 job = job_create(job_id, &driver->job_driver, txn, bdrv_get_aio_context(bs),
881 flags, cb, opaque, errp);
882 if (job == NULL) {
883- bdrv_graph_wrunlock(bs);
884+ bdrv_graph_wrunlock();
885 return NULL;
886 }
887
888@@ -563,11 +563,11 @@ void *block_job_create(const char *job_id, const BlockJobDriver *driver,
889 goto fail;
890 }
891
892- bdrv_graph_wrunlock(bs);
893+ bdrv_graph_wrunlock();
894 return job;
895
896 fail:
897- bdrv_graph_wrunlock(bs);
898+ bdrv_graph_wrunlock();
899 job_early_fail(&job->job);
900 return NULL;
901 }
902diff --git a/include/block/graph-lock.h b/include/block/graph-lock.h
903index 22b5db1ed..d7545e82d 100644
904--- a/include/block/graph-lock.h
905+++ b/include/block/graph-lock.h
906@@ -110,34 +110,17 @@ void unregister_aiocontext(AioContext *ctx);
907 *
908 * The wrlock can only be taken from the main loop, with BQL held, as only the
909 * main loop is allowed to modify the graph.
910- *
911- * If @bs is non-NULL, its AioContext is temporarily released.
912- *
913- * This function polls. Callers must not hold the lock of any AioContext other
914- * than the current one and the one of @bs.
915 */
916 void no_coroutine_fn TSA_ACQUIRE(graph_lock) TSA_NO_TSA
917-bdrv_graph_wrlock(BlockDriverState *bs);
918+bdrv_graph_wrlock(void);
919
920 /*
921 * bdrv_graph_wrunlock:
922 * Write finished, reset global has_writer to 0 and restart
923 * all readers that are waiting.
924- *
925- * If @bs is non-NULL, its AioContext is temporarily released.
926- */
927-void no_coroutine_fn TSA_RELEASE(graph_lock) TSA_NO_TSA
928-bdrv_graph_wrunlock(BlockDriverState *bs);
929-
930-/*
931- * bdrv_graph_wrunlock_ctx:
932- * Write finished, reset global has_writer to 0 and restart
933- * all readers that are waiting.
934- *
935- * If @ctx is non-NULL, its lock is temporarily released.
936 */
937 void no_coroutine_fn TSA_RELEASE(graph_lock) TSA_NO_TSA
938-bdrv_graph_wrunlock_ctx(AioContext *ctx);
939+bdrv_graph_wrunlock(void);
940
941 /*
942 * bdrv_graph_co_rdlock:
943diff --git a/scripts/block-coroutine-wrapper.py b/scripts/block-coroutine-wrapper.py
944index a38e5833f..38364fa55 100644
945--- a/scripts/block-coroutine-wrapper.py
946+++ b/scripts/block-coroutine-wrapper.py
947@@ -261,8 +261,8 @@ def gen_no_co_wrapper(func: FuncDecl) -> str:
948 graph_lock=' bdrv_graph_rdlock_main_loop();'
949 graph_unlock=' bdrv_graph_rdunlock_main_loop();'
950 elif func.graph_wrlock:
951- graph_lock=' bdrv_graph_wrlock(NULL);'
952- graph_unlock=' bdrv_graph_wrunlock(NULL);'
953+ graph_lock=' bdrv_graph_wrlock();'
954+ graph_unlock=' bdrv_graph_wrunlock();'
955
956 return f"""\
957 /*
958diff --git a/tests/unit/test-bdrv-drain.c b/tests/unit/test-bdrv-drain.c
959index 704d1a3f3..d9754dfeb 100644
960--- a/tests/unit/test-bdrv-drain.c
961+++ b/tests/unit/test-bdrv-drain.c
962@@ -807,9 +807,9 @@ static void test_blockjob_common_drain_node(enum drain_type drain_type,
963 tjob->bs = src;
964 job = &tjob->common;
965
966- bdrv_graph_wrlock(target);
967+ bdrv_graph_wrlock();
968 block_job_add_bdrv(job, "target", target, 0, BLK_PERM_ALL, &error_abort);
969- bdrv_graph_wrunlock(target);
970+ bdrv_graph_wrunlock();
971
972 switch (result) {
973 case TEST_JOB_SUCCESS:
974@@ -991,11 +991,11 @@ static void bdrv_test_top_close(BlockDriverState *bs)
975 {
976 BdrvChild *c, *next_c;
977
978- bdrv_graph_wrlock(NULL);
979+ bdrv_graph_wrlock();
980 QLIST_FOREACH_SAFE(c, &bs->children, next, next_c) {
981 bdrv_unref_child(bs, c);
982 }
983- bdrv_graph_wrunlock(NULL);
984+ bdrv_graph_wrunlock();
985 }
986
987 static int coroutine_fn GRAPH_RDLOCK
988@@ -1085,10 +1085,10 @@ static void do_test_delete_by_drain(bool detach_instead_of_delete,
989
990 null_bs = bdrv_open("null-co://", NULL, NULL, BDRV_O_RDWR | BDRV_O_PROTOCOL,
991 &error_abort);
992- bdrv_graph_wrlock(NULL);
993+ bdrv_graph_wrlock();
994 bdrv_attach_child(bs, null_bs, "null-child", &child_of_bds,
995 BDRV_CHILD_DATA, &error_abort);
996- bdrv_graph_wrunlock(NULL);
997+ bdrv_graph_wrunlock();
998
999 /* This child will be the one to pass to requests through to, and
1000 * it will stall until a drain occurs */
1001@@ -1096,21 +1096,21 @@ static void do_test_delete_by_drain(bool detach_instead_of_delete,
1002 &error_abort);
1003 child_bs->total_sectors = 65536 >> BDRV_SECTOR_BITS;
1004 /* Takes our reference to child_bs */
1005- bdrv_graph_wrlock(NULL);
1006+ bdrv_graph_wrlock();
1007 tts->wait_child = bdrv_attach_child(bs, child_bs, "wait-child",
1008 &child_of_bds,
1009 BDRV_CHILD_DATA | BDRV_CHILD_PRIMARY,
1010 &error_abort);
1011- bdrv_graph_wrunlock(NULL);
1012+ bdrv_graph_wrunlock();
1013
1014 /* This child is just there to be deleted
1015 * (for detach_instead_of_delete == true) */
1016 null_bs = bdrv_open("null-co://", NULL, NULL, BDRV_O_RDWR | BDRV_O_PROTOCOL,
1017 &error_abort);
1018- bdrv_graph_wrlock(NULL);
1019+ bdrv_graph_wrlock();
1020 bdrv_attach_child(bs, null_bs, "null-child", &child_of_bds, BDRV_CHILD_DATA,
1021 &error_abort);
1022- bdrv_graph_wrunlock(NULL);
1023+ bdrv_graph_wrunlock();
1024
1025 blk = blk_new(qemu_get_aio_context(), BLK_PERM_ALL, BLK_PERM_ALL);
1026 blk_insert_bs(blk, bs, &error_abort);
1027@@ -1193,14 +1193,14 @@ static void no_coroutine_fn detach_indirect_bh(void *opaque)
1028
1029 bdrv_dec_in_flight(data->child_b->bs);
1030
1031- bdrv_graph_wrlock(NULL);
1032+ bdrv_graph_wrlock();
1033 bdrv_unref_child(data->parent_b, data->child_b);
1034
1035 bdrv_ref(data->c);
1036 data->child_c = bdrv_attach_child(data->parent_b, data->c, "PB-C",
1037 &child_of_bds, BDRV_CHILD_DATA,
1038 &error_abort);
1039- bdrv_graph_wrunlock(NULL);
1040+ bdrv_graph_wrunlock();
1041 }
1042
1043 static void coroutine_mixed_fn detach_by_parent_aio_cb(void *opaque, int ret)
1044@@ -1298,7 +1298,7 @@ static void TSA_NO_TSA test_detach_indirect(bool by_parent_cb)
1045 /* Set child relationships */
1046 bdrv_ref(b);
1047 bdrv_ref(a);
1048- bdrv_graph_wrlock(NULL);
1049+ bdrv_graph_wrlock();
1050 child_b = bdrv_attach_child(parent_b, b, "PB-B", &child_of_bds,
1051 BDRV_CHILD_DATA, &error_abort);
1052 child_a = bdrv_attach_child(parent_b, a, "PB-A", &child_of_bds,
1053@@ -1308,7 +1308,7 @@ static void TSA_NO_TSA test_detach_indirect(bool by_parent_cb)
1054 bdrv_attach_child(parent_a, a, "PA-A",
1055 by_parent_cb ? &child_of_bds : &detach_by_driver_cb_class,
1056 BDRV_CHILD_DATA, &error_abort);
1057- bdrv_graph_wrunlock(NULL);
1058+ bdrv_graph_wrunlock();
1059
1060 g_assert_cmpint(parent_a->refcnt, ==, 1);
1061 g_assert_cmpint(parent_b->refcnt, ==, 1);
1062@@ -1727,7 +1727,7 @@ static void test_drop_intermediate_poll(void)
1063 * Establish the chain last, so the chain links are the first
1064 * elements in the BDS.parents lists
1065 */
1066- bdrv_graph_wrlock(NULL);
1067+ bdrv_graph_wrlock();
1068 for (i = 0; i < 3; i++) {
1069 if (i) {
1070 /* Takes the reference to chain[i - 1] */
1071@@ -1735,7 +1735,7 @@ static void test_drop_intermediate_poll(void)
1072 &chain_child_class, BDRV_CHILD_COW, &error_abort);
1073 }
1074 }
1075- bdrv_graph_wrunlock(NULL);
1076+ bdrv_graph_wrunlock();
1077
1078 job = block_job_create("job", &test_simple_job_driver, NULL, job_node,
1079 0, BLK_PERM_ALL, 0, 0, NULL, NULL, &error_abort);
1080@@ -1982,10 +1982,10 @@ static void do_test_replace_child_mid_drain(int old_drain_count,
1081 new_child_bs->total_sectors = 1;
1082
1083 bdrv_ref(old_child_bs);
1084- bdrv_graph_wrlock(NULL);
1085+ bdrv_graph_wrlock();
1086 bdrv_attach_child(parent_bs, old_child_bs, "child", &child_of_bds,
1087 BDRV_CHILD_COW, &error_abort);
1088- bdrv_graph_wrunlock(NULL);
1089+ bdrv_graph_wrunlock();
1090 parent_s->setup_completed = true;
1091
1092 for (i = 0; i < old_drain_count; i++) {
1093@@ -2016,9 +2016,9 @@ static void do_test_replace_child_mid_drain(int old_drain_count,
1094 g_assert(parent_bs->quiesce_counter == old_drain_count);
1095 bdrv_drained_begin(old_child_bs);
1096 bdrv_drained_begin(new_child_bs);
1097- bdrv_graph_wrlock(NULL);
1098+ bdrv_graph_wrlock();
1099 bdrv_replace_node(old_child_bs, new_child_bs, &error_abort);
1100- bdrv_graph_wrunlock(NULL);
1101+ bdrv_graph_wrunlock();
1102 bdrv_drained_end(new_child_bs);
1103 bdrv_drained_end(old_child_bs);
1104 g_assert(parent_bs->quiesce_counter == new_drain_count);
1105diff --git a/tests/unit/test-bdrv-graph-mod.c b/tests/unit/test-bdrv-graph-mod.c
1106index 074adcbb9..8ee6ef38d 100644
1107--- a/tests/unit/test-bdrv-graph-mod.c
1108+++ b/tests/unit/test-bdrv-graph-mod.c
1109@@ -137,10 +137,10 @@ static void test_update_perm_tree(void)
1110
1111 blk_insert_bs(root, bs, &error_abort);
1112
1113- bdrv_graph_wrlock(NULL);
1114+ bdrv_graph_wrlock();
1115 bdrv_attach_child(filter, bs, "child", &child_of_bds,
1116 BDRV_CHILD_DATA, &error_abort);
1117- bdrv_graph_wrunlock(NULL);
1118+ bdrv_graph_wrunlock();
1119
1120 aio_context_acquire(qemu_get_aio_context());
1121 ret = bdrv_append(filter, bs, NULL);
1122@@ -206,11 +206,11 @@ static void test_should_update_child(void)
1123
1124 bdrv_set_backing_hd(target, bs, &error_abort);
1125
1126- bdrv_graph_wrlock(NULL);
1127+ bdrv_graph_wrlock();
1128 g_assert(target->backing->bs == bs);
1129 bdrv_attach_child(filter, target, "target", &child_of_bds,
1130 BDRV_CHILD_DATA, &error_abort);
1131- bdrv_graph_wrunlock(NULL);
1132+ bdrv_graph_wrunlock();
1133 aio_context_acquire(qemu_get_aio_context());
1134 bdrv_append(filter, bs, &error_abort);
1135 aio_context_release(qemu_get_aio_context());
1136@@ -248,7 +248,7 @@ static void test_parallel_exclusive_write(void)
1137 bdrv_ref(base);
1138 bdrv_ref(fl1);
1139
1140- bdrv_graph_wrlock(NULL);
1141+ bdrv_graph_wrlock();
1142 bdrv_attach_child(top, fl1, "backing", &child_of_bds,
1143 BDRV_CHILD_FILTERED | BDRV_CHILD_PRIMARY,
1144 &error_abort);
1145@@ -260,7 +260,7 @@ static void test_parallel_exclusive_write(void)
1146 &error_abort);
1147
1148 bdrv_replace_node(fl1, fl2, &error_abort);
1149- bdrv_graph_wrunlock(NULL);
1150+ bdrv_graph_wrunlock();
1151
1152 bdrv_drained_end(fl2);
1153 bdrv_drained_end(fl1);
1154@@ -367,7 +367,7 @@ static void test_parallel_perm_update(void)
1155 */
1156 bdrv_ref(base);
1157
1158- bdrv_graph_wrlock(NULL);
1159+ bdrv_graph_wrlock();
1160 bdrv_attach_child(top, ws, "file", &child_of_bds, BDRV_CHILD_DATA,
1161 &error_abort);
1162 c_fl1 = bdrv_attach_child(ws, fl1, "first", &child_of_bds,
1163@@ -380,7 +380,7 @@ static void test_parallel_perm_update(void)
1164 bdrv_attach_child(fl2, base, "backing", &child_of_bds,
1165 BDRV_CHILD_FILTERED | BDRV_CHILD_PRIMARY,
1166 &error_abort);
1167- bdrv_graph_wrunlock(NULL);
1168+ bdrv_graph_wrunlock();
1169
1170 /* Select fl1 as first child to be active */
1171 s->selected = c_fl1;
1172@@ -434,11 +434,11 @@ static void test_append_greedy_filter(void)
1173 BlockDriverState *base = no_perm_node("base");
1174 BlockDriverState *fl = exclusive_writer_node("fl1");
1175
1176- bdrv_graph_wrlock(NULL);
1177+ bdrv_graph_wrlock();
1178 bdrv_attach_child(top, base, "backing", &child_of_bds,
1179 BDRV_CHILD_FILTERED | BDRV_CHILD_PRIMARY,
1180 &error_abort);
1181- bdrv_graph_wrunlock(NULL);
1182+ bdrv_graph_wrunlock();
1183
1184 aio_context_acquire(qemu_get_aio_context());
1185 bdrv_append(fl, base, &error_abort);
1186--
11872.40.0
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0005.patch b/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0005.patch
deleted file mode 100644
index bcdd0fbed8..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2024-4467-0005.patch
+++ /dev/null
@@ -1,239 +0,0 @@
1From 7ead946998610657d38d1a505d5f25300d4ca613 Mon Sep 17 00:00:00 2001
2From: Kevin Wolf <kwolf@redhat.com>
3Date: Thu, 25 Apr 2024 14:56:02 +0000
4Subject: [PATCH] block: Parse filenames only when explicitly requested
5
6When handling image filenames from legacy options such as -drive or from
7tools, these filenames are parsed for protocol prefixes, including for
8the json:{} pseudo-protocol.
9
10This behaviour is intended for filenames that come directly from the
11command line and for backing files, which may come from the image file
12itself. Higher level management tools generally take care to verify that
13untrusted images don't contain a bad (or any) backing file reference;
14'qemu-img info' is a suitable tool for this.
15
16However, for other files that can be referenced in images, such as
17qcow2 data files or VMDK extents, the string from the image file is
18usually not verified by management tools - and 'qemu-img info' wouldn't
19be suitable because in contrast to backing files, it already opens these
20other referenced files. So here the string should be interpreted as a
21literal local filename. More complex configurations need to be specified
22explicitly on the command line or in QMP...
23
24CVE: CVE-2024-4467
25Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/7ead946998610657d38d1a505d5f25300d4ca613]
26
27Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
28---
29 block.c | 94 ++++++++++++++++++++++++++++++++++-----------------------
30 1 file changed, 57 insertions(+), 37 deletions(-)
31
32diff --git a/block.c b/block.c
33index 25e1ebc60..f3cb32cd7 100644
34--- a/block.c
35+++ b/block.c
36@@ -86,6 +86,7 @@ static BlockDriverState *bdrv_open_inherit(const char *filename,
37 BlockDriverState *parent,
38 const BdrvChildClass *child_class,
39 BdrvChildRole child_role,
40+ bool parse_filename,
41 Error **errp);
42
43 static bool bdrv_recurse_has_child(BlockDriverState *bs,
44@@ -2047,7 +2048,8 @@ static void parse_json_protocol(QDict *options, const char **pfilename,
45 * block driver has been specified explicitly.
46 */
47 static int bdrv_fill_options(QDict **options, const char *filename,
48- int *flags, Error **errp)
49+ int *flags, bool allow_parse_filename,
50+ Error **errp)
51 {
52 const char *drvname;
53 bool protocol = *flags & BDRV_O_PROTOCOL;
54@@ -2089,7 +2091,7 @@ static int bdrv_fill_options(QDict **options, const char *filename,
55 if (protocol && filename) {
56 if (!qdict_haskey(*options, "filename")) {
57 qdict_put_str(*options, "filename", filename);
58- parse_filename = true;
59+ parse_filename = allow_parse_filename;
60 } else {
61 error_setg(errp, "Can't specify 'file' and 'filename' options at "
62 "the same time");
63@@ -3675,7 +3677,8 @@ int bdrv_open_backing_file(BlockDriverState *bs, QDict *parent_options,
64 }
65
66 backing_hd = bdrv_open_inherit(backing_filename, reference, options, 0, bs,
67- &child_of_bds, bdrv_backing_role(bs), errp);
68+ &child_of_bds, bdrv_backing_role(bs), true,
69+ errp);
70 if (!backing_hd) {
71 bs->open_flags |= BDRV_O_NO_BACKING;
72 error_prepend(errp, "Could not open backing file: ");
73@@ -3712,7 +3715,8 @@ free_exit:
74 static BlockDriverState *
75 bdrv_open_child_bs(const char *filename, QDict *options, const char *bdref_key,
76 BlockDriverState *parent, const BdrvChildClass *child_class,
77- BdrvChildRole child_role, bool allow_none, Error **errp)
78+ BdrvChildRole child_role, bool allow_none,
79+ bool parse_filename, Error **errp)
80 {
81 BlockDriverState *bs = NULL;
82 QDict *image_options;
83@@ -3743,7 +3747,8 @@ bdrv_open_child_bs(const char *filename, QDict *options, const char *bdref_key,
84 }
85
86 bs = bdrv_open_inherit(filename, reference, image_options, 0,
87- parent, child_class, child_role, errp);
88+ parent, child_class, child_role, parse_filename,
89+ errp);
90 if (!bs) {
91 goto done;
92 }
93@@ -3753,6 +3758,33 @@ done:
94 return bs;
95 }
96
97+static BdrvChild *bdrv_open_child_common(const char *filename,
98+ QDict *options, const char *bdref_key,
99+ BlockDriverState *parent,
100+ const BdrvChildClass *child_class,
101+ BdrvChildRole child_role,
102+ bool allow_none, bool parse_filename,
103+ Error **errp)
104+{
105+ BlockDriverState *bs;
106+ BdrvChild *child;
107+
108+ GLOBAL_STATE_CODE();
109+
110+ bs = bdrv_open_child_bs(filename, options, bdref_key, parent, child_class,
111+ child_role, allow_none, parse_filename, errp);
112+ if (bs == NULL) {
113+ return NULL;
114+ }
115+
116+ bdrv_graph_wrlock();
117+ child = bdrv_attach_child(parent, bs, bdref_key, child_class, child_role,
118+ errp);
119+ bdrv_graph_wrunlock();
120+
121+ return child;
122+}
123+
124 /*
125 * Opens a disk image whose options are given as BlockdevRef in another block
126 * device's options.
127@@ -3778,31 +3810,15 @@ BdrvChild *bdrv_open_child(const char *filename,
128 BdrvChildRole child_role,
129 bool allow_none, Error **errp)
130 {
131- BlockDriverState *bs;
132- BdrvChild *child;
133- AioContext *ctx;
134-
135- GLOBAL_STATE_CODE();
136-
137- bs = bdrv_open_child_bs(filename, options, bdref_key, parent, child_class,
138- child_role, allow_none, errp);
139- if (bs == NULL) {
140- return NULL;
141- }
142-
143- bdrv_graph_wrlock();
144- ctx = bdrv_get_aio_context(bs);
145- aio_context_acquire(ctx);
146- child = bdrv_attach_child(parent, bs, bdref_key, child_class, child_role,
147- errp);
148- aio_context_release(ctx);
149- bdrv_graph_wrunlock();
150-
151- return child;
152+ return bdrv_open_child_common(filename, options, bdref_key, parent,
153+ child_class, child_role, allow_none, false,
154+ errp);
155 }
156
157 /*
158- * Wrapper on bdrv_open_child() for most popular case: open primary child of bs.
159+ * This does mostly the same as bdrv_open_child(), but for opening the primary
160+ * child of a node. A notable difference from bdrv_open_child() is that it
161+ * enables filename parsing for protocol names (including json:).
162 *
163 * The caller must hold the lock of the main AioContext and no other AioContext.
164 * @parent can move to a different AioContext in this function. Callers must
165@@ -3819,8 +3835,8 @@ int bdrv_open_file_child(const char *filename,
166 role = parent->drv->is_filter ?
167 (BDRV_CHILD_FILTERED | BDRV_CHILD_PRIMARY) : BDRV_CHILD_IMAGE;
168
169- if (!bdrv_open_child(filename, options, bdref_key, parent,
170- &child_of_bds, role, false, errp))
171+ if (!bdrv_open_child_common(filename, options, bdref_key, parent,
172+ &child_of_bds, role, false, true, errp))
173 {
174 return -EINVAL;
175 }
176@@ -3865,7 +3881,8 @@ BlockDriverState *bdrv_open_blockdev_ref(BlockdevRef *ref, Error **errp)
177
178 }
179
180- bs = bdrv_open_inherit(NULL, reference, qdict, 0, NULL, NULL, 0, errp);
181+ bs = bdrv_open_inherit(NULL, reference, qdict, 0, NULL, NULL, 0, false,
182+ errp);
183 obj = NULL;
184 qobject_unref(obj);
185 visit_free(v);
186@@ -3962,7 +3979,7 @@ static BlockDriverState * no_coroutine_fn
187 bdrv_open_inherit(const char *filename, const char *reference, QDict *options,
188 int flags, BlockDriverState *parent,
189 const BdrvChildClass *child_class, BdrvChildRole child_role,
190- Error **errp)
191+ bool parse_filename, Error **errp)
192 {
193 int ret;
194 BlockBackend *file = NULL;
195@@ -4011,9 +4028,11 @@ bdrv_open_inherit(const char *filename, const char *reference, QDict *options,
196 }
197
198 /* json: syntax counts as explicit options, as if in the QDict */
199- parse_json_protocol(options, &filename, &local_err);
200- if (local_err) {
201- goto fail;
202+ if (parse_filename) {
203+ parse_json_protocol(options, &filename, &local_err);
204+ if (local_err) {
205+ goto fail;
206+ }
207 }
208
209 bs->explicit_options = qdict_clone_shallow(options);
210@@ -4038,7 +4057,8 @@ bdrv_open_inherit(const char *filename, const char *reference, QDict *options,
211 parent->open_flags, parent->options);
212 }
213
214- ret = bdrv_fill_options(&options, filename, &flags, &local_err);
215+ ret = bdrv_fill_options(&options, filename, &flags, parse_filename,
216+ &local_err);
217 if (ret < 0) {
218 goto fail;
219 }
220@@ -4107,7 +4127,7 @@ bdrv_open_inherit(const char *filename, const char *reference, QDict *options,
221
222 file_bs = bdrv_open_child_bs(filename, options, "file", bs,
223 &child_of_bds, BDRV_CHILD_IMAGE,
224- true, &local_err);
225+ true, true, &local_err);
226 if (local_err) {
227 goto fail;
228 }
229@@ -4270,7 +4290,7 @@ BlockDriverState *bdrv_open(const char *filename, const char *reference,
230 GLOBAL_STATE_CODE();
231
232 return bdrv_open_inherit(filename, reference, options, flags, NULL,
233- NULL, 0, errp);
234+ NULL, 0, true, errp);
235 }
236
237 /* Return true if the NULL-terminated @list contains @str */
238--
2392.40.0
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0001.patch b/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0001.patch
deleted file mode 100644
index 631e93a6d2..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0001.patch
+++ /dev/null
@@ -1,167 +0,0 @@
1From fb1c2aaa981e0a2fa6362c9985f1296b74f055ac Mon Sep 17 00:00:00 2001
2From: Eric Blake <eblake@redhat.com>
3Date: Wed, 7 Aug 2024 08:50:01 -0500
4Subject: [PATCH] nbd/server: Plumb in new args to nbd_client_add()
5
6Upcoming patches to fix a CVE need to track an opaque pointer passed
7in by the owner of a client object, as well as request for a time
8limit on how fast negotiation must complete. Prepare for that by
9changing the signature of nbd_client_new() and adding an accessor to
10get at the opaque pointer, although for now the two servers
11(qemu-nbd.c and blockdev-nbd.c) do not change behavior even though
12they pass in a new default timeout value.
13
14Suggested-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
15Signed-off-by: Eric Blake <eblake@redhat.com>
16Message-ID: <20240807174943.771624-11-eblake@redhat.com>
17Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
18[eblake: s/LIMIT/MAX_SECS/ as suggested by Dan]
19Signed-off-by: Eric Blake <eblake@redhat.com>
20
21CVE: CVE-2024-7409
22
23Upstream-Status: Backport [https://github.com/qemu/qemu/commit/fb1c2aaa981e0a2fa6362c9985f1296b74f055ac]
24
25Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
26---
27 blockdev-nbd.c | 6 ++++--
28 include/block/nbd.h | 11 ++++++++++-
29 nbd/server.c | 20 +++++++++++++++++---
30 qemu-nbd.c | 4 +++-
31 4 files changed, 34 insertions(+), 7 deletions(-)
32
33diff --git a/blockdev-nbd.c b/blockdev-nbd.c
34index 213012435..267a1de90 100644
35--- a/blockdev-nbd.c
36+++ b/blockdev-nbd.c
37@@ -64,8 +64,10 @@ static void nbd_accept(QIONetListener *listener, QIOChannelSocket *cioc,
38 nbd_update_server_watch(nbd_server);
39
40 qio_channel_set_name(QIO_CHANNEL(cioc), "nbd-server");
41- nbd_client_new(cioc, nbd_server->tlscreds, nbd_server->tlsauthz,
42- nbd_blockdev_client_closed);
43+ /* TODO - expose handshake timeout as QMP option */
44+ nbd_client_new(cioc, NBD_DEFAULT_HANDSHAKE_MAX_SECS,
45+ nbd_server->tlscreds, nbd_server->tlsauthz,
46+ nbd_blockdev_client_closed, NULL);
47 }
48
49 static void nbd_update_server_watch(NBDServerData *s)
50diff --git a/include/block/nbd.h b/include/block/nbd.h
51index 4e7bd6342..1d4d65922 100644
52--- a/include/block/nbd.h
53+++ b/include/block/nbd.h
54@@ -33,6 +33,12 @@ typedef struct NBDMetaContexts NBDMetaContexts;
55
56 extern const BlockExportDriver blk_exp_nbd;
57
58+/*
59+ * NBD_DEFAULT_HANDSHAKE_MAX_SECS: Number of seconds in which client must
60+ * succeed at NBD_OPT_GO before being forcefully dropped as too slow.
61+ */
62+#define NBD_DEFAULT_HANDSHAKE_MAX_SECS 10
63+
64 /* Handshake phase structs - this struct is passed on the wire */
65
66 typedef struct NBDOption {
67@@ -403,9 +409,12 @@ AioContext *nbd_export_aio_context(NBDExport *exp);
68 NBDExport *nbd_export_find(const char *name);
69
70 void nbd_client_new(QIOChannelSocket *sioc,
71+ uint32_t handshake_max_secs,
72 QCryptoTLSCreds *tlscreds,
73 const char *tlsauthz,
74- void (*close_fn)(NBDClient *, bool));
75+ void (*close_fn)(NBDClient *, bool),
76+ void *owner);
77+void *nbd_client_owner(NBDClient *client);
78 void nbd_client_get(NBDClient *client);
79 void nbd_client_put(NBDClient *client);
80
81diff --git a/nbd/server.c b/nbd/server.c
82index 091b57119..f8881936e 100644
83--- a/nbd/server.c
84+++ b/nbd/server.c
85@@ -124,12 +124,14 @@ struct NBDMetaContexts {
86 struct NBDClient {
87 int refcount; /* atomic */
88 void (*close_fn)(NBDClient *client, bool negotiated);
89+ void *owner;
90
91 QemuMutex lock;
92
93 NBDExport *exp;
94 QCryptoTLSCreds *tlscreds;
95 char *tlsauthz;
96+ uint32_t handshake_max_secs;
97 QIOChannelSocket *sioc; /* The underlying data channel */
98 QIOChannel *ioc; /* The current I/O channel which may differ (eg TLS) */
99
100@@ -3160,6 +3162,7 @@ static coroutine_fn void nbd_co_client_start(void *opaque)
101
102 qemu_co_mutex_init(&client->send_lock);
103
104+ /* TODO - utilize client->handshake_max_secs */
105 if (nbd_negotiate(client, &local_err)) {
106 if (local_err) {
107 error_report_err(local_err);
108@@ -3174,14 +3177,17 @@ static coroutine_fn void nbd_co_client_start(void *opaque)
109 }
110
111 /*
112- * Create a new client listener using the given channel @sioc.
113+ * Create a new client listener using the given channel @sioc and @owner.
114 * Begin servicing it in a coroutine. When the connection closes, call
115- * @close_fn with an indication of whether the client completed negotiation.
116+ * @close_fn with an indication of whether the client completed negotiation
117+ * within @handshake_max_secs seconds (0 for unbounded).
118 */
119 void nbd_client_new(QIOChannelSocket *sioc,
120+ uint32_t handshake_max_secs,
121 QCryptoTLSCreds *tlscreds,
122 const char *tlsauthz,
123- void (*close_fn)(NBDClient *, bool))
124+ void (*close_fn)(NBDClient *, bool),
125+ void *owner)
126 {
127 NBDClient *client;
128 Coroutine *co;
129@@ -3194,13 +3200,21 @@ void nbd_client_new(QIOChannelSocket *sioc,
130 object_ref(OBJECT(client->tlscreds));
131 }
132 client->tlsauthz = g_strdup(tlsauthz);
133+ client->handshake_max_secs = handshake_max_secs;
134 client->sioc = sioc;
135 qio_channel_set_delay(QIO_CHANNEL(sioc), false);
136 object_ref(OBJECT(client->sioc));
137 client->ioc = QIO_CHANNEL(sioc);
138 object_ref(OBJECT(client->ioc));
139 client->close_fn = close_fn;
140+ client->owner = owner;
141
142 co = qemu_coroutine_create(nbd_co_client_start, client);
143 qemu_coroutine_enter(co);
144 }
145+
146+void *
147+nbd_client_owner(NBDClient *client)
148+{
149+ return client->owner;
150+}
151diff --git a/qemu-nbd.c b/qemu-nbd.c
152index 186e6468b..5fa399c0b 100644
153--- a/qemu-nbd.c
154+++ b/qemu-nbd.c
155@@ -389,7 +389,9 @@ static void nbd_accept(QIONetListener *listener, QIOChannelSocket *cioc,
156
157 nb_fds++;
158 nbd_update_server_watch();
159- nbd_client_new(cioc, tlscreds, tlsauthz, nbd_client_closed);
160+ /* TODO - expose handshake timeout as command line option */
161+ nbd_client_new(cioc, NBD_DEFAULT_HANDSHAKE_MAX_SECS,
162+ tlscreds, tlsauthz, nbd_client_closed, NULL);
163 }
164
165 static void nbd_update_server_watch(void)
166--
1672.40.0
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0002.patch b/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0002.patch
deleted file mode 100644
index ca8ef0b44d..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0002.patch
+++ /dev/null
@@ -1,175 +0,0 @@
1From c8a76dbd90c2f48df89b75bef74917f90a59b623 Mon Sep 17 00:00:00 2001
2From: Eric Blake <eblake@redhat.com>
3Date: Tue, 6 Aug 2024 13:53:00 -0500
4Subject: [PATCH] nbd/server: CVE-2024-7409: Cap default max-connections to 100
5
6Allowing an unlimited number of clients to any web service is a recipe
7for a rudimentary denial of service attack: the client merely needs to
8open lots of sockets without closing them, until qemu no longer has
9any more fds available to allocate.
10
11For qemu-nbd, we default to allowing only 1 connection unless more are
12explicitly asked for (-e or --shared); this was historically picked as
13a nice default (without an explicit -t, a non-persistent qemu-nbd goes
14away after a client disconnects, without needing any additional
15follow-up commands), and we are not going to change that interface now
16(besides, someday we want to point people towards qemu-storage-daemon
17instead of qemu-nbd).
18
19But for qemu proper, and the newer qemu-storage-daemon, the QMP
20nbd-server-start command has historically had a default of unlimited
21number of connections, in part because unlike qemu-nbd it is
22inherently persistent until nbd-server-stop. Allowing multiple client
23sockets is particularly useful for clients that can take advantage of
24MULTI_CONN (creating parallel sockets to increase throughput),
25although known clients that do so (such as libnbd's nbdcopy) typically
26use only 8 or 16 connections (the benefits of scaling diminish once
27more sockets are competing for kernel attention). Picking a number
28large enough for typical use cases, but not unlimited, makes it
29slightly harder for a malicious client to perform a denial of service
30merely by opening lots of connections withot progressing through the
31handshake.
32
33This change does not eliminate CVE-2024-7409 on its own, but reduces
34the chance for fd exhaustion or unlimited memory usage as an attack
35surface. On the other hand, by itself, it makes it more obvious that
36with a finite limit, we have the problem of an unauthenticated client
37holding 100 fds opened as a way to block out a legitimate client from
38being able to connect; thus, later patches will further add timeouts
39to reject clients that are not making progress.
40
41This is an INTENTIONAL change in behavior, and will break any client
42of nbd-server-start that was not passing an explicit max-connections
43parameter, yet expects more than 100 simultaneous connections. We are
44not aware of any such client (as stated above, most clients aware of
45MULTI_CONN get by just fine on 8 or 16 connections, and probably cope
46with later connections failing by relying on the earlier connections;
47libvirt has not yet been passing max-connections, but generally
48creates NBD servers with the intent for a single client for the sake
49of live storage migration; meanwhile, the KubeSAN project anticipates
50a large cluster sharing multiple clients [up to 8 per node, and up to
51100 nodes in a cluster], but it currently uses qemu-nbd with an
52explicit --shared=0 rather than qemu-storage-daemon with
53nbd-server-start).
54
55We considered using a deprecation period (declare that omitting
56max-parameters is deprecated, and make it mandatory in 3 releases -
57then we don't need to pick an arbitrary default); that has zero risk
58of breaking any apps that accidentally depended on more than 100
59connections, and where such breakage might not be noticed under unit
60testing but only under the larger loads of production usage. But it
61does not close the denial-of-service hole until far into the future,
62and requires all apps to change to add the parameter even if 100 was
63good enough. It also has a drawback that any app (like libvirt) that
64is accidentally relying on an unlimited default should seriously
65consider their own CVE now, at which point they are going to change to
66pass explicit max-connections sooner than waiting for 3 qemu releases.
67Finally, if our changed default breaks an app, that app can always
68pass in an explicit max-parameters with a larger value.
69
70It is also intentional that the HMP interface to nbd-server-start is
71not changed to expose max-connections (any client needing to fine-tune
72things should be using QMP).
73
74Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
75Signed-off-by: Eric Blake <eblake@redhat.com>
76Message-ID: <20240807174943.771624-12-eblake@redhat.com>
77Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
78[ericb: Expand commit message to summarize Dan's argument for why we
79break corner-case back-compat behavior without a deprecation period]
80Signed-off-by: Eric Blake <eblake@redhat.com>
81
82CVE: CVE-2024-7409
83
84Upstream-Status: Backport [https://github.com/qemu/qemu/commit/c8a76dbd90c2f48df89b75bef74917f90a59b623]
85
86Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
87---
88 block/monitor/block-hmp-cmds.c | 3 ++-
89 blockdev-nbd.c | 8 ++++++++
90 include/block/nbd.h | 7 +++++++
91 qapi/block-export.json | 4 ++--
92 4 files changed, 19 insertions(+), 3 deletions(-)
93
94diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c
95index c729cbf1e..78a697585 100644
96--- a/block/monitor/block-hmp-cmds.c
97+++ b/block/monitor/block-hmp-cmds.c
98@@ -415,7 +415,8 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *qdict)
99 goto exit;
100 }
101
102- nbd_server_start(addr, NULL, NULL, 0, &local_err);
103+ nbd_server_start(addr, NULL, NULL, NBD_DEFAULT_MAX_CONNECTIONS,
104+ &local_err);
105 qapi_free_SocketAddress(addr);
106 if (local_err != NULL) {
107 goto exit;
108diff --git a/blockdev-nbd.c b/blockdev-nbd.c
109index 267a1de90..24ba5382d 100644
110--- a/blockdev-nbd.c
111+++ b/blockdev-nbd.c
112@@ -170,6 +170,10 @@ void nbd_server_start(SocketAddress *addr, const char *tls_creds,
113
114 void nbd_server_start_options(NbdServerOptions *arg, Error **errp)
115 {
116+ if (!arg->has_max_connections) {
117+ arg->max_connections = NBD_DEFAULT_MAX_CONNECTIONS;
118+ }
119+
120 nbd_server_start(arg->addr, arg->tls_creds, arg->tls_authz,
121 arg->max_connections, errp);
122 }
123@@ -182,6 +186,10 @@ void qmp_nbd_server_start(SocketAddressLegacy *addr,
124 {
125 SocketAddress *addr_flat = socket_address_flatten(addr);
126
127+ if (!has_max_connections) {
128+ max_connections = NBD_DEFAULT_MAX_CONNECTIONS;
129+ }
130+
131 nbd_server_start(addr_flat, tls_creds, tls_authz, max_connections, errp);
132 qapi_free_SocketAddress(addr_flat);
133 }
134diff --git a/include/block/nbd.h b/include/block/nbd.h
135index 1d4d65922..d4f8b21ae 100644
136--- a/include/block/nbd.h
137+++ b/include/block/nbd.h
138@@ -39,6 +39,13 @@ extern const BlockExportDriver blk_exp_nbd;
139 */
140 #define NBD_DEFAULT_HANDSHAKE_MAX_SECS 10
141
142+/*
143+ * NBD_DEFAULT_MAX_CONNECTIONS: Number of client sockets to allow at
144+ * once; must be large enough to allow a MULTI_CONN-aware client like
145+ * nbdcopy to create its typical number of 8-16 sockets.
146+ */
147+#define NBD_DEFAULT_MAX_CONNECTIONS 100
148+
149 /* Handshake phase structs - this struct is passed on the wire */
150
151 typedef struct NBDOption {
152diff --git a/qapi/block-export.json b/qapi/block-export.json
153index 7874a49ba..1d255d77e 100644
154--- a/qapi/block-export.json
155+++ b/qapi/block-export.json
156@@ -28,7 +28,7 @@
157 # @max-connections: The maximum number of connections to allow at the
158 # same time, 0 for unlimited. Setting this to 1 also stops the
159 # server from advertising multiple client support (since 5.2;
160-# default: 0)
161+# default: 100)
162 #
163 # Since: 4.2
164 ##
165@@ -63,7 +63,7 @@
166 # @max-connections: The maximum number of connections to allow at the
167 # same time, 0 for unlimited. Setting this to 1 also stops the
168 # server from advertising multiple client support (since 5.2;
169-# default: 0).
170+# default: 100).
171 #
172 # Returns: error if the server is already running.
173 #
174--
1752.40.0
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0003.patch b/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0003.patch
deleted file mode 100644
index b2b9b15c54..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0003.patch
+++ /dev/null
@@ -1,126 +0,0 @@
1From b9b72cb3ce15b693148bd09cef7e50110566d8a0 Mon Sep 17 00:00:00 2001
2From: Eric Blake <eblake@redhat.com>
3Date: Thu, 8 Aug 2024 16:05:08 -0500
4Subject: [PATCH] nbd/server: CVE-2024-7409: Drop non-negotiating clients
5
6A client that opens a socket but does not negotiate is merely hogging
7qemu's resources (an open fd and a small amount of memory); and a
8malicious client that can access the port where NBD is listening can
9attempt a denial of service attack by intentionally opening and
10abandoning lots of unfinished connections. The previous patch put a
11default bound on the number of such ongoing connections, but once that
12limit is hit, no more clients can connect (including legitimate ones).
13The solution is to insist that clients complete handshake within a
14reasonable time limit, defaulting to 10 seconds. A client that has
15not successfully completed NBD_OPT_GO by then (including the case of
16where the client didn't know TLS credentials to even reach the point
17of NBD_OPT_GO) is wasting our time and does not deserve to stay
18connected. Later patches will allow fine-tuning the limit away from
19the default value (including disabling it for doing integration
20testing of the handshake process itself).
21
22Note that this patch in isolation actually makes it more likely to see
23qemu SEGV after nbd-server-stop, as any client socket still connected
24when the server shuts down will now be closed after 10 seconds rather
25than at the client's whims. That will be addressed in the next patch.
26
27For a demo of this patch in action:
28$ qemu-nbd -f raw -r -t -e 10 file &
29$ nbdsh --opt-mode -c '
30H = list()
31for i in range(20):
32 print(i)
33 H.insert(i, nbd.NBD())
34 H[i].set_opt_mode(True)
35 H[i].connect_uri("nbd://localhost")
36'
37$ kill $!
38
39where later connections get to start progressing once earlier ones are
40forcefully dropped for taking too long, rather than hanging.
41
42Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
43Signed-off-by: Eric Blake <eblake@redhat.com>
44Message-ID: <20240807174943.771624-13-eblake@redhat.com>
45Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
46[eblake: rebase to changes earlier in series, reduce scope of timer]
47Signed-off-by: Eric Blake <eblake@redhat.com>
48
49CVE: CVE-2024-7409
50
51Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/b9b72cb3ce15b693148bd09cef7e50110566d8a0]
52
53Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
54---
55 nbd/server.c | 28 +++++++++++++++++++++++++++-
56 nbd/trace-events | 1 +
57 2 files changed, 28 insertions(+), 1 deletion(-)
58
59diff --git a/nbd/server.c b/nbd/server.c
60index f8881936e..6155e329a 100644
61--- a/nbd/server.c
62+++ b/nbd/server.c
63@@ -3155,22 +3155,48 @@ static void nbd_client_receive_next_request(NBDClient *client)
64 }
65 }
66
67+static void nbd_handshake_timer_cb(void *opaque)
68+{
69+ QIOChannel *ioc = opaque;
70+
71+ trace_nbd_handshake_timer_cb();
72+ qio_channel_shutdown(ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL);
73+}
74+
75 static coroutine_fn void nbd_co_client_start(void *opaque)
76 {
77 NBDClient *client = opaque;
78 Error *local_err = NULL;
79+ QEMUTimer *handshake_timer = NULL;
80
81 qemu_co_mutex_init(&client->send_lock);
82
83- /* TODO - utilize client->handshake_max_secs */
84+ /*
85+ * Create a timer to bound the time spent in negotiation. If the
86+ * timer expires, it is likely nbd_negotiate will fail because the
87+ * socket was shutdown.
88+ */
89+ if (client->handshake_max_secs > 0) {
90+ handshake_timer = aio_timer_new(qemu_get_aio_context(),
91+ QEMU_CLOCK_REALTIME,
92+ SCALE_NS,
93+ nbd_handshake_timer_cb,
94+ client->sioc);
95+ timer_mod(handshake_timer,
96+ qemu_clock_get_ns(QEMU_CLOCK_REALTIME) +
97+ client->handshake_max_secs * NANOSECONDS_PER_SECOND);
98+ }
99+
100 if (nbd_negotiate(client, &local_err)) {
101 if (local_err) {
102 error_report_err(local_err);
103 }
104+ timer_free(handshake_timer);
105 client_close(client, false);
106 return;
107 }
108
109+ timer_free(handshake_timer);
110 WITH_QEMU_LOCK_GUARD(&client->lock) {
111 nbd_client_receive_next_request(client);
112 }
113diff --git a/nbd/trace-events b/nbd/trace-events
114index 00ae3216a..cbd0a4ab7 100644
115--- a/nbd/trace-events
116+++ b/nbd/trace-events
117@@ -76,6 +76,7 @@ nbd_co_receive_request_payload_received(uint64_t cookie, uint64_t len) "Payload
118 nbd_co_receive_ext_payload_compliance(uint64_t from, uint64_t len) "client sent non-compliant write without payload flag: from=0x%" PRIx64 ", len=0x%" PRIx64
119 nbd_co_receive_align_compliance(const char *op, uint64_t from, uint64_t len, uint32_t align) "client sent non-compliant unaligned %s request: from=0x%" PRIx64 ", len=0x%" PRIx64 ", align=0x%" PRIx32
120 nbd_trip(void) "Reading request"
121+nbd_handshake_timer_cb(void) "client took too long to negotiate"
122
123 # client-connection.c
124 nbd_connect_thread_sleep(uint64_t timeout) "timeout %" PRIu64
125--
1262.40.0
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0004.patch b/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0004.patch
deleted file mode 100644
index 9515c631ad..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2024-7409-0004.patch
+++ /dev/null
@@ -1,164 +0,0 @@
1From 3e7ef738c8462c45043a1d39f702a0990406a3b3 Mon Sep 17 00:00:00 2001
2From: Eric Blake <eblake@redhat.com>
3Date: Wed, 7 Aug 2024 12:23:13 -0500
4Subject: [PATCH] nbd/server: CVE-2024-7409: Close stray clients at server-stop
5
6A malicious client can attempt to connect to an NBD server, and then
7intentionally delay progress in the handshake, including if it does
8not know the TLS secrets. Although the previous two patches reduce
9this behavior by capping the default max-connections parameter and
10killing slow clients, they did not eliminate the possibility of a
11client waiting to close the socket until after the QMP nbd-server-stop
12command is executed, at which point qemu would SEGV when trying to
13dereference the NULL nbd_server global which is no longer present.
14This amounts to a denial of service attack. Worse, if another NBD
15server is started before the malicious client disconnects, I cannot
16rule out additional adverse effects when the old client interferes
17with the connection count of the new server (although the most likely
18is a crash due to an assertion failure when checking
19nbd_server->connections > 0).
20
21For environments without this patch, the CVE can be mitigated by
22ensuring (such as via a firewall) that only trusted clients can
23connect to an NBD server. Note that using frameworks like libvirt
24that ensure that TLS is used and that nbd-server-stop is not executed
25while any trusted clients are still connected will only help if there
26is also no possibility for an untrusted client to open a connection
27but then stall on the NBD handshake.
28
29Given the previous patches, it would be possible to guarantee that no
30clients remain connected by having nbd-server-stop sleep for longer
31than the default handshake deadline before finally freeing the global
32nbd_server object, but that could make QMP non-responsive for a long
33time. So intead, this patch fixes the problem by tracking all client
34sockets opened while the server is running, and forcefully closing any
35such sockets remaining without a completed handshake at the time of
36nbd-server-stop, then waiting until the coroutines servicing those
37sockets notice the state change. nbd-server-stop now has a second
38AIO_WAIT_WHILE_UNLOCKED (the first is indirectly through the
39blk_exp_close_all_type() that disconnects all clients that completed
40handshakes), but forced socket shutdown is enough to progress the
41coroutines and quickly tear down all clients before the server is
42freed, thus finally fixing the CVE.
43
44This patch relies heavily on the fact that nbd/server.c guarantees
45that it only calls nbd_blockdev_client_closed() from the main loop
46(see the assertion in nbd_client_put() and the hoops used in
47nbd_client_put_nonzero() to achieve that); if we did not have that
48guarantee, we would also need a mutex protecting our accesses of the
49list of connections to survive re-entrancy from independent iothreads.
50
51Although I did not actually try to test old builds, it looks like this
52problem has existed since at least commit 862172f45c (v2.12.0, 2017) -
53even back when that patch started using a QIONetListener to handle
54listening on multiple sockets, nbd_server_free() was already unaware
55that the nbd_blockdev_client_closed callback can be reached later by a
56client thread that has not completed handshakes (and therefore the
57client's socket never got added to the list closed in
58nbd_export_close_all), despite that patch intentionally tearing down
59the QIONetListener to prevent new clients.
60
61Reported-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
62Fixes: CVE-2024-7409
63CC: qemu-stable@nongnu.org
64Signed-off-by: Eric Blake <eblake@redhat.com>
65Message-ID: <20240807174943.771624-14-eblake@redhat.com>
66Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
67
68CVE: CVE-2024-7409
69
70Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/3e7ef738c8462c45043a1d39f702a0990406a3b3]
71
72Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
73---
74 blockdev-nbd.c | 35 ++++++++++++++++++++++++++++++++++-
75 1 file changed, 34 insertions(+), 1 deletion(-)
76
77diff --git a/blockdev-nbd.c b/blockdev-nbd.c
78index 24ba5382d..f73409ae4 100644
79--- a/blockdev-nbd.c
80+++ b/blockdev-nbd.c
81@@ -21,12 +21,18 @@
82 #include "io/channel-socket.h"
83 #include "io/net-listener.h"
84
85+typedef struct NBDConn {
86+ QIOChannelSocket *cioc;
87+ QLIST_ENTRY(NBDConn) next;
88+} NBDConn;
89+
90 typedef struct NBDServerData {
91 QIONetListener *listener;
92 QCryptoTLSCreds *tlscreds;
93 char *tlsauthz;
94 uint32_t max_connections;
95 uint32_t connections;
96+ QLIST_HEAD(, NBDConn) conns;
97 } NBDServerData;
98
99 static NBDServerData *nbd_server;
100@@ -51,6 +57,14 @@ int nbd_server_max_connections(void)
101
102 static void nbd_blockdev_client_closed(NBDClient *client, bool ignored)
103 {
104+ NBDConn *conn = nbd_client_owner(client);
105+
106+ assert(qemu_in_main_thread() && nbd_server);
107+
108+ object_unref(OBJECT(conn->cioc));
109+ QLIST_REMOVE(conn, next);
110+ g_free(conn);
111+
112 nbd_client_put(client);
113 assert(nbd_server->connections > 0);
114 nbd_server->connections--;
115@@ -60,14 +74,20 @@ static void nbd_blockdev_client_closed(NBDClient *client, bool ignored)
116 static void nbd_accept(QIONetListener *listener, QIOChannelSocket *cioc,
117 gpointer opaque)
118 {
119+ NBDConn *conn = g_new0(NBDConn, 1);
120+
121+ assert(qemu_in_main_thread() && nbd_server);
122 nbd_server->connections++;
123+ object_ref(OBJECT(cioc));
124+ conn->cioc = cioc;
125+ QLIST_INSERT_HEAD(&nbd_server->conns, conn, next);
126 nbd_update_server_watch(nbd_server);
127
128 qio_channel_set_name(QIO_CHANNEL(cioc), "nbd-server");
129 /* TODO - expose handshake timeout as QMP option */
130 nbd_client_new(cioc, NBD_DEFAULT_HANDSHAKE_MAX_SECS,
131 nbd_server->tlscreds, nbd_server->tlsauthz,
132- nbd_blockdev_client_closed, NULL);
133+ nbd_blockdev_client_closed, conn);
134 }
135
136 static void nbd_update_server_watch(NBDServerData *s)
137@@ -81,12 +101,25 @@ static void nbd_update_server_watch(NBDServerData *s)
138
139 static void nbd_server_free(NBDServerData *server)
140 {
141+ NBDConn *conn, *tmp;
142+
143 if (!server) {
144 return;
145 }
146
147+ /*
148+ * Forcefully close the listener socket, and any clients that have
149+ * not yet disconnected on their own.
150+ */
151 qio_net_listener_disconnect(server->listener);
152 object_unref(OBJECT(server->listener));
153+ QLIST_FOREACH_SAFE(conn, &server->conns, next, tmp) {
154+ qio_channel_shutdown(QIO_CHANNEL(conn->cioc), QIO_CHANNEL_SHUTDOWN_BOTH,
155+ NULL);
156+ }
157+
158+ AIO_WAIT_WHILE_UNLOCKED(NULL, server->connections > 0);
159+
160 if (server->tlscreds) {
161 object_unref(OBJECT(server->tlscreds));
162 }
163--
1642.40.0
diff --git a/meta/recipes-devtools/qemu/qemu_8.2.3.bb b/meta/recipes-devtools/qemu/qemu_8.2.7.bb
index dc1352232e..dc1352232e 100644
--- a/meta/recipes-devtools/qemu/qemu_8.2.3.bb
+++ b/meta/recipes-devtools/qemu/qemu_8.2.7.bb
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12084-0001.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12084-0001.patch
new file mode 100644
index 0000000000..d654067fab
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12084-0001.patch
@@ -0,0 +1,156 @@
1From 0902b52f6687b1f7952422080d50b93108742e53 Mon Sep 17 00:00:00 2001
2From: Wayne Davison <wayne@opencoder.net>
3Date: Tue, 29 Oct 2024 22:55:29 -0700
4Subject: [PATCH] Some checksum buffer fixes.
5
6- Put sum2_array into sum_struct to hold an array of sum2 checksums
7 that are each xfer_sum_len bytes.
8- Remove sum2 buf from sum_buf.
9- Add macro sum2_at() to access each sum2 array element.
10- Throw an error if a sums header has an s2length larger than
11 xfer_sum_len.
12
13CVE: CVE-2024-12084
14
15Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=0902b52f6687b1f7952422080d50b93108742e53]
16
17Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
18---
19 io.c | 3 ++-
20 match.c | 8 ++++----
21 rsync.c | 5 ++++-
22 rsync.h | 4 +++-
23 sender.c | 4 +++-
24 5 files changed, 16 insertions(+), 8 deletions(-)
25
26diff --git a/io.c b/io.c
27index a99ac0ec..bb60eeca 100644
28--- a/io.c
29+++ b/io.c
30@@ -55,6 +55,7 @@ extern int read_batch;
31 extern int compat_flags;
32 extern int protect_args;
33 extern int checksum_seed;
34+extern int xfer_sum_len;
35 extern int daemon_connection;
36 extern int protocol_version;
37 extern int remove_source_files;
38@@ -1977,7 +1978,7 @@ void read_sum_head(int f, struct sum_struct *sum)
39 exit_cleanup(RERR_PROTOCOL);
40 }
41 sum->s2length = protocol_version < 27 ? csum_length : (int)read_int(f);
42- if (sum->s2length < 0 || sum->s2length > MAX_DIGEST_LEN) {
43+ if (sum->s2length < 0 || sum->s2length > xfer_sum_len) {
44 rprintf(FERROR, "Invalid checksum length %d [%s]\n",
45 sum->s2length, who_am_i());
46 exit_cleanup(RERR_PROTOCOL);
47diff --git a/match.c b/match.c
48index cdb30a15..36e78ed2 100644
49--- a/match.c
50+++ b/match.c
51@@ -232,7 +232,7 @@ static void hash_search(int f,struct sum_struct *s,
52 done_csum2 = 1;
53 }
54
55- if (memcmp(sum2,s->sums[i].sum2,s->s2length) != 0) {
56+ if (memcmp(sum2, sum2_at(s, i), s->s2length) != 0) {
57 false_alarms++;
58 continue;
59 }
60@@ -252,7 +252,7 @@ static void hash_search(int f,struct sum_struct *s,
61 if (i != aligned_i) {
62 if (sum != s->sums[aligned_i].sum1
63 || l != s->sums[aligned_i].len
64- || memcmp(sum2, s->sums[aligned_i].sum2, s->s2length) != 0)
65+ || memcmp(sum2, sum2_at(s, aligned_i), s->s2length) != 0)
66 goto check_want_i;
67 i = aligned_i;
68 }
69@@ -271,7 +271,7 @@ static void hash_search(int f,struct sum_struct *s,
70 if (sum != s->sums[i].sum1)
71 goto check_want_i;
72 get_checksum2((char *)map, l, sum2);
73- if (memcmp(sum2, s->sums[i].sum2, s->s2length) != 0)
74+ if (memcmp(sum2, sum2_at(s, i), s->s2length) != 0)
75 goto check_want_i;
76 /* OK, we have a re-alignment match. Bump the offset
77 * forward to the new match point. */
78@@ -290,7 +290,7 @@ static void hash_search(int f,struct sum_struct *s,
79 && (!updating_basis_file || s->sums[want_i].offset >= offset
80 || s->sums[want_i].flags & SUMFLG_SAME_OFFSET)
81 && sum == s->sums[want_i].sum1
82- && memcmp(sum2, s->sums[want_i].sum2, s->s2length) == 0) {
83+ && memcmp(sum2, sum2_at(s, want_i), s->s2length) == 0) {
84 /* we've found an adjacent match - the RLL coder
85 * will be happy */
86 i = want_i;
87diff --git a/rsync.c b/rsync.c
88index cd288f57..b130aba5 100644
89--- a/rsync.c
90+++ b/rsync.c
91@@ -437,7 +437,10 @@ int read_ndx_and_attrs(int f_in, int f_out, int *iflag_ptr, uchar *type_ptr, cha
92 */
93 void free_sums(struct sum_struct *s)
94 {
95- if (s->sums) free(s->sums);
96+ if (s->sums) {
97+ free(s->sums);
98+ free(s->sum2_array);
99+ }
100 free(s);
101 }
102
103diff --git a/rsync.h b/rsync.h
104index d3709fe0..8ddbe702 100644
105--- a/rsync.h
106+++ b/rsync.h
107@@ -958,12 +958,12 @@ struct sum_buf {
108 uint32 sum1; /**< simple checksum */
109 int32 chain; /**< next hash-table collision */
110 short flags; /**< flag bits */
111- char sum2[SUM_LENGTH]; /**< checksum */
112 };
113
114 struct sum_struct {
115 OFF_T flength; /**< total file length */
116 struct sum_buf *sums; /**< points to info for each chunk */
117+ char *sum2_array; /**< checksums of length xfer_sum_len */
118 int32 count; /**< how many chunks */
119 int32 blength; /**< block_length */
120 int32 remainder; /**< flength % block_length */
121@@ -982,6 +982,8 @@ struct map_struct {
122 int status; /* first errno from read errors */
123 };
124
125+#define sum2_at(s, i) ((s)->sum2_array + ((OFF_T)(i) * xfer_sum_len))
126+
127 #define NAME_IS_FILE (0) /* filter name as a file */
128 #define NAME_IS_DIR (1<<0) /* filter name as a dir */
129 #define NAME_IS_XATTR (1<<2) /* filter name as an xattr */
130diff --git a/sender.c b/sender.c
131index 3d4f052e..ab205341 100644
132--- a/sender.c
133+++ b/sender.c
134@@ -31,6 +31,7 @@ extern int log_before_transfer;
135 extern int stdout_format_has_i;
136 extern int logfile_format_has_i;
137 extern int want_xattr_optim;
138+extern int xfer_sum_len;
139 extern int csum_length;
140 extern int append_mode;
141 extern int copy_links;
142@@ -94,10 +95,11 @@ static struct sum_struct *receive_sums(int f)
143 return(s);
144
145 s->sums = new_array(struct sum_buf, s->count);
146+ s->sum2_array = new_array(char, s->count * xfer_sum_len);
147
148 for (i = 0; i < s->count; i++) {
149 s->sums[i].sum1 = read_int(f);
150- read_buf(f, s->sums[i].sum2, s->s2length);
151+ read_buf(f, sum2_at(s, i), s->s2length);
152
153 s->sums[i].offset = offset;
154 s->sums[i].flags = 0;
155--
1562.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12084-0002.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12084-0002.patch
new file mode 100644
index 0000000000..266b80c241
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12084-0002.patch
@@ -0,0 +1,43 @@
1From 42e2b56c4ede3ab164f9a5c6dae02aa84606a6c1 Mon Sep 17 00:00:00 2001
2From: Wayne Davison <wayne@opencoder.net>
3Date: Tue, 5 Nov 2024 11:01:03 -0800
4Subject: [PATCH] Another cast when multiplying integers.
5
6CVE: CVE-2024-12084
7
8Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=42e2b56c4ede3ab164f9a5c6dae02aa84606a6c1]
9
10Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
11---
12 rsync.h | 2 +-
13 sender.c | 2 +-
14 2 files changed, 2 insertions(+), 2 deletions(-)
15
16diff --git a/rsync.h b/rsync.h
17index 8ddbe702..0f9e277f 100644
18--- a/rsync.h
19+++ b/rsync.h
20@@ -982,7 +982,7 @@ struct map_struct {
21 int status; /* first errno from read errors */
22 };
23
24-#define sum2_at(s, i) ((s)->sum2_array + ((OFF_T)(i) * xfer_sum_len))
25+#define sum2_at(s, i) ((s)->sum2_array + ((size_t)(i) * xfer_sum_len))
26
27 #define NAME_IS_FILE (0) /* filter name as a file */
28 #define NAME_IS_DIR (1<<0) /* filter name as a dir */
29diff --git a/sender.c b/sender.c
30index ab205341..2bbff2fa 100644
31--- a/sender.c
32+++ b/sender.c
33@@ -95,7 +95,7 @@ static struct sum_struct *receive_sums(int f)
34 return(s);
35
36 s->sums = new_array(struct sum_buf, s->count);
37- s->sum2_array = new_array(char, s->count * xfer_sum_len);
38+ s->sum2_array = new_array(char, (size_t)s->count * xfer_sum_len);
39
40 for (i = 0; i < s->count; i++) {
41 s->sums[i].sum1 = read_int(f);
42--
432.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12085.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12085.patch
new file mode 100644
index 0000000000..165d5a62f9
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12085.patch
@@ -0,0 +1,32 @@
1From 589b0691e59f761ccb05ddb8e1124991440db2c7 Mon Sep 17 00:00:00 2001
2From: Andrew Tridgell <andrew@tridgell.net>
3Date: Thu, 14 Nov 2024 09:57:08 +1100
4Subject: [PATCH] prevent information leak off the stack
5
6prevent leak of uninitialised stack data in hash_search
7
8CVE: CVE-2024-12085
9
10Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=589b0691e59f761ccb05ddb8e1124991440db2c7]
11
12Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
13---
14 match.c | 3 +++
15 1 file changed, 3 insertions(+)
16
17diff --git a/match.c b/match.c
18index 36e78ed2..dfd6af2c 100644
19--- a/match.c
20+++ b/match.c
21@@ -147,6 +147,9 @@ static void hash_search(int f,struct sum_struct *s,
22 int more;
23 schar *map;
24
25+ // prevent possible memory leaks
26+ memset(sum2, 0, sizeof sum2);
27+
28 /* want_i is used to encourage adjacent matches, allowing the RLL
29 * coding of the output to work more efficiently. */
30 want_i = 0;
31--
322.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12086-0001.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12086-0001.patch
new file mode 100644
index 0000000000..958a25a37b
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12086-0001.patch
@@ -0,0 +1,42 @@
1From 8ad4b5d912fad1df29717dddaa775724da77d299 Mon Sep 17 00:00:00 2001
2From: Andrew Tridgell <andrew@tridgell.net>
3Date: Sat, 23 Nov 2024 11:08:03 +1100
4Subject: [PATCH] refuse fuzzy options when fuzzy not selected
5
6this prevents a malicious server providing a file to compare to when
7the user has not given the fuzzy option
8
9CVE: CVE-2024-12086
10
11Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=8ad4b5d912fad1df29717dddaa775724da77d299]
12
13Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
14---
15 receiver.c | 5 +++++
16 1 file changed, 5 insertions(+)
17
18diff --git a/receiver.c b/receiver.c
19index 6b4b369e..2d7f6033 100644
20--- a/receiver.c
21+++ b/receiver.c
22@@ -66,6 +66,7 @@ extern char sender_file_sum[MAX_DIGEST_LEN];
23 extern struct file_list *cur_flist, *first_flist, *dir_flist;
24 extern filter_rule_list daemon_filter_list;
25 extern OFF_T preallocated_len;
26+extern int fuzzy_basis;
27
28 extern struct name_num_item *xfer_sum_nni;
29 extern int xfer_sum_len;
30@@ -716,6 +717,10 @@ int recv_files(int f_in, int f_out, char *local_name)
31 fnamecmp = get_backup_name(fname);
32 break;
33 case FNAMECMP_FUZZY:
34+ if (fuzzy_basis == 0) {
35+ rprintf(FERROR_XFER, "rsync: refusing malicious fuzzy operation for %s\n", xname);
36+ exit_cleanup(RERR_PROTOCOL);
37+ }
38 if (file->dirname) {
39 pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, file->dirname, xname);
40 fnamecmp = fnamecmpbuf;
41--
422.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12086-0002.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12086-0002.patch
new file mode 100644
index 0000000000..5d25f12dd8
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12086-0002.patch
@@ -0,0 +1,108 @@
1From b4a27ca25d0abb6fcf14f41b7e11f3a6e1d8a4ff Mon Sep 17 00:00:00 2001
2From: Andrew Tridgell <andrew@tridgell.net>
3Date: Sat, 23 Nov 2024 12:26:10 +1100
4Subject: [PATCH] added secure_relative_open()
5
6this is an open that enforces no symlink following for all path
7components in a relative path
8
9CVE: CVE-2024-12086
10
11Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=b4a27ca25d0abb6fcf14f41b7e11f3a6e1d8a4ff]
12
13Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
14---
15 syscall.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
16 1 file changed, 74 insertions(+)
17
18diff --git a/syscall.c b/syscall.c
19index b4b0f1f1..cffc814b 100644
20--- a/syscall.c
21+++ b/syscall.c
22@@ -33,6 +33,8 @@
23 #include <sys/syscall.h>
24 #endif
25
26+#include "ifuncs.h"
27+
28 extern int dry_run;
29 extern int am_root;
30 extern int am_sender;
31@@ -707,3 +709,75 @@ int do_open_nofollow(const char *pathname, int flags)
32
33 return fd;
34 }
35+
36+/*
37+ open a file relative to a base directory. The basedir can be NULL,
38+ in which case the current working directory is used. The relpath
39+ must be a relative path, and the relpath must not contain any
40+ elements in the path which follow symlinks (ie. like O_NOFOLLOW, but
41+ applies to all path components, not just the last component)
42+*/
43+int secure_relative_open(const char *basedir, const char *relpath, int flags, mode_t mode)
44+{
45+ if (!relpath || relpath[0] == '/') {
46+ // must be a relative path
47+ errno = EINVAL;
48+ return -1;
49+ }
50+
51+#if !defined(O_NOFOLLOW) || !defined(O_DIRECTORY)
52+ // really old system, all we can do is live with the risks
53+ if (!basedir) {
54+ return open(relpath, flags, mode);
55+ }
56+ char fullpath[MAXPATHLEN];
57+ pathjoin(fullpath, sizeof fullpath, basedir, relpath);
58+ return open(fullpath, flags, mode);
59+#else
60+ int dirfd = AT_FDCWD;
61+ if (basedir != NULL) {
62+ dirfd = openat(AT_FDCWD, basedir, O_RDONLY | O_DIRECTORY);
63+ if (dirfd == -1) {
64+ return -1;
65+ }
66+ }
67+ int retfd = -1;
68+
69+ char *path_copy = my_strdup(relpath, __FILE__, __LINE__);
70+ if (!path_copy) {
71+ return -1;
72+ }
73+
74+ for (const char *part = strtok(path_copy, "/");
75+ part != NULL;
76+ part = strtok(NULL, "/"))
77+ {
78+ int next_fd = openat(dirfd, part, O_RDONLY | O_DIRECTORY | O_NOFOLLOW);
79+ if (next_fd == -1 && errno == ENOTDIR) {
80+ if (strtok(NULL, "/") != NULL) {
81+ // this is not the last component of the path
82+ errno = ELOOP;
83+ goto cleanup;
84+ }
85+ // this could be the last component of the path, try as a file
86+ retfd = openat(dirfd, part, flags | O_NOFOLLOW, mode);
87+ goto cleanup;
88+ }
89+ if (next_fd == -1) {
90+ goto cleanup;
91+ }
92+ if (dirfd != AT_FDCWD) close(dirfd);
93+ dirfd = next_fd;
94+ }
95+
96+ // the path must be a directory
97+ errno = EINVAL;
98+
99+cleanup:
100+ free(path_copy);
101+ if (dirfd != AT_FDCWD) {
102+ close(dirfd);
103+ }
104+ return retfd;
105+#endif // O_NOFOLLOW, O_DIRECTORY
106+}
107--
1082.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12086-0003.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12086-0003.patch
new file mode 100644
index 0000000000..de1747adf2
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12086-0003.patch
@@ -0,0 +1,108 @@
1From c35e28331f10ba6eba370611abd78bde32d54da7 Mon Sep 17 00:00:00 2001
2From: Andrew Tridgell <andrew@tridgell.net>
3Date: Sat, 23 Nov 2024 12:28:13 +1100
4Subject: [PATCH] receiver: use secure_relative_open() for basis file
5
6this prevents attacks where the basis file is manipulated by a
7malicious sender to gain information about files outside the
8destination tree
9
10CVE: CVE-2024-12086
11
12Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=c35e28331f10ba6eba370611abd78bde32d54da7]
13
14Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
15---
16 receiver.c | 42 ++++++++++++++++++++++++++----------------
17 1 file changed, 26 insertions(+), 16 deletions(-)
18
19diff --git a/receiver.c b/receiver.c
20index 2d7f6033..8031b8f4 100644
21--- a/receiver.c
22+++ b/receiver.c
23@@ -552,6 +552,8 @@ int recv_files(int f_in, int f_out, char *local_name)
24 progress_init();
25
26 while (1) {
27+ const char *basedir = NULL;
28+
29 cleanup_disable();
30
31 /* This call also sets cur_flist. */
32@@ -722,27 +724,29 @@ int recv_files(int f_in, int f_out, char *local_name)
33 exit_cleanup(RERR_PROTOCOL);
34 }
35 if (file->dirname) {
36- pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, file->dirname, xname);
37- fnamecmp = fnamecmpbuf;
38- } else
39- fnamecmp = xname;
40+ basedir = file->dirname;
41+ }
42+ fnamecmp = xname;
43 break;
44 default:
45 if (fnamecmp_type > FNAMECMP_FUZZY && fnamecmp_type-FNAMECMP_FUZZY <= basis_dir_cnt) {
46 fnamecmp_type -= FNAMECMP_FUZZY + 1;
47 if (file->dirname) {
48- stringjoin(fnamecmpbuf, sizeof fnamecmpbuf,
49- basis_dir[fnamecmp_type], "/", file->dirname, "/", xname, NULL);
50- } else
51- pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, basis_dir[fnamecmp_type], xname);
52+ pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, basis_dir[fnamecmp_type], file->dirname);
53+ basedir = fnamecmpbuf;
54+ } else {
55+ basedir = basis_dir[fnamecmp_type];
56+ }
57+ fnamecmp = xname;
58 } else if (fnamecmp_type >= basis_dir_cnt) {
59 rprintf(FERROR,
60 "invalid basis_dir index: %d.\n",
61 fnamecmp_type);
62 exit_cleanup(RERR_PROTOCOL);
63- } else
64- pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, basis_dir[fnamecmp_type], fname);
65- fnamecmp = fnamecmpbuf;
66+ } else {
67+ basedir = basis_dir[fnamecmp_type];
68+ fnamecmp = fname;
69+ }
70 break;
71 }
72 if (!fnamecmp || (daemon_filter_list.head
73@@ -765,7 +769,7 @@ int recv_files(int f_in, int f_out, char *local_name)
74 }
75
76 /* open the file */
77- fd1 = do_open(fnamecmp, O_RDONLY, 0);
78+ fd1 = secure_relative_open(basedir, fnamecmp, O_RDONLY, 0);
79
80 if (fd1 == -1 && protocol_version < 29) {
81 if (fnamecmp != fname) {
82@@ -776,14 +780,20 @@ int recv_files(int f_in, int f_out, char *local_name)
83
84 if (fd1 == -1 && basis_dir[0]) {
85 /* pre-29 allowed only one alternate basis */
86- pathjoin(fnamecmpbuf, sizeof fnamecmpbuf,
87- basis_dir[0], fname);
88- fnamecmp = fnamecmpbuf;
89+ basedir = basis_dir[0];
90+ fnamecmp = fname;
91 fnamecmp_type = FNAMECMP_BASIS_DIR_LOW;
92- fd1 = do_open(fnamecmp, O_RDONLY, 0);
93+ fd1 = secure_relative_open(basedir, fnamecmp, O_RDONLY, 0);
94 }
95 }
96
97+ if (basedir) {
98+ // for the following code we need the full
99+ // path name as a single string
100+ pathjoin(fnamecmpbuf, sizeof fnamecmpbuf, basedir, fnamecmp);
101+ fnamecmp = fnamecmpbuf;
102+ }
103+
104 one_inplace = inplace_partial && fnamecmp_type == FNAMECMP_PARTIAL_DIR;
105 updating_basis_or_equiv = one_inplace
106 || (inplace && (fnamecmp == fname || fnamecmp_type == FNAMECMP_BACKUP));
107--
1082.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12086-0004.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12086-0004.patch
new file mode 100644
index 0000000000..b85e1dfae4
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12086-0004.patch
@@ -0,0 +1,41 @@
1From 9f86ddc9652247233f32b241a79d5aa4fb9d4afa Mon Sep 17 00:00:00 2001
2From: Andrew Tridgell <andrew@tridgell.net>
3Date: Tue, 26 Nov 2024 09:16:31 +1100
4Subject: [PATCH] disallow ../ elements in relpath for secure_relative_open
5
6CVE: CVE-2024-12086
7
8Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=9f86ddc9652247233f32b241a79d5aa4fb9d4afa]
9
10Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
11---
12 syscall.c | 7 +++++++
13 1 file changed, 7 insertions(+)
14
15diff --git a/syscall.c b/syscall.c
16index cffc814b..081357bb 100644
17--- a/syscall.c
18+++ b/syscall.c
19@@ -716,6 +716,8 @@ int do_open_nofollow(const char *pathname, int flags)
20 must be a relative path, and the relpath must not contain any
21 elements in the path which follow symlinks (ie. like O_NOFOLLOW, but
22 applies to all path components, not just the last component)
23+
24+ The relpath must also not contain any ../ elements in the path
25 */
26 int secure_relative_open(const char *basedir, const char *relpath, int flags, mode_t mode)
27 {
28@@ -724,6 +726,11 @@ int secure_relative_open(const char *basedir, const char *relpath, int flags, mo
29 errno = EINVAL;
30 return -1;
31 }
32+ if (strncmp(relpath, "../", 3) == 0 || strstr(relpath, "/../")) {
33+ // no ../ elements allowed in the relpath
34+ errno = EINVAL;
35+ return -1;
36+ }
37
38 #if !defined(O_NOFOLLOW) || !defined(O_DIRECTORY)
39 // really old system, all we can do is live with the risks
40--
412.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12087-0001.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12087-0001.patch
new file mode 100644
index 0000000000..67abc64a62
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12087-0001.patch
@@ -0,0 +1,49 @@
1From 688f5c379a433038bde36897a156d589be373a98 Mon Sep 17 00:00:00 2001
2From: Wayne Davison <wayne@opencoder.net>
3Date: Thu, 14 Nov 2024 15:46:50 -0800
4Subject: [PATCH] Refuse a duplicate dirlist.
5
6CVE: CVE-2024-12087
7
8Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=688f5c379a433038bde36897a156d589be373a98]
9
10Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
11---
12 flist.c | 9 +++++++++
13 rsync.h | 1 +
14 2 files changed, 10 insertions(+)
15
16diff --git a/flist.c b/flist.c
17index 464d556e..847b1054 100644
18--- a/flist.c
19+++ b/flist.c
20@@ -2584,6 +2584,15 @@ struct file_list *recv_file_list(int f, int dir_ndx)
21 init_hard_links();
22 #endif
23
24+ if (inc_recurse && dir_ndx >= 0) {
25+ struct file_struct *file = dir_flist->files[dir_ndx];
26+ if (file->flags & FLAG_GOT_DIR_FLIST) {
27+ rprintf(FERROR_XFER, "rsync: refusing malicious duplicate flist for dir %d\n", dir_ndx);
28+ exit_cleanup(RERR_PROTOCOL);
29+ }
30+ file->flags |= FLAG_GOT_DIR_FLIST;
31+ }
32+
33 flist = flist_new(0, "recv_file_list");
34 flist_expand(flist, FLIST_START_LARGE);
35
36diff --git a/rsync.h b/rsync.h
37index 0f9e277f..b9a7101a 100644
38--- a/rsync.h
39+++ b/rsync.h
40@@ -84,6 +84,7 @@
41 #define FLAG_DUPLICATE (1<<4) /* sender */
42 #define FLAG_MISSING_DIR (1<<4) /* generator */
43 #define FLAG_HLINKED (1<<5) /* receiver/generator (checked on all types) */
44+#define FLAG_GOT_DIR_FLIST (1<<5)/* sender/receiver/generator - dir_flist only */
45 #define FLAG_HLINK_FIRST (1<<6) /* receiver/generator (w/FLAG_HLINKED) */
46 #define FLAG_IMPLIED_DIR (1<<6) /* sender/receiver/generator (dirs only) */
47 #define FLAG_HLINK_LAST (1<<7) /* receiver/generator */
48--
492.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12087-0002.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12087-0002.patch
new file mode 100644
index 0000000000..8a22e0c371
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12087-0002.patch
@@ -0,0 +1,31 @@
1From 344327385fa47fa5bb67a32c237735e6240cfb93 Mon Sep 17 00:00:00 2001
2From: Andrew Tridgell <andrew@tridgell.net>
3Date: Tue, 26 Nov 2024 16:12:45 +1100
4Subject: [PATCH] range check dir_ndx before use
5
6CVE: CVE-2024-12087
7
8Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=344327385fa47fa5bb67a32c237735e6240cfb93]
9
10Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
11---
12 flist.c | 4 ++++
13 1 file changed, 4 insertions(+)
14
15diff --git a/flist.c b/flist.c
16index 847b1054..087f9da6 100644
17--- a/flist.c
18+++ b/flist.c
19@@ -2585,6 +2585,10 @@ struct file_list *recv_file_list(int f, int dir_ndx)
20 #endif
21
22 if (inc_recurse && dir_ndx >= 0) {
23+ if (dir_ndx >= dir_flist->used) {
24+ rprintf(FERROR_XFER, "rsync: refusing invalid dir_ndx %u >= %u\n", dir_ndx, dir_flist->used);
25+ exit_cleanup(RERR_PROTOCOL);
26+ }
27 struct file_struct *file = dir_flist->files[dir_ndx];
28 if (file->flags & FLAG_GOT_DIR_FLIST) {
29 rprintf(FERROR_XFER, "rsync: refusing malicious duplicate flist for dir %d\n", dir_ndx);
30--
312.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12087-0003.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12087-0003.patch
new file mode 100644
index 0000000000..0ece69c4e7
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12087-0003.patch
@@ -0,0 +1,40 @@
1From 996af4a79f9afe4d7158ecdd87c78cee382c6b39 Mon Sep 17 00:00:00 2001
2From: Natanael Copa <ncopa@alpinelinux.org>
3Date: Wed, 15 Jan 2025 15:10:24 +0100
4Subject: [PATCH] Fix FLAG_GOT_DIR_FLIST collission with FLAG_HLINKED
5
6fixes commit 688f5c379a43 (Refuse a duplicate dirlist.)
7
8Fixes: https://github.com/RsyncProject/rsync/issues/702
9Fixes: https://github.com/RsyncProject/rsync/issues/697
10CVE: CVE-2024-12087
11
12Upstream-Status: Backport [https://github.com/RsyncProject/rsync/commit/996af4a79f9afe4d7158ecdd87c78cee382c6b39]
13
14Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
15---
16 rsync.h | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/rsync.h b/rsync.h
20index 9be1297b..479ac484 100644
21--- a/rsync.h
22+++ b/rsync.h
23@@ -84,7 +84,6 @@
24 #define FLAG_DUPLICATE (1<<4) /* sender */
25 #define FLAG_MISSING_DIR (1<<4) /* generator */
26 #define FLAG_HLINKED (1<<5) /* receiver/generator (checked on all types) */
27-#define FLAG_GOT_DIR_FLIST (1<<5)/* sender/receiver/generator - dir_flist only */
28 #define FLAG_HLINK_FIRST (1<<6) /* receiver/generator (w/FLAG_HLINKED) */
29 #define FLAG_IMPLIED_DIR (1<<6) /* sender/receiver/generator (dirs only) */
30 #define FLAG_HLINK_LAST (1<<7) /* receiver/generator */
31@@ -93,6 +92,7 @@
32 #define FLAG_SKIP_GROUP (1<<10) /* receiver/generator */
33 #define FLAG_TIME_FAILED (1<<11)/* generator */
34 #define FLAG_MOD_NSEC (1<<12) /* sender/receiver/generator */
35+#define FLAG_GOT_DIR_FLIST (1<<13)/* sender/receiver/generator - dir_flist only */
36
37 /* These flags are passed to functions but not stored. */
38
39--
402.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12088.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12088.patch
new file mode 100644
index 0000000000..b2a3a86e1a
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12088.patch
@@ -0,0 +1,141 @@
1From 407c71c7ce562137230e8ba19149c81ccc47c387 Mon Sep 17 00:00:00 2001
2From: Andrew Tridgell <andrew@tridgell.net>
3Date: Sat, 23 Nov 2024 15:15:53 +1100
4Subject: [PATCH] make --safe-links stricter
5
6when --safe-links is used also reject links where a '../' component is
7included in the destination as other than the leading part of the
8filename
9
10CVE: CVE-2024-12088
11
12Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=407c71c7ce562137230e8ba19149c81ccc47c387]
13
14Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
15---
16 testsuite/safe-links.test | 55 ++++++++++++++++++++++++++++++++++++
17 testsuite/unsafe-byname.test | 2 +-
18 util1.c | 26 ++++++++++++++++-
19 3 files changed, 81 insertions(+), 2 deletions(-)
20 create mode 100644 testsuite/safe-links.test
21
22diff --git a/testsuite/safe-links.test b/testsuite/safe-links.test
23new file mode 100644
24index 00000000..6e95a4b9
25--- /dev/null
26+++ b/testsuite/safe-links.test
27@@ -0,0 +1,55 @@
28+#!/bin/sh
29+
30+. "$suitedir/rsync.fns"
31+
32+test_symlink() {
33+ is_a_link "$1" || test_fail "File $1 is not a symlink"
34+}
35+
36+test_regular() {
37+ if [ ! -f "$1" ]; then
38+ test_fail "File $1 is not regular file or not exists"
39+ fi
40+}
41+
42+test_notexist() {
43+ if [ -e "$1" ]; then
44+ test_fail "File $1 exists"
45+ fi
46+ if [ -h "$1" ]; then
47+ test_fail "File $1 exists as a symlink"
48+ fi
49+}
50+
51+cd "$tmpdir"
52+
53+mkdir from
54+
55+mkdir "from/safe"
56+mkdir "from/unsafe"
57+
58+mkdir "from/safe/files"
59+mkdir "from/safe/links"
60+
61+touch "from/safe/files/file1"
62+touch "from/safe/files/file2"
63+touch "from/unsafe/unsafefile"
64+
65+ln -s ../files/file1 "from/safe/links/"
66+ln -s ../files/file2 "from/safe/links/"
67+ln -s ../../unsafe/unsafefile "from/safe/links/"
68+ln -s a/a/a/../../../unsafe2 "from/safe/links/"
69+
70+#echo "LISTING FROM"
71+#ls -lR from
72+
73+echo "rsync with relative path and just -a"
74+$RSYNC -avv --safe-links from/safe/ to
75+
76+#echo "LISTING TO"
77+#ls -lR to
78+
79+test_symlink to/links/file1
80+test_symlink to/links/file2
81+test_notexist to/links/unsafefile
82+test_notexist to/links/unsafe2
83diff --git a/testsuite/unsafe-byname.test b/testsuite/unsafe-byname.test
84index 75e72014..d2e318ef 100644
85--- a/testsuite/unsafe-byname.test
86+++ b/testsuite/unsafe-byname.test
87@@ -40,7 +40,7 @@ test_unsafe ..//../dest from/dir unsafe
88 test_unsafe .. from/file safe
89 test_unsafe ../.. from/file unsafe
90 test_unsafe ..//.. from//file unsafe
91-test_unsafe dir/.. from safe
92+test_unsafe dir/.. from unsafe
93 test_unsafe dir/../.. from unsafe
94 test_unsafe dir/..//.. from unsafe
95
96diff --git a/util1.c b/util1.c
97index da50ff1e..f260d398 100644
98--- a/util1.c
99+++ b/util1.c
100@@ -1318,7 +1318,14 @@ int handle_partial_dir(const char *fname, int create)
101 *
102 * "src" is the top source directory currently applicable at the level
103 * of the referenced symlink. This is usually the symlink's full path
104- * (including its name), as referenced from the root of the transfer. */
105+ * (including its name), as referenced from the root of the transfer.
106+ *
107+ * NOTE: this also rejects dest names with a .. component in other
108+ * than the first component of the name ie. it rejects names such as
109+ * a/b/../x/y. This needs to be done as the leading subpaths 'a' or
110+ * 'b' could later be replaced with symlinks such as a link to '.'
111+ * resulting in the link being transferred now becoming unsafe
112+ */
113 int unsafe_symlink(const char *dest, const char *src)
114 {
115 const char *name, *slash;
116@@ -1328,6 +1335,23 @@ int unsafe_symlink(const char *dest, const char *src)
117 if (!dest || !*dest || *dest == '/')
118 return 1;
119
120+ // reject destinations with /../ in the name other than at the start of the name
121+ const char *dest2 = dest;
122+ while (strncmp(dest2, "../", 3) == 0) {
123+ dest2 += 3;
124+ while (*dest2 == '/') {
125+ // allow for ..//..///../foo
126+ dest2++;
127+ }
128+ }
129+ if (strstr(dest2, "/../"))
130+ return 1;
131+
132+ // reject if the destination ends in /..
133+ const size_t dlen = strlen(dest);
134+ if (dlen > 3 && strcmp(&dest[dlen-3], "/..") == 0)
135+ return 1;
136+
137 /* find out what our safety margin is */
138 for (name = src; (slash = strchr(name, '/')) != 0; name = slash+1) {
139 /* ".." segment starts the count over. "." segment is ignored. */
140--
1412.40.0
diff --git a/meta/recipes-devtools/rsync/files/CVE-2024-12747.patch b/meta/recipes-devtools/rsync/files/CVE-2024-12747.patch
new file mode 100644
index 0000000000..b1dd0a03b9
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/CVE-2024-12747.patch
@@ -0,0 +1,192 @@
1From 0590b09d9a34ae72741b91ec0708a820650198b0 Mon Sep 17 00:00:00 2001
2From: Andrew Tridgell <andrew@tridgell.net>
3Date: Wed, 18 Dec 2024 08:59:42 +1100
4Subject: [PATCH] fixed symlink race condition in sender
5
6when we open a file that we don't expect to be a symlink use
7O_NOFOLLOW to prevent a race condition where an attacker could change
8a file between being a normal file and a symlink
9
10CVE: CVE-2024-12747
11
12Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=0590b09d9a34ae72741b91ec0708a820650198b0]
13
14Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
15---
16 checksum.c | 2 +-
17 flist.c | 2 +-
18 generator.c | 4 ++--
19 receiver.c | 2 +-
20 sender.c | 2 +-
21 syscall.c | 20 ++++++++++++++++++++
22 t_unsafe.c | 3 +++
23 tls.c | 3 +++
24 trimslash.c | 2 ++
25 util1.c | 2 +-
26 10 files changed, 35 insertions(+), 7 deletions(-)
27
28diff --git a/checksum.c b/checksum.c
29index cb21882c..66e80896 100644
30--- a/checksum.c
31+++ b/checksum.c
32@@ -406,7 +406,7 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
33 int32 remainder;
34 int fd;
35
36- fd = do_open(fname, O_RDONLY, 0);
37+ fd = do_open_checklinks(fname);
38 if (fd == -1) {
39 memset(sum, 0, file_sum_len);
40 return;
41diff --git a/flist.c b/flist.c
42index 087f9da6..17832533 100644
43--- a/flist.c
44+++ b/flist.c
45@@ -1390,7 +1390,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
46
47 if (copy_devices && am_sender && IS_DEVICE(st.st_mode)) {
48 if (st.st_size == 0) {
49- int fd = do_open(fname, O_RDONLY, 0);
50+ int fd = do_open_checklinks(fname);
51 if (fd >= 0) {
52 st.st_size = get_device_size(fd, fname);
53 close(fd);
54diff --git a/generator.c b/generator.c
55index 110db28f..3f13bb95 100644
56--- a/generator.c
57+++ b/generator.c
58@@ -1798,7 +1798,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
59
60 if (write_devices && IS_DEVICE(sx.st.st_mode) && sx.st.st_size == 0) {
61 /* This early open into fd skips the regular open below. */
62- if ((fd = do_open(fnamecmp, O_RDONLY, 0)) >= 0)
63+ if ((fd = do_open_nofollow(fnamecmp, O_RDONLY)) >= 0)
64 real_sx.st.st_size = sx.st.st_size = get_device_size(fd, fnamecmp);
65 }
66
67@@ -1867,7 +1867,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
68 }
69
70 /* open the file */
71- if (fd < 0 && (fd = do_open(fnamecmp, O_RDONLY, 0)) < 0) {
72+ if (fd < 0 && (fd = do_open_checklinks(fnamecmp)) < 0) {
73 rsyserr(FERROR, errno, "failed to open %s, continuing",
74 full_fname(fnamecmp));
75 pretend_missing:
76diff --git a/receiver.c b/receiver.c
77index 8031b8f4..edfbb210 100644
78--- a/receiver.c
79+++ b/receiver.c
80@@ -775,7 +775,7 @@ int recv_files(int f_in, int f_out, char *local_name)
81 if (fnamecmp != fname) {
82 fnamecmp = fname;
83 fnamecmp_type = FNAMECMP_FNAME;
84- fd1 = do_open(fnamecmp, O_RDONLY, 0);
85+ fd1 = do_open_nofollow(fnamecmp, O_RDONLY);
86 }
87
88 if (fd1 == -1 && basis_dir[0]) {
89diff --git a/sender.c b/sender.c
90index 2bbff2fa..a4d46c39 100644
91--- a/sender.c
92+++ b/sender.c
93@@ -350,7 +350,7 @@ void send_files(int f_in, int f_out)
94 exit_cleanup(RERR_PROTOCOL);
95 }
96
97- fd = do_open(fname, O_RDONLY, 0);
98+ fd = do_open_checklinks(fname);
99 if (fd == -1) {
100 if (errno == ENOENT) {
101 enum logcode c = am_daemon && protocol_version < 28 ? FERROR : FWARNING;
102diff --git a/syscall.c b/syscall.c
103index 081357bb..8cea2900 100644
104--- a/syscall.c
105+++ b/syscall.c
106@@ -45,6 +45,8 @@ extern int preallocate_files;
107 extern int preserve_perms;
108 extern int preserve_executability;
109 extern int open_noatime;
110+extern int copy_links;
111+extern int copy_unsafe_links;
112
113 #ifndef S_BLKSIZE
114 # if defined hpux || defined __hpux__ || defined __hpux
115@@ -788,3 +790,21 @@ cleanup:
116 return retfd;
117 #endif // O_NOFOLLOW, O_DIRECTORY
118 }
119+
120+/*
121+ varient of do_open/do_open_nofollow which does do_open() if the
122+ copy_links or copy_unsafe_links options are set and does
123+ do_open_nofollow() otherwise
124+
125+ This is used to prevent a race condition where an attacker could be
126+ switching a file between being a symlink and being a normal file
127+
128+ The open is always done with O_RDONLY flags
129+ */
130+int do_open_checklinks(const char *pathname)
131+{
132+ if (copy_links || copy_unsafe_links) {
133+ return do_open(pathname, O_RDONLY, 0);
134+ }
135+ return do_open_nofollow(pathname, O_RDONLY);
136+}
137diff --git a/t_unsafe.c b/t_unsafe.c
138index 010cac50..e10619a2 100644
139--- a/t_unsafe.c
140+++ b/t_unsafe.c
141@@ -28,6 +28,9 @@ int am_root = 0;
142 int am_sender = 1;
143 int read_only = 0;
144 int list_only = 0;
145+int copy_links = 0;
146+int copy_unsafe_links = 0;
147+
148 short info_levels[COUNT_INFO], debug_levels[COUNT_DEBUG];
149
150 int
151diff --git a/tls.c b/tls.c
152index e6b0708a..858f8f10 100644
153--- a/tls.c
154+++ b/tls.c
155@@ -49,6 +49,9 @@ int list_only = 0;
156 int link_times = 0;
157 int link_owner = 0;
158 int nsec_times = 0;
159+int safe_symlinks = 0;
160+int copy_links = 0;
161+int copy_unsafe_links = 0;
162
163 #ifdef SUPPORT_XATTRS
164
165diff --git a/trimslash.c b/trimslash.c
166index 1ec928ca..f2774cd7 100644
167--- a/trimslash.c
168+++ b/trimslash.c
169@@ -26,6 +26,8 @@ int am_root = 0;
170 int am_sender = 1;
171 int read_only = 1;
172 int list_only = 0;
173+int copy_links = 0;
174+int copy_unsafe_links = 0;
175
176 int
177 main(int argc, char **argv)
178diff --git a/util1.c b/util1.c
179index f260d398..d84bc414 100644
180--- a/util1.c
181+++ b/util1.c
182@@ -365,7 +365,7 @@ int copy_file(const char *source, const char *dest, int tmpfilefd, mode_t mode)
183 int len; /* Number of bytes read into `buf'. */
184 OFF_T prealloc_len = 0, offset = 0;
185
186- if ((ifd = do_open(source, O_RDONLY, 0)) < 0) {
187+ if ((ifd = do_open_nofollow(source, O_RDONLY)) < 0) {
188 int save_errno = errno;
189 rsyserr(FERROR_XFER, errno, "open %s", full_fname(source));
190 errno = save_errno;
191--
1922.40.0
diff --git a/meta/recipes-devtools/rsync/rsync_3.2.7.bb b/meta/recipes-devtools/rsync/rsync_3.2.7.bb
index 130581a785..d0796d3c12 100644
--- a/meta/recipes-devtools/rsync/rsync_3.2.7.bb
+++ b/meta/recipes-devtools/rsync/rsync_3.2.7.bb
@@ -15,6 +15,18 @@ SRC_URI = "https://download.samba.org/pub/${BPN}/src/${BP}.tar.gz \
15 file://makefile-no-rebuild.patch \ 15 file://makefile-no-rebuild.patch \
16 file://determism.patch \ 16 file://determism.patch \
17 file://0001-Add-missing-prototypes-to-function-declarations.patch \ 17 file://0001-Add-missing-prototypes-to-function-declarations.patch \
18 file://CVE-2024-12084-0001.patch \
19 file://CVE-2024-12084-0002.patch \
20 file://CVE-2024-12085.patch \
21 file://CVE-2024-12086-0001.patch \
22 file://CVE-2024-12086-0002.patch \
23 file://CVE-2024-12086-0003.patch \
24 file://CVE-2024-12086-0004.patch \
25 file://CVE-2024-12087-0001.patch \
26 file://CVE-2024-12087-0002.patch \
27 file://CVE-2024-12087-0003.patch \
28 file://CVE-2024-12088.patch \
29 file://CVE-2024-12747.patch \
18 " 30 "
19SRC_URI[sha256sum] = "4e7d9d3f6ed10878c58c5fb724a67dacf4b6aac7340b13e488fb2dc41346f2bb" 31SRC_URI[sha256sum] = "4e7d9d3f6ed10878c58c5fb724a67dacf4b6aac7340b13e488fb2dc41346f2bb"
20 32
diff --git a/meta/recipes-devtools/ruby/ruby/0001-fiddle-Use-C11-_Alignof-to-define-ALIGN_OF-when-poss.patch b/meta/recipes-devtools/ruby/ruby/0001-fiddle-Use-C11-_Alignof-to-define-ALIGN_OF-when-poss.patch
deleted file mode 100644
index 1dff9c0f8c..0000000000
--- a/meta/recipes-devtools/ruby/ruby/0001-fiddle-Use-C11-_Alignof-to-define-ALIGN_OF-when-poss.patch
+++ /dev/null
@@ -1,52 +0,0 @@
1From 6b3c202b46b9312c5bb0789145f13d8086e70948 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 15 Jan 2023 02:34:17 -0800
4Subject: [PATCH] fiddle: Use C11 _Alignof to define ALIGN_OF when possible
5
6WG14 N2350 made very clear that it is an UB having type definitions
7within "offsetof" [1]. This patch enhances the implementation of macro
8ALIGN_OF to use builtin "_Alignof" to avoid undefined behavior
9when using std=c11 or newer
10
11clang 16+ has started to flag this [2]
12
13Fixes build when using -std >= gnu11 and using clang16+
14
15Older compilers gcc < 4.9 or clang < 8 has buggy _Alignof even though it
16may support C11, exclude those compiler versions
17
18[1] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm
19[2] https://reviews.llvm.org/D133574
20
21Upstream-Status: Submitted [https://github.com/ruby/fiddle/pull/120]
22Signed-off-by: Khem Raj <raj.khem@gmail.com>
23---
24 ext/fiddle/fiddle.h | 12 +++++++++++-
25 1 file changed, 11 insertions(+), 1 deletion(-)
26
27diff --git a/ext/fiddle/fiddle.h b/ext/fiddle/fiddle.h
28index 10eb9ce..ffb395e 100644
29--- a/ext/fiddle/fiddle.h
30+++ b/ext/fiddle/fiddle.h
31@@ -196,7 +196,17 @@
32 #endif
33 #define TYPE_UINTPTR_T (-TYPE_INTPTR_T)
34
35-#define ALIGN_OF(type) offsetof(struct {char align_c; type align_x;}, align_x)
36+/* GCC releases before GCC 4.9 had a bug in _Alignof. See GCC bug 52023
37+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>.
38+ clang versions < 8.0.0 have the same bug. */
39+#if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \
40+ || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \
41+ && !defined __clang__) \
42+ || (defined __clang__ && __clang_major__ < 8))
43+# define ALIGN_OF(type) offsetof(struct {char align_c; type align_x;}, align_x)
44+#else
45+# define ALIGN_OF(type) _Alignof(type)
46+#endif
47
48 #define ALIGN_VOIDP ALIGN_OF(void*)
49 #define ALIGN_CHAR ALIGN_OF(char)
50--
512.39.0
52
diff --git a/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch b/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
deleted file mode 100644
index 226ef3af75..0000000000
--- a/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From 2368d07660a93a2c41d63f3ab6054ca4daeef820 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Tue, 17 Nov 2020 18:31:40 +0000
4Subject: [PATCH] template/Makefile.in: do not write host cross-cc items into
5 target config
6
7This helps reproducibility.
8
9Upstream-Status: Inappropriate [oe-core specific]
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11---
12 template/Makefile.in | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/template/Makefile.in b/template/Makefile.in
16index 10dc826..940ee07 100644
17--- a/template/Makefile.in
18+++ b/template/Makefile.in
19@@ -657,11 +657,11 @@ mjit_config.h:
20 echo '#endif'; \
21 quote MJIT_MIN_HEADER_NAME "$(MJIT_MIN_HEADER_NAME)"; \
22 sep=,; \
23- quote "MJIT_CC_COMMON " $(MJIT_CC); \
24+ quote "MJIT_CC_COMMON " ; \
25 quote "MJIT_CFLAGS MJIT_ARCHFLAG" $(MJIT_CFLAGS); \
26 quote "MJIT_OPTFLAGS " $(MJIT_OPTFLAGS); \
27 quote "MJIT_DEBUGFLAGS " $(MJIT_DEBUGFLAGS); \
28- quote "MJIT_LDSHARED " $(MJIT_LDSHARED); \
29+ quote "MJIT_LDSHARED " ; \
30 quote "MJIT_DLDFLAGS MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
31 quote "MJIT_LIBS " $(LIBRUBYARG_SHARED); \
32 quote 'PRELOADENV "@PRELOADENV@"'; \
diff --git a/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch b/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch
deleted file mode 100644
index 96ae86263b..0000000000
--- a/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1From 21d8e7700fa0a9c4bf569dd366134060ae858832 Mon Sep 17 00:00:00 2001
2From: Christopher Larson <chris_larson@mentor.com>
3Date: Thu, 5 May 2016 10:59:07 -0700
4Subject: [PATCH] Obey LDFLAGS for the link of libruby
5
6Signed-off-by: Christopher Larson <chris_larson@mentor.com>
7Upstream-Status: Pending
8
9---
10 template/Makefile.in | 2 +-
11 1 file changed, 1 insertion(+), 1 deletion(-)
12
13diff --git a/template/Makefile.in b/template/Makefile.in
14index 1456313..15b98a4 100644
15--- a/template/Makefile.in
16+++ b/template/Makefile.in
17@@ -127,7 +127,7 @@ ENABLE_SHARED = @ENABLE_SHARED@
18 LDSHARED = @LIBRUBY_LDSHARED@
19 DLDSHARED = @DLDSHARED@
20 XDLDFLAGS = @DLDFLAGS@
21-DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
22+DLDFLAGS = @LIBRUBY_DLDFLAGS@ @LDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
23 SOLIBS = @SOLIBS@
24 ENABLE_DEBUG_ENV = @ENABLE_DEBUG_ENV@
25 MAINLIBS = $(YJIT_LIBS) @MAINLIBS@
diff --git a/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
deleted file mode 100644
index 2efbad7513..0000000000
--- a/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
+++ /dev/null
@@ -1,42 +0,0 @@
1Subject: [PATCH] template/Makefile.in: filter out -f*prefix-map
2
3If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no longer
4reproducible. Fix this.
5
6Upstream-Status: Inappropriate [oe-core specific]
7Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
8---
9--- a/tool/mjit_archflag.sh
10+++ b/tool/mjit_archflag.sh
11@@ -7,6 +7,20 @@ quote() {
12 echo
13 }
14
15+quote_filtered() {
16+ printf "#${indent}define $1"
17+ while shift && [ "$#" -gt 0 ]; do
18+ case "$1" in
19+ -ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*)
20+ ;;
21+ *)
22+ printf ' "%s"'$sep "$1"
23+ ;;
24+ esac
25+ done
26+ echo
27+}
28+
29 archs=""
30 arch_flag=""
31
32--- a/template/Makefile.in
33+++ b/template/Makefile.in
34@@ -666,7 +666,7 @@ mjit_config.h:
35 quote "MJIT_OPTFLAGS " $(MJIT_OPTFLAGS); \
36 quote "MJIT_DEBUGFLAGS " $(MJIT_DEBUGFLAGS); \
37 quote "MJIT_LDSHARED " ; \
38- quote "MJIT_DLDFLAGS MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
39+ quote_filtered "MJIT_DLDFLAGS MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
40 quote "MJIT_LIBS " $(LIBRUBYARG_SHARED); \
41 quote 'PRELOADENV "@PRELOADENV@"'; \
42 indent=$${archs:+' '}; \
diff --git a/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch b/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
index 41f206523e..0902a201ec 100644
--- a/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
+++ b/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
@@ -12,20 +12,20 @@ Upstream-Status: Backport [debian]
12 1 file changed, 3 insertions(+), 1 deletion(-) 12 1 file changed, 3 insertions(+), 1 deletion(-)
13 13
14diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb 14diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
15index 0d72cee..eb7bc25 100644 15index d6eac7f..4b2e95e 100644
16--- a/lib/rubygems/specification.rb 16--- a/lib/rubygems/specification.rb
17+++ b/lib/rubygems/specification.rb 17+++ b/lib/rubygems/specification.rb
18@@ -1691,7 +1691,9 @@ class Gem::Specification < Gem::BasicSpecification 18@@ -1707,7 +1707,9 @@ class Gem::Specification < Gem::BasicSpecification
19 raise(Gem::InvalidSpecificationException, 19 raise(Gem::InvalidSpecificationException,
20 "invalid date format in specification: #{date.inspect}") 20 "invalid date format in specification: #{date.inspect}")
21 end 21 end
22- when Time, DateLike then 22- when Time, DateLike then
23+ when Time then 23+ when Time then
24+ Time.utc(date.utc.year, date.utc.month, date.utc.day) 24+ Time.utc(date.utc.year, date.utc.month, date.utc.day)
25+ when DateLike then 25+ when DateLike then
26 Time.utc(date.year, date.month, date.day) 26 Time.utc(date.year, date.month, date.day)
27 else 27 else
28 TODAY 28 TODAY
29-- 29--
302.25.1 302.40.0
31 31
diff --git a/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch b/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
index 0a87cae17f..d32e209129 100644
--- a/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
+++ b/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
@@ -7,7 +7,6 @@ Without an explicit date, they will get the current date and make the
7build unreproducible 7build unreproducible
8 8
9Upstream-Status: Backport [debian] 9Upstream-Status: Backport [debian]
10
11--- 10---
12 ext/bigdecimal/bigdecimal.gemspec | 1 + 11 ext/bigdecimal/bigdecimal.gemspec | 1 +
13 ext/fiddle/fiddle.gemspec | 1 + 12 ext/fiddle/fiddle.gemspec | 1 +
@@ -17,12 +16,12 @@ Upstream-Status: Backport [debian]
17 5 files changed, 5 insertions(+) 16 5 files changed, 5 insertions(+)
18 17
19diff --git a/ext/bigdecimal/bigdecimal.gemspec b/ext/bigdecimal/bigdecimal.gemspec 18diff --git a/ext/bigdecimal/bigdecimal.gemspec b/ext/bigdecimal/bigdecimal.gemspec
20index d215757..5148d56 100644 19index f9f3b45..b9a469d 100644
21--- a/ext/bigdecimal/bigdecimal.gemspec 20--- a/ext/bigdecimal/bigdecimal.gemspec
22+++ b/ext/bigdecimal/bigdecimal.gemspec 21+++ b/ext/bigdecimal/bigdecimal.gemspec
23@@ -4,6 +4,7 @@ Gem::Specification.new do |s| 22@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
24 s.name = "bigdecimal" 23 s.name = name
25 s.version = "3.1.3" 24 s.version = source_version
26 s.authors = ["Kenta Murata", "Zachary Scott", "Shigeo Kobayashi"] 25 s.authors = ["Kenta Murata", "Zachary Scott", "Shigeo Kobayashi"]
27+ s.date = RUBY_RELEASE_DATE 26+ s.date = RUBY_RELEASE_DATE
28 s.email = ["mrkn@mrkn.jp"] 27 s.email = ["mrkn@mrkn.jp"]
@@ -41,10 +40,10 @@ index 8781093..efdca32 100644
41 spec.email = ["aaron@tenderlovemaking.com", "hsbt@ruby-lang.org"] 40 spec.email = ["aaron@tenderlovemaking.com", "hsbt@ruby-lang.org"]
42 41
43diff --git a/ext/io/console/io-console.gemspec b/ext/io/console/io-console.gemspec 42diff --git a/ext/io/console/io-console.gemspec b/ext/io/console/io-console.gemspec
44index d26a757..cc88c55 100644 43index d4f5276..8f89611 100644
45--- a/ext/io/console/io-console.gemspec 44--- a/ext/io/console/io-console.gemspec
46+++ b/ext/io/console/io-console.gemspec 45+++ b/ext/io/console/io-console.gemspec
47@@ -4,6 +4,7 @@ _VERSION = "0.6.0" 46@@ -4,6 +4,7 @@ _VERSION = "0.7.1"
48 Gem::Specification.new do |s| 47 Gem::Specification.new do |s|
49 s.name = "io-console" 48 s.name = "io-console"
50 s.version = _VERSION 49 s.version = _VERSION
@@ -65,7 +64,7 @@ index 1f4798e..48743cf 100644
65 spec.email = ["knu@idaemons.org", "ume@mahoroba.org"] 64 spec.email = ["knu@idaemons.org", "ume@mahoroba.org"]
66 65
67diff --git a/lib/rdoc/rdoc.gemspec b/lib/rdoc/rdoc.gemspec 66diff --git a/lib/rdoc/rdoc.gemspec b/lib/rdoc/rdoc.gemspec
68index 3c96f7d..fec0872 100644 67index 93a281c..cc5c155 100644
69--- a/lib/rdoc/rdoc.gemspec 68--- a/lib/rdoc/rdoc.gemspec
70+++ b/lib/rdoc/rdoc.gemspec 69+++ b/lib/rdoc/rdoc.gemspec
71@@ -7,6 +7,7 @@ end 70@@ -7,6 +7,7 @@ end
@@ -76,3 +75,6 @@ index 3c96f7d..fec0872 100644
76 s.version = RDoc::VERSION 75 s.version = RDoc::VERSION
77 76
78 s.authors = [ 77 s.authors = [
78--
792.40.0
80
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2023-36617_1.patch b/meta/recipes-devtools/ruby/ruby/CVE-2023-36617_1.patch
deleted file mode 100644
index 17c7e30176..0000000000
--- a/meta/recipes-devtools/ruby/ruby/CVE-2023-36617_1.patch
+++ /dev/null
@@ -1,56 +0,0 @@
1From 2ebb50d2dc302917a6f57c1239dc9e700dfe0e34 Mon Sep 17 00:00:00 2001
2From: Nobuyoshi Nakada <nobu@ruby-lang.org>
3Date: Thu, 27 Jul 2023 15:53:01 +0800
4Subject: [PATCH] Fix quadratic backtracking on invalid relative URI
5
6https://hackerone.com/reports/1958260
7
8CVE: CVE-2023-36617
9
10Upstream-Status: Backport [https://github.com/ruby/uri/commit/9010ee2536adda10a0555ae1ed6fe2f5808e6bf1]
11
12Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
13---
14 lib/uri/rfc2396_parser.rb | 4 ++--
15 test/uri/test_parser.rb | 12 ++++++++++++
16 2 files changed, 14 insertions(+), 2 deletions(-)
17
18diff --git a/lib/uri/rfc2396_parser.rb b/lib/uri/rfc2396_parser.rb
19index 76a8f99..00c66cf 100644
20--- a/lib/uri/rfc2396_parser.rb
21+++ b/lib/uri/rfc2396_parser.rb
22@@ -497,8 +497,8 @@ module URI
23 ret = {}
24
25 # for URI::split
26- ret[:ABS_URI] = Regexp.new('\A\s*' + pattern[:X_ABS_URI] + '\s*\z', Regexp::EXTENDED)
27- ret[:REL_URI] = Regexp.new('\A\s*' + pattern[:X_REL_URI] + '\s*\z', Regexp::EXTENDED)
28+ ret[:ABS_URI] = Regexp.new('\A\s*+' + pattern[:X_ABS_URI] + '\s*\z', Regexp::EXTENDED)
29+ ret[:REL_URI] = Regexp.new('\A\s*+' + pattern[:X_REL_URI] + '\s*\z', Regexp::EXTENDED)
30
31 # for URI::extract
32 ret[:URI_REF] = Regexp.new(pattern[:URI_REF])
33diff --git a/test/uri/test_parser.rb b/test/uri/test_parser.rb
34index 72fb590..721e05e 100644
35--- a/test/uri/test_parser.rb
36+++ b/test/uri/test_parser.rb
37@@ -79,4 +79,16 @@ class URI::TestParser < Test::Unit::TestCase
38 assert_equal([nil, nil, "example.com", nil, nil, "", nil, nil, nil], URI.split("//example.com"))
39 assert_equal([nil, nil, "[0::0]", nil, nil, "", nil, nil, nil], URI.split("//[0::0]"))
40 end
41+
42+ def test_rfc2822_parse_relative_uri
43+ pre = ->(length) {
44+ " " * length + "\0"
45+ }
46+ parser = URI::RFC2396_Parser.new
47+ assert_linear_performance((1..5).map {|i| 10**i}, pre: pre) do |uri|
48+ assert_raise(URI::InvalidURIError) do
49+ parser.split(uri)
50+ end
51+ end
52+ end
53 end
54--
552.25.1
56
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2023-36617_2.patch b/meta/recipes-devtools/ruby/ruby/CVE-2023-36617_2.patch
deleted file mode 100644
index 7c51deaa42..0000000000
--- a/meta/recipes-devtools/ruby/ruby/CVE-2023-36617_2.patch
+++ /dev/null
@@ -1,52 +0,0 @@
1From eea5868120509c245216c4b5c2d4b5db1c593d0e Mon Sep 17 00:00:00 2001
2From: Nobuyoshi Nakada <nobu@ruby-lang.org>
3Date: Thu, 27 Jul 2023 16:16:30 +0800
4Subject: [PATCH] Fix quadratic backtracking on invalid port number
5
6https://hackerone.com/reports/1958260
7
8CVE: CVE-2023-36617
9
10Upstream-Status: Backport [https://github.com/ruby/uri/commit/9d7bcef1e6ad23c9c6e4932f297fb737888144c8]
11
12Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
13---
14 lib/uri/rfc3986_parser.rb | 2 +-
15 test/uri/test_parser.rb | 10 ++++++++++
16 2 files changed, 11 insertions(+), 1 deletion(-)
17
18diff --git a/lib/uri/rfc3986_parser.rb b/lib/uri/rfc3986_parser.rb
19index dd24a40..9b1663d 100644
20--- a/lib/uri/rfc3986_parser.rb
21+++ b/lib/uri/rfc3986_parser.rb
22@@ -100,7 +100,7 @@ module URI
23 QUERY: /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/,
24 FRAGMENT: /\A(?:%\h\h|[!$&-.0-;=@-Z_a-z~\/?])*\z/,
25 OPAQUE: /\A(?:[^\/].*)?\z/,
26- PORT: /\A[\x09\x0a\x0c\x0d ]*\d*[\x09\x0a\x0c\x0d ]*\z/,
27+ PORT: /\A[\x09\x0a\x0c\x0d ]*+\d*[\x09\x0a\x0c\x0d ]*\z/,
28 }
29 end
30
31diff --git a/test/uri/test_parser.rb b/test/uri/test_parser.rb
32index 721e05e..cee0acb 100644
33--- a/test/uri/test_parser.rb
34+++ b/test/uri/test_parser.rb
35@@ -91,4 +91,14 @@ class URI::TestParser < Test::Unit::TestCase
36 end
37 end
38 end
39+
40+ def test_rfc3986_port_check
41+ pre = ->(length) {"\t" * length + "a"}
42+ uri = URI.parse("http://my.example.com")
43+ assert_linear_performance((1..5).map {|i| 10**i}, pre: pre) do |port|
44+ assert_raise(URI::InvalidComponentError) do
45+ uri.port = port
46+ end
47+ end
48+ end
49 end
50--
512.25.1
52
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2024-27281.patch b/meta/recipes-devtools/ruby/ruby/CVE-2024-27281.patch
deleted file mode 100644
index f69f3bcf4f..0000000000
--- a/meta/recipes-devtools/ruby/ruby/CVE-2024-27281.patch
+++ /dev/null
@@ -1,97 +0,0 @@
1From da7a0c7553ef7250ca665a3fecdc01dbaacbb43d Mon Sep 17 00:00:00 2001
2From: Nobuyoshi Nakada <nobu@...>
3Date: Mon, 15 Apr 2024 11:40:00 +0000
4Subject: [PATCH] Filter marshaled objets
5
6CVE: CVE-2024-27281
7Upstream-Status: Backport [https://github.com/ruby/rdoc/commit/da7a0c7553ef7250ca665a3fecdc01dbaacbb43d]
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 lib/rdoc/store.rb | 45 ++++++++++++++++++++++++++-------------------
11 1 file changed, 26 insertions(+), 19 deletions(-)
12
13diff --git a/lib/rdoc/store.rb b/lib/rdoc/store.rb
14index 9fc540d..5b663d7 100644
15--- a/lib/rdoc/store.rb
16+++ b/lib/rdoc/store.rb
17@@ -556,9 +556,7 @@ class RDoc::Store
18 def load_cache
19 #orig_enc = @encoding
20
21- File.open cache_path, 'rb' do |io|
22- @cache = Marshal.load io
23- end
24+ @cache = marshal_load(cache_path)
25
26 load_enc = @cache[:encoding]
27
28@@ -615,9 +613,7 @@ class RDoc::Store
29 def load_class_data klass_name
30 file = class_file klass_name
31
32- File.open file, 'rb' do |io|
33- Marshal.load io
34- end
35+ marshal_load(file)
36 rescue Errno::ENOENT => e
37 error = MissingFileError.new(self, file, klass_name)
38 error.set_backtrace e.backtrace
39@@ -630,14 +626,10 @@ class RDoc::Store
40 def load_method klass_name, method_name
41 file = method_file klass_name, method_name
42
43- File.open file, 'rb' do |io|
44- obj = Marshal.load io
45- obj.store = self
46- obj.parent =
47- find_class_or_module(klass_name) || load_class(klass_name) unless
48- obj.parent
49- obj
50- end
51+ obj = marshal_load(file)
52+ obj.store = self
53+ obj.parent ||= find_class_or_module(klass_name) || load_class(klass_name)
54+ obj
55 rescue Errno::ENOENT => e
56 error = MissingFileError.new(self, file, klass_name + method_name)
57 error.set_backtrace e.backtrace
58@@ -650,11 +642,9 @@ class RDoc::Store
59 def load_page page_name
60 file = page_file page_name
61
62- File.open file, 'rb' do |io|
63- obj = Marshal.load io
64- obj.store = self
65- obj
66- end
67+ obj = marshal_load(file)
68+ obj.store = self
69+ obj
70 rescue Errno::ENOENT => e
71 error = MissingFileError.new(self, file, page_name)
72 error.set_backtrace e.backtrace
73@@ -976,4 +966,21 @@ class RDoc::Store
74 @unique_modules
75 end
76
77+ private
78+ def marshal_load(file)
79+ File.open(file, 'rb') {|io| Marshal.load(io, MarshalFilter)}
80+ end
81+
82+ MarshalFilter = proc do |obj|
83+ case obj
84+ when true, false, nil, Array, Class, Encoding, Hash, Integer, String, Symbol, RDoc::Text
85+ else
86+ unless obj.class.name.start_with("RDoc::")
87+ raise TypeError, "not permitted class: #{obj.class.name}"
88+ end
89+ end
90+ obj
91+ end
92+ private_constant :MarshalFilter
93+
94 end
95--
962.25.1
97
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2024-27282.patch b/meta/recipes-devtools/ruby/ruby/CVE-2024-27282.patch
deleted file mode 100644
index dde7979278..0000000000
--- a/meta/recipes-devtools/ruby/ruby/CVE-2024-27282.patch
+++ /dev/null
@@ -1,28 +0,0 @@
1From 989a2355808a63fc45367785c82ffd46d18c900a Mon Sep 17 00:00:00 2001
2From: Hiroshi SHIBATA <hsbt@ruby-lang.org>
3Date: Fri, 12 Apr 2024 15:01:47 +1000
4Subject: [PATCH] Fix Use-After-Free issue for Regexp
5
6Co-authored-by: Isaac Peka <7493006+isaac-peka@users.noreply.github.com>
7
8Upstream-Status: Backport [https://github.com/ruby/ruby/commit/989a2355808a63fc45367785c82ffd46d18c900a]
9CVE: CVE-2024-27282
10Signed-off-by: Ashish Sharma <asharma@mvista.com>
11
12 regexec.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/regexec.c b/regexec.c
16index 73694ab14a0b0a..140691ad42489f 100644
17--- a/regexec.c
18+++ b/regexec.c
19@@ -3449,8 +3449,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
20 CASE(OP_MEMORY_END_PUSH_REC) MOP_IN(OP_MEMORY_END_PUSH_REC);
21 GET_MEMNUM_INC(mem, p);
22 STACK_GET_MEM_START(mem, stkp); /* should be before push mem-end. */
23- STACK_PUSH_MEM_END(mem, s);
24 mem_start_stk[mem] = GET_STACK_INDEX(stkp);
25+ STACK_PUSH_MEM_END(mem, s);
26 MOP_OUT;
27 JUMP;
28
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2025-27219.patch b/meta/recipes-devtools/ruby/ruby/CVE-2025-27219.patch
new file mode 100644
index 0000000000..7813a6143c
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/CVE-2025-27219.patch
@@ -0,0 +1,31 @@
1From 9907b76dad0777ee300de236dad4b559e07596ab Mon Sep 17 00:00:00 2001
2From: Hiroshi SHIBATA <hsbt@ruby-lang.org>
3Date: Fri, 21 Feb 2025 16:01:17 +0900
4Subject: [PATCH] Use String#concat instead of String#+ for reducing cpu usage
5
6Co-authored-by: "Yusuke Endoh" <mame@ruby-lang.org>
7
8Upstream-Status: Backport [https://github.com/ruby/cgi/commit/9907b76dad0777ee300de236dad4b559e07596ab]
9CVE: CVE-2025-27219
10Signed-off-by: Ashish Sharma <asharma@mvista.com>
11
12 lib/cgi/cookie.rb | 5 +++--
13 1 file changed, 3 insertions(+), 2 deletions(-)
14
15diff --git a/lib/cgi/cookie.rb b/lib/cgi/cookie.rb
16index 9498e2f..1c4ef6a 100644
17--- a/lib/cgi/cookie.rb
18+++ b/lib/cgi/cookie.rb
19@@ -190,9 +190,10 @@ def self.parse(raw_cookie)
20 values ||= ""
21 values = values.split('&').collect{|v| CGI.unescape(v,@@accept_charset) }
22 if cookies.has_key?(name)
23- values = cookies[name].value + values
24+ cookies[name].concat(values)
25+ else
26+ cookies[name] = Cookie.new(name, *values)
27 end
28- cookies[name] = Cookie.new(name, *values)
29 end
30
31 cookies
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2025-27220.patch b/meta/recipes-devtools/ruby/ruby/CVE-2025-27220.patch
new file mode 100644
index 0000000000..f2f8bc7f76
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/CVE-2025-27220.patch
@@ -0,0 +1,78 @@
1From cd1eb08076c8b8e310d4d553d427763f2577a1b6 Mon Sep 17 00:00:00 2001
2From: Hiroshi SHIBATA <hsbt@ruby-lang.org>
3Date: Fri, 21 Feb 2025 15:53:31 +0900
4Subject: [PATCH] Escape/unescape unclosed tags as well
5
6Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
7
8CVE: CVE-2025-27220
9
10Upstream-Status: Backport [https://github.com/ruby/cgi/commit/cd1eb08076c8b8e310d4d553d427763f2577a1b6]
11
12Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
13---
14 lib/cgi/util.rb | 4 ++--
15 test/cgi/test_cgi_util.rb | 18 ++++++++++++++++++
16 2 files changed, 20 insertions(+), 2 deletions(-)
17
18diff --git a/lib/cgi/util.rb b/lib/cgi/util.rb
19index 4986e54..5f12eae 100644
20--- a/lib/cgi/util.rb
21+++ b/lib/cgi/util.rb
22@@ -184,7 +184,7 @@ module CGI::Util
23 def escapeElement(string, *elements)
24 elements = elements[0] if elements[0].kind_of?(Array)
25 unless elements.empty?
26- string.gsub(/<\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?>/i) do
27+ string.gsub(/<\/?(?:#{elements.join("|")})\b[^<>]*+>?/im) do
28 CGI.escapeHTML($&)
29 end
30 else
31@@ -204,7 +204,7 @@ module CGI::Util
32 def unescapeElement(string, *elements)
33 elements = elements[0] if elements[0].kind_of?(Array)
34 unless elements.empty?
35- string.gsub(/&lt;\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?&gt;/i) do
36+ string.gsub(/&lt;\/?(?:#{elements.join("|")})\b(?>[^&]+|&(?![gl]t;)\w+;)*(?:&gt;)?/im) do
37 unescapeHTML($&)
38 end
39 else
40diff --git a/test/cgi/test_cgi_util.rb b/test/cgi/test_cgi_util.rb
41index b0612fc..bff77f7 100644
42--- a/test/cgi/test_cgi_util.rb
43+++ b/test/cgi/test_cgi_util.rb
44@@ -269,6 +269,14 @@ class CGIUtilTest < Test::Unit::TestCase
45 assert_equal("<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escapeElement('<BR><A HREF="url"></A>', ["A", "IMG"]))
46 assert_equal("<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escape_element('<BR><A HREF="url"></A>', "A", "IMG"))
47 assert_equal("<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escape_element('<BR><A HREF="url"></A>', ["A", "IMG"]))
48+
49+ assert_equal("&lt;A &lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escapeElement('<A <A HREF="url"></A>', "A", "IMG"))
50+ assert_equal("&lt;A &lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escapeElement('<A <A HREF="url"></A>', ["A", "IMG"]))
51+ assert_equal("&lt;A &lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escape_element('<A <A HREF="url"></A>', "A", "IMG"))
52+ assert_equal("&lt;A &lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escape_element('<A <A HREF="url"></A>', ["A", "IMG"]))
53+
54+ assert_equal("&lt;A &lt;A ", escapeElement('<A <A ', "A", "IMG"))
55+ assert_equal("&lt;A &lt;A ", escapeElement('<A <A ', ["A", "IMG"]))
56 end
57
58
59@@ -277,6 +285,16 @@ class CGIUtilTest < Test::Unit::TestCase
60 assert_equal('&lt;BR&gt;<A HREF="url"></A>', unescapeElement(escapeHTML('<BR><A HREF="url"></A>'), ["A", "IMG"]))
61 assert_equal('&lt;BR&gt;<A HREF="url"></A>', unescape_element(escapeHTML('<BR><A HREF="url"></A>'), "A", "IMG"))
62 assert_equal('&lt;BR&gt;<A HREF="url"></A>', unescape_element(escapeHTML('<BR><A HREF="url"></A>'), ["A", "IMG"]))
63+
64+ assert_equal('<A <A HREF="url"></A>', unescapeElement(escapeHTML('<A <A HREF="url"></A>'), "A", "IMG"))
65+ assert_equal('<A <A HREF="url"></A>', unescapeElement(escapeHTML('<A <A HREF="url"></A>'), ["A", "IMG"]))
66+ assert_equal('<A <A HREF="url"></A>', unescape_element(escapeHTML('<A <A HREF="url"></A>'), "A", "IMG"))
67+ assert_equal('<A <A HREF="url"></A>', unescape_element(escapeHTML('<A <A HREF="url"></A>'), ["A", "IMG"]))
68+
69+ assert_equal('<A <A ', unescapeElement(escapeHTML('<A <A '), "A", "IMG"))
70+ assert_equal('<A <A ', unescapeElement(escapeHTML('<A <A '), ["A", "IMG"]))
71+ assert_equal('<A <A ', unescape_element(escapeHTML('<A <A '), "A", "IMG"))
72+ assert_equal('<A <A ', unescape_element(escapeHTML('<A <A '), ["A", "IMG"]))
73 end
74 end
75
76--
772.40.0
78
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0001.patch b/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0001.patch
new file mode 100644
index 0000000000..95802d04f9
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0001.patch
@@ -0,0 +1,57 @@
1From 3675494839112b64d5f082a9068237b277ed1495 Mon Sep 17 00:00:00 2001
2From: Hiroshi SHIBATA <hsbt@ruby-lang.org>
3Date: Fri, 21 Feb 2025 16:29:36 +0900
4Subject: [PATCH] Truncate userinfo with URI#join, URI#merge and URI#+
5
6CVE: CVE-2025-27221
7
8Upstream-Status: Backport [https://github.com/ruby/uri/commit/3675494839112b64d5f082a9068237b277ed1495]
9
10Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
11---
12 lib/uri/generic.rb | 6 +++++-
13 test/uri/test_generic.rb | 11 +++++++++++
14 2 files changed, 16 insertions(+), 1 deletion(-)
15
16diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb
17index f3540a2..ecc78c5 100644
18--- a/lib/uri/generic.rb
19+++ b/lib/uri/generic.rb
20@@ -1141,7 +1141,11 @@ module URI
21 end
22
23 # RFC2396, Section 5.2, 7)
24- base.set_userinfo(rel.userinfo) if rel.userinfo
25+ if rel.userinfo
26+ base.set_userinfo(rel.userinfo)
27+ else
28+ base.set_userinfo(nil)
29+ end
30 base.set_host(rel.host) if rel.host
31 base.set_port(rel.port) if rel.port
32 base.query = rel.query if rel.query
33diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb
34index e661937..17ba2b6 100644
35--- a/test/uri/test_generic.rb
36+++ b/test/uri/test_generic.rb
37@@ -164,6 +164,17 @@ class URI::TestGeneric < Test::Unit::TestCase
38 # must be empty string to identify as path-abempty, not path-absolute
39 assert_equal('', url.host)
40 assert_equal('http:////example.com', url.to_s)
41+
42+ # sec-2957667
43+ url = URI.parse('http://user:pass@example.com').merge('//example.net')
44+ assert_equal('http://example.net', url.to_s)
45+ assert_nil(url.userinfo)
46+ url = URI.join('http://user:pass@example.com', '//example.net')
47+ assert_equal('http://example.net', url.to_s)
48+ assert_nil(url.userinfo)
49+ url = URI.parse('http://user:pass@example.com') + '//example.net'
50+ assert_equal('http://example.net', url.to_s)
51+ assert_nil(url.userinfo)
52 end
53
54 def test_parse_scheme_with_symbols
55--
562.40.0
57
diff --git a/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0002.patch b/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0002.patch
new file mode 100644
index 0000000000..4435b87c34
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/CVE-2025-27221-0002.patch
@@ -0,0 +1,73 @@
1From 2789182478f42ccbb62197f952eb730e4f02bfc5 Mon Sep 17 00:00:00 2001
2From: Hiroshi SHIBATA <hsbt@ruby-lang.org>
3Date: Fri, 21 Feb 2025 18:16:28 +0900
4Subject: [PATCH] Fix merger of URI with authority component
5
6https://hackerone.com/reports/2957667
7
8Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
9
10CVE: CVE-2025-27221
11
12Upstream-Status: Backport [https://github.com/ruby/uri/commit/2789182478f42ccbb62197f952eb730e4f02bfc5]
13
14Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
15---
16 lib/uri/generic.rb | 19 +++++++------------
17 test/uri/test_generic.rb | 7 +++++++
18 2 files changed, 14 insertions(+), 12 deletions(-)
19
20diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb
21index ecc78c5..2c0a88d 100644
22--- a/lib/uri/generic.rb
23+++ b/lib/uri/generic.rb
24@@ -1133,21 +1133,16 @@ module URI
25 base.fragment=(nil)
26
27 # RFC2396, Section 5.2, 4)
28- if !authority
29- base.set_path(merge_path(base.path, rel.path)) if base.path && rel.path
30- else
31- # RFC2396, Section 5.2, 4)
32- base.set_path(rel.path) if rel.path
33+ if authority
34+ base.set_userinfo(rel.userinfo)
35+ base.set_host(rel.host)
36+ base.set_port(rel.port || base.default_port)
37+ base.set_path(rel.path)
38+ elsif base.path && rel.path
39+ base.set_path(merge_path(base.path, rel.path))
40 end
41
42 # RFC2396, Section 5.2, 7)
43- if rel.userinfo
44- base.set_userinfo(rel.userinfo)
45- else
46- base.set_userinfo(nil)
47- end
48- base.set_host(rel.host) if rel.host
49- base.set_port(rel.port) if rel.port
50 base.query = rel.query if rel.query
51 base.fragment=(rel.fragment) if rel.fragment
52
53diff --git a/test/uri/test_generic.rb b/test/uri/test_generic.rb
54index 17ba2b6..1a70dd4 100644
55--- a/test/uri/test_generic.rb
56+++ b/test/uri/test_generic.rb
57@@ -267,6 +267,13 @@ class URI::TestGeneric < Test::Unit::TestCase
58 assert_equal(u0, u1)
59 end
60
61+ def test_merge_authority
62+ u = URI.parse('http://user:pass@example.com:8080')
63+ u0 = URI.parse('http://new.example.org/path')
64+ u1 = u.merge('//new.example.org/path')
65+ assert_equal(u0, u1)
66+ end
67+
68 def test_route
69 url = URI.parse('http://hoge/a.html').route_to('http://hoge/b.html')
70 assert_equal('b.html', url.to_s)
71--
722.40.0
73
diff --git a/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch b/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch
deleted file mode 100644
index b78e3db892..0000000000
--- a/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From e74b57febec9bd806e29025e6eeb8091e7021d75 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 26 Jan 2020 11:27:40 -0800
4Subject: [PATCH] Filter out __has_include* compiler defines
5
6They are internal to compiler and this header is later on includes in C
7files, but newer gcc >= 10 complains about it.
8
9error in initial header file:
10| In file included from /tmp/20200124-86625-14hiju4.c:1:
11| /tmp/20200124-86625-11y6l6i.h:13849:9: error: "__has_include" cannot be used as a macro name
12| 13849 | #define __has_include __has_include
13| | ^~~~~~~~~~~~~
14| compilation terminated due to -Wfatal-errors.
15
16Upstream-Status: Pending
17Signed-off-by: Khem Raj <raj.khem@gmail.com>
18
19---
20 common.mk | 2 ++
21 1 file changed, 2 insertions(+)
22
23diff --git a/common.mk b/common.mk
24index 664f750..3b8fbe6 100644
25--- a/common.mk
26+++ b/common.mk
27@@ -238,6 +238,8 @@ $(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time: probes.h vm.$(OBJE
28 $(ECHO) building $(@F:.time=.h)
29 $(Q)$(MINIRUBY) $(tooldir)/mjit_tabs.rb "$(MJIT_TABS)" \
30 $(CPP) -DMJIT_HEADER $(MJIT_HEADER_FLAGS) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/vm.c $(CPPOUTFLAG)$(@F:.time=.h).new
31+ $(Q)sed -i -e "/#define __has_include __has_include/d" $(@F:.time=.h).new
32+ $(Q)sed -i -e "/#define __has_include_next __has_include_next/d" $(@F:.time=.h).new
33 $(Q) $(IFCHANGE) "--timestamp=$@" $(@F:.time=.h) $(@F:.time=.h).new
34
35 $(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).h: $(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time
diff --git a/meta/recipes-devtools/ruby/ruby_3.2.2.bb b/meta/recipes-devtools/ruby/ruby_3.3.5.bb
index 508154dad5..b37f0d03e7 100644
--- a/meta/recipes-devtools/ruby/ruby_3.2.2.bb
+++ b/meta/recipes-devtools/ruby/ruby_3.3.5.bb
@@ -10,7 +10,7 @@ LICENSE = "Ruby | BSD-2-Clause | BSD-3-Clause | GPL-2.0-only | ISC | MIT"
10LIC_FILES_CHKSUM = "file://COPYING;md5=5b8c87559868796979806100db3f3805 \ 10LIC_FILES_CHKSUM = "file://COPYING;md5=5b8c87559868796979806100db3f3805 \
11 file://BSDL;md5=8b50bc6de8f586dc66790ba11d064d75 \ 11 file://BSDL;md5=8b50bc6de8f586dc66790ba11d064d75 \
12 file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ 12 file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
13 file://LEGAL;md5=bcd74b47bbaf2051c5e49811a5faa97a \ 13 file://LEGAL;md5=81e6a4d81533b9263da4c3485a0ad883 \
14 " 14 "
15 15
16DEPENDS = "zlib openssl libyaml gdbm readline libffi" 16DEPENDS = "zlib openssl libyaml gdbm readline libffi"
@@ -20,21 +20,16 @@ DEPENDS:append:class-nativesdk = " ruby-native"
20SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}" 20SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
21SRC_URI = "http://cache.ruby-lang.org/pub/ruby/${SHRT_VER}/ruby-${PV}.tar.gz \ 21SRC_URI = "http://cache.ruby-lang.org/pub/ruby/${SHRT_VER}/ruby-${PV}.tar.gz \
22 file://0001-extmk-fix-cross-compilation-of-external-gems.patch \ 22 file://0001-extmk-fix-cross-compilation-of-external-gems.patch \
23 file://0002-Obey-LDFLAGS-for-the-link-of-libruby.patch \
24 file://remove_has_include_macros.patch \
25 file://run-ptest \ 23 file://run-ptest \
26 file://0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch \
27 file://0002-template-Makefile.in-filter-out-f-prefix-map.patch \
28 file://0003-rdoc-build-reproducible-documentation.patch \ 24 file://0003-rdoc-build-reproducible-documentation.patch \
29 file://0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch \ 25 file://0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch \
30 file://0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch \ 26 file://0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch \
31 file://0006-Make-gemspecs-reproducible.patch \ 27 file://0006-Make-gemspecs-reproducible.patch \
32 file://0001-vm_dump.c-Define-REG_S1-and-REG_S2-for-musl-riscv.patch \ 28 file://0001-vm_dump.c-Define-REG_S1-and-REG_S2-for-musl-riscv.patch \
33 file://0001-fiddle-Use-C11-_Alignof-to-define-ALIGN_OF-when-poss.patch \ 29 file://CVE-2025-27219.patch \
34 file://CVE-2023-36617_1.patch \ 30 file://CVE-2025-27220.patch \
35 file://CVE-2023-36617_2.patch \ 31 file://CVE-2025-27221-0001.patch \
36 file://CVE-2024-27281.patch \ 32 file://CVE-2025-27221-0002.patch \
37 file://CVE-2024-27282.patch \
38 " 33 "
39UPSTREAM_CHECK_URI = "https://www.ruby-lang.org/en/downloads/" 34UPSTREAM_CHECK_URI = "https://www.ruby-lang.org/en/downloads/"
40 35
@@ -55,7 +50,7 @@ do_configure:prepend() {
55 50
56DEPENDS:append:libc-musl = " libucontext" 51DEPENDS:append:libc-musl = " libucontext"
57 52
58SRC_URI[sha256sum] = "96c57558871a6748de5bc9f274e93f4b5aad06cd8f37befa0e8d94e7b8a423bc" 53SRC_URI[sha256sum] = "3781a3504222c2f26cb4b9eb9c1a12dbf4944d366ce24a9ff8cf99ecbce75196"
59 54
60PACKAGECONFIG ??= "" 55PACKAGECONFIG ??= ""
61PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" 56PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
diff --git a/meta/recipes-devtools/rust/cargo_1.75.0.bb b/meta/recipes-devtools/rust/cargo_1.75.0.bb
index 50b7e7c7b4..a6d3f1754b 100644
--- a/meta/recipes-devtools/rust/cargo_1.75.0.bb
+++ b/meta/recipes-devtools/rust/cargo_1.75.0.bb
@@ -50,8 +50,21 @@ do_install:append:class-nativesdk() {
50 # sets to libdir but not base_libdir leading to symbol mismatches depending on the 50 # sets to libdir but not base_libdir leading to symbol mismatches depending on the
51 # host OS. Fully set LD_LIBRARY_PATH to contain both to avoid this. 51 # host OS. Fully set LD_LIBRARY_PATH to contain both to avoid this.
52 create_wrapper ${D}/${bindir}/cargo LD_LIBRARY_PATH=${libdir}:${base_libdir} 52 create_wrapper ${D}/${bindir}/cargo LD_LIBRARY_PATH=${libdir}:${base_libdir}
53
54 ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
55 mkdir "${ENV_SETUP_DIR}"
56 CARGO_ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
57
58 cat <<- EOF > "${CARGO_ENV_SETUP_SH}"
59 # Keep the below off as long as HTTP/2 is disabled.
60 export CARGO_HTTP_MULTIPLEXING=false
61
62 export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
63 EOF
53} 64}
54 65
66FILES:${PN} += "${base_prefix}/environment-setup.d"
67
55# Disabled due to incompatibility with libgit2 0.28.x (https://github.com/rust-lang/git2-rs/issues/458, https://bugs.gentoo.org/707746#c1) 68# Disabled due to incompatibility with libgit2 0.28.x (https://github.com/rust-lang/git2-rs/issues/458, https://bugs.gentoo.org/707746#c1)
56# as shipped by Yocto Dunfell. 69# as shipped by Yocto Dunfell.
57# According to https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there are no compatibility guarantees between 70# According to https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there are no compatibility guarantees between
diff --git a/meta/recipes-devtools/rust/files/0001-cargo-do-not-write-host-information-into-compilation.patch b/meta/recipes-devtools/rust/files/0001-cargo-do-not-write-host-information-into-compilation.patch
new file mode 100644
index 0000000000..a6ee867605
--- /dev/null
+++ b/meta/recipes-devtools/rust/files/0001-cargo-do-not-write-host-information-into-compilation.patch
@@ -0,0 +1,51 @@
1From 065d7c263091118437465d714d8a29dbb6296921 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Mon, 13 May 2024 14:57:54 +0200
4Subject: [PATCH] cargo: do not write host information into compilation unit
5 hashes
6
7This breaks reproducibility in cross-builds where the cross-target
8can be the same, but build hosts are different, as seen with
9"rustc --version -v":
10...
11host: x86_64-unknown-linux-gnu
12
13vs.
14
15host: aarch64-unknown-linux-gnu
16
17This can possibly be improved by only hashing host info if the build
18is a native one (e.g. there's no --target option passed to cargo
19invocation) but I'm not sure how.
20
21Upstream-Status: Inappropriate [reported at https://github.com/rust-lang/cargo/issues/13922]
22Signed-off-by: Alexander Kanavin <alex@linutronix.de>
23---
24 .../src/cargo/core/compiler/context/compilation_files.rs | 4 ++--
25 1 file changed, 2 insertions(+), 2 deletions(-)
26
27diff --git a/src/tools/cargo/src/cargo/core/compiler/context/compilation_files.rs b/src/tools/cargo/src/cargo/core/compiler/context/compilation_files.rs
28index d83dbf10c..b2ad8d9f3 100644
29--- a/src/tools/cargo/src/cargo/core/compiler/context/compilation_files.rs
30+++ b/src/tools/cargo/src/cargo/core/compiler/context/compilation_files.rs
31@@ -652,7 +652,7 @@ fn hash_rustc_version(bcx: &BuildContext<'_, '_>, hasher: &mut StableHasher) {
32 if vers.pre.is_empty() || bcx.config.cli_unstable().separate_nightlies {
33 // For stable, keep the artifacts separate. This helps if someone is
34 // testing multiple versions, to avoid recompiles.
35- bcx.rustc().verbose_version.hash(hasher);
36+ //bcx.rustc().verbose_version.hash(hasher);
37 return;
38 }
39 // On "nightly"/"beta"/"dev"/etc, keep each "channel" separate. Don't hash
40@@ -665,7 +665,7 @@ fn hash_rustc_version(bcx: &BuildContext<'_, '_>, hasher: &mut StableHasher) {
41 // Keep "host" since some people switch hosts to implicitly change
42 // targets, (like gnu vs musl or gnu vs msvc). In the future, we may want
43 // to consider hashing `unit.kind.short_name()` instead.
44- bcx.rustc().host.hash(hasher);
45+ //bcx.rustc().host.hash(hasher);
46 // None of the other lines are important. Currently they are:
47 // binary: rustc <-- or "rustdoc"
48 // commit-hash: 38114ff16e7856f98b2b4be7ab4cd29b38bed59a
49--
502.39.2
51
diff --git a/meta/recipes-devtools/rust/files/cargo-path.patch b/meta/recipes-devtools/rust/files/cargo-path.patch
deleted file mode 100644
index 9a50c40220..0000000000
--- a/meta/recipes-devtools/rust/files/cargo-path.patch
+++ /dev/null
@@ -1,37 +0,0 @@
1Fix the cargo binary path error and ensure that it is fetched
2during rustc bootstrap in rust oe-selftest.
3
4======================================================================
5ERROR: test_cargoflags (bootstrap_test.BuildBootstrap)
6----------------------------------------------------------------------
7Traceback (most recent call last):
8 File "/home/build-st/tmp/work/cortexa57-poky-linux/rust/1.74.1/rustc-1.74.1-src/src/bootstrap/bootstrap_test.py", line 157, in test_cargoflags
9 args, _ = self.build_args(env={"CARGOFLAGS": "--timings"})
10 File "/home/build-st/tmp/work/cortexa57-poky-linux/rust/1.74.1/rustc-1.74.1-src/src/bootstrap/bootstrap_test.py", line 154, in build_args
11 return build.build_bootstrap_cmd(env), env
12 File "/home/build-st/tmp/work/cortexa57-poky-linux/rust/1.74.1/rustc-1.74.1-src/src/bootstrap/bootstrap.py", line 960, in build_bootstrap_cmd
13 raise Exception("no cargo executable found at `{}`".format(
14Exception: no cargo executable found at `/home/build-st/tmp/work/cortexa57-poky-linux/rust/1.74.1/rustc-1.74.1-src/build/x86_64-unknown-linux-gnu/stage0/bin/cargo`
15
16Upstream-Status: Submitted [https://github.com/rust-lang/rust/pull/120125]
17
18Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
19---
20diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py
21--- a/src/bootstrap/bootstrap.py
22+++ b/src/bootstrap/bootstrap.py
23@@ -954,9 +954,11 @@
24 if "RUSTFLAGS_BOOTSTRAP" in env:
25 env["RUSTFLAGS"] += " " + env["RUSTFLAGS_BOOTSTRAP"]
26
27- env["PATH"] = os.path.join(self.bin_root(), "bin") + \
28- os.pathsep + env["PATH"]
29- if not os.path.isfile(self.cargo()):
30+ cargo_bin_path = os.path.join(self.bin_root(), "bin", "cargo")
31+ if not os.path.isfile(cargo_bin_path):
32+ cargo_bin_path = os.getenv("RUST_TARGET_PATH") + "rust-snapshot/bin/cargo"
33+ env["PATH"] = os.path.dirname(cargo_bin_path) + os.pathsep + env["PATH"]
34+ else:
35 raise Exception("no cargo executable found at `{}`".format(
36 self.cargo()))
37 args = [self.cargo(), "build", "--manifest-path",
diff --git a/meta/recipes-devtools/rust/rust-cross-canadian.inc b/meta/recipes-devtools/rust/rust-cross-canadian.inc
index 8a51a02293..ac5f6bd57c 100644
--- a/meta/recipes-devtools/rust/rust-cross-canadian.inc
+++ b/meta/recipes-devtools/rust/rust-cross-canadian.inc
@@ -15,6 +15,10 @@ SRC_URI += "file://target-rust-ccld.c"
15LIC_FILES_CHKSUM = "file://target-rust-ccld.c;md5=af4e0e29f81a34cffe05aa07c89e93e9;endline=7" 15LIC_FILES_CHKSUM = "file://target-rust-ccld.c;md5=af4e0e29f81a34cffe05aa07c89e93e9;endline=7"
16S = "${WORKDIR}" 16S = "${WORKDIR}"
17 17
18# As per NVD, this CVE only affects to Windows platform
19# Link: https://nvd.nist.gov/vuln/detail/CVE-2024-43402
20CVE_STATUS[CVE-2024-43402] = "not-applicable-platform: Issue only applies on Windows"
21
18# Need to use our SDK's sh here, see #14878 22# Need to use our SDK's sh here, see #14878
19create_sdk_wrapper () { 23create_sdk_wrapper () {
20 file="$1" 24 file="$1"
@@ -53,39 +57,17 @@ do_install () {
53 57
54 ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d 58 ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
55 mkdir "${ENV_SETUP_DIR}" 59 mkdir "${ENV_SETUP_DIR}"
56 RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh" 60 RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/${RUST_TARGET_SYS}_rust.sh"
57 61
58 RUST_TARGET_TRIPLE=`echo ${RUST_TARGET_SYS} | tr '[:lower:]' '[:upper:]' | sed 's/-/_/g'` 62 RUST_TARGET_TRIPLE=`echo ${RUST_TARGET_SYS} | tr '[:lower:]' '[:upper:]' | sed 's/-/_/g'`
59 RUST_HOST_TRIPLE=`echo ${RUST_HOST_SYS} | tr '[:lower:]' '[:upper:]' | sed 's/-/_/g'`
60 SDKLOADER=${@bb.utils.contains('SDK_ARCH', 'x86_64', 'ld-linux-x86-64.so.2', '', d)}${@bb.utils.contains('SDK_ARCH', 'i686', 'ld-linux.so.2', '', d)}${@bb.utils.contains('SDK_ARCH', 'aarch64', 'ld-linux-aarch64.so.1', '', d)}${@bb.utils.contains('SDK_ARCH', 'ppc64le', 'ld64.so.2', '', d)}${@bb.utils.contains('SDK_ARCH', 'riscv64', 'ld-linux-riscv64-lp64d.so.1', '', d)}
61 63
62 cat <<- EOF > "${RUST_ENV_SETUP_SH}" 64 cat <<- EOF > "${RUST_ENV_SETUP_SH}"
63 export CARGO_TARGET_${RUST_TARGET_TRIPLE}_RUSTFLAGS="--sysroot=\$OECORE_TARGET_SYSROOT/usr -C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT" 65 export CARGO_TARGET_${RUST_TARGET_TRIPLE}_RUSTFLAGS="--sysroot=\$OECORE_TARGET_SYSROOT/usr -C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT"
64 export CARGO_TARGET_${RUST_HOST_TRIPLE}_RUNNER="\$OECORE_NATIVE_SYSROOT/lib/${SDKLOADER}"
65 export RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib" 66 export RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
66 EOF 67 EOF
67 68
68 chown -R root.root ${D} 69 chown -R root.root ${D}
69 70
70 CARGO_ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
71 cat <<- EOF > "${CARGO_ENV_SETUP_SH}"
72 export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
73 mkdir -p "\$CARGO_HOME"
74 # Init the default target once, it might be otherwise user modified.
75 if [ ! -f "\$CARGO_HOME/config" ]; then
76 touch "\$CARGO_HOME/config"
77 echo "[build]" >> "\$CARGO_HOME/config"
78 echo 'target = "'${RUST_TARGET_SYS}'"' >> "\$CARGO_HOME/config"
79 echo '# TARGET_SYS' >> "\$CARGO_HOME/config"
80 echo '[target.'${RUST_TARGET_SYS}']' >> "\$CARGO_HOME/config"
81 echo 'linker = "target-rust-ccld"' >> "\$CARGO_HOME/config"
82 fi
83
84 # Keep the below off as long as HTTP/2 is disabled.
85 export CARGO_HTTP_MULTIPLEXING=false
86
87 export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
88 EOF
89} 71}
90 72
91FILES:${PN} += "${base_prefix}/environment-setup.d" 73FILES:${PN} += "${base_prefix}/environment-setup.d"
diff --git a/meta/recipes-devtools/rust/rust-llvm/0004-llvm-Fix-CVE-2024-0151.patch b/meta/recipes-devtools/rust/rust-llvm/0004-llvm-Fix-CVE-2024-0151.patch
new file mode 100644
index 0000000000..c05685e64d
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-llvm/0004-llvm-Fix-CVE-2024-0151.patch
@@ -0,0 +1,1086 @@
1commit 78ff617d3f573fb3a9b2fef180fa0fd43d5584ea
2Author: Lucas Duarte Prates <lucas.prates@arm.com>
3Date: Thu Jun 20 10:22:01 2024 +0100
4
5 [ARM] CMSE security mitigation on function arguments and returned values (#89944)
6
7 The ABI mandates two things related to function calls:
8 - Function arguments must be sign- or zero-extended to the register
9 size by the caller.
10 - Return values must be sign- or zero-extended to the register size by
11 the callee.
12
13 As consequence, callees can assume that function arguments have been
14 extended and so can callers with regards to return values.
15
16 Here lies the problem: Nonsecure code might deliberately ignore this
17 mandate with the intent of attempting an exploit. It might try to pass
18 values that lie outside the expected type's value range in order to
19 trigger undefined behaviour, e.g. out of bounds access.
20
21 With the mitigation implemented, Secure code always performs extension
22 of values passed by Nonsecure code.
23
24 This addresses the vulnerability described in CVE-2024-0151.
25
26 Patches by Victor Campos.
27
28 ---------
29
30 Co-authored-by: Victor Campos <victor.campos@arm.com>
31
32Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/78ff617d3f573fb3a9b2fef180fa0fd43d5584ea]
33CVE: CVE-2024-0151
34Signed-off-by: Deepthi Hemraj <Deepthi.Hemraj@windriver.com>
35---
36diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
37index bfe137b95602..5490c3c9df6c 100644
38--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
39+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
40@@ -156,6 +156,17 @@ static const MCPhysReg GPRArgRegs[] = {
41 ARM::R0, ARM::R1, ARM::R2, ARM::R3
42 };
43
44+static SDValue handleCMSEValue(const SDValue &Value, const ISD::InputArg &Arg,
45+ SelectionDAG &DAG, const SDLoc &DL) {
46+ assert(Arg.ArgVT.isScalarInteger());
47+ assert(Arg.ArgVT.bitsLT(MVT::i32));
48+ SDValue Trunc = DAG.getNode(ISD::TRUNCATE, DL, Arg.ArgVT, Value);
49+ SDValue Ext =
50+ DAG.getNode(Arg.Flags.isSExt() ? ISD::SIGN_EXTEND : ISD::ZERO_EXTEND, DL,
51+ MVT::i32, Trunc);
52+ return Ext;
53+}
54+
55 void ARMTargetLowering::addTypeForNEON(MVT VT, MVT PromotedLdStVT) {
56 if (VT != PromotedLdStVT) {
57 setOperationAction(ISD::LOAD, VT, Promote);
58@@ -2196,7 +2207,7 @@ SDValue ARMTargetLowering::LowerCallResult(
59 SDValue Chain, SDValue InGlue, CallingConv::ID CallConv, bool isVarArg,
60 const SmallVectorImpl<ISD::InputArg> &Ins, const SDLoc &dl,
61 SelectionDAG &DAG, SmallVectorImpl<SDValue> &InVals, bool isThisReturn,
62- SDValue ThisVal) const {
63+ SDValue ThisVal, bool isCmseNSCall) const {
64 // Assign locations to each value returned by this call.
65 SmallVector<CCValAssign, 16> RVLocs;
66 CCState CCInfo(CallConv, isVarArg, DAG.getMachineFunction(), RVLocs,
67@@ -2274,6 +2285,15 @@ SDValue ARMTargetLowering::LowerCallResult(
68 (VA.getValVT() == MVT::f16 || VA.getValVT() == MVT::bf16))
69 Val = MoveToHPR(dl, DAG, VA.getLocVT(), VA.getValVT(), Val);
70
71+ // On CMSE Non-secure Calls, call results (returned values) whose bitwidth
72+ // is less than 32 bits must be sign- or zero-extended after the call for
73+ // security reasons. Although the ABI mandates an extension done by the
74+ // callee, the latter cannot be trusted to follow the rules of the ABI.
75+ const ISD::InputArg &Arg = Ins[VA.getValNo()];
76+ if (isCmseNSCall && Arg.ArgVT.isScalarInteger() &&
77+ VA.getLocVT().isScalarInteger() && Arg.ArgVT.bitsLT(MVT::i32))
78+ Val = handleCMSEValue(Val, Arg, DAG, dl);
79+
80 InVals.push_back(Val);
81 }
82
83@@ -2888,7 +2908,7 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
84 // return.
85 return LowerCallResult(Chain, InGlue, CallConv, isVarArg, Ins, dl, DAG,
86 InVals, isThisReturn,
87- isThisReturn ? OutVals[0] : SDValue());
88+ isThisReturn ? OutVals[0] : SDValue(), isCmseNSCall);
89 }
90
91 /// HandleByVal - Every parameter *after* a byval parameter is passed
92@@ -4485,8 +4505,6 @@ SDValue ARMTargetLowering::LowerFormalArguments(
93 *DAG.getContext());
94 CCInfo.AnalyzeFormalArguments(Ins, CCAssignFnForCall(CallConv, isVarArg));
95
96- SmallVector<SDValue, 16> ArgValues;
97- SDValue ArgValue;
98 Function::const_arg_iterator CurOrigArg = MF.getFunction().arg_begin();
99 unsigned CurArgIdx = 0;
100
101@@ -4541,6 +4559,7 @@ SDValue ARMTargetLowering::LowerFormalArguments(
102 // Arguments stored in registers.
103 if (VA.isRegLoc()) {
104 EVT RegVT = VA.getLocVT();
105+ SDValue ArgValue;
106
107 if (VA.needsCustom() && VA.getLocVT() == MVT::v2f64) {
108 // f64 and vector types are split up into multiple registers or
109@@ -4604,16 +4623,6 @@ SDValue ARMTargetLowering::LowerFormalArguments(
110 case CCValAssign::BCvt:
111 ArgValue = DAG.getNode(ISD::BITCAST, dl, VA.getValVT(), ArgValue);
112 break;
113- case CCValAssign::SExt:
114- ArgValue = DAG.getNode(ISD::AssertSext, dl, RegVT, ArgValue,
115- DAG.getValueType(VA.getValVT()));
116- ArgValue = DAG.getNode(ISD::TRUNCATE, dl, VA.getValVT(), ArgValue);
117- break;
118- case CCValAssign::ZExt:
119- ArgValue = DAG.getNode(ISD::AssertZext, dl, RegVT, ArgValue,
120- DAG.getValueType(VA.getValVT()));
121- ArgValue = DAG.getNode(ISD::TRUNCATE, dl, VA.getValVT(), ArgValue);
122- break;
123 }
124
125 // f16 arguments have their size extended to 4 bytes and passed as if they
126@@ -4623,6 +4632,15 @@ SDValue ARMTargetLowering::LowerFormalArguments(
127 (VA.getValVT() == MVT::f16 || VA.getValVT() == MVT::bf16))
128 ArgValue = MoveToHPR(dl, DAG, VA.getLocVT(), VA.getValVT(), ArgValue);
129
130+ // On CMSE Entry Functions, formal integer arguments whose bitwidth is
131+ // less than 32 bits must be sign- or zero-extended in the callee for
132+ // security reasons. Although the ABI mandates an extension done by the
133+ // caller, the latter cannot be trusted to follow the rules of the ABI.
134+ const ISD::InputArg &Arg = Ins[VA.getValNo()];
135+ if (AFI->isCmseNSEntryFunction() && Arg.ArgVT.isScalarInteger() &&
136+ RegVT.isScalarInteger() && Arg.ArgVT.bitsLT(MVT::i32))
137+ ArgValue = handleCMSEValue(ArgValue, Arg, DAG, dl);
138+
139 InVals.push_back(ArgValue);
140 } else { // VA.isRegLoc()
141 // Only arguments passed on the stack should make it here.
142diff --git a/llvm/lib/Target/ARM/ARMISelLowering.h b/llvm/lib/Target/ARM/ARMISelLowering.h
143index 62a52bdb03f7..a255e9b6fc36 100644
144--- a/llvm/lib/Target/ARM/ARMISelLowering.h
145+++ b/llvm/lib/Target/ARM/ARMISelLowering.h
146@@ -891,7 +891,7 @@ class VectorType;
147 const SmallVectorImpl<ISD::InputArg> &Ins,
148 const SDLoc &dl, SelectionDAG &DAG,
149 SmallVectorImpl<SDValue> &InVals, bool isThisReturn,
150- SDValue ThisVal) const;
151+ SDValue ThisVal, bool isCmseNSCall) const;
152
153 bool supportSplitCSR(MachineFunction *MF) const override {
154 return MF->getFunction().getCallingConv() == CallingConv::CXX_FAST_TLS &&
155diff --git a/llvm/test/CodeGen/ARM/cmse-harden-call-returned-values.ll b/llvm/test/CodeGen/ARM/cmse-harden-call-returned-values.ll
156new file mode 100644
157index 0000000000..58eef443c25e
158--- /dev/null
159+++ b/llvm/test/CodeGen/ARM/cmse-harden-call-returned-values.ll
160@@ -0,0 +1,552 @@
161+; RUN: llc %s -mtriple=thumbv8m.main -o - | FileCheck %s --check-prefixes V8M-COMMON,V8M-LE
162+; RUN: llc %s -mtriple=thumbebv8m.main -o - | FileCheck %s --check-prefixes V8M-COMMON,V8M-BE
163+; RUN: llc %s -mtriple=thumbv8.1m.main -o - | FileCheck %s --check-prefixes V81M-COMMON,V81M-LE
164+; RUN: llc %s -mtriple=thumbebv8.1m.main -o - | FileCheck %s --check-prefixes V81M-COMMON,V81M-BE
165+
166+@get_idx = hidden local_unnamed_addr global ptr null, align 4
167+@arr = hidden local_unnamed_addr global [256 x i32] zeroinitializer, align 4
168+
169+define i32 @access_i16() {
170+; V8M-COMMON-LABEL: access_i16:
171+; V8M-COMMON: @ %bb.0: @ %entry
172+; V8M-COMMON-NEXT: push {r7, lr}
173+; V8M-COMMON-NEXT: movw r0, :lower16:get_idx
174+; V8M-COMMON-NEXT: movt r0, :upper16:get_idx
175+; V8M-COMMON-NEXT: ldr r0, [r0]
176+; V8M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
177+; V8M-COMMON-NEXT: bic r0, r0, #1
178+; V8M-COMMON-NEXT: sub sp, #136
179+; V8M-COMMON-NEXT: vlstm sp, {d0 - d15}
180+; V8M-COMMON-NEXT: mov r1, r0
181+; V8M-COMMON-NEXT: mov r2, r0
182+; V8M-COMMON-NEXT: mov r3, r0
183+; V8M-COMMON-NEXT: mov r4, r0
184+; V8M-COMMON-NEXT: mov r5, r0
185+; V8M-COMMON-NEXT: mov r6, r0
186+; V8M-COMMON-NEXT: mov r7, r0
187+; V8M-COMMON-NEXT: mov r8, r0
188+; V8M-COMMON-NEXT: mov r9, r0
189+; V8M-COMMON-NEXT: mov r10, r0
190+; V8M-COMMON-NEXT: mov r11, r0
191+; V8M-COMMON-NEXT: mov r12, r0
192+; V8M-COMMON-NEXT: msr apsr_nzcvq, r0
193+; V8M-COMMON-NEXT: blxns r0
194+; V8M-COMMON-NEXT: vlldm sp, {d0 - d15}
195+; V8M-COMMON-NEXT: add sp, #136
196+; V8M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
197+; V8M-COMMON-NEXT: movw r1, :lower16:arr
198+; V8M-COMMON-NEXT: sxth r0, r0
199+; V8M-COMMON-NEXT: movt r1, :upper16:arr
200+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
201+; V8M-COMMON-NEXT: pop {r7, pc}
202+;
203+; V81M-COMMON-LABEL: access_i16:
204+; V81M-COMMON: @ %bb.0: @ %entry
205+; V81M-COMMON-NEXT: push {r7, lr}
206+; V81M-COMMON-NEXT: movw r0, :lower16:get_idx
207+; V81M-COMMON-NEXT: movt r0, :upper16:get_idx
208+; V81M-COMMON-NEXT: ldr r0, [r0]
209+; V81M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
210+; V81M-COMMON-NEXT: bic r0, r0, #1
211+; V81M-COMMON-NEXT: sub sp, #136
212+; V81M-COMMON-NEXT: vlstm sp, {d0 - d15}
213+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}
214+; V81M-COMMON-NEXT: blxns r0
215+; V81M-COMMON-NEXT: vlldm sp, {d0 - d15}
216+; V81M-COMMON-NEXT: add sp, #136
217+; V81M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
218+; V81M-COMMON-NEXT: movw r1, :lower16:arr
219+; V81M-COMMON-NEXT: sxth r0, r0
220+; V81M-COMMON-NEXT: movt r1, :upper16:arr
221+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
222+; V81M-COMMON-NEXT: pop {r7, pc}
223+entry:
224+ %0 = load ptr, ptr @get_idx, align 4
225+ %call = tail call signext i16 %0() "cmse_nonsecure_call"
226+ %idxprom = sext i16 %call to i32
227+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
228+ %1 = load i32, ptr %arrayidx, align 4
229+ ret i32 %1
230+}
231+
232+define i32 @access_u16() {
233+; V8M-COMMON-LABEL: access_u16:
234+; V8M-COMMON: @ %bb.0: @ %entry
235+; V8M-COMMON-NEXT: push {r7, lr}
236+; V8M-COMMON-NEXT: movw r0, :lower16:get_idx
237+; V8M-COMMON-NEXT: movt r0, :upper16:get_idx
238+; V8M-COMMON-NEXT: ldr r0, [r0]
239+; V8M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
240+; V8M-COMMON-NEXT: bic r0, r0, #1
241+; V8M-COMMON-NEXT: sub sp, #136
242+; V8M-COMMON-NEXT: vlstm sp, {d0 - d15}
243+; V8M-COMMON-NEXT: mov r1, r0
244+; V8M-COMMON-NEXT: mov r2, r0
245+; V8M-COMMON-NEXT: mov r3, r0
246+; V8M-COMMON-NEXT: mov r4, r0
247+; V8M-COMMON-NEXT: mov r5, r0
248+; V8M-COMMON-NEXT: mov r6, r0
249+; V8M-COMMON-NEXT: mov r7, r0
250+; V8M-COMMON-NEXT: mov r8, r0
251+; V8M-COMMON-NEXT: mov r9, r0
252+; V8M-COMMON-NEXT: mov r10, r0
253+; V8M-COMMON-NEXT: mov r11, r0
254+; V8M-COMMON-NEXT: mov r12, r0
255+; V8M-COMMON-NEXT: msr apsr_nzcvq, r0
256+; V8M-COMMON-NEXT: blxns r0
257+; V8M-COMMON-NEXT: vlldm sp, {d0 - d15}
258+; V8M-COMMON-NEXT: add sp, #136
259+; V8M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
260+; V8M-COMMON-NEXT: movw r1, :lower16:arr
261+; V8M-COMMON-NEXT: uxth r0, r0
262+; V8M-COMMON-NEXT: movt r1, :upper16:arr
263+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
264+; V8M-COMMON-NEXT: pop {r7, pc}
265+;
266+; V81M-COMMON-LABEL: access_u16:
267+; V81M-COMMON: @ %bb.0: @ %entry
268+; V81M-COMMON-NEXT: push {r7, lr}
269+; V81M-COMMON-NEXT: movw r0, :lower16:get_idx
270+; V81M-COMMON-NEXT: movt r0, :upper16:get_idx
271+; V81M-COMMON-NEXT: ldr r0, [r0]
272+; V81M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
273+; V81M-COMMON-NEXT: bic r0, r0, #1
274+; V81M-COMMON-NEXT: sub sp, #136
275+; V81M-COMMON-NEXT: vlstm sp, {d0 - d15}
276+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}
277+; V81M-COMMON-NEXT: blxns r0
278+; V81M-COMMON-NEXT: vlldm sp, {d0 - d15}
279+; V81M-COMMON-NEXT: add sp, #136
280+; V81M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
281+; V81M-COMMON-NEXT: movw r1, :lower16:arr
282+; V81M-COMMON-NEXT: uxth r0, r0
283+; V81M-COMMON-NEXT: movt r1, :upper16:arr
284+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
285+; V81M-COMMON-NEXT: pop {r7, pc}
286+entry:
287+ %0 = load ptr, ptr @get_idx, align 4
288+ %call = tail call zeroext i16 %0() "cmse_nonsecure_call"
289+ %idxprom = zext i16 %call to i32
290+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
291+ %1 = load i32, ptr %arrayidx, align 4
292+ ret i32 %1
293+}
294+
295+define i32 @access_i8() {
296+; V8M-COMMON-LABEL: access_i8:
297+; V8M-COMMON: @ %bb.0: @ %entry
298+; V8M-COMMON-NEXT: push {r7, lr}
299+; V8M-COMMON-NEXT: movw r0, :lower16:get_idx
300+; V8M-COMMON-NEXT: movt r0, :upper16:get_idx
301+; V8M-COMMON-NEXT: ldr r0, [r0]
302+; V8M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
303+; V8M-COMMON-NEXT: bic r0, r0, #1
304+; V8M-COMMON-NEXT: sub sp, #136
305+; V8M-COMMON-NEXT: vlstm sp, {d0 - d15}
306+; V8M-COMMON-NEXT: mov r1, r0
307+; V8M-COMMON-NEXT: mov r2, r0
308+; V8M-COMMON-NEXT: mov r3, r0
309+; V8M-COMMON-NEXT: mov r4, r0
310+; V8M-COMMON-NEXT: mov r5, r0
311+; V8M-COMMON-NEXT: mov r6, r0
312+; V8M-COMMON-NEXT: mov r7, r0
313+; V8M-COMMON-NEXT: mov r8, r0
314+; V8M-COMMON-NEXT: mov r9, r0
315+; V8M-COMMON-NEXT: mov r10, r0
316+; V8M-COMMON-NEXT: mov r11, r0
317+; V8M-COMMON-NEXT: mov r12, r0
318+; V8M-COMMON-NEXT: msr apsr_nzcvq, r0
319+; V8M-COMMON-NEXT: blxns r0
320+; V8M-COMMON-NEXT: vlldm sp, {d0 - d15}
321+; V8M-COMMON-NEXT: add sp, #136
322+; V8M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
323+; V8M-COMMON-NEXT: movw r1, :lower16:arr
324+; V8M-COMMON-NEXT: sxtb r0, r0
325+; V8M-COMMON-NEXT: movt r1, :upper16:arr
326+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
327+; V8M-COMMON-NEXT: pop {r7, pc}
328+;
329+; V81M-COMMON-LABEL: access_i8:
330+; V81M-COMMON: @ %bb.0: @ %entry
331+; V81M-COMMON-NEXT: push {r7, lr}
332+; V81M-COMMON-NEXT: movw r0, :lower16:get_idx
333+; V81M-COMMON-NEXT: movt r0, :upper16:get_idx
334+; V81M-COMMON-NEXT: ldr r0, [r0]
335+; V81M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
336+; V81M-COMMON-NEXT: bic r0, r0, #1
337+; V81M-COMMON-NEXT: sub sp, #136
338+; V81M-COMMON-NEXT: vlstm sp, {d0 - d15}
339+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}
340+; V81M-COMMON-NEXT: blxns r0
341+; V81M-COMMON-NEXT: vlldm sp, {d0 - d15}
342+; V81M-COMMON-NEXT: add sp, #136
343+; V81M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
344+; V81M-COMMON-NEXT: movw r1, :lower16:arr
345+; V81M-COMMON-NEXT: sxtb r0, r0
346+; V81M-COMMON-NEXT: movt r1, :upper16:arr
347+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
348+; V81M-COMMON-NEXT: pop {r7, pc}
349+entry:
350+ %0 = load ptr, ptr @get_idx, align 4
351+ %call = tail call signext i8 %0() "cmse_nonsecure_call"
352+ %idxprom = sext i8 %call to i32
353+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
354+ %1 = load i32, ptr %arrayidx, align 4
355+ ret i32 %1
356+}
357+
358+define i32 @access_u8() {
359+; V8M-COMMON-LABEL: access_u8:
360+; V8M-COMMON: @ %bb.0: @ %entry
361+; V8M-COMMON-NEXT: push {r7, lr}
362+; V8M-COMMON-NEXT: movw r0, :lower16:get_idx
363+; V8M-COMMON-NEXT: movt r0, :upper16:get_idx
364+; V8M-COMMON-NEXT: ldr r0, [r0]
365+; V8M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
366+; V8M-COMMON-NEXT: bic r0, r0, #1
367+; V8M-COMMON-NEXT: sub sp, #136
368+; V8M-COMMON-NEXT: vlstm sp, {d0 - d15}
369+; V8M-COMMON-NEXT: mov r1, r0
370+; V8M-COMMON-NEXT: mov r2, r0
371+; V8M-COMMON-NEXT: mov r3, r0
372+; V8M-COMMON-NEXT: mov r4, r0
373+; V8M-COMMON-NEXT: mov r5, r0
374+; V8M-COMMON-NEXT: mov r6, r0
375+; V8M-COMMON-NEXT: mov r7, r0
376+; V8M-COMMON-NEXT: mov r8, r0
377+; V8M-COMMON-NEXT: mov r9, r0
378+; V8M-COMMON-NEXT: mov r10, r0
379+; V8M-COMMON-NEXT: mov r11, r0
380+; V8M-COMMON-NEXT: mov r12, r0
381+; V8M-COMMON-NEXT: msr apsr_nzcvq, r0
382+; V8M-COMMON-NEXT: blxns r0
383+; V8M-COMMON-NEXT: vlldm sp, {d0 - d15}
384+; V8M-COMMON-NEXT: add sp, #136
385+; V8M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
386+; V8M-COMMON-NEXT: movw r1, :lower16:arr
387+; V8M-COMMON-NEXT: uxtb r0, r0
388+; V8M-COMMON-NEXT: movt r1, :upper16:arr
389+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
390+; V8M-COMMON-NEXT: pop {r7, pc}
391+;
392+; V81M-COMMON-LABEL: access_u8:
393+; V81M-COMMON: @ %bb.0: @ %entry
394+; V81M-COMMON-NEXT: push {r7, lr}
395+; V81M-COMMON-NEXT: movw r0, :lower16:get_idx
396+; V81M-COMMON-NEXT: movt r0, :upper16:get_idx
397+; V81M-COMMON-NEXT: ldr r0, [r0]
398+; V81M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
399+; V81M-COMMON-NEXT: bic r0, r0, #1
400+; V81M-COMMON-NEXT: sub sp, #136
401+; V81M-COMMON-NEXT: vlstm sp, {d0 - d15}
402+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}
403+; V81M-COMMON-NEXT: blxns r0
404+; V81M-COMMON-NEXT: vlldm sp, {d0 - d15}
405+; V81M-COMMON-NEXT: add sp, #136
406+; V81M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
407+; V81M-COMMON-NEXT: movw r1, :lower16:arr
408+; V81M-COMMON-NEXT: uxtb r0, r0
409+; V81M-COMMON-NEXT: movt r1, :upper16:arr
410+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
411+; V81M-COMMON-NEXT: pop {r7, pc}
412+entry:
413+ %0 = load ptr, ptr @get_idx, align 4
414+ %call = tail call zeroext i8 %0() "cmse_nonsecure_call"
415+ %idxprom = zext i8 %call to i32
416+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
417+ %1 = load i32, ptr %arrayidx, align 4
418+ ret i32 %1
419+}
420+
421+define i32 @access_i1() {
422+; V8M-COMMON-LABEL: access_i1:
423+; V8M-COMMON: @ %bb.0: @ %entry
424+; V8M-COMMON-NEXT: push {r7, lr}
425+; V8M-COMMON-NEXT: movw r0, :lower16:get_idx
426+; V8M-COMMON-NEXT: movt r0, :upper16:get_idx
427+; V8M-COMMON-NEXT: ldr r0, [r0]
428+; V8M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
429+; V8M-COMMON-NEXT: bic r0, r0, #1
430+; V8M-COMMON-NEXT: sub sp, #136
431+; V8M-COMMON-NEXT: vlstm sp, {d0 - d15}
432+; V8M-COMMON-NEXT: mov r1, r0
433+; V8M-COMMON-NEXT: mov r2, r0
434+; V8M-COMMON-NEXT: mov r3, r0
435+; V8M-COMMON-NEXT: mov r4, r0
436+; V8M-COMMON-NEXT: mov r5, r0
437+; V8M-COMMON-NEXT: mov r6, r0
438+; V8M-COMMON-NEXT: mov r7, r0
439+; V8M-COMMON-NEXT: mov r8, r0
440+; V8M-COMMON-NEXT: mov r9, r0
441+; V8M-COMMON-NEXT: mov r10, r0
442+; V8M-COMMON-NEXT: mov r11, r0
443+; V8M-COMMON-NEXT: mov r12, r0
444+; V8M-COMMON-NEXT: msr apsr_nzcvq, r0
445+; V8M-COMMON-NEXT: blxns r0
446+; V8M-COMMON-NEXT: vlldm sp, {d0 - d15}
447+; V8M-COMMON-NEXT: add sp, #136
448+; V8M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
449+; V8M-COMMON-NEXT: movw r1, :lower16:arr
450+; V8M-COMMON-NEXT: and r0, r0, #1
451+; V8M-COMMON-NEXT: movt r1, :upper16:arr
452+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
453+; V8M-COMMON-NEXT: pop {r7, pc}
454+;
455+; V81M-COMMON-LABEL: access_i1:
456+; V81M-COMMON: @ %bb.0: @ %entry
457+; V81M-COMMON-NEXT: push {r7, lr}
458+; V81M-COMMON-NEXT: movw r0, :lower16:get_idx
459+; V81M-COMMON-NEXT: movt r0, :upper16:get_idx
460+; V81M-COMMON-NEXT: ldr r0, [r0]
461+; V81M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
462+; V81M-COMMON-NEXT: bic r0, r0, #1
463+; V81M-COMMON-NEXT: sub sp, #136
464+; V81M-COMMON-NEXT: vlstm sp, {d0 - d15}
465+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}
466+; V81M-COMMON-NEXT: blxns r0
467+; V81M-COMMON-NEXT: vlldm sp, {d0 - d15}
468+; V81M-COMMON-NEXT: add sp, #136
469+; V81M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
470+; V81M-COMMON-NEXT: movw r1, :lower16:arr
471+; V81M-COMMON-NEXT: and r0, r0, #1
472+; V81M-COMMON-NEXT: movt r1, :upper16:arr
473+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
474+; V81M-COMMON-NEXT: pop {r7, pc}
475+entry:
476+ %0 = load ptr, ptr @get_idx, align 4
477+ %call = tail call zeroext i1 %0() "cmse_nonsecure_call"
478+ %idxprom = zext i1 %call to i32
479+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
480+ %1 = load i32, ptr %arrayidx, align 4
481+ ret i32 %1
482+}
483+
484+define i32 @access_i5() {
485+; V8M-COMMON-LABEL: access_i5:
486+; V8M-COMMON: @ %bb.0: @ %entry
487+; V8M-COMMON-NEXT: push {r7, lr}
488+; V8M-COMMON-NEXT: movw r0, :lower16:get_idx
489+; V8M-COMMON-NEXT: movt r0, :upper16:get_idx
490+; V8M-COMMON-NEXT: ldr r0, [r0]
491+; V8M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
492+; V8M-COMMON-NEXT: bic r0, r0, #1
493+; V8M-COMMON-NEXT: sub sp, #136
494+; V8M-COMMON-NEXT: vlstm sp, {d0 - d15}
495+; V8M-COMMON-NEXT: mov r1, r0
496+; V8M-COMMON-NEXT: mov r2, r0
497+; V8M-COMMON-NEXT: mov r3, r0
498+; V8M-COMMON-NEXT: mov r4, r0
499+; V8M-COMMON-NEXT: mov r5, r0
500+; V8M-COMMON-NEXT: mov r6, r0
501+; V8M-COMMON-NEXT: mov r7, r0
502+; V8M-COMMON-NEXT: mov r8, r0
503+; V8M-COMMON-NEXT: mov r9, r0
504+; V8M-COMMON-NEXT: mov r10, r0
505+; V8M-COMMON-NEXT: mov r11, r0
506+; V8M-COMMON-NEXT: mov r12, r0
507+; V8M-COMMON-NEXT: msr apsr_nzcvq, r0
508+; V8M-COMMON-NEXT: blxns r0
509+; V8M-COMMON-NEXT: vlldm sp, {d0 - d15}
510+; V8M-COMMON-NEXT: add sp, #136
511+; V8M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
512+; V8M-COMMON-NEXT: movw r1, :lower16:arr
513+; V8M-COMMON-NEXT: sbfx r0, r0, #0, #5
514+; V8M-COMMON-NEXT: movt r1, :upper16:arr
515+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
516+; V8M-COMMON-NEXT: pop {r7, pc}
517+;
518+; V81M-COMMON-LABEL: access_i5:
519+; V81M-COMMON: @ %bb.0: @ %entry
520+; V81M-COMMON-NEXT: push {r7, lr}
521+; V81M-COMMON-NEXT: movw r0, :lower16:get_idx
522+; V81M-COMMON-NEXT: movt r0, :upper16:get_idx
523+; V81M-COMMON-NEXT: ldr r0, [r0]
524+; V81M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
525+; V81M-COMMON-NEXT: bic r0, r0, #1
526+; V81M-COMMON-NEXT: sub sp, #136
527+; V81M-COMMON-NEXT: vlstm sp, {d0 - d15}
528+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}
529+; V81M-COMMON-NEXT: blxns r0
530+; V81M-COMMON-NEXT: vlldm sp, {d0 - d15}
531+; V81M-COMMON-NEXT: add sp, #136
532+; V81M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
533+; V81M-COMMON-NEXT: movw r1, :lower16:arr
534+; V81M-COMMON-NEXT: sbfx r0, r0, #0, #5
535+; V81M-COMMON-NEXT: movt r1, :upper16:arr
536+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
537+; V81M-COMMON-NEXT: pop {r7, pc}
538+entry:
539+ %0 = load ptr, ptr @get_idx, align 4
540+ %call = tail call signext i5 %0() "cmse_nonsecure_call"
541+ %idxprom = sext i5 %call to i32
542+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
543+ %1 = load i32, ptr %arrayidx, align 4
544+ ret i32 %1
545+}
546+
547+define i32 @access_u5() {
548+; V8M-COMMON-LABEL: access_u5:
549+; V8M-COMMON: @ %bb.0: @ %entry
550+; V8M-COMMON-NEXT: push {r7, lr}
551+; V8M-COMMON-NEXT: movw r0, :lower16:get_idx
552+; V8M-COMMON-NEXT: movt r0, :upper16:get_idx
553+; V8M-COMMON-NEXT: ldr r0, [r0]
554+; V8M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
555+; V8M-COMMON-NEXT: bic r0, r0, #1
556+; V8M-COMMON-NEXT: sub sp, #136
557+; V8M-COMMON-NEXT: vlstm sp, {d0 - d15}
558+; V8M-COMMON-NEXT: mov r1, r0
559+; V8M-COMMON-NEXT: mov r2, r0
560+; V8M-COMMON-NEXT: mov r3, r0
561+; V8M-COMMON-NEXT: mov r4, r0
562+; V8M-COMMON-NEXT: mov r5, r0
563+; V8M-COMMON-NEXT: mov r6, r0
564+; V8M-COMMON-NEXT: mov r7, r0
565+; V8M-COMMON-NEXT: mov r8, r0
566+; V8M-COMMON-NEXT: mov r9, r0
567+; V8M-COMMON-NEXT: mov r10, r0
568+; V8M-COMMON-NEXT: mov r11, r0
569+; V8M-COMMON-NEXT: mov r12, r0
570+; V8M-COMMON-NEXT: msr apsr_nzcvq, r0
571+; V8M-COMMON-NEXT: blxns r0
572+; V8M-COMMON-NEXT: vlldm sp, {d0 - d15}
573+; V8M-COMMON-NEXT: add sp, #136
574+; V8M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
575+; V8M-COMMON-NEXT: movw r1, :lower16:arr
576+; V8M-COMMON-NEXT: and r0, r0, #31
577+; V8M-COMMON-NEXT: movt r1, :upper16:arr
578+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
579+; V8M-COMMON-NEXT: pop {r7, pc}
580+;
581+; V81M-COMMON-LABEL: access_u5:
582+; V81M-COMMON: @ %bb.0: @ %entry
583+; V81M-COMMON-NEXT: push {r7, lr}
584+; V81M-COMMON-NEXT: movw r0, :lower16:get_idx
585+; V81M-COMMON-NEXT: movt r0, :upper16:get_idx
586+; V81M-COMMON-NEXT: ldr r0, [r0]
587+; V81M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
588+; V81M-COMMON-NEXT: bic r0, r0, #1
589+; V81M-COMMON-NEXT: sub sp, #136
590+; V81M-COMMON-NEXT: vlstm sp, {d0 - d15}
591+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}
592+; V81M-COMMON-NEXT: blxns r0
593+; V81M-COMMON-NEXT: vlldm sp, {d0 - d15}
594+; V81M-COMMON-NEXT: add sp, #136
595+; V81M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
596+; V81M-COMMON-NEXT: movw r1, :lower16:arr
597+; V81M-COMMON-NEXT: and r0, r0, #31
598+; V81M-COMMON-NEXT: movt r1, :upper16:arr
599+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
600+; V81M-COMMON-NEXT: pop {r7, pc}
601+entry:
602+ %0 = load ptr, ptr @get_idx, align 4
603+ %call = tail call zeroext i5 %0() "cmse_nonsecure_call"
604+ %idxprom = zext i5 %call to i32
605+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
606+ %1 = load i32, ptr %arrayidx, align 4
607+ ret i32 %1
608+}
609+
610+define i32 @access_i33(ptr %f) {
611+; V8M-COMMON-LABEL: access_i33:
612+; V8M-COMMON: @ %bb.0: @ %entry
613+; V8M-COMMON-NEXT: push {r7, lr}
614+; V8M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
615+; V8M-COMMON-NEXT: bic r0, r0, #1
616+; V8M-COMMON-NEXT: sub sp, #136
617+; V8M-COMMON-NEXT: vlstm sp, {d0 - d15}
618+; V8M-COMMON-NEXT: mov r1, r0
619+; V8M-COMMON-NEXT: mov r2, r0
620+; V8M-COMMON-NEXT: mov r3, r0
621+; V8M-COMMON-NEXT: mov r4, r0
622+; V8M-COMMON-NEXT: mov r5, r0
623+; V8M-COMMON-NEXT: mov r6, r0
624+; V8M-COMMON-NEXT: mov r7, r0
625+; V8M-COMMON-NEXT: mov r8, r0
626+; V8M-COMMON-NEXT: mov r9, r0
627+; V8M-COMMON-NEXT: mov r10, r0
628+; V8M-COMMON-NEXT: mov r11, r0
629+; V8M-COMMON-NEXT: mov r12, r0
630+; V8M-COMMON-NEXT: msr apsr_nzcvq, r0
631+; V8M-COMMON-NEXT: blxns r0
632+; V8M-COMMON-NEXT: vlldm sp, {d0 - d15}
633+; V8M-COMMON-NEXT: add sp, #136
634+; V8M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
635+; V8M-LE-NEXT: and r0, r1, #1
636+; V8M-BE-NEXT: and r0, r0, #1
637+; V8M-COMMON-NEXT: rsb.w r0, r0, #0
638+; V8M-COMMON-NEXT: pop {r7, pc}
639+;
640+; V81M-COMMON-LABEL: access_i33:
641+; V81M-COMMON: @ %bb.0: @ %entry
642+; V81M-COMMON-NEXT: push {r7, lr}
643+; V81M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
644+; V81M-COMMON-NEXT: bic r0, r0, #1
645+; V81M-COMMON-NEXT: sub sp, #136
646+; V81M-COMMON-NEXT: vlstm sp, {d0 - d15}
647+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}
648+; V81M-COMMON-NEXT: blxns r0
649+; V81M-COMMON-NEXT: vlldm sp, {d0 - d15}
650+; V81M-COMMON-NEXT: add sp, #136
651+; V81M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
652+; V81M-LE-NEXT: and r0, r1, #1
653+; V81M-BE-NEXT: and r0, r0, #1
654+; V81M-COMMON-NEXT: rsb.w r0, r0, #0
655+; V81M-COMMON-NEXT: pop {r7, pc}
656+entry:
657+ %call = tail call i33 %f() "cmse_nonsecure_call"
658+ %shr = ashr i33 %call, 32
659+ %conv = trunc nsw i33 %shr to i32
660+ ret i32 %conv
661+}
662+
663+define i32 @access_u33(ptr %f) {
664+; V8M-COMMON-LABEL: access_u33:
665+; V8M-COMMON: @ %bb.0: @ %entry
666+; V8M-COMMON-NEXT: push {r7, lr}
667+; V8M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
668+; V8M-COMMON-NEXT: bic r0, r0, #1
669+; V8M-COMMON-NEXT: sub sp, #136
670+; V8M-COMMON-NEXT: vlstm sp, {d0 - d15}
671+; V8M-COMMON-NEXT: mov r1, r0
672+; V8M-COMMON-NEXT: mov r2, r0
673+; V8M-COMMON-NEXT: mov r3, r0
674+; V8M-COMMON-NEXT: mov r4, r0
675+; V8M-COMMON-NEXT: mov r5, r0
676+; V8M-COMMON-NEXT: mov r6, r0
677+; V8M-COMMON-NEXT: mov r7, r0
678+; V8M-COMMON-NEXT: mov r8, r0
679+; V8M-COMMON-NEXT: mov r9, r0
680+; V8M-COMMON-NEXT: mov r10, r0
681+; V8M-COMMON-NEXT: mov r11, r0
682+; V8M-COMMON-NEXT: mov r12, r0
683+; V8M-COMMON-NEXT: msr apsr_nzcvq, r0
684+; V8M-COMMON-NEXT: blxns r0
685+; V8M-COMMON-NEXT: vlldm sp, {d0 - d15}
686+; V8M-COMMON-NEXT: add sp, #136
687+; V8M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
688+; V8M-LE-NEXT: and r0, r1, #1
689+; V8M-BE-NEXT: and r0, r0, #1
690+; V8M-COMMON-NEXT: pop {r7, pc}
691+;
692+; V81M-COMMON-LABEL: access_u33:
693+; V81M-COMMON: @ %bb.0: @ %entry
694+; V81M-COMMON-NEXT: push {r7, lr}
695+; V81M-COMMON-NEXT: push.w {r4, r5, r6, r7, r8, r9, r10, r11}
696+; V81M-COMMON-NEXT: bic r0, r0, #1
697+; V81M-COMMON-NEXT: sub sp, #136
698+; V81M-COMMON-NEXT: vlstm sp, {d0 - d15}
699+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, apsr}
700+; V81M-COMMON-NEXT: blxns r0
701+; V81M-COMMON-NEXT: vlldm sp, {d0 - d15}
702+; V81M-COMMON-NEXT: add sp, #136
703+; V81M-COMMON-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11}
704+; V81M-LE-NEXT: and r0, r1, #1
705+; V81M-BE-NEXT: and r0, r0, #1
706+; V81M-COMMON-NEXT: pop {r7, pc}
707+entry:
708+ %call = tail call i33 %f() "cmse_nonsecure_call"
709+ %shr = lshr i33 %call, 32
710+ %conv = trunc nuw nsw i33 %shr to i32
711+ ret i32 %conv
712+}
713diff --git a/llvm/test/CodeGen/ARM/cmse-harden-entry-arguments.ll b/llvm/test/CodeGen/ARM/cmse-harden-entry-arguments.ll
714new file mode 100644
715index 0000000000..c66ab00566dd
716--- /dev/null
717+++ b/llvm/test/CodeGen/ARM/cmse-harden-entry-arguments.ll
718@@ -0,0 +1,368 @@
719+; RUN: llc %s -mtriple=thumbv8m.main -o - | FileCheck %s --check-prefixes V8M-COMMON,V8M-LE
720+; RUN: llc %s -mtriple=thumbebv8m.main -o - | FileCheck %s --check-prefixes V8M-COMMON,V8M-BE
721+; RUN: llc %s -mtriple=thumbv8.1m.main -o - | FileCheck %s --check-prefixes V81M-COMMON,V81M-LE
722+; RUN: llc %s -mtriple=thumbebv8.1m.main -o - | FileCheck %s --check-prefixes V81M-COMMON,V81M-BE
723+
724+@arr = hidden local_unnamed_addr global [256 x i32] zeroinitializer, align 4
725+
726+define i32 @access_i16(i16 signext %idx) "cmse_nonsecure_entry" {
727+; V8M-COMMON-LABEL: access_i16:
728+; V8M-COMMON: @ %bb.0: @ %entry
729+; V8M-COMMON-NEXT: movw r1, :lower16:arr
730+; V8M-COMMON-NEXT: sxth r0, r0
731+; V8M-COMMON-NEXT: movt r1, :upper16:arr
732+; V8M-COMMON-NEXT: mov r2, lr
733+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
734+; V8M-COMMON-NEXT: mov r1, lr
735+; V8M-COMMON-NEXT: mov r3, lr
736+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
737+; V8M-COMMON-NEXT: mov r12, lr
738+; V8M-COMMON-NEXT: bxns lr
739+;
740+; V81M-COMMON-LABEL: access_i16:
741+; V81M-COMMON: @ %bb.0: @ %entry
742+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
743+; V81M-COMMON-NEXT: movw r1, :lower16:arr
744+; V81M-COMMON-NEXT: sxth r0, r0
745+; V81M-COMMON-NEXT: movt r1, :upper16:arr
746+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
747+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
748+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
749+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
750+; V81M-COMMON-NEXT: bxns lr
751+entry:
752+ %idxprom = sext i16 %idx to i32
753+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
754+ %0 = load i32, ptr %arrayidx, align 4
755+ ret i32 %0
756+}
757+
758+define i32 @access_u16(i16 zeroext %idx) "cmse_nonsecure_entry" {
759+; V8M-COMMON-LABEL: access_u16:
760+; V8M-COMMON: @ %bb.0: @ %entry
761+; V8M-COMMON-NEXT: movw r1, :lower16:arr
762+; V8M-COMMON-NEXT: uxth r0, r0
763+; V8M-COMMON-NEXT: movt r1, :upper16:arr
764+; V8M-COMMON-NEXT: mov r2, lr
765+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
766+; V8M-COMMON-NEXT: mov r1, lr
767+; V8M-COMMON-NEXT: mov r3, lr
768+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
769+; V8M-COMMON-NEXT: mov r12, lr
770+; V8M-COMMON-NEXT: bxns lr
771+;
772+; V81M-COMMON-LABEL: access_u16:
773+; V81M-COMMON: @ %bb.0: @ %entry
774+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
775+; V81M-COMMON-NEXT: movw r1, :lower16:arr
776+; V81M-COMMON-NEXT: uxth r0, r0
777+; V81M-COMMON-NEXT: movt r1, :upper16:arr
778+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
779+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
780+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
781+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
782+; V81M-COMMON-NEXT: bxns lr
783+entry:
784+ %idxprom = zext i16 %idx to i32
785+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
786+ %0 = load i32, ptr %arrayidx, align 4
787+ ret i32 %0
788+}
789+
790+define i32 @access_i8(i8 signext %idx) "cmse_nonsecure_entry" {
791+; V8M-COMMON-LABEL: access_i8:
792+; V8M-COMMON: @ %bb.0: @ %entry
793+; V8M-COMMON-NEXT: movw r1, :lower16:arr
794+; V8M-COMMON-NEXT: sxtb r0, r0
795+; V8M-COMMON-NEXT: movt r1, :upper16:arr
796+; V8M-COMMON-NEXT: mov r2, lr
797+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
798+; V8M-COMMON-NEXT: mov r1, lr
799+; V8M-COMMON-NEXT: mov r3, lr
800+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
801+; V8M-COMMON-NEXT: mov r12, lr
802+; V8M-COMMON-NEXT: bxns lr
803+;
804+; V81M-COMMON-LABEL: access_i8:
805+; V81M-COMMON: @ %bb.0: @ %entry
806+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
807+; V81M-COMMON-NEXT: movw r1, :lower16:arr
808+; V81M-COMMON-NEXT: sxtb r0, r0
809+; V81M-COMMON-NEXT: movt r1, :upper16:arr
810+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
811+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
812+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
813+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
814+; V81M-COMMON-NEXT: bxns lr
815+entry:
816+ %idxprom = sext i8 %idx to i32
817+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
818+ %0 = load i32, ptr %arrayidx, align 4
819+ ret i32 %0
820+}
821+
822+define i32 @access_u8(i8 zeroext %idx) "cmse_nonsecure_entry" {
823+; V8M-COMMON-LABEL: access_u8:
824+; V8M-COMMON: @ %bb.0: @ %entry
825+; V8M-COMMON-NEXT: movw r1, :lower16:arr
826+; V8M-COMMON-NEXT: uxtb r0, r0
827+; V8M-COMMON-NEXT: movt r1, :upper16:arr
828+; V8M-COMMON-NEXT: mov r2, lr
829+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
830+; V8M-COMMON-NEXT: mov r1, lr
831+; V8M-COMMON-NEXT: mov r3, lr
832+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
833+; V8M-COMMON-NEXT: mov r12, lr
834+; V8M-COMMON-NEXT: bxns lr
835+;
836+; V81M-COMMON-LABEL: access_u8:
837+; V81M-COMMON: @ %bb.0: @ %entry
838+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
839+; V81M-COMMON-NEXT: movw r1, :lower16:arr
840+; V81M-COMMON-NEXT: uxtb r0, r0
841+; V81M-COMMON-NEXT: movt r1, :upper16:arr
842+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
843+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
844+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
845+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
846+; V81M-COMMON-NEXT: bxns lr
847+entry:
848+ %idxprom = zext i8 %idx to i32
849+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
850+ %0 = load i32, ptr %arrayidx, align 4
851+ ret i32 %0
852+}
853+
854+define i32 @access_i1(i1 signext %idx) "cmse_nonsecure_entry" {
855+; V8M-COMMON-LABEL: access_i1:
856+; V8M-COMMON: @ %bb.0: @ %entry
857+; V8M-COMMON-NEXT: and r0, r0, #1
858+; V8M-COMMON-NEXT: movw r1, :lower16:arr
859+; V8M-COMMON-NEXT: rsbs r0, r0, #0
860+; V8M-COMMON-NEXT: movt r1, :upper16:arr
861+; V8M-COMMON-NEXT: and r0, r0, #1
862+; V8M-COMMON-NEXT: mov r2, lr
863+; V8M-COMMON-NEXT: mov r3, lr
864+; V8M-COMMON-NEXT: mov r12, lr
865+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
866+; V8M-COMMON-NEXT: mov r1, lr
867+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
868+; V8M-COMMON-NEXT: bxns lr
869+;
870+; V81M-COMMON-LABEL: access_i1:
871+; V81M-COMMON: @ %bb.0: @ %entry
872+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
873+; V81M-COMMON-NEXT: and r0, r0, #1
874+; V81M-COMMON-NEXT: movw r1, :lower16:arr
875+; V81M-COMMON-NEXT: rsbs r0, r0, #0
876+; V81M-COMMON-NEXT: movt r1, :upper16:arr
877+; V81M-COMMON-NEXT: and r0, r0, #1
878+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
879+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
880+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
881+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
882+; V81M-COMMON-NEXT: bxns lr
883+entry:
884+ %idxprom = zext i1 %idx to i32
885+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
886+ %0 = load i32, ptr %arrayidx, align 4
887+ ret i32 %0
888+}
889+
890+define i32 @access_i5(i5 signext %idx) "cmse_nonsecure_entry" {
891+; V8M-COMMON-LABEL: access_i5:
892+; V8M-COMMON: @ %bb.0: @ %entry
893+; V8M-COMMON-NEXT: movw r1, :lower16:arr
894+; V8M-COMMON-NEXT: sbfx r0, r0, #0, #5
895+; V8M-COMMON-NEXT: movt r1, :upper16:arr
896+; V8M-COMMON-NEXT: mov r2, lr
897+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
898+; V8M-COMMON-NEXT: mov r1, lr
899+; V8M-COMMON-NEXT: mov r3, lr
900+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
901+; V8M-COMMON-NEXT: mov r12, lr
902+; V8M-COMMON-NEXT: bxns lr
903+;
904+; V81M-COMMON-LABEL: access_i5:
905+; V81M-COMMON: @ %bb.0: @ %entry
906+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
907+; V81M-COMMON-NEXT: movw r1, :lower16:arr
908+; V81M-COMMON-NEXT: sbfx r0, r0, #0, #5
909+; V81M-COMMON-NEXT: movt r1, :upper16:arr
910+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
911+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
912+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
913+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
914+; V81M-COMMON-NEXT: bxns lr
915+entry:
916+ %idxprom = sext i5 %idx to i32
917+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
918+ %0 = load i32, ptr %arrayidx, align 4
919+ ret i32 %0
920+}
921+
922+define i32 @access_u5(i5 zeroext %idx) "cmse_nonsecure_entry" {
923+; V8M-COMMON-LABEL: access_u5:
924+; V8M-COMMON: @ %bb.0: @ %entry
925+; V8M-COMMON-NEXT: movw r1, :lower16:arr
926+; V8M-COMMON-NEXT: and r0, r0, #31
927+; V8M-COMMON-NEXT: movt r1, :upper16:arr
928+; V8M-COMMON-NEXT: mov r2, lr
929+; V8M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
930+; V8M-COMMON-NEXT: mov r1, lr
931+; V8M-COMMON-NEXT: mov r3, lr
932+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
933+; V8M-COMMON-NEXT: mov r12, lr
934+; V8M-COMMON-NEXT: bxns lr
935+;
936+; V81M-COMMON-LABEL: access_u5:
937+; V81M-COMMON: @ %bb.0: @ %entry
938+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
939+; V81M-COMMON-NEXT: movw r1, :lower16:arr
940+; V81M-COMMON-NEXT: and r0, r0, #31
941+; V81M-COMMON-NEXT: movt r1, :upper16:arr
942+; V81M-COMMON-NEXT: ldr.w r0, [r1, r0, lsl #2]
943+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
944+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
945+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
946+; V81M-COMMON-NEXT: bxns lr
947+entry:
948+ %idxprom = zext i5 %idx to i32
949+ %arrayidx = getelementptr inbounds [256 x i32], ptr @arr, i32 0, i32 %idxprom
950+ %0 = load i32, ptr %arrayidx, align 4
951+ ret i32 %0
952+}
953+
954+define i32 @access_i33(i33 %arg) "cmse_nonsecure_entry" {
955+; V8M-COMMON-LABEL: access_i33:
956+; V8M-COMMON: @ %bb.0: @ %entry
957+; V8M-LE-NEXT: and r0, r1, #1
958+; V8M-BE-NEXT: and r0, r0, #1
959+; V8M-COMMON-NEXT: mov r1, lr
960+; V8M-COMMON-NEXT: rsbs r0, r0, #0
961+; V8M-COMMON-NEXT: mov r2, lr
962+; V8M-COMMON-NEXT: mov r3, lr
963+; V8M-COMMON-NEXT: mov r12, lr
964+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
965+; V8M-COMMON-NEXT: bxns lr
966+;
967+; V81M-COMMON-LABEL: access_i33:
968+; V81M-COMMON: @ %bb.0: @ %entry
969+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
970+; V81M-LE-NEXT: and r0, r1, #1
971+; V81M-BE-NEXT: and r0, r0, #1
972+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
973+; V81M-COMMON-NEXT: rsbs r0, r0, #0
974+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
975+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
976+; V81M-COMMON-NEXT: bxns lr
977+entry:
978+ %shr = ashr i33 %arg, 32
979+ %conv = trunc nsw i33 %shr to i32
980+ ret i32 %conv
981+}
982+
983+define i32 @access_u33(i33 %arg) "cmse_nonsecure_entry" {
984+; V8M-COMMON-LABEL: access_u33:
985+; V8M-COMMON: @ %bb.0: @ %entry
986+; V8M-LE-NEXT: and r0, r1, #1
987+; V8M-BE-NEXT: and r0, r0, #1
988+; V8M-COMMON-NEXT: mov r1, lr
989+; V8M-COMMON-NEXT: mov r2, lr
990+; V8M-COMMON-NEXT: mov r3, lr
991+; V8M-COMMON-NEXT: mov r12, lr
992+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
993+; V8M-COMMON-NEXT: bxns lr
994+;
995+; V81M-COMMON-LABEL: access_u33:
996+; V81M-COMMON: @ %bb.0: @ %entry
997+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
998+; V81M-LE-NEXT: and r0, r1, #1
999+; V81M-BE-NEXT: and r0, r0, #1
1000+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
1001+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
1002+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
1003+; V81M-COMMON-NEXT: bxns lr
1004+entry:
1005+ %shr = lshr i33 %arg, 32
1006+ %conv = trunc nuw nsw i33 %shr to i32
1007+ ret i32 %conv
1008+}
1009+
1010+define i32 @access_i65(ptr byval(i65) %0) "cmse_nonsecure_entry" {
1011+; V8M-COMMON-LABEL: access_i65:
1012+; V8M-COMMON: @ %bb.0: @ %entry
1013+; V8M-COMMON-NEXT: sub sp, #16
1014+; V8M-COMMON-NEXT: stm.w sp, {r0, r1, r2, r3}
1015+; V8M-LE-NEXT: ldrb.w r0, [sp, #8]
1016+; V8M-LE-NEXT: and r0, r0, #1
1017+; V8M-LE-NEXT: rsbs r0, r0, #0
1018+; V8M-BE-NEXT: movs r1, #0
1019+; V8M-BE-NEXT: sub.w r0, r1, r0, lsr #24
1020+; V8M-COMMON-NEXT: add sp, #16
1021+; V8M-COMMON-NEXT: mov r1, lr
1022+; V8M-COMMON-NEXT: mov r2, lr
1023+; V8M-COMMON-NEXT: mov r3, lr
1024+; V8M-COMMON-NEXT: mov r12, lr
1025+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
1026+; V8M-COMMON-NEXT: bxns lr
1027+;
1028+; V81M-COMMON-LABEL: access_i65:
1029+; V81M-COMMON: @ %bb.0: @ %entry
1030+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
1031+; V81M-COMMON-NEXT: sub sp, #16
1032+; V81M-COMMON-NEXT: add sp, #4
1033+; V81M-COMMON-NEXT: stm.w sp, {r0, r1, r2, r3}
1034+; V81M-LE-NEXT: ldrb.w r0, [sp, #8]
1035+; V81M-LE-NEXT: and r0, r0, #1
1036+; V81M-LE-NEXT: rsbs r0, r0, #0
1037+; V81M-BE-NEXT: movs r1, #0
1038+; V81M-BE-NEXT: sub.w r0, r1, r0, lsr #24
1039+; V81M-COMMON-NEXT: sub sp, #4
1040+; V81M-COMMON-NEXT: add sp, #16
1041+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
1042+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
1043+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
1044+; V81M-COMMON-NEXT: bxns lr
1045+entry:
1046+ %arg = load i65, ptr %0, align 8
1047+ %shr = ashr i65 %arg, 64
1048+ %conv = trunc nsw i65 %shr to i32
1049+ ret i32 %conv
1050+}
1051+
1052+define i32 @access_u65(ptr byval(i65) %0) "cmse_nonsecure_entry" {
1053+; V8M-COMMON-LABEL: access_u65:
1054+; V8M-COMMON: @ %bb.0: @ %entry
1055+; V8M-COMMON-NEXT: sub sp, #16
1056+; V8M-COMMON-NEXT: stm.w sp, {r0, r1, r2, r3}
1057+; V8M-LE-NEXT: ldrb.w r0, [sp, #8]
1058+; V8M-BE-NEXT: lsrs r0, r0, #24
1059+; V8M-COMMON-NEXT: add sp, #16
1060+; V8M-COMMON-NEXT: mov r1, lr
1061+; V8M-COMMON-NEXT: mov r2, lr
1062+; V8M-COMMON-NEXT: mov r3, lr
1063+; V8M-COMMON-NEXT: mov r12, lr
1064+; V8M-COMMON-NEXT: msr apsr_nzcvq, lr
1065+; V8M-COMMON-NEXT: bxns lr
1066+;
1067+; V81M-COMMON-LABEL: access_u65:
1068+; V81M-COMMON: @ %bb.0: @ %entry
1069+; V81M-COMMON-NEXT: vstr fpcxtns, [sp, #-4]!
1070+; V81M-COMMON-NEXT: sub sp, #16
1071+; V81M-COMMON-NEXT: add sp, #4
1072+; V81M-COMMON-NEXT: stm.w sp, {r0, r1, r2, r3}
1073+; V81M-LE-NEXT: ldrb.w r0, [sp, #8]
1074+; V81M-BE-NEXT: lsrs r0, r0, #24
1075+; V81M-COMMON-NEXT: sub sp, #4
1076+; V81M-COMMON-NEXT: add sp, #16
1077+; V81M-COMMON-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
1078+; V81M-COMMON-NEXT: vldr fpcxtns, [sp], #4
1079+; V81M-COMMON-NEXT: clrm {r1, r2, r3, r12, apsr}
1080+; V81M-COMMON-NEXT: bxns lr
1081+entry:
1082+ %arg = load i65, ptr %0, align 8
1083+ %shr = lshr i65 %arg, 64
1084+ %conv = trunc nuw nsw i65 %shr to i32
1085+ ret i32 %conv
1086+}
diff --git a/meta/recipes-devtools/rust/rust-llvm_1.75.0.bb b/meta/recipes-devtools/rust/rust-llvm_1.75.0.bb
index 13bdadb5e7..292fc15c55 100644
--- a/meta/recipes-devtools/rust/rust-llvm_1.75.0.bb
+++ b/meta/recipes-devtools/rust/rust-llvm_1.75.0.bb
@@ -10,7 +10,8 @@ require rust-source.inc
10 10
11SRC_URI += "file://0002-llvm-allow-env-override-of-exe-path.patch;striplevel=2 \ 11SRC_URI += "file://0002-llvm-allow-env-override-of-exe-path.patch;striplevel=2 \
12 file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch;striplevel=2 \ 12 file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch;striplevel=2 \
13 file://0003-llvm-fix-include-benchmarks.patch;striplevel=2" 13 file://0003-llvm-fix-include-benchmarks.patch;striplevel=2 \
14 file://0004-llvm-Fix-CVE-2024-0151.patch;striplevel=2"
14 15
15S = "${RUSTSRC}/src/llvm-project/llvm" 16S = "${RUSTSRC}/src/llvm-project/llvm"
16 17
diff --git a/meta/recipes-devtools/rust/rust-source.inc b/meta/recipes-devtools/rust/rust-source.inc
index b14221b6cb..5b433ceae7 100644
--- a/meta/recipes-devtools/rust/rust-source.inc
+++ b/meta/recipes-devtools/rust/rust-source.inc
@@ -7,12 +7,12 @@ SRC_URI += "https://static.rust-lang.org/dist/rustc-${RUST_VERSION}-src.tar.xz;n
7 file://rv32-missing-syscalls.patch;patchdir=${RUSTSRC} \ 7 file://rv32-missing-syscalls.patch;patchdir=${RUSTSRC} \
8 file://rv32-rustix-libc-backend.patch;patchdir=${RUSTSRC} \ 8 file://rv32-rustix-libc-backend.patch;patchdir=${RUSTSRC} \
9 file://rv32-cargo-rustix-0.38.19-fix.patch;patchdir=${RUSTSRC} \ 9 file://rv32-cargo-rustix-0.38.19-fix.patch;patchdir=${RUSTSRC} \
10 file://cargo-path.patch;patchdir=${RUSTSRC} \
11 file://custom-target-cfg.patch;patchdir=${RUSTSRC} \ 10 file://custom-target-cfg.patch;patchdir=${RUSTSRC} \
12 file://rustc-bootstrap.patch;patchdir=${RUSTSRC} \ 11 file://rustc-bootstrap.patch;patchdir=${RUSTSRC} \
13 file://target-build-value.patch;patchdir=${RUSTSRC} \ 12 file://target-build-value.patch;patchdir=${RUSTSRC} \
14 file://0001-Handle-vendored-sources-when-remapping-paths.patch;patchdir=${RUSTSRC} \ 13 file://0001-Handle-vendored-sources-when-remapping-paths.patch;patchdir=${RUSTSRC} \
15 file://repro-issue-fix-with-v175.patch;patchdir=${RUSTSRC} \ 14 file://repro-issue-fix-with-v175.patch;patchdir=${RUSTSRC} \
15 file://0001-cargo-do-not-write-host-information-into-compilation.patch;patchdir=${RUSTSRC} \
16" 16"
17SRC_URI[rust.sha256sum] = "4526f786d673e4859ff2afa0bab2ba13c918b796519a25c1acce06dba9542340" 17SRC_URI[rust.sha256sum] = "4526f786d673e4859ff2afa0bab2ba13c918b796519a25c1acce06dba9542340"
18 18
@@ -22,3 +22,4 @@ UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-metho
22UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src" 22UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src"
23 23
24CVE_STATUS[CVE-2024-24576] = "not-applicable-platform: Issue only applies on Windows" 24CVE_STATUS[CVE-2024-24576] = "not-applicable-platform: Issue only applies on Windows"
25CVE_STATUS[CVE-2024-43402] = "not-applicable-platform: Issue only applies on Windows"
diff --git a/meta/recipes-devtools/rust/rust_1.75.0.bb b/meta/recipes-devtools/rust/rust_1.75.0.bb
index c33f31d261..b9348bf050 100644
--- a/meta/recipes-devtools/rust/rust_1.75.0.bb
+++ b/meta/recipes-devtools/rust/rust_1.75.0.bb
@@ -11,6 +11,11 @@ DEPENDS += "file-native python3-native"
11DEPENDS:append:class-native = " rust-llvm-native" 11DEPENDS:append:class-native = " rust-llvm-native"
12DEPENDS:append:class-nativesdk = " nativesdk-rust-llvm" 12DEPENDS:append:class-nativesdk = " nativesdk-rust-llvm"
13 13
14# native rust uses cargo/rustc from binary snapshots to bootstrap
15# but everything else should use our native builds
16DEPENDS:append:class-target = " cargo-native rust-native"
17DEPENDS:append:class-nativesdk = " cargo-native rust-native"
18
14DEPENDS += "rust-llvm (=${PV})" 19DEPENDS += "rust-llvm (=${PV})"
15 20
16RDEPENDS:${PN}:append:class-target = " gcc g++ binutils" 21RDEPENDS:${PN}:append:class-target = " gcc g++ binutils"
@@ -35,8 +40,6 @@ RUST_ALTERNATE_EXE_PATH_NATIVE = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-co
35# own vendoring. 40# own vendoring.
36CARGO_DISABLE_BITBAKE_VENDORING = "1" 41CARGO_DISABLE_BITBAKE_VENDORING = "1"
37 42
38# We can't use RUST_BUILD_SYS here because that may be "musl" if
39# TCLIBC="musl". Snapshots are always -unknown-linux-gnu
40setup_cargo_environment () { 43setup_cargo_environment () {
41 # The first step is to build bootstrap and some early stage tools, 44 # The first step is to build bootstrap and some early stage tools,
42 # these are build for the same target as the snapshot, e.g. 45 # these are build for the same target as the snapshot, e.g.
@@ -54,8 +57,8 @@ do_rust_setup_snapshot () {
54 57
55 # Some versions of rust (e.g. 1.18.0) tries to find cargo in stage0/bin/cargo 58 # Some versions of rust (e.g. 1.18.0) tries to find cargo in stage0/bin/cargo
56 # and fail without it there. 59 # and fail without it there.
57 mkdir -p ${RUSTSRC}/build/${BUILD_SYS} 60 mkdir -p ${RUSTSRC}/build/${RUST_BUILD_SYS}
58 ln -sf ${WORKDIR}/rust-snapshot/ ${RUSTSRC}/build/${BUILD_SYS}/stage0 61 ln -sf ${WORKDIR}/rust-snapshot/ ${RUSTSRC}/build/${RUST_BUILD_SYS}/stage0
59 62
60 # Need to use uninative's loader if enabled/present since the library paths 63 # Need to use uninative's loader if enabled/present since the library paths
61 # are used internally by rust and result in symbol mismatches if we don't 64 # are used internally by rust and result in symbol mismatches if we don't
@@ -70,9 +73,10 @@ addtask do_test_compile after do_configure do_rust_gen_targets
70do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot" 73do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
71do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER" 74do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
72 75
73# there is a need to enable some more rust tools for the project 76RUSTC_BOOTSTRAP = "${STAGING_BINDIR_NATIVE}/rustc"
74# We can extend a list of more tools via this variable 77CARGO_BOOTSTRAP = "${STAGING_BINDIR_NATIVE}/cargo"
75RUST_ENABLE_EXTRA_TOOLS ?= "rust-demangler" 78RUSTC_BOOTSTRAP:class-native = "${WORKDIR}/rust-snapshot/bin/rustc"
79CARGO_BOOTSTRAP:class-native = "${WORKDIR}/rust-snapshot/bin/cargo"
76 80
77python do_configure() { 81python do_configure() {
78 import json 82 import json
@@ -145,12 +149,11 @@ python do_configure() {
145 config.add_section("build") 149 config.add_section("build")
146 config.set("build", "submodules", e(False)) 150 config.set("build", "submodules", e(False))
147 config.set("build", "docs", e(False)) 151 config.set("build", "docs", e(False))
148 config.set("build", "tools", e(d.getVar("RUST_ENABLE_EXTRA_TOOLS").split()))
149 152
150 rustc = d.expand("${WORKDIR}/rust-snapshot/bin/rustc") 153 rustc = d.getVar('RUSTC_BOOTSTRAP')
151 config.set("build", "rustc", e(rustc)) 154 config.set("build", "rustc", e(rustc))
152 155
153 cargo = d.expand("${WORKDIR}/rust-snapshot/bin/cargo") 156 cargo = d.getVar('CARGO_BOOTSTRAP')
154 config.set("build", "cargo", e(cargo)) 157 config.set("build", "cargo", e(cargo))
155 158
156 config.set("build", "vendor", e(True)) 159 config.set("build", "vendor", e(True))
@@ -267,8 +270,20 @@ rust_do_install:class-nativesdk() {
267 rm ${D}${libdir}/rustlib/uninstall.sh 270 rm ${D}${libdir}/rustlib/uninstall.sh
268 rm ${D}${libdir}/rustlib/install.log 271 rm ${D}${libdir}/rustlib/install.log
269 rm ${D}${libdir}/rustlib/manifest* 272 rm ${D}${libdir}/rustlib/manifest*
273
274 ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
275 mkdir "${ENV_SETUP_DIR}"
276 RUST_ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
277 RUST_HOST_TRIPLE=`echo ${RUST_HOST_SYS} | tr '[:lower:]' '[:upper:]' | sed 's/-/_/g'`
278 SDKLOADER=${@bb.utils.contains('SDK_ARCH', 'x86_64', 'ld-linux-x86-64.so.2', '', d)}${@bb.utils.contains('SDK_ARCH', 'i686', 'ld-linux.so.2', '', d)}${@bb.utils.contains('SDK_ARCH', 'aarch64', 'ld-linux-aarch64.so.1', '', d)}${@bb.utils.contains('SDK_ARCH', 'ppc64le', 'ld64.so.2', '', d)}${@bb.utils.contains('SDK_ARCH', 'riscv64', 'ld-linux-riscv64-lp64d.so.1', '', d)}
279
280 cat <<- EOF > "${RUST_ENV_SETUP_SH}"
281 export CARGO_TARGET_${RUST_HOST_TRIPLE}_RUNNER="\$OECORE_NATIVE_SYSROOT/lib/${SDKLOADER}"
282 EOF
270} 283}
271 284
285FILES:${PN} += "${base_prefix}/environment-setup.d"
286
272EXTRA_TOOLS ?= "cargo-clippy clippy-driver rustfmt" 287EXTRA_TOOLS ?= "cargo-clippy clippy-driver rustfmt"
273rust_do_install:class-target() { 288rust_do_install:class-target() {
274 export PSEUDO_UNLOAD=1 289 export PSEUDO_UNLOAD=1
diff --git a/meta/recipes-devtools/strace/strace_6.7.bb b/meta/recipes-devtools/strace/strace_6.7.bb
index f365477ccd..c8c83cdf7c 100644
--- a/meta/recipes-devtools/strace/strace_6.7.bb
+++ b/meta/recipes-devtools/strace/strace_6.7.bb
@@ -5,7 +5,7 @@ SECTION = "console/utils"
5LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later" 5LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
6LIC_FILES_CHKSUM = "file://COPYING;md5=2433d82e1432a76dc3eadd9002bfe304" 6LIC_FILES_CHKSUM = "file://COPYING;md5=2433d82e1432a76dc3eadd9002bfe304"
7 7
8SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \ 8SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/strace-${PV}.tar.xz \
9 file://update-gawk-paths.patch \ 9 file://update-gawk-paths.patch \
10 file://Makefile-ptest.patch \ 10 file://Makefile-ptest.patch \
11 file://run-ptest \ 11 file://run-ptest \
@@ -17,7 +17,7 @@ SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \
17 " 17 "
18SRC_URI[sha256sum] = "2090201e1a3ff32846f4fe421c1163b15f440bb38e31355d09f82d3949922af7" 18SRC_URI[sha256sum] = "2090201e1a3ff32846f4fe421c1163b15f440bb38e31355d09f82d3949922af7"
19 19
20inherit autotools ptest 20inherit autotools github-releases ptest
21 21
22# Not yet ported to rv32 22# Not yet ported to rv32
23COMPATIBLE_HOST:riscv32 = "null" 23COMPATIBLE_HOST:riscv32 = "null"
diff --git a/meta/recipes-devtools/subversion/subversion/CVE-2024-46901.patch b/meta/recipes-devtools/subversion/subversion/CVE-2024-46901.patch
new file mode 100644
index 0000000000..4b28a58507
--- /dev/null
+++ b/meta/recipes-devtools/subversion/subversion/CVE-2024-46901.patch
@@ -0,0 +1,161 @@
1From 149e299cd7eaadc8248480300b6e13b097c5b3fa Mon Sep 17 00:00:00 2001
2From: Jiaying Song <jiaying.song.cn@windriver.com>
3Date: Fri, 13 Dec 2024 12:19:43 +0800
4Subject: [PATCH] Fix CVE-2024-46901
5
6It has been discovered that the patch for CVE-2013-1968 was incomplete and unintentionally left mod_dav_svn vulnerable to control characters in filenames.
7
8Upstream-Status: Backport
9[https://subversion.apache.org/security/CVE-2024-46901-advisory.txt]
10
11CVE: CVE-2024-46901
12
13Signed-off-by: Jiaying Song <jiaying.song.cn@windriver.com>
14---
15 .../include/private/svn_repos_private.h | 8 +++++
16 subversion/libsvn_repos/commit.c | 3 +-
17 subversion/libsvn_repos/repos.c | 10 +++++++
18 subversion/mod_dav_svn/lock.c | 7 +++++
19 subversion/mod_dav_svn/repos.c | 29 +++++++++++++++++++
20 5 files changed, 55 insertions(+), 2 deletions(-)
21
22diff --git a/subversion/include/private/svn_repos_private.h b/subversion/include/private/svn_repos_private.h
23index 1fd34e8..1d5fc9c 100644
24--- a/subversion/include/private/svn_repos_private.h
25+++ b/subversion/include/private/svn_repos_private.h
26@@ -390,6 +390,14 @@ svn_repos__get_dump_editor(const svn_delta_editor_t **editor,
27 const char *update_anchor_relpath,
28 apr_pool_t *pool);
29
30+/* Validate that the given PATH is a valid pathname that can be stored in
31+ * a Subversion repository, according to the name constraints used by the
32+ * svn_repos_* layer.
33+ */
34+svn_error_t *
35+svn_repos__validate_new_path(const char *path,
36+ apr_pool_t *scratch_pool);
37+
38 #ifdef __cplusplus
39 }
40 #endif /* __cplusplus */
41diff --git a/subversion/libsvn_repos/commit.c b/subversion/libsvn_repos/commit.c
42index 515600d..aad37ee 100644
43--- a/subversion/libsvn_repos/commit.c
44+++ b/subversion/libsvn_repos/commit.c
45@@ -308,8 +308,7 @@ add_file_or_directory(const char *path,
46 svn_boolean_t was_copied = FALSE;
47 const char *full_path, *canonicalized_path;
48
49- /* Reject paths which contain control characters (related to issue #4340). */
50- SVN_ERR(svn_path_check_valid(path, pool));
51+ SVN_ERR(svn_repos__validate_new_path(path, pool));
52
53 SVN_ERR(svn_relpath_canonicalize_safe(&canonicalized_path, NULL, path,
54 pool, pool));
55diff --git a/subversion/libsvn_repos/repos.c b/subversion/libsvn_repos/repos.c
56index 2189de8..119f04b 100644
57--- a/subversion/libsvn_repos/repos.c
58+++ b/subversion/libsvn_repos/repos.c
59@@ -2092,3 +2092,13 @@ svn_repos__fs_type(const char **fs_type,
60 svn_dirent_join(repos_path, SVN_REPOS__DB_DIR, pool),
61 pool);
62 }
63+
64+svn_error_t *
65+svn_repos__validate_new_path(const char *path,
66+ apr_pool_t *scratch_pool)
67+{
68+ /* Reject paths which contain control characters (related to issue #4340). */
69+ SVN_ERR(svn_path_check_valid(path, scratch_pool));
70+
71+ return SVN_NO_ERROR;
72+}
73diff --git a/subversion/mod_dav_svn/lock.c b/subversion/mod_dav_svn/lock.c
74index 7e9c94b..d2a6aa9 100644
75--- a/subversion/mod_dav_svn/lock.c
76+++ b/subversion/mod_dav_svn/lock.c
77@@ -36,6 +36,7 @@
78 #include "svn_pools.h"
79 #include "svn_props.h"
80 #include "private/svn_log.h"
81+#include "private/svn_repos_private.h"
82
83 #include "dav_svn.h"
84
85@@ -717,6 +718,12 @@ append_locks(dav_lockdb *lockdb,
86
87 /* Commit a 0-byte file: */
88
89+ if ((serr = svn_repos__validate_new_path(resource->info->repos_path,
90+ resource->pool)))
91+ return dav_svn__convert_err(serr, HTTP_BAD_REQUEST,
92+ "Request specifies an invalid path.",
93+ resource->pool);
94+
95 if ((serr = dav_svn__get_youngest_rev(&rev, repos, resource->pool)))
96 return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
97 "Could not determine youngest revision",
98diff --git a/subversion/mod_dav_svn/repos.c b/subversion/mod_dav_svn/repos.c
99index 8cbd5e7..778ae9b 100644
100--- a/subversion/mod_dav_svn/repos.c
101+++ b/subversion/mod_dav_svn/repos.c
102@@ -2928,6 +2928,15 @@ open_stream(const dav_resource *resource,
103
104 if (kind == svn_node_none) /* No existing file. */
105 {
106+ serr = svn_repos__validate_new_path(resource->info->repos_path,
107+ resource->pool);
108+
109+ if (serr != NULL)
110+ {
111+ return dav_svn__convert_err(serr, HTTP_BAD_REQUEST,
112+ "Request specifies an invalid path.",
113+ resource->pool);
114+ }
115 serr = svn_fs_make_file(resource->info->root.root,
116 resource->info->repos_path,
117 resource->pool);
118@@ -4120,6 +4129,14 @@ create_collection(dav_resource *resource)
119 return err;
120 }
121
122+ if ((serr = svn_repos__validate_new_path(resource->info->repos_path,
123+ resource->pool)) != NULL)
124+ {
125+ return dav_svn__convert_err(serr, HTTP_BAD_REQUEST,
126+ "Request specifies an invalid path.",
127+ resource->pool);
128+ }
129+
130 if ((serr = svn_fs_make_dir(resource->info->root.root,
131 resource->info->repos_path,
132 resource->pool)) != NULL)
133@@ -4193,6 +4210,12 @@ copy_resource(const dav_resource *src,
134 if (err)
135 return err;
136 }
137+
138+ serr = svn_repos__validate_new_path(dst->info->repos_path, dst->pool);
139+ if (serr)
140+ return dav_svn__convert_err(serr, HTTP_BAD_REQUEST,
141+ "Request specifies an invalid path.",
142+ dst->pool);
143
144 src_repos_path = svn_repos_path(src->info->repos->repos, src->pool);
145 dst_repos_path = svn_repos_path(dst->info->repos->repos, dst->pool);
146@@ -4430,6 +4453,12 @@ move_resource(dav_resource *src,
147 if (err)
148 return err;
149
150+ serr = svn_repos__validate_new_path(dst->info->repos_path, dst->pool);
151+ if (serr)
152+ return dav_svn__convert_err(serr, HTTP_BAD_REQUEST,
153+ "Request specifies an invalid path.",
154+ dst->pool);
155+
156 /* Copy the src to the dst. */
157 serr = svn_fs_copy(src->info->root.root, /* the root object of src rev*/
158 src->info->repos_path, /* the relative path of src */
159--
1602.25.1
161
diff --git a/meta/recipes-devtools/subversion/subversion_1.14.3.bb b/meta/recipes-devtools/subversion/subversion_1.14.3.bb
index 1cf4e1734b..679228cbb8 100644
--- a/meta/recipes-devtools/subversion/subversion_1.14.3.bb
+++ b/meta/recipes-devtools/subversion/subversion_1.14.3.bb
@@ -10,7 +10,8 @@ DEPENDS:append:class-native = " file-replacement-native"
10 10
11SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \ 11SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
12 file://serfmacro.patch \ 12 file://serfmacro.patch \
13 " 13 file://CVE-2024-46901.patch \
14 "
14 15
15SRC_URI[sha256sum] = "949efd451a09435f7e8573574c71c7b71b194d844890fa49cd61d2262ea1a440" 16SRC_URI[sha256sum] = "949efd451a09435f7e8573574c71c7b71b194d844890fa49cd61d2262ea1a440"
16 17
@@ -18,6 +19,8 @@ inherit autotools pkgconfig gettext python3native
18 19
19CVE_PRODUCT = "apache:subversion" 20CVE_PRODUCT = "apache:subversion"
20 21
22CVE_STATUS[CVE-2024-45720] = "not-applicable-platform: Issue only applies on Windows"
23
21PACKAGECONFIG ?= "" 24PACKAGECONFIG ?= ""
22 25
23PACKAGECONFIG[boost] = "--with-boost=${RECIPE_SYSROOT}${exec_prefix},--without-boost,boost" 26PACKAGECONFIG[boost] = "--with-boost=${RECIPE_SYSROOT}${exec_prefix},--without-boost,boost"
diff --git a/meta/recipes-devtools/tcltk/tcl/run-ptest b/meta/recipes-devtools/tcltk/tcl/run-ptest
index a403a74bb6..c485e535c7 100644
--- a/meta/recipes-devtools/tcltk/tcl/run-ptest
+++ b/meta/recipes-devtools/tcltk/tcl/run-ptest
@@ -15,6 +15,8 @@ SKIP="$SKIP cmdMZ-6.6"
15SKIP="$SKIP exit-1.\*" 15SKIP="$SKIP exit-1.\*"
16# 15407 15421 16# 15407 15421
17SKIP="$SKIP \*io-46.1" 17SKIP="$SKIP \*io-46.1"
18# io-13.6 explicitly says it can fail on slow/loaded machines
19SKIP="$SKIP io-13.6"
18# 14825 20# 14825
19SKIP="$SKIP socket-\* socket_inet-\*" 21SKIP="$SKIP socket-\* socket_inet-\*"
20 22
diff --git a/meta/recipes-extended/acpica/acpica_20240322.bb b/meta/recipes-extended/acpica/acpica_20240322.bb
index 90e3599d32..1f93c0d435 100644
--- a/meta/recipes-extended/acpica/acpica_20240322.bb
+++ b/meta/recipes-extended/acpica/acpica_20240322.bb
@@ -16,7 +16,8 @@ COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
16 16
17DEPENDS = "m4-native flex-native bison-native" 17DEPENDS = "m4-native flex-native bison-native"
18 18
19SRC_URI = "git://github.com/acpica/acpica;protocol=https;branch=master" 19SRC_URI = "git://github.com/acpica/acpica;protocol=https;branch=master \
20 file://CVE-2024-24856.patch"
20SRCREV = "170fc3076a86777077637f10b05c32ac21ac13aa" 21SRCREV = "170fc3076a86777077637f10b05c32ac21ac13aa"
21 22
22S = "${WORKDIR}/git" 23S = "${WORKDIR}/git"
diff --git a/meta/recipes-extended/acpica/files/CVE-2024-24856.patch b/meta/recipes-extended/acpica/files/CVE-2024-24856.patch
new file mode 100644
index 0000000000..c0c9c00d12
--- /dev/null
+++ b/meta/recipes-extended/acpica/files/CVE-2024-24856.patch
@@ -0,0 +1,31 @@
1From 4d4547cf13cca820ff7e0f859ba83e1a610b9fd0 Mon Sep 17 00:00:00 2001
2From: Huai-Yuan Liu <qq810974084@gmail.com>
3Date: Tue, 9 Apr 2024 23:23:39 +0800
4Subject: [PATCH] check null return of ACPI_ALLOCATE_ZEROED in
5 AcpiDbConvertToPackage
6
7ACPI_ALLOCATE_ZEROED may fails, Elements might be null and will cause null pointer dereference later.
8
9Signed-off-by: Huai-Yuan Liu <qq810974084@gmail.com>
10
11CVE: CVE-2024-24856
12Upstream-Status: Backport [https://github.com/acpica/acpica/pull/946/commits/4d4547cf13cca820ff7e0f859ba83e1a610b9fd0]
13
14Signed-off-by: Changqing Li <changqing.li@windriver.com>
15---
16 source/components/debugger/dbconvert.c | 2 ++
17 1 file changed, 2 insertions(+)
18
19diff --git a/source/components/debugger/dbconvert.c b/source/components/debugger/dbconvert.c
20index 6a41000036..32ad5be179 100644
21--- a/source/components/debugger/dbconvert.c
22+++ b/source/components/debugger/dbconvert.c
23@@ -354,6 +354,8 @@ AcpiDbConvertToPackage (
24
25 Elements = ACPI_ALLOCATE_ZEROED (
26 DB_DEFAULT_PKG_ELEMENTS * sizeof (ACPI_OBJECT));
27+ if (!Elements)
28+ return (AE_NO_MEMORY);
29
30 This = String;
31 for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++)
diff --git a/meta/recipes-extended/cups/cups.inc b/meta/recipes-extended/cups/cups.inc
index b70ba3ae58..5590eb0fa0 100644
--- a/meta/recipes-extended/cups/cups.inc
+++ b/meta/recipes-extended/cups/cups.inc
@@ -15,6 +15,11 @@ SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/cups-${PV}-source.tar.gz \
15 file://0004-cups-fix-multilib-install-file-conflicts.patch \ 15 file://0004-cups-fix-multilib-install-file-conflicts.patch \
16 file://volatiles.99_cups \ 16 file://volatiles.99_cups \
17 file://cups-volatiles.conf \ 17 file://cups-volatiles.conf \
18 file://CVE-2024-47175-1.patch \
19 file://CVE-2024-47175-2.patch \
20 file://CVE-2024-47175-3.patch \
21 file://CVE-2024-47175-4.patch \
22 file://CVE-2024-47175-5.patch \
18 " 23 "
19 24
20GITHUB_BASE_URI = "https://github.com/OpenPrinting/cups/releases" 25GITHUB_BASE_URI = "https://github.com/OpenPrinting/cups/releases"
diff --git a/meta/recipes-extended/cups/cups/CVE-2024-47175-1.patch b/meta/recipes-extended/cups/cups/CVE-2024-47175-1.patch
new file mode 100644
index 0000000000..8ec720ea0d
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/CVE-2024-47175-1.patch
@@ -0,0 +1,73 @@
1From 9939a70b750edd9d05270060cc5cf62ca98cfbe5 Mon Sep 17 00:00:00 2001
2From: Michael R Sweet <msweet@msweet.org>
3Date: Mon, 9 Sep 2024 10:03:10 -0400
4Subject: [PATCH] Mirror IPP Everywhere printer changes from master.
5
6Upstream-Status: Backport [https://github.com/OpenPrinting/cups/commit/9939a70b750edd9d05270060cc5cf62ca98cfbe5]
7CVE: CVE-2024-47175
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 cups/ppd-cache.c | 10 +++++-----
11 scheduler/ipp.c | 7 +++++++
12 2 files changed, 12 insertions(+), 5 deletions(-)
13
14diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
15index e750fcc..cd2d6cb 100644
16--- a/cups/ppd-cache.c
17+++ b/cups/ppd-cache.c
18@@ -3317,10 +3317,10 @@ _ppdCreateFromIPP2(
19 }
20 cupsFilePuts(fp, "\"\n");
21
22- if ((attr = ippFindAttribute(supported, "printer-more-info", IPP_TAG_URI)) != NULL)
23+ if ((attr = ippFindAttribute(supported, "printer-more-info", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
24 cupsFilePrintf(fp, "*APSupplies: \"%s\"\n", ippGetString(attr, 0, NULL));
25
26- if ((attr = ippFindAttribute(supported, "printer-charge-info-uri", IPP_TAG_URI)) != NULL)
27+ if ((attr = ippFindAttribute(supported, "printer-charge-info-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
28 cupsFilePrintf(fp, "*cupsChargeInfoURI: \"%s\"\n", ippGetString(attr, 0, NULL));
29
30 if ((attr = ippFindAttribute(supported, "printer-strings-uri", IPP_TAG_URI)) != NULL)
31@@ -3389,10 +3389,10 @@ _ppdCreateFromIPP2(
32 if (ippGetBoolean(ippFindAttribute(supported, "job-accounting-user-id-supported", IPP_TAG_BOOLEAN), 0))
33 cupsFilePuts(fp, "*cupsJobAccountingUserId: True\n");
34
35- if ((attr = ippFindAttribute(supported, "printer-privacy-policy-uri", IPP_TAG_URI)) != NULL)
36+ if ((attr = ippFindAttribute(supported, "printer-privacy-policy-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
37 cupsFilePrintf(fp, "*cupsPrivacyURI: \"%s\"\n", ippGetString(attr, 0, NULL));
38
39- if ((attr = ippFindAttribute(supported, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL)
40+ if ((attr = ippFindAttribute(supported, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL && ippValidateAttribute(attr))
41 {
42 char prefix = '\"'; // Prefix for string
43
44@@ -3410,7 +3410,7 @@ _ppdCreateFromIPP2(
45 cupsFilePuts(fp, "\"\n");
46 }
47
48- if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL)
49+ if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL && ippValidateAttribute(attr))
50 {
51 char prefix = '\"'; // Prefix for string
52
53diff --git a/scheduler/ipp.c b/scheduler/ipp.c
54index 37623c5..836e41d 100644
55--- a/scheduler/ipp.c
56+++ b/scheduler/ipp.c
57@@ -5417,6 +5417,13 @@ create_local_bg_thread(
58 }
59 }
60
61+ // Validate response from printer...
62+ if (!ippValidateAttributes(response))
63+ {
64+ cupsdLogMessage(CUPSD_LOG_ERROR, "%s: Printer returned invalid data: %s", printer->name, cupsLastErrorString());
65+ return (NULL);
66+ }
67+
68 // TODO: Grab printer icon file...
69 httpClose(http);
70
71--
722.25.1
73
diff --git a/meta/recipes-extended/cups/cups/CVE-2024-47175-2.patch b/meta/recipes-extended/cups/cups/CVE-2024-47175-2.patch
new file mode 100644
index 0000000000..11e8209626
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/CVE-2024-47175-2.patch
@@ -0,0 +1,151 @@
1From 04bb2af4521b56c1699a2c2431c56c05a7102e69 Mon Sep 17 00:00:00 2001
2From: Michael R Sweet <msweet@msweet.org>
3Date: Mon, 9 Sep 2024 14:05:42 -0400
4Subject: [PATCH] Refactor make-and-model code.
5
6Upstream-Status: Backport [https://github.com/OpenPrinting/cups/commit/04bb2af4521b56c1699a2c2431c56c05a7102e69]
7CVE: CVE-2024-47175
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 cups/ppd-cache.c | 103 +++++++++++++++++++++++++++++++++++++++--------
11 1 file changed, 87 insertions(+), 16 deletions(-)
12
13diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
14index cd2d6cb..a4d7403 100644
15--- a/cups/ppd-cache.c
16+++ b/cups/ppd-cache.c
17@@ -3197,9 +3197,10 @@ _ppdCreateFromIPP2(
18 ipp_t *media_col, /* Media collection */
19 *media_size; /* Media size collection */
20 char make[256], /* Make and model */
21- *model, /* Model name */
22+ *mptr, /* Pointer into make and model */
23 ppdname[PPD_MAX_NAME];
24 /* PPD keyword */
25+ const char *model; /* Model name */
26 int i, j, /* Looping vars */
27 count, /* Number of values */
28 bottom, /* Largest bottom margin */
29@@ -3260,34 +3261,104 @@ _ppdCreateFromIPP2(
30 }
31
32 /*
33- * Standard stuff for PPD file...
34+ * Get a sanitized make and model...
35 */
36
37- cupsFilePuts(fp, "*PPD-Adobe: \"4.3\"\n");
38- cupsFilePuts(fp, "*FormatVersion: \"4.3\"\n");
39- cupsFilePrintf(fp, "*FileVersion: \"%d.%d\"\n", CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR);
40- cupsFilePuts(fp, "*LanguageVersion: English\n");
41- cupsFilePuts(fp, "*LanguageEncoding: ISOLatin1\n");
42- cupsFilePuts(fp, "*PSVersion: \"(3010.000) 0\"\n");
43- cupsFilePuts(fp, "*LanguageLevel: \"3\"\n");
44- cupsFilePuts(fp, "*FileSystem: False\n");
45- cupsFilePuts(fp, "*PCFileName: \"ippeve.ppd\"\n");
46+ if ((attr = ippFindAttribute(supported, "printer-make-and-model", IPP_TAG_TEXT)) != NULL && ippValidateAttribute(attr))
47+ {
48+ /*
49+ * Sanitize the model name to only contain PPD-safe characters.
50+ */
51
52- if ((attr = ippFindAttribute(supported, "printer-make-and-model", IPP_TAG_TEXT)) != NULL)
53 strlcpy(make, ippGetString(attr, 0, NULL), sizeof(make));
54+
55+ for (mptr = make; *mptr; mptr ++)
56+ {
57+ if (*mptr < ' ' || *mptr >= 127 || *mptr == '\"')
58+ {
59+ /*
60+ * Truncate the make and model on the first bad character...
61+ */
62+
63+ *mptr = '\0';
64+ break;
65+ }
66+ }
67+
68+ while (mptr > make)
69+ {
70+ /*
71+ * Strip trailing whitespace...
72+ */
73+
74+ mptr --;
75+ if (*mptr == ' ')
76+ *mptr = '\0';
77+ }
78+
79+ if (!make[0])
80+ {
81+ /*
82+ * Use a default make and model if nothing remains...
83+ */
84+
85+ strlcpy(make, "Unknown", sizeof(make));
86+ }
87+ }
88 else
89- strlcpy(make, "Unknown Printer", sizeof(make));
90+ {
91+ /*
92+ * Use a default make and model...
93+ */
94+
95+ strlcpy(make, "Unknown", sizeof(make));
96+ }
97
98 if (!_cups_strncasecmp(make, "Hewlett Packard ", 16) || !_cups_strncasecmp(make, "Hewlett-Packard ", 16))
99 {
100+ /*
101+ * Normalize HP printer make and model...
102+ */
103+
104 model = make + 16;
105 strlcpy(make, "HP", sizeof(make));
106+
107+ if (!_cups_strncasecmp(model, "HP ", 3))
108+ model += 3;
109+ }
110+ else if ((mptr = strchr(make, ' ')) != NULL)
111+ {
112+ /*
113+ * Separate "MAKE MODEL"...
114+ */
115+
116+ while (*mptr && *mptr == ' ')
117+ *mptr++ = '\0';
118+
119+ model = mptr;
120 }
121- else if ((model = strchr(make, ' ')) != NULL)
122- *model++ = '\0';
123 else
124- model = make;
125+ {
126+ /*
127+ * No separate model name...
128+ */
129
130+ model = "Printer";
131+ }
132+
133+ /*
134+ * Standard stuff for PPD file...
135+ */
136+
137+ cupsFilePuts(fp, "*PPD-Adobe: \"4.3\"\n");
138+ cupsFilePuts(fp, "*FormatVersion: \"4.3\"\n");
139+ cupsFilePrintf(fp, "*FileVersion: \"%d.%d\"\n", CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR);
140+ cupsFilePuts(fp, "*LanguageVersion: English\n");
141+ cupsFilePuts(fp, "*LanguageEncoding: ISOLatin1\n");
142+ cupsFilePuts(fp, "*PSVersion: \"(3010.000) 0\"\n");
143+ cupsFilePuts(fp, "*LanguageLevel: \"3\"\n");
144+ cupsFilePuts(fp, "*FileSystem: False\n");
145+ cupsFilePuts(fp, "*PCFileName: \"ippeve.ppd\"\n");
146 cupsFilePrintf(fp, "*Manufacturer: \"%s\"\n", make);
147 cupsFilePrintf(fp, "*ModelName: \"%s\"\n", model);
148 cupsFilePrintf(fp, "*Product: \"(%s)\"\n", model);
149--
1502.25.1
151
diff --git a/meta/recipes-extended/cups/cups/CVE-2024-47175-3.patch b/meta/recipes-extended/cups/cups/CVE-2024-47175-3.patch
new file mode 100644
index 0000000000..e7d012fb8a
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/CVE-2024-47175-3.patch
@@ -0,0 +1,119 @@
1From e0630cd18f76340d302000f2bf6516e99602b844 Mon Sep 17 00:00:00 2001
2From: Michael R Sweet <msweet@msweet.org>
3Date: Mon, 9 Sep 2024 15:59:57 -0400
4Subject: [PATCH] PPDize preset and template names.
5
6Upstream-Status: Backport [https://github.com/OpenPrinting/cups/commit/e0630cd18f76340d302000f2bf6516e99602b844]
7CVE: CVE-2024-47175
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 cups/ppd-cache.c | 33 ++++++++++++++++++++++++---------
11 1 file changed, 24 insertions(+), 9 deletions(-)
12
13diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
14index a4d7403..53c22be 100644
15--- a/cups/ppd-cache.c
16+++ b/cups/ppd-cache.c
17@@ -4976,12 +4976,14 @@ _ppdCreateFromIPP2(
18
19 cupsArrayAdd(templates, (void *)keyword);
20
21+ pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
22+
23 snprintf(msgid, sizeof(msgid), "finishing-template.%s", keyword);
24 if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
25 if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
26 msgstr = keyword;
27
28- cupsFilePrintf(fp, "*cupsFinishingTemplate %s: \"\n", keyword);
29+ cupsFilePrintf(fp, "*cupsFinishingTemplate %s: \"\n", ppdname);
30 for (finishing_attr = ippFirstAttribute(finishing_col); finishing_attr; finishing_attr = ippNextAttribute(finishing_col))
31 {
32 if (ippGetValueTag(finishing_attr) == IPP_TAG_BEGIN_COLLECTION)
33@@ -4994,7 +4996,7 @@ _ppdCreateFromIPP2(
34 }
35 }
36 cupsFilePuts(fp, "\"\n");
37- cupsFilePrintf(fp, "*%s.cupsFinishingTemplate %s/%s: \"\"\n", lang->language, keyword, msgstr);
38+ cupsFilePrintf(fp, "*%s.cupsFinishingTemplate %s/%s: \"\"\n", lang->language, ppdname, msgstr);
39 cupsFilePuts(fp, "*End\n");
40 }
41
42@@ -5040,7 +5042,8 @@ _ppdCreateFromIPP2(
43 if (!preset || !preset_name)
44 continue;
45
46- cupsFilePrintf(fp, "*APPrinterPreset %s: \"\n", preset_name);
47+ pwg_ppdize_name(preset_name, ppdname, sizeof(ppdname));
48+ cupsFilePrintf(fp, "*APPrinterPreset %s: \"\n", ppdname);
49 for (member = ippFirstAttribute(preset); member; member = ippNextAttribute(preset))
50 {
51 member_name = ippGetName(member);
52@@ -5081,7 +5084,10 @@ _ppdCreateFromIPP2(
53 fin_col = ippGetCollection(member, i);
54
55 if ((keyword = ippGetString(ippFindAttribute(fin_col, "finishing-template", IPP_TAG_ZERO), 0, NULL)) != NULL)
56- cupsFilePrintf(fp, "*cupsFinishingTemplate %s\n", keyword);
57+ {
58+ pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
59+ cupsFilePrintf(fp, "*cupsFinishingTemplate %s\n", ppdname);
60+ }
61 }
62 }
63 else if (!strcmp(member_name, "media"))
64@@ -5108,13 +5114,13 @@ _ppdCreateFromIPP2(
65 if ((keyword = ippGetString(ippFindAttribute(media_col, "media-source", IPP_TAG_ZERO), 0, NULL)) != NULL)
66 {
67 pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
68- cupsFilePrintf(fp, "*InputSlot %s\n", keyword);
69+ cupsFilePrintf(fp, "*InputSlot %s\n", ppdname);
70 }
71
72 if ((keyword = ippGetString(ippFindAttribute(media_col, "media-type", IPP_TAG_ZERO), 0, NULL)) != NULL)
73 {
74 pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
75- cupsFilePrintf(fp, "*MediaType %s\n", keyword);
76+ cupsFilePrintf(fp, "*MediaType %s\n", ppdname);
77 }
78 }
79 else if (!strcmp(member_name, "print-quality"))
80@@ -5160,7 +5166,10 @@ _ppdCreateFromIPP2(
81 cupsFilePuts(fp, "\"\n*End\n");
82
83 if ((localized_name = _cupsMessageLookup(strings, preset_name)) != preset_name)
84- cupsFilePrintf(fp, "*%s.APPrinterPreset %s/%s: \"\"\n", lang->language, preset_name, localized_name);
85+ {
86+ pwg_ppdize_name(preset_name, ppdname, sizeof(ppdname));
87+ cupsFilePrintf(fp, "*%s.APPrinterPreset %s/%s: \"\"\n", lang->language, ppdname, localized_name);
88+ }
89 }
90 }
91
92@@ -5544,7 +5553,7 @@ pwg_ppdize_name(const char *ipp, /* I - IPP keyword */
93 *end; /* End of name buffer */
94
95
96- if (!ipp)
97+ if (!ipp || !_cups_isalnum(*ipp))
98 {
99 *name = '\0';
100 return;
101@@ -5559,8 +5568,14 @@ pwg_ppdize_name(const char *ipp, /* I - IPP keyword */
102 ipp ++;
103 *ptr++ = (char)toupper(*ipp++ & 255);
104 }
105- else
106+ else if (*ipp == '_' || *ipp == '.' || *ipp == '-' || _cups_isalnum(*ipp))
107+ {
108 *ptr++ = *ipp++;
109+ }
110+ else
111+ {
112+ ipp ++;
113+ }
114 }
115
116 *ptr = '\0';
117--
1182.25.1
119
diff --git a/meta/recipes-extended/cups/cups/CVE-2024-47175-4.patch b/meta/recipes-extended/cups/cups/CVE-2024-47175-4.patch
new file mode 100644
index 0000000000..7665513485
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/CVE-2024-47175-4.patch
@@ -0,0 +1,249 @@
1From 1e6ca5913eceee906038bc04cc7ccfbe2923bdfd Mon Sep 17 00:00:00 2001
2From: Michael R Sweet <msweet@msweet.org>
3Date: Mon, 23 Sep 2024 09:36:39 -0400
4Subject: [PATCH] Quote PPD localized strings.
5
6Upstream-Status: Backport [https://github.com/OpenPrinting/cups/commit/1e6ca5913eceee906038bc04cc7ccfbe2923bdfd]
7CVE: CVE-2024-47175
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 cups/ppd-cache.c | 93 +++++++++++++++++++++++++++---------------------
11 1 file changed, 53 insertions(+), 40 deletions(-)
12
13diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
14index 53c22be..f425ac0 100644
15--- a/cups/ppd-cache.c
16+++ b/cups/ppd-cache.c
17@@ -32,6 +32,7 @@
18 static int cups_connect(http_t **http, const char *url, char *resource, size_t ressize);
19 static int cups_get_url(http_t **http, const char *url, char *name, size_t namesize);
20 static const char *ppd_inputslot_for_keyword(_ppd_cache_t *pc, const char *keyword);
21+static void ppd_put_string(cups_file_t *fp, cups_lang_t *lang, cups_array_t *strings, const char *ppd_option, const char *ppd_choice, const char *pwg_msgid);
22 static void pwg_add_finishing(cups_array_t *finishings, ipp_finishings_t template, const char *name, const char *value);
23 static void pwg_add_message(cups_array_t *a, const char *msg, const char *str);
24 static int pwg_compare_finishings(_pwg_finishings_t *a, _pwg_finishings_t *b);
25@@ -3394,7 +3395,7 @@ _ppdCreateFromIPP2(
26 if ((attr = ippFindAttribute(supported, "printer-charge-info-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
27 cupsFilePrintf(fp, "*cupsChargeInfoURI: \"%s\"\n", ippGetString(attr, 0, NULL));
28
29- if ((attr = ippFindAttribute(supported, "printer-strings-uri", IPP_TAG_URI)) != NULL)
30+ if ((attr = ippFindAttribute(supported, "printer-strings-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
31 {
32 http_t *http = NULL; /* Connection to printer */
33 char stringsfile[1024]; /* Temporary strings file */
34@@ -3438,7 +3439,7 @@ _ppdCreateFromIPP2(
35
36 response = cupsDoRequest(http, request, resource);
37
38- if ((attr = ippFindAttribute(response, "printer-strings-uri", IPP_TAG_URI)) != NULL)
39+ if ((attr = ippFindAttribute(response, "printer-strings-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
40 cupsFilePrintf(fp, "*cupsStringsURI %s: \"%s\"\n", keyword, ippGetString(attr, 0, NULL));
41
42 ippDelete(response);
43@@ -4044,18 +4045,16 @@ _ppdCreateFromIPP2(
44 cupsFilePrintf(fp, "*DefaultInputSlot: %s\n", ppdname);
45
46 for (j = 0; j < (int)(sizeof(sources) / sizeof(sources[0])); j ++)
47+ {
48 if (!strcmp(sources[j], keyword))
49 {
50 snprintf(msgid, sizeof(msgid), "media-source.%s", keyword);
51
52- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
53- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
54- msgstr = keyword;
55-
56 cupsFilePrintf(fp, "*InputSlot %s: \"<</MediaPosition %d>>setpagedevice\"\n", ppdname, j);
57- cupsFilePrintf(fp, "*%s.InputSlot %s/%s: \"\"\n", lang->language, ppdname, msgstr);
58+ ppd_put_string(fp, lang, strings, "InputSlot", ppdname, msgid);
59 break;
60 }
61+ }
62 }
63 cupsFilePuts(fp, "*CloseUI: *InputSlot\n");
64 }
65@@ -4081,12 +4080,9 @@ _ppdCreateFromIPP2(
66 pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
67
68 snprintf(msgid, sizeof(msgid), "media-type.%s", keyword);
69- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
70- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
71- msgstr = keyword;
72
73 cupsFilePrintf(fp, "*MediaType %s: \"<</MediaType(%s)>>setpagedevice\"\n", ppdname, ppdname);
74- cupsFilePrintf(fp, "*%s.MediaType %s/%s: \"\"\n", lang->language, ppdname, msgstr);
75+ ppd_put_string(fp, lang, strings, "MediaType", ppdname, msgid);
76 }
77 cupsFilePuts(fp, "*CloseUI: *MediaType\n");
78 }
79@@ -4547,12 +4543,9 @@ _ppdCreateFromIPP2(
80 pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
81
82 snprintf(msgid, sizeof(msgid), "output-bin.%s", keyword);
83- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
84- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
85- msgstr = keyword;
86
87 cupsFilePrintf(fp, "*OutputBin %s: \"\"\n", ppdname);
88- cupsFilePrintf(fp, "*%s.OutputBin %s/%s: \"\"\n", lang->language, ppdname, msgstr);
89+ ppd_put_string(fp, lang, strings, "OutputBin", ppdname, msgid);
90
91 if ((tray_ptr = ippGetOctetString(trays, i, &tray_len)) != NULL)
92 {
93@@ -4671,9 +4664,6 @@ _ppdCreateFromIPP2(
94 cupsArrayAdd(names, (char *)keyword);
95
96 snprintf(msgid, sizeof(msgid), "finishings.%d", value);
97- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
98- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
99- msgstr = keyword;
100
101 if (value >= IPP_FINISHINGS_NONE && value <= IPP_FINISHINGS_LAMINATE)
102 ppd_keyword = base_keywords[value - IPP_FINISHINGS_NONE];
103@@ -4688,7 +4678,7 @@ _ppdCreateFromIPP2(
104 continue;
105
106 cupsFilePrintf(fp, "*StapleLocation %s: \"\"\n", ppd_keyword);
107- cupsFilePrintf(fp, "*%s.StapleLocation %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr);
108+ ppd_put_string(fp, lang, strings, "StapleLocation", ppd_keyword, msgid);
109 cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*StapleLocation %s\"\n", value, keyword, ppd_keyword);
110 }
111
112@@ -4751,9 +4741,6 @@ _ppdCreateFromIPP2(
113 cupsArrayAdd(names, (char *)keyword);
114
115 snprintf(msgid, sizeof(msgid), "finishings.%d", value);
116- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
117- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
118- msgstr = keyword;
119
120 if (value >= IPP_FINISHINGS_NONE && value <= IPP_FINISHINGS_LAMINATE)
121 ppd_keyword = base_keywords[value - IPP_FINISHINGS_NONE];
122@@ -4768,7 +4755,7 @@ _ppdCreateFromIPP2(
123 continue;
124
125 cupsFilePrintf(fp, "*FoldType %s: \"\"\n", ppd_keyword);
126- cupsFilePrintf(fp, "*%s.FoldType %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr);
127+ ppd_put_string(fp, lang, strings, "FoldType", ppd_keyword, msgid);
128 cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*FoldType %s\"\n", value, keyword, ppd_keyword);
129 }
130
131@@ -4839,9 +4826,6 @@ _ppdCreateFromIPP2(
132 cupsArrayAdd(names, (char *)keyword);
133
134 snprintf(msgid, sizeof(msgid), "finishings.%d", value);
135- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
136- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
137- msgstr = keyword;
138
139 if (value >= IPP_FINISHINGS_NONE && value <= IPP_FINISHINGS_LAMINATE)
140 ppd_keyword = base_keywords[value - IPP_FINISHINGS_NONE];
141@@ -4856,7 +4840,7 @@ _ppdCreateFromIPP2(
142 continue;
143
144 cupsFilePrintf(fp, "*PunchMedia %s: \"\"\n", ppd_keyword);
145- cupsFilePrintf(fp, "*%s.PunchMedia %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr);
146+ ppd_put_string(fp, lang, strings, "PunchMedia", ppd_keyword, msgid);
147 cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*PunchMedia %s\"\n", value, keyword, ppd_keyword);
148 }
149
150@@ -4927,9 +4911,6 @@ _ppdCreateFromIPP2(
151 cupsArrayAdd(names, (char *)keyword);
152
153 snprintf(msgid, sizeof(msgid), "finishings.%d", value);
154- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
155- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
156- msgstr = keyword;
157
158 if (value == IPP_FINISHINGS_TRIM)
159 ppd_keyword = "Auto";
160@@ -4937,7 +4918,7 @@ _ppdCreateFromIPP2(
161 ppd_keyword = trim_keywords[value - IPP_FINISHINGS_TRIM_AFTER_PAGES];
162
163 cupsFilePrintf(fp, "*CutMedia %s: \"\"\n", ppd_keyword);
164- cupsFilePrintf(fp, "*%s.CutMedia %s/%s: \"\"\n", lang->language, ppd_keyword, msgstr);
165+ ppd_put_string(fp, lang, strings, "CutMedia", ppd_keyword, msgid);
166 cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*CutMedia %s\"\n", value, keyword, ppd_keyword);
167 }
168
169@@ -4979,9 +4960,6 @@ _ppdCreateFromIPP2(
170 pwg_ppdize_name(keyword, ppdname, sizeof(ppdname));
171
172 snprintf(msgid, sizeof(msgid), "finishing-template.%s", keyword);
173- if ((msgstr = _cupsLangString(lang, msgid)) == msgid || !strcmp(msgid, msgstr))
174- if ((msgstr = _cupsMessageLookup(strings, msgid)) == msgid)
175- msgstr = keyword;
176
177 cupsFilePrintf(fp, "*cupsFinishingTemplate %s: \"\n", ppdname);
178 for (finishing_attr = ippFirstAttribute(finishing_col); finishing_attr; finishing_attr = ippNextAttribute(finishing_col))
179@@ -4996,7 +4974,7 @@ _ppdCreateFromIPP2(
180 }
181 }
182 cupsFilePuts(fp, "\"\n");
183- cupsFilePrintf(fp, "*%s.cupsFinishingTemplate %s/%s: \"\"\n", lang->language, ppdname, msgstr);
184+ ppd_put_string(fp, lang, strings, "cupsFinishingTemplate", ppdname, msgid);
185 cupsFilePuts(fp, "*End\n");
186 }
187
188@@ -5165,11 +5143,9 @@ _ppdCreateFromIPP2(
189
190 cupsFilePuts(fp, "\"\n*End\n");
191
192- if ((localized_name = _cupsMessageLookup(strings, preset_name)) != preset_name)
193- {
194- pwg_ppdize_name(preset_name, ppdname, sizeof(ppdname));
195- cupsFilePrintf(fp, "*%s.APPrinterPreset %s/%s: \"\"\n", lang->language, ppdname, localized_name);
196- }
197+ snprintf(msgid, sizeof(msgid), "preset-name.%s", preset_name);
198+ pwg_ppdize_name(preset_name, ppdname, sizeof(ppdname));
199+ ppd_put_string(fp, lang, strings, "APPrinterPreset", ppdname, msgid);
200 }
201 }
202
203@@ -5440,6 +5416,43 @@ cups_get_url(http_t **http, /* IO - Current HTTP connection */
204 }
205
206
207+/*
208+ * 'ppd_put_strings()' - Write localization attributes to a PPD file.
209+ */
210+
211+static void
212+ppd_put_string(cups_file_t *fp, /* I - PPD file */
213+ cups_lang_t *lang, /* I - Language */
214+ cups_array_t *strings, /* I - Strings */
215+ const char *ppd_option,/* I - PPD option */
216+ const char *ppd_choice,/* I - PPD choice */
217+ const char *pwg_msgid) /* I - PWG message ID */
218+{
219+ const char *text; /* Localized text */
220+
221+
222+ if ((text = _cupsLangString(lang, pwg_msgid)) == pwg_msgid || !strcmp(pwg_msgid, text))
223+ {
224+ if ((text = _cupsMessageLookup(strings, pwg_msgid)) == pwg_msgid)
225+ return;
226+ }
227+
228+ // Add the first line of localized text...
229+ cupsFilePrintf(fp, "*%s.%s %s/", lang->language, ppd_option, ppd_choice);
230+ while (*text && *text != '\n')
231+ {
232+ // Escape ":" and "<"...
233+ if (*text == ':' || *text == '<')
234+ cupsFilePrintf(fp, "<%02X>", *text);
235+ else
236+ cupsFilePutChar(fp, *text);
237+
238+ text ++;
239+ }
240+ cupsFilePuts(fp, ": \"\"\n");
241+}
242+
243+
244 /*
245 * 'pwg_add_finishing()' - Add a finishings value.
246 */
247--
2482.25.1
249
diff --git a/meta/recipes-extended/cups/cups/CVE-2024-47175-5.patch b/meta/recipes-extended/cups/cups/CVE-2024-47175-5.patch
new file mode 100644
index 0000000000..77a30857e2
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/CVE-2024-47175-5.patch
@@ -0,0 +1,40 @@
1From 2abe1ba8a66864aa82cd9836b37e57103b8e1a3b Mon Sep 17 00:00:00 2001
2From: Michael R Sweet <msweet@msweet.org>
3Date: Mon, 23 Sep 2024 10:11:31 -0400
4Subject: [PATCH] Fix warnings for unused vars.
5
6Upstream-Status: Backport [https://github.com/OpenPrinting/cups/commit/2abe1ba8a66864aa82cd9836b37e57103b8e1a3b]
7CVE: CVE-2024-47175
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 cups/ppd-cache.c | 6 ++----
11 1 file changed, 2 insertions(+), 4 deletions(-)
12
13diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
14index f425ac0..d2533b7 100644
15--- a/cups/ppd-cache.c
16+++ b/cups/ppd-cache.c
17@@ -3223,8 +3223,7 @@ _ppdCreateFromIPP2(
18 int have_qdraft = 0,/* Have draft quality? */
19 have_qhigh = 0; /* Have high quality? */
20 char msgid[256]; /* Message identifier (attr.value) */
21- const char *keyword, /* Keyword value */
22- *msgstr; /* Localized string */
23+ const char *keyword; /* Keyword value */
24 cups_array_t *strings = NULL;/* Printer strings file */
25 struct lconv *loc = localeconv();
26 /* Locale data */
27@@ -5010,9 +5009,8 @@ _ppdCreateFromIPP2(
28 {
29 ipp_t *preset = ippGetCollection(attr, i);
30 /* Preset collection */
31- const char *preset_name = ippGetString(ippFindAttribute(preset, "preset-name", IPP_TAG_ZERO), 0, NULL),
32+ const char *preset_name = ippGetString(ippFindAttribute(preset, "preset-name", IPP_TAG_ZERO), 0, NULL);
33 /* Preset name */
34- *localized_name; /* Localized preset name */
35 ipp_attribute_t *member; /* Member attribute in preset */
36 const char *member_name; /* Member attribute name */
37 char member_value[256]; /* Member attribute value */
38--
392.25.1
40
diff --git a/meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch b/meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch
index 67f14bd368..0546fdf8f0 100644
--- a/meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch
+++ b/meta/recipes-extended/ghostscript/ghostscript/avoid-host-contamination.patch
@@ -1,4 +1,4 @@
1From b36713c8f1ba0e5755b78845a433354a63663b1a Mon Sep 17 00:00:00 2001 1From 095bb1db8b2e68cac40e985f347a7039573e1e80 Mon Sep 17 00:00:00 2001
2From: Kai Kang <kai.kang@windriver.com> 2From: Kai Kang <kai.kang@windriver.com>
3Date: Thu, 29 Mar 2018 16:02:05 +0800 3Date: Thu, 29 Mar 2018 16:02:05 +0800
4Subject: [PATCH] avoid host contamination 4Subject: [PATCH] avoid host contamination
@@ -15,10 +15,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
15 1 file changed, 1 insertion(+), 1 deletion(-) 15 1 file changed, 1 insertion(+), 1 deletion(-)
16 16
17diff --git a/devices/devs.mak b/devices/devs.mak 17diff --git a/devices/devs.mak b/devices/devs.mak
18index 186f704..88ab8c9 100644 18index a5dbc7a..27b55f2 100644
19--- a/devices/devs.mak 19--- a/devices/devs.mak
20+++ b/devices/devs.mak 20+++ b/devices/devs.mak
21@@ -397,7 +397,7 @@ $(DEVOBJ)gdevxalt.$(OBJ) : $(DEVSRC)gdevxalt.c $(GDEVX) $(math__h) $(memory__h)\ 21@@ -403,7 +403,7 @@ $(DEVOBJ)gdevxalt.$(OBJ) : $(DEVSRC)gdevxalt.c $(GDEVX) $(math__h) $(memory__h)\
22 ### NON PORTABLE, ONLY UNIX WITH GCC SUPPORT 22 ### NON PORTABLE, ONLY UNIX WITH GCC SUPPORT
23 23
24 $(DEVOBJ)X11.so : $(x11alt_) $(x11_) $(DEVS_MAK) $(MAKEDIRS) 24 $(DEVOBJ)X11.so : $(x11alt_) $(x11_) $(DEVS_MAK) $(MAKEDIRS)
diff --git a/meta/recipes-extended/ghostscript/ghostscript_10.03.1.bb b/meta/recipes-extended/ghostscript/ghostscript_10.05.1.bb
index 0504f5244f..bd34058517 100644
--- a/meta/recipes-extended/ghostscript/ghostscript_10.03.1.bb
+++ b/meta/recipes-extended/ghostscript/ghostscript_10.05.1.bb
@@ -27,7 +27,7 @@ SRC_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/downlo
27 file://avoid-host-contamination.patch \ 27 file://avoid-host-contamination.patch \
28 " 28 "
29 29
30SRC_URI[sha256sum] = "31cd01682ad23a801cc3bbc222a55f07c4ea3e068bdfb447792d54db21a2e8ad" 30SRC_URI[sha256sum] = "121861b6d29b2461dec6575c9f3cab665b810bd408d4ec02c86719fa708b0a49"
31 31
32PACKAGECONFIG ??= "" 32PACKAGECONFIG ??= ""
33PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+3" 33PACKAGECONFIG[gtk] = "--enable-gtk,--disable-gtk,gtk+3"
diff --git a/meta/recipes-extended/groff/files/0001-contrib-hdtbl-hdtbl.am-Fix-race-issues-for-parallel-.patch b/meta/recipes-extended/groff/files/0001-contrib-hdtbl-hdtbl.am-Fix-race-issues-for-parallel-.patch
new file mode 100644
index 0000000000..de4a55bbab
--- /dev/null
+++ b/meta/recipes-extended/groff/files/0001-contrib-hdtbl-hdtbl.am-Fix-race-issues-for-parallel-.patch
@@ -0,0 +1,31 @@
1From 771686c042d5f494550d0399f36e00b1ca557b2d Mon Sep 17 00:00:00 2001
2From: Robert Yang <liezhi.yang@windriver.com>
3Date: Mon, 11 Nov 2024 14:12:51 +0000
4Subject: [PATCH] contrib/hdtbl/hdtbl.am: Fix race issues for parallel build
5
6Fixed race issues for parallel build:
7groff: error: couldn't exec soelim: Permission
8
9And:
10groff: error: couldn't exec grn: Permission denied
11
12Upstream-Status: Submitted [https://lists.gnu.org/archive/html/groff/2024-11/msg00097.html]
13
14Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
15---
16 contrib/hdtbl/hdtbl.am | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/contrib/hdtbl/hdtbl.am b/contrib/hdtbl/hdtbl.am
20index 9384fac..70f7bc9 100644
21--- a/contrib/hdtbl/hdtbl.am
22+++ b/contrib/hdtbl/hdtbl.am
23@@ -119,7 +119,7 @@ SUFFIXES += .roff .in .ps
24 -e "s|[@]EGREP[@]|$(EGREP)|" $< >$@
25
26 $(HDTBLPROCESSEDEXAMPLEFILES): $(DOC_GNU_EPS) groff troff eqn pic tbl \
27- grops grn font/devps/stamp contrib/hdtbl/examples/common.roff
28+ grops grn soelim font/devps/stamp contrib/hdtbl/examples/common.roff
29
30 uninstall_groffdirs: uninstall-hdtbl-hook
31 uninstall-hdtbl-hook:
diff --git a/meta/recipes-extended/groff/files/0001-hdtbl-Fix-Savannah-66316-missing-grn-dep.patch b/meta/recipes-extended/groff/files/0001-hdtbl-Fix-Savannah-66316-missing-grn-dep.patch
new file mode 100644
index 0000000000..d9455af2ac
--- /dev/null
+++ b/meta/recipes-extended/groff/files/0001-hdtbl-Fix-Savannah-66316-missing-grn-dep.patch
@@ -0,0 +1,38 @@
1From 12169aa269341753d491a69e9adb86c58dca039a Mon Sep 17 00:00:00 2001
2From: "G. Branden Robinson" <g.branden.robinson@gmail.com>
3Date: Thu, 10 Oct 2024 18:17:08 -0500
4Subject: [PATCH] [hdtbl]: Fix Savannah #66316 (missing `grn` dep).
5
6* hdtbl.am (HDTBLPROCESSEDEXAMPLEFILES): Declare dependency on `grn`;
7 because `-I` flags are used, it is dragged in even though not
8 explicitly needed. Resolves race against `grn`'s availability in the
9 build tree.
10
11Fixes <https://savannah.gnu.org/bugs/?66316>. Thanks to Ross Burton for
12the report.
13
14Upstream-Status: Backport
15Signed-off-by: Ross Burton <ross.burton@arm.com>
16---
17 contrib/hdtbl/ChangeLog | 10 ++++++++++
18 contrib/hdtbl/hdtbl.am | 3 +--
19 2 files changed, 11 insertions(+), 2 deletions(-)
20
21diff --git a/contrib/hdtbl/hdtbl.am b/contrib/hdtbl/hdtbl.am
22index b6c334c18..3c37174f2 100644
23--- a/contrib/hdtbl/hdtbl.am
24+++ b/contrib/hdtbl/hdtbl.am
25@@ -119,9 +119,8 @@ SUFFIXES += .roff .in .ps
26 && sed -e "s|[@]fontdir[@]|$(fontdir)|" \
27 -e "s|[@]EGREP[@]|$(EGREP)|" $< >$@
28
29-
30 $(HDTBLPROCESSEDEXAMPLEFILES): $(DOC_GNU_EPS) groff troff eqn pic tbl \
31- grops font/devps/stamp contrib/hdtbl/examples/common.roff
32+ grops grn font/devps/stamp contrib/hdtbl/examples/common.roff
33
34 uninstall_groffdirs: uninstall-hdtbl-hook
35 uninstall-hdtbl-hook:
36--
372.34.1
38
diff --git a/meta/recipes-extended/groff/groff_1.23.0.bb b/meta/recipes-extended/groff/groff_1.23.0.bb
index 0fc4f831d8..34a42c7e26 100644
--- a/meta/recipes-extended/groff/groff_1.23.0.bb
+++ b/meta/recipes-extended/groff/groff_1.23.0.bb
@@ -12,6 +12,8 @@ SRC_URI = "${GNU_MIRROR}/groff/groff-${PV}.tar.gz \
12 file://0001-Make-manpages-mulitlib-identical.patch \ 12 file://0001-Make-manpages-mulitlib-identical.patch \
13 file://0001-build-Fix-Savannah-64681-webpage.ps-deps.patch \ 13 file://0001-build-Fix-Savannah-64681-webpage.ps-deps.patch \
14 file://0001-build-meintro_fr.ps-depends-on-tbl.patch \ 14 file://0001-build-meintro_fr.ps-depends-on-tbl.patch \
15 file://0001-hdtbl-Fix-Savannah-66316-missing-grn-dep.patch \
16 file://0001-contrib-hdtbl-hdtbl.am-Fix-race-issues-for-parallel-.patch \
15 " 17 "
16 18
17SRC_URI[sha256sum] = "6b9757f592b7518b4902eb6af7e54570bdccba37a871fddb2d30ae3863511c13" 19SRC_URI[sha256sum] = "6b9757f592b7518b4902eb6af7e54570bdccba37a871fddb2d30ae3863511c13"
diff --git a/meta/recipes-extended/iputils/iputils/CVE-2025-47268.patch b/meta/recipes-extended/iputils/iputils/CVE-2025-47268.patch
new file mode 100644
index 0000000000..dd31b79031
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils/CVE-2025-47268.patch
@@ -0,0 +1,143 @@
1From 070cfacd7348386173231fb16fad4983d4e6ae40 Mon Sep 17 00:00:00 2001
2From: Petr Vorel <pvorel@suse.cz>
3Date: Mon, 5 May 2025 23:55:57 +0200
4Subject: [PATCH] ping: Fix signed 64-bit integer overflow in RTT calculation
5
6Crafted ICMP Echo Reply packet can cause signed integer overflow in
7
81) triptime calculation:
9triptime = tv->tv_sec * 1000000 + tv->tv_usec;
10
112) tsum2 increment which uses triptime
12rts->tsum2 += (double)((long long)triptime * (long long)triptime);
13
143) final tmvar:
15tmvar = (rts->tsum2 / total) - (tmavg * tmavg)
16
17 $ export CFLAGS="-O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer"
18 $ export LDFLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer"
19 $ meson setup .. -Db_sanitize=address,undefined
20 $ ninja
21 $ ./ping/ping -c2 127.0.0.1
22
23 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
24 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.061 ms
25 ../ping/ping_common.c:757:25: runtime error: signed integer overflow: -2513732689199106 * 1000000 cannot be represented in type 'long int'
26 ../ping/ping_common.c:757:12: runtime error: signed integer overflow: -4975495174606980224 + -6510615555425289427 cannot be represented in type 'long int'
27 ../ping/ping_common.c:769:47: runtime error: signed integer overflow: 6960633343677281965 * 6960633343677281965 cannot be represented in type 'long int'
28 24 bytes from 127.0.0.1: icmp_seq=1 ttl=64 (truncated)
29 ./ping/ping: Warning: time of day goes back (-7256972569576721377us), taking countermeasures
30 ./ping/ping: Warning: time of day goes back (-7256972569576721232us), taking countermeasures
31 24 bytes from 127.0.0.1: icmp_seq=1 ttl=64 (truncated)
32 ../ping/ping_common.c:265:16: runtime error: signed integer overflow: 6960633343677281965 * 2 cannot be represented in type 'long int'
33 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.565 ms
34
35 --- 127.0.0.1 ping statistics ---
36 2 packets transmitted, 2 received, +2 duplicates, 0% packet loss, time 1002ms
37 ../ping/ping_common.c:940:42: runtime error: signed integer overflow: 1740158335919320832 * 1740158335919320832 cannot be represented in type 'long int'
38 rtt min/avg/max/mdev = 0.000/1740158335919320.832/6960633343677281.965/-1623514645242292.-224 ms
39
40To fix the overflow check allowed ranges of struct timeval members:
41* tv_sec <0, LONG_MAX/1000000>
42* tv_usec <0, 999999>
43
44Fix includes 2 new error messages (needs translation).
45Also existing message "time of day goes back ..." needed to be modified
46as it now prints tv->tv_sec which is a second (needs translation update).
47
48After fix:
49
50 $ ./ping/ping -c2 127.0.0.1
51 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.057 ms
52 ./ping/ping: Warning: invalid tv_usec -6510615555424928611 us
53 ./ping/ping: Warning: time of day goes back (-3985394643238914 s), taking countermeasures
54 ./ping/ping: Warning: invalid tv_usec -6510615555424928461 us
55 ./ping/ping: Warning: time of day goes back (-3985394643238914 s), taking countermeasures
56 24 bytes from 127.0.0.1: icmp_seq=1 ttl=64 (truncated)
57 ./ping/ping: Warning: invalid tv_usec -6510615555425884541 us
58 ./ping/ping: Warning: time of day goes back (-4243165695442945 s), taking countermeasures
59 24 bytes from 127.0.0.1: icmp_seq=1 ttl=64 (truncated)
60 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.111 ms
61
62 --- 127.0.0.1 ping statistics ---
63 2 packets transmitted, 2 received, +2 duplicates, 0% packet loss, time 101ms
64 rtt min/avg/max/mdev = 0.000/0.042/0.111/0.046 ms
65
66Fixes: https://github.com/iputils/iputils/issues/584
67Fixes: CVE-2025-472
68Link: https://github.com/Zephkek/ping-rtt-overflow/
69Co-developed-by: Cyril Hrubis <chrubis@suse.cz>
70Reported-by: Mohamed Maatallah <hotelsmaatallahrecemail@gmail.com>
71Reviewed-by: Mohamed Maatallah <hotelsmaatallahrecemail@gmail.com>
72Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
73Reviewed-by: Noah Meyerhans <noahm@debian.org>
74Signed-off-by: Petr Vorel <pvorel@suse.cz>
75
76CVE: CVE-2025-47268
77
78Upstream-Status: Backport
79[https://github.com/iputils/iputils/commit/070cfacd7348386173231fb16fad4983d4e6ae40]
80
81Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
82---
83 iputils_common.h | 3 +++
84 ping/ping_common.c | 22 +++++++++++++++++++---
85 2 files changed, 22 insertions(+), 3 deletions(-)
86
87diff --git a/iputils_common.h b/iputils_common.h
88index 49e790d..829a749 100644
89--- a/iputils_common.h
90+++ b/iputils_common.h
91@@ -10,6 +10,9 @@
92 !!__builtin_types_compatible_p(__typeof__(arr), \
93 __typeof__(&arr[0]))])) * 0)
94
95+/* 1000001 = 1000000 tv_sec + 1 tv_usec */
96+#define TV_SEC_MAX_VAL (LONG_MAX/1000001)
97+
98 #ifdef __GNUC__
99 # define iputils_attribute_format(t, n, m) __attribute__((__format__ (t, n, m)))
100 #else
101diff --git a/ping/ping_common.c b/ping/ping_common.c
102index dadd2a4..4e99d89 100644
103--- a/ping/ping_common.c
104+++ b/ping/ping_common.c
105@@ -754,16 +754,32 @@ int gather_statistics(struct ping_rts *rts, uint8_t *icmph, int icmplen,
106
107 restamp:
108 tvsub(tv, &tmp_tv);
109- triptime = tv->tv_sec * 1000000 + tv->tv_usec;
110- if (triptime < 0) {
111- error(0, 0, _("Warning: time of day goes back (%ldus), taking countermeasures"), triptime);
112+
113+ if (tv->tv_usec >= 1000000) {
114+ error(0, 0, _("Warning: invalid tv_usec %ld us"), tv->tv_usec);
115+ tv->tv_usec = 999999;
116+ }
117+
118+ if (tv->tv_usec < 0) {
119+ error(0, 0, _("Warning: invalid tv_usec %ld us"), tv->tv_usec);
120+ tv->tv_usec = 0;
121+ }
122+
123+ if (tv->tv_sec > TV_SEC_MAX_VAL) {
124+ error(0, 0, _("Warning: invalid tv_sec %ld s"), tv->tv_sec);
125+ triptime = 0;
126+ } else if (tv->tv_sec < 0) {
127+ error(0, 0, _("Warning: time of day goes back (%ld s), taking countermeasures"), tv->tv_sec);
128 triptime = 0;
129 if (!rts->opt_latency) {
130 gettimeofday(tv, NULL);
131 rts->opt_latency = 1;
132 goto restamp;
133 }
134+ } else {
135+ triptime = tv->tv_sec * 1000000 + tv->tv_usec;
136 }
137+
138 if (!csfailed) {
139 rts->tsum += triptime;
140 rts->tsum2 += (double)((long long)triptime * (long long)triptime);
141--
1422.34.1
143
diff --git a/meta/recipes-extended/iputils/iputils_20240117.bb b/meta/recipes-extended/iputils/iputils_20240117.bb
index 3880689742..5ff5af8847 100644
--- a/meta/recipes-extended/iputils/iputils_20240117.bb
+++ b/meta/recipes-extended/iputils/iputils_20240117.bb
@@ -10,7 +10,9 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=627cc07ec86a45951d43e30658bbd819"
10 10
11DEPENDS = "gnutls" 11DEPENDS = "gnutls"
12 12
13SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https" 13SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https \
14 file://CVE-2025-47268.patch \
15 "
14SRCREV = "8372f355bdf7a9b0c79338dd8ef8464c00a5c4e2" 16SRCREV = "8372f355bdf7a9b0c79338dd8ef8464c00a5c4e2"
15 17
16S = "${WORKDIR}/git" 18S = "${WORKDIR}/git"
diff --git a/meta/recipes-extended/libarchive/libarchive/configurehack.patch b/meta/recipes-extended/libarchive/libarchive/configurehack.patch
index 44720fdd53..97e42591cb 100644
--- a/meta/recipes-extended/libarchive/libarchive/configurehack.patch
+++ b/meta/recipes-extended/libarchive/libarchive/configurehack.patch
@@ -10,7 +10,7 @@ diff --git a/configure.ac b/configure.ac
10index 5668d41..7e65e49 100644 10index 5668d41..7e65e49 100644
11--- a/configure.ac 11--- a/configure.ac
12+++ b/configure.ac 12+++ b/configure.ac
13@@ -414,6 +414,19 @@ if test "x$with_bz2lib" != "xno"; then 13@@ -435,6 +435,19 @@ if test "x$with_bz2lib" != "xno"; then
14 esac 14 esac
15 fi 15 fi
16 16
@@ -30,7 +30,7 @@ index 5668d41..7e65e49 100644
30 AC_ARG_WITH([libb2], 30 AC_ARG_WITH([libb2],
31 AS_HELP_STRING([--without-libb2], [Don't build support for BLAKE2 through libb2])) 31 AS_HELP_STRING([--without-libb2], [Don't build support for BLAKE2 through libb2]))
32 32
33@@ -678,19 +691,6 @@ fi 33@@ -694,19 +707,6 @@ fi
34 34
35 AC_SUBST(DEAD_CODE_REMOVAL) 35 AC_SUBST(DEAD_CODE_REMOVAL)
36 36
diff --git a/meta/recipes-extended/libarchive/libarchive_3.7.4.bb b/meta/recipes-extended/libarchive/libarchive_3.7.9.bb
index da85764116..4dd6794bb1 100644
--- a/meta/recipes-extended/libarchive/libarchive_3.7.4.bb
+++ b/meta/recipes-extended/libarchive/libarchive_3.7.9.bb
@@ -29,13 +29,12 @@ PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd,"
29 29
30EXTRA_OECONF += "--enable-largefile --without-iconv" 30EXTRA_OECONF += "--enable-largefile --without-iconv"
31 31
32SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz" 32SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz \
33SRC_URI += "file://configurehack.patch" 33 file://configurehack.patch \
34 "
34UPSTREAM_CHECK_URI = "http://libarchive.org/" 35UPSTREAM_CHECK_URI = "http://libarchive.org/"
35 36
36SRC_URI[sha256sum] = "7875d49596286055b52439ed42f044bd8ad426aa4cc5aabd96bfe7abb971d5e8" 37SRC_URI[sha256sum] = "aa90732c5a6bdda52fda2ad468ac98d75be981c15dde263d7b5cf6af66fd009f"
37
38CVE_STATUS[CVE-2023-30571] = "upstream-wontfix: upstream has documented that reported function is not thread-safe"
39 38
40inherit autotools update-alternatives pkgconfig 39inherit autotools update-alternatives pkgconfig
41 40
diff --git a/meta/recipes-extended/lsb/lsb-release_1.4.bb b/meta/recipes-extended/lsb/lsb-release_1.4.bb
index 00d8183a4f..a7039ea4d1 100644
--- a/meta/recipes-extended/lsb/lsb-release_1.4.bb
+++ b/meta/recipes-extended/lsb/lsb-release_1.4.bb
@@ -29,7 +29,7 @@ do_install() {
29 echo "DISTRIB_ID=${DISTRO}" >> ${D}${sysconfdir}/lsb-release 29 echo "DISTRIB_ID=${DISTRO}" >> ${D}${sysconfdir}/lsb-release
30 echo "DISTRIB_RELEASE=${DISTRO_VERSION}" >> ${D}${sysconfdir}/lsb-release 30 echo "DISTRIB_RELEASE=${DISTRO_VERSION}" >> ${D}${sysconfdir}/lsb-release
31 if [ -n "${DISTRO_CODENAME}" ]; then 31 if [ -n "${DISTRO_CODENAME}" ]; then
32 echo "DISTRIB_CODENAME=${DISTRO_CODENAME}" >> ${D}${sysconfdir}/lsb-release 32 echo "DISTRIB_CODENAME=\"${DISTRO_CODENAME}\"" >> ${D}${sysconfdir}/lsb-release
33 fi 33 fi
34 echo "DISTRIB_DESCRIPTION=\"${DISTRO_NAME} ${DISTRO_VERSION}\"" >> ${D}${sysconfdir}/lsb-release 34 echo "DISTRIB_DESCRIPTION=\"${DISTRO_NAME} ${DISTRO_VERSION}\"" >> ${D}${sysconfdir}/lsb-release
35} 35}
diff --git a/meta/recipes-extended/mc/mc_4.8.31.bb b/meta/recipes-extended/mc/mc_4.8.31.bb
index 5f8257f71f..69d089d267 100644
--- a/meta/recipes-extended/mc/mc_4.8.31.bb
+++ b/meta/recipes-extended/mc/mc_4.8.31.bb
@@ -31,6 +31,7 @@ CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
31CACHED_CONFIGUREVARS += "ac_cv_path_PERL_FOR_BUILD='/usr/bin/env perl'" 31CACHED_CONFIGUREVARS += "ac_cv_path_PERL_FOR_BUILD='/usr/bin/env perl'"
32CACHED_CONFIGUREVARS += "ac_cv_path_PYTHON='/usr/bin/env python'" 32CACHED_CONFIGUREVARS += "ac_cv_path_PYTHON='/usr/bin/env python'"
33CACHED_CONFIGUREVARS += "ac_cv_path_GREP='/usr/bin/env grep'" 33CACHED_CONFIGUREVARS += "ac_cv_path_GREP='/usr/bin/env grep'"
34CACHED_CONFIGUREVARS += "ac_cv_path_ZIP='/usr/bin/zip'"
34CACHED_CONFIGUREVARS += "mc_cv_have_zipinfo=yes" 35CACHED_CONFIGUREVARS += "mc_cv_have_zipinfo=yes"
35 36
36do_install:append () { 37do_install:append () {
diff --git a/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-01.patch b/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-01.patch
new file mode 100644
index 0000000000..0d55512497
--- /dev/null
+++ b/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-01.patch
@@ -0,0 +1,91 @@
1From 7a8f42fb20013a1493d8cae1c43436f85e656f2d Mon Sep 17 00:00:00 2001
2From: Zephkeks <zephyrofficialdiscord@gmail.com>
3Date: Tue, 13 May 2025 11:04:17 +0200
4Subject: [PATCH] CVE-2025-46836: interface.c: Stack-based Buffer Overflow in
5 get_name()
6
7Coordinated as GHSA-pfwf-h6m3-63wf
8
9CVE: CVE-2025-46836
10Upstream-Status: Backport [https://sourceforge.net/p/net-tools/code/ci/7a8f42fb20013a1493d8cae1c43436f85e656f2d/]
11Signed-off-by: Peter Marko <peter.marko@siemens.com>
12---
13 lib/interface.c | 63 ++++++++++++++++++++++++++++++-------------------
14 1 file changed, 39 insertions(+), 24 deletions(-)
15
16diff --git a/lib/interface.c b/lib/interface.c
17index 71d4163..a054f12 100644
18--- a/lib/interface.c
19+++ b/lib/interface.c
20@@ -211,32 +211,47 @@ out:
21 }
22
23 static const char *get_name(char *name, const char *p)
24+/* Safe version — guarantees at most IFNAMSIZ‑1 bytes are copied
25+ and the destination buffer is always NUL‑terminated. */
26 {
27- while (isspace(*p))
28- p++;
29- while (*p) {
30- if (isspace(*p))
31- break;
32- if (*p == ':') { /* could be an alias */
33- const char *dot = p++;
34- while (*p && isdigit(*p)) p++;
35- if (*p == ':') {
36- /* Yes it is, backup and copy it. */
37- p = dot;
38- *name++ = *p++;
39- while (*p && isdigit(*p)) {
40- *name++ = *p++;
41- }
42- } else {
43- /* No, it isn't */
44- p = dot;
45- }
46- p++;
47- break;
48- }
49- *name++ = *p++;
50+ char *dst = name; /* current write ptr */
51+ const char *end = name + IFNAMSIZ - 1; /* last byte we may write */
52+
53+ /* Skip leading white‑space. */
54+ while (isspace((unsigned char)*p))
55+ ++p;
56+
57+ /* Copy until white‑space, end of string, or buffer full. */
58+ while (*p && !isspace((unsigned char)*p) && dst < end) {
59+ if (*p == ':') { /* possible alias veth0:123: */
60+ const char *dot = p; /* remember the colon */
61+ ++p;
62+ while (*p && isdigit((unsigned char)*p))
63+ ++p;
64+
65+ if (*p == ':') { /* confirmed alias */
66+ p = dot; /* rewind and copy it all */
67+
68+ /* copy the colon */
69+ if (dst < end)
70+ *dst++ = *p++;
71+
72+ /* copy the digits */
73+ while (*p && isdigit((unsigned char)*p) && dst < end)
74+ *dst++ = *p++;
75+
76+ if (*p == ':') /* consume trailing colon */
77+ ++p;
78+ } else { /* if so treat as normal */
79+ p = dot;
80+ }
81+ break; /* interface name ends here */
82+ }
83+
84+ *dst++ = *p++; /* ordinary character copy */
85 }
86- *name++ = '\0';
87+
88+ *dst = '\0'; /* always NUL‑terminate */
89 return p;
90 }
91
diff --git a/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-02.patch b/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-02.patch
new file mode 100644
index 0000000000..d2c3673a24
--- /dev/null
+++ b/meta/recipes-extended/net-tools/net-tools/CVE-2025-46836-02.patch
@@ -0,0 +1,31 @@
1From ddb0e375fb9ca95bb69335540b85bbdaa2714348 Mon Sep 17 00:00:00 2001
2From: Bernd Eckenfels <net-tools@lina.inka.de>
3Date: Sat, 17 May 2025 21:53:23 +0200
4Subject: [PATCH] Interface statistic regression after 7a8f42fb2
5
6CVE: CVE-2025-46836
7Upstream-Status: Backport [https://sourceforge.net/p/net-tools/code/ci/ddb0e375fb9ca95bb69335540b85bbdaa2714348/]
8Signed-off-by: Peter Marko <peter.marko@siemens.com>
9---
10 lib/interface.c | 5 ++---
11 1 file changed, 2 insertions(+), 3 deletions(-)
12
13diff --git a/lib/interface.c b/lib/interface.c
14index a054f12..ca4adf1 100644
15--- a/lib/interface.c
16+++ b/lib/interface.c
17@@ -239,12 +239,11 @@ static const char *get_name(char *name, const char *p)
18 /* copy the digits */
19 while (*p && isdigit((unsigned char)*p) && dst < end)
20 *dst++ = *p++;
21-
22- if (*p == ':') /* consume trailing colon */
23- ++p;
24 } else { /* if so treat as normal */
25 p = dot;
26 }
27+ if (*p == ':') /* consume trailing colon */
28+ ++p;
29 break; /* interface name ends here */
30 }
31
diff --git a/meta/recipes-extended/net-tools/net-tools_2.10.bb b/meta/recipes-extended/net-tools/net-tools_2.10.bb
index 33304297ec..c4d298181a 100644
--- a/meta/recipes-extended/net-tools/net-tools_2.10.bb
+++ b/meta/recipes-extended/net-tools/net-tools_2.10.bb
@@ -11,6 +11,8 @@ SRC_URI = "git://git.code.sf.net/p/net-tools/code;protocol=https;branch=master \
11 file://net-tools-config.h \ 11 file://net-tools-config.h \
12 file://net-tools-config.make \ 12 file://net-tools-config.make \
13 file://Add_missing_headers.patch \ 13 file://Add_missing_headers.patch \
14 file://CVE-2025-46836-01.patch \
15 file://CVE-2025-46836-02.patch \
14" 16"
15 17
16S = "${WORKDIR}/git" 18S = "${WORKDIR}/git"
diff --git a/meta/recipes-extended/pam/libpam/CVE-2024-10041-1.patch b/meta/recipes-extended/pam/libpam/CVE-2024-10041-1.patch
new file mode 100644
index 0000000000..41949cbf2a
--- /dev/null
+++ b/meta/recipes-extended/pam/libpam/CVE-2024-10041-1.patch
@@ -0,0 +1,98 @@
1From b3020da7da384d769f27a8713257fbe1001878be Mon Sep 17 00:00:00 2001
2From: "Dmitry V. Levin" <ldv@strace.io>
3Date: Mon, 1 Jan 2024 12:00:00 +0000
4Subject: [PATCH] pam_unix/passverify: always run the helper to obtain shadow
5 password file entries
6
7Initially, when pam_unix.so verified the password, it used to try to
8obtain the shadow password file entry for the given user by invoking
9getspnam(3), and only when that didn't work and the effective uid
10was nonzero, pam_unix.so used to invoke the helper as a fallback.
11
12When SELinux support was introduced by commit
1367aab1ff5515054341a438cf9804e9c9b3a88033, the fallback was extended
14also for the case when SELinux was enabled.
15
16Later, commit f220cace205332a3dc34e7b37a85e7627e097e7d extended the
17fallback conditions for the case when pam_modutil_getspnam() failed
18with EACCES.
19
20Since commit 470823c4aacef5cb3b1180be6ed70846b61a3752, the helper is
21invoked as a fallback when pam_modutil_getspnam() fails for any reason.
22
23The ultimate solution for the case when pam_unix.so does not have
24permissions to obtain the shadow password file entry is to stop trying
25to use pam_modutil_getspnam() and to invoke the helper instead.
26Here are two recent examples.
27
28https://github.com/linux-pam/linux-pam/pull/484 describes a system
29configuration where libnss_systemd is enabled along with libnss_files
30in the shadow entry of nsswitch.conf, so when libnss_files is unable
31to obtain the shadow password file entry for the root user, e.g. when
32SELinux is enabled, NSS falls back to libnss_systemd which returns
33a synthesized shadow password file entry for the root user, which
34in turn locks the root user out.
35
36https://bugzilla.redhat.com/show_bug.cgi?id=2150155 describes
37essentially the same problem in a similar system configuration.
38
39This commit is the final step in the direction of addressing the issue:
40for password verification pam_unix.so now invokes the helper instead of
41making the pam_modutil_getspnam() call.
42
43* modules/pam_unix/passverify.c (get_account_info) [!HELPER_COMPILE]:
44Always return PAM_UNIX_RUN_HELPER instead of trying to obtain
45the shadow password file entry.
46
47Complements: https://github.com/linux-pam/linux-pam/pull/386
48Resolves: https://github.com/linux-pam/linux-pam/pull/484
49Link: https://github.com/authselect/authselect/commit/1e78f7e048747024a846fd22d68afc6993734e92
50
51CVE: CVE-2024-10041
52
53Upstream-Status: Backport [https://github.com/linux-pam/linux-pam/commit/b3020da7da384d769f27a8713257fbe1001878be]
54
55Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
56---
57 modules/pam_unix/passverify.c | 21 +++++++++++----------
58 1 file changed, 11 insertions(+), 10 deletions(-)
59
60diff --git a/modules/pam_unix/passverify.c b/modules/pam_unix/passverify.c
61index 81b10d8..97a81d6 100644
62--- a/modules/pam_unix/passverify.c
63+++ b/modules/pam_unix/passverify.c
64@@ -237,20 +237,21 @@ PAMH_ARG_DECL(int get_account_info,
65 return PAM_UNIX_RUN_HELPER;
66 #endif
67 } else if (is_pwd_shadowed(*pwd)) {
68+#ifdef HELPER_COMPILE
69 /*
70- * ...and shadow password file entry for this user,
71+ * shadow password file entry for this user,
72 * if shadowing is enabled
73 */
74- *spwdent = pam_modutil_getspnam(pamh, name);
75- if (*spwdent == NULL) {
76-#ifndef HELPER_COMPILE
77- /* still a chance the user can authenticate */
78- return PAM_UNIX_RUN_HELPER;
79-#endif
80- return PAM_AUTHINFO_UNAVAIL;
81- }
82- if ((*spwdent)->sp_pwdp == NULL)
83+ *spwdent = getspnam(name);
84+ if (*spwdent == NULL || (*spwdent)->sp_pwdp == NULL)
85 return PAM_AUTHINFO_UNAVAIL;
86+#else
87+ /*
88+ * The helper has to be invoked to deal with
89+ * the shadow password file entry.
90+ */
91+ return PAM_UNIX_RUN_HELPER;
92+#endif
93 }
94 } else {
95 return PAM_USER_UNKNOWN;
96--
972.40.0
98
diff --git a/meta/recipes-extended/pam/libpam/CVE-2024-10041-2.patch b/meta/recipes-extended/pam/libpam/CVE-2024-10041-2.patch
new file mode 100644
index 0000000000..6070a26266
--- /dev/null
+++ b/meta/recipes-extended/pam/libpam/CVE-2024-10041-2.patch
@@ -0,0 +1,77 @@
1From b7b96362087414e52524d3d9d9b3faa21e1db620 Mon Sep 17 00:00:00 2001
2From: Tobias Stoeckmann <tobias@stoeckmann.org>
3Date: Wed, 24 Jan 2024 18:57:42 +0100
4Subject: [PATCH] pam_unix: try to set uid to 0 for unix_chkpwd
5
6The geteuid check does not cover all cases. If a program runs with
7elevated capabilities like CAP_SETUID then we can still check
8credentials of other users.
9
10Keep logging for future analysis though.
11
12Resolves: https://github.com/linux-pam/linux-pam/issues/747
13Fixes: b3020da7da38 ("pam_unix/passverify: always run the helper to obtain shadow password file entries")
14
15Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
16
17Upstream-Status: Backport [https://github.com/linux-pam/linux-pam/commit/b7b96362087414e52524d3d9d9b3faa21e1db620]
18CVE: CVE-2024-10041
19Signed-off-by: Shubham Kulkarni <skulkarni@mvista.com>
20---
21 modules/pam_unix/pam_unix_acct.c | 17 +++++++++--------
22 modules/pam_unix/support.c | 14 +++++++-------
23 2 files changed, 16 insertions(+), 15 deletions(-)
24
25diff --git a/modules/pam_unix/pam_unix_acct.c b/modules/pam_unix/pam_unix_acct.c
26index 8f5ed3e0df..7ffcb9e3f2 100644
27--- a/modules/pam_unix/pam_unix_acct.c
28+++ b/modules/pam_unix/pam_unix_acct.c
29@@ -110,14 +110,15 @@ int _unix_run_verify_binary(pam_handle_t *pamh, unsigned long long ctrl,
30 _exit(PAM_AUTHINFO_UNAVAIL);
31 }
32
33- if (geteuid() == 0) {
34- /* must set the real uid to 0 so the helper will not error
35- out if pam is called from setuid binary (su, sudo...) */
36- if (setuid(0) == -1) {
37- pam_syslog(pamh, LOG_ERR, "setuid failed: %m");
38- printf("-1\n");
39- fflush(stdout);
40- _exit(PAM_AUTHINFO_UNAVAIL);
41+ /* must set the real uid to 0 so the helper will not error
42+ out if pam is called from setuid binary (su, sudo...) */
43+ if (setuid(0) == -1) {
44+ uid_t euid = geteuid();
45+ pam_syslog(pamh, euid == 0 ? LOG_ERR : LOG_DEBUG, "setuid failed: %m");
46+ if (euid == 0) {
47+ printf("-1\n");
48+ fflush(stdout);
49+ _exit(PAM_AUTHINFO_UNAVAIL);
50 }
51 }
52
53diff --git a/modules/pam_unix/support.c b/modules/pam_unix/support.c
54index d391973f95..69811048e6 100644
55--- a/modules/pam_unix/support.c
56+++ b/modules/pam_unix/support.c
57@@ -562,13 +562,13 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
58 _exit(PAM_AUTHINFO_UNAVAIL);
59 }
60
61- if (geteuid() == 0) {
62- /* must set the real uid to 0 so the helper will not error
63- out if pam is called from setuid binary (su, sudo...) */
64- if (setuid(0) == -1) {
65- D(("setuid failed"));
66- _exit(PAM_AUTHINFO_UNAVAIL);
67- }
68+ /* must set the real uid to 0 so the helper will not error
69+ out if pam is called from setuid binary (su, sudo...) */
70+ if (setuid(0) == -1) {
71+ D(("setuid failed"));
72+ if (geteuid() == 0) {
73+ _exit(PAM_AUTHINFO_UNAVAIL);
74+ }
75 }
76
77 /* exec binary helper */
diff --git a/meta/recipes-extended/pam/libpam_1.5.3.bb b/meta/recipes-extended/pam/libpam_1.5.3.bb
index bcaa84c9a5..714cdb6552 100644
--- a/meta/recipes-extended/pam/libpam_1.5.3.bb
+++ b/meta/recipes-extended/pam/libpam_1.5.3.bb
@@ -27,11 +27,13 @@ SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/Linux-PAM-${PV}.tar.xz \
27 file://0001-pam_namespace-include-stdint-h.patch \ 27 file://0001-pam_namespace-include-stdint-h.patch \
28 file://0001-pam_pwhistory-fix-passing-NULL-filename-argument-to-.patch \ 28 file://0001-pam_pwhistory-fix-passing-NULL-filename-argument-to-.patch \
29 file://CVE-2024-22365.patch \ 29 file://CVE-2024-22365.patch \
30 file://CVE-2024-10041-1.patch \
31 file://CVE-2024-10041-2.patch \
30 " 32 "
31 33
32SRC_URI[sha256sum] = "7ac4b50feee004a9fa88f1dfd2d2fa738a82896763050cd773b3c54b0a818283" 34SRC_URI[sha256sum] = "7ac4b50feee004a9fa88f1dfd2d2fa738a82896763050cd773b3c54b0a818283"
33 35
34DEPENDS = "bison-native flex-native cracklib libxml2-native virtual/crypt" 36DEPENDS = "bison-native flex-native libxml2-native virtual/crypt"
35 37
36EXTRA_OECONF = "--includedir=${includedir}/security \ 38EXTRA_OECONF = "--includedir=${includedir}/security \
37 --libdir=${base_libdir} \ 39 --libdir=${base_libdir} \
diff --git a/meta/recipes-extended/screen/screen/CVE-2025-46802.patch b/meta/recipes-extended/screen/screen/CVE-2025-46802.patch
new file mode 100644
index 0000000000..e46affc480
--- /dev/null
+++ b/meta/recipes-extended/screen/screen/CVE-2025-46802.patch
@@ -0,0 +1,146 @@
1From 049b26b22e197ba3be9c46e5c193032e01a4724a Mon Sep 17 00:00:00 2001
2From: Matthias Gerstner <matthias.gerstner@suse.de>
3Date: Mon, 12 May 2025 15:15:38 +0200
4Subject: [PATCH] fix CVE-2025-46802: attacher.c - prevent temporary 0666 mode
5 on PTYs
6
7This temporary chmod of the PTY to mode 0666 is most likely a remnant of
8past times, before the PTY file descriptor was passed to the target
9session via the UNIX domain socket.
10
11This chmod() causes a race condition during which any other user in the
12system can open the PTY for reading and writing, and thus allows PTY
13hijacking.
14
15Simply remove this logic completely.
16
17CVE: CVE-2025-46802
18
19Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/screen.git/commit/?id=049b26b22e197ba3be9c46e5c193032e01a4724a]
20
21Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
22---
23 attacher.c | 27 ---------------------------
24 screen.c | 19 -------------------
25 2 files changed, 46 deletions(-)
26
27diff --git a/attacher.c b/attacher.c
28index c35ae7a..16b151e 100644
29--- a/attacher.c
30+++ b/attacher.c
31@@ -73,7 +73,6 @@ extern int MasterPid, attach_fd;
32 #ifdef MULTIUSER
33 extern char *multi;
34 extern int multiattach, multi_uid, own_uid;
35-extern int tty_mode, tty_oldmode;
36 # ifndef USE_SETEUID
37 static int multipipe[2];
38 # endif
39@@ -160,9 +159,6 @@ int how;
40
41 if (pipe(multipipe))
42 Panic(errno, "pipe");
43- if (chmod(attach_tty, 0666))
44- Panic(errno, "chmod %s", attach_tty);
45- tty_oldmode = tty_mode;
46 eff_uid = -1; /* make UserContext fork */
47 real_uid = multi_uid;
48 if ((ret = UserContext()) <= 0)
49@@ -174,11 +170,6 @@ int how;
50 Panic(errno, "UserContext");
51 close(multipipe[1]);
52 read(multipipe[0], &dummy, 1);
53- if (tty_oldmode >= 0)
54- {
55- chmod(attach_tty, tty_oldmode);
56- tty_oldmode = -1;
57- }
58 ret = UserStatus();
59 #ifdef LOCK
60 if (ret == SIG_LOCK)
61@@ -224,9 +215,6 @@ int how;
62 xseteuid(multi_uid);
63 xseteuid(own_uid);
64 #endif
65- if (chmod(attach_tty, 0666))
66- Panic(errno, "chmod %s", attach_tty);
67- tty_oldmode = tty_mode;
68 }
69 # endif /* USE_SETEUID */
70 #endif /* MULTIUSER */
71@@ -423,13 +411,6 @@ int how;
72 ContinuePlease = 0;
73 # ifndef USE_SETEUID
74 close(multipipe[1]);
75-# else
76- xseteuid(own_uid);
77- if (tty_oldmode >= 0)
78- if (chmod(attach_tty, tty_oldmode))
79- Panic(errno, "chmod %s", attach_tty);
80- tty_oldmode = -1;
81- xseteuid(real_uid);
82 # endif
83 }
84 #endif
85@@ -505,14 +486,6 @@ AttacherFinit SIGDEFARG
86 close(s);
87 }
88 }
89-#ifdef MULTIUSER
90- if (tty_oldmode >= 0)
91- {
92- if (setuid(own_uid))
93- Panic(errno, "setuid");
94- chmod(attach_tty, tty_oldmode);
95- }
96-#endif
97 exit(0);
98 SIGRETURN;
99 }
100diff --git a/screen.c b/screen.c
101index 7653cd1..1a23e1a 100644
102--- a/screen.c
103+++ b/screen.c
104@@ -230,8 +230,6 @@ char *multi_home;
105 int multi_uid;
106 int own_uid;
107 int multiattach;
108-int tty_mode;
109-int tty_oldmode = -1;
110 #endif
111
112 char HostName[MAXSTR];
113@@ -1009,9 +1007,6 @@ int main(int ac, char** av)
114
115 /* ttyname implies isatty */
116 SetTtyname(true, &st);
117-#ifdef MULTIUSER
118- tty_mode = (int)st.st_mode & 0777;
119-#endif
120
121 fl = fcntl(0, F_GETFL, 0);
122 if (fl != -1 && (fl & (O_RDWR|O_RDONLY|O_WRONLY)) == O_RDWR)
123@@ -2170,20 +2165,6 @@ DEFINE_VARARGS_FN(Panic)
124 if (D_userpid)
125 Kill(D_userpid, SIG_BYE);
126 }
127-#ifdef MULTIUSER
128- if (tty_oldmode >= 0) {
129-
130-# ifdef USE_SETEUID
131- if (setuid(own_uid))
132- xseteuid(own_uid); /* may be a loop. sigh. */
133-# else
134- setuid(own_uid);
135-# endif
136-
137- debug1("Panic: changing back modes from %s\n", attach_tty);
138- chmod(attach_tty, tty_oldmode);
139- }
140-#endif
141 eexit(1);
142 }
143
144--
1452.40.0
146
diff --git a/meta/recipes-extended/screen/screen/CVE-2025-46804.patch b/meta/recipes-extended/screen/screen/CVE-2025-46804.patch
new file mode 100644
index 0000000000..918c2c5ce9
--- /dev/null
+++ b/meta/recipes-extended/screen/screen/CVE-2025-46804.patch
@@ -0,0 +1,131 @@
1From e0eef5aac453fa98a2664416a56c50ad1d00cb30 Mon Sep 17 00:00:00 2001
2From: Matthias Gerstner <matthias.gerstner@suse.de>
3Date: Mon, 12 May 2025 15:26:11 +0200
4Subject: [PATCH] fix CVE-2025-46804: avoid file existence test information
5 leaks
6
7In setuid-root context the current error messages give away whether
8certain paths not accessible by the real user exist and what type they
9have. To prevent this only output generic error messages in setuid-root
10context.
11
12In some situations, when an error is pertaining a directory and the
13directory is owner by the real user then we can still output more
14detailed diagnostics.
15
16This change can lead to less helpful error messages when Screen is
17install setuid-root. More complex changes would be needed to avoid this
18(e.g. only open the `SocketPath` with raised privileges when
19multi-attach is requested).
20
21There might still be lingering some code paths that allow such
22information leaks, since `SocketPath` is a global variable that is used
23across the code base. The majority of issues should be caught with this
24fix, however.
25
26CVE: CVE-2025-46804
27
28Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/screen.git/commit/?id=e0eef5aac453fa98a2664416a56c50ad1d00cb30]
29
30Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
31---
32 screen.c | 45 ++++++++++++++++++++++++++++++++++-----------
33 socket.c | 9 +++++++--
34 2 files changed, 41 insertions(+), 13 deletions(-)
35
36diff --git a/screen.c b/screen.c
37index 1a23e1a..6eec151 100644
38--- a/screen.c
39+++ b/screen.c
40@@ -1122,15 +1122,28 @@ int main(int ac, char** av)
41 #endif
42 }
43
44- if (stat(SockPath, &st) == -1)
45- Panic(errno, "Cannot access %s", SockPath);
46- else
47- if (!S_ISDIR(st.st_mode))
48+ if (stat(SockPath, &st) == -1) {
49+ if (eff_uid == real_uid) {
50+ Panic(errno, "Cannot access %s", SockPath);
51+ } else {
52+ Panic(0, "Error accessing %s", SockPath);
53+ }
54+ } else if (!S_ISDIR(st.st_mode)) {
55+ if (eff_uid == real_uid || st.st_uid == real_uid) {
56 Panic(0, "%s is not a directory.", SockPath);
57+ } else {
58+ Panic(0, "Error accessing %s", SockPath);
59+ }
60+ }
61 #ifdef MULTIUSER
62 if (multi) {
63- if ((int)st.st_uid != multi_uid)
64- Panic(0, "%s is not the owner of %s.", multi, SockPath);
65+ if ((int)st.st_uid != multi_uid) {
66+ if (eff_uid == real_uid || st.st_uid == real_uid) {
67+ Panic(0, "%s is not the owner of %s.", multi, SockPath);
68+ } else {
69+ Panic(0, "Error accessing %s", SockPath);
70+ }
71+ }
72 }
73 else
74 #endif
75@@ -1144,9 +1157,13 @@ int main(int ac, char** av)
76 Panic(0, "You are not the owner of %s.", SockPath);
77 #endif
78 }
79-
80- if ((st.st_mode & 0777) != 0700)
81- Panic(0, "Directory %s must have mode 700.", SockPath);
82+ if ((st.st_mode & 0777) != 0700) {
83+ if (eff_uid == real_uid || st.st_uid == real_uid) {
84+ Panic(0, "Directory %s must have mode 700.", SockPath);
85+ } else {
86+ Panic(0, "Error accessing %s", SockPath);
87+ }
88+ }
89 if (SockMatch && index(SockMatch, '/'))
90 Panic(0, "Bad session name '%s'", SockMatch);
91 SockName = SockPath + strlen(SockPath) + 1;
92@@ -1184,8 +1201,14 @@ int main(int ac, char** av)
93 else
94 exit(9 + (fo || oth ? 1 : 0) + fo);
95 }
96- if (fo == 0)
97- Panic(0, "No Sockets found in %s.\n", SockPath);
98+ if (fo == 0) {
99+ if (eff_uid == real_uid || st.st_uid == real_uid) {
100+ Panic(0, "No Sockets found in %s.\n", SockPath);
101+ } else {
102+ Panic(0, "Error accessing %s", SockPath);
103+ }
104+ }
105+
106 Msg(0, "%d Socket%s in %s.", fo, fo > 1 ? "s" : "", SockPath);
107 eexit(0);
108 }
109diff --git a/socket.c b/socket.c
110index 54d8cb8..6c3502f 100644
111--- a/socket.c
112+++ b/socket.c
113@@ -169,8 +169,13 @@ bool *is_sock;
114 xsetegid(real_gid);
115 #endif
116
117- if ((dirp = opendir(SockPath)) == 0)
118- Panic(errno, "Cannot opendir %s", SockPath);
119+ if ((dirp = opendir(SockPath)) == 0) {
120+ if (eff_uid == real_uid) {
121+ Panic(errno, "Cannot opendir %s", SockPath);
122+ } else {
123+ Panic(0, "Error accessing %s", SockPath);
124+ }
125+ }
126
127 slist = 0;
128 slisttail = &slist;
129--
1302.40.0
131
diff --git a/meta/recipes-extended/screen/screen/CVE-2025-46805.patch b/meta/recipes-extended/screen/screen/CVE-2025-46805.patch
new file mode 100644
index 0000000000..e0207b6072
--- /dev/null
+++ b/meta/recipes-extended/screen/screen/CVE-2025-46805.patch
@@ -0,0 +1,101 @@
1From aa9f51f996a22470b8461d2b6a32e62c7ec30ed5 Mon Sep 17 00:00:00 2001
2From: Axel Beckert <abe@debian.org>
3Date: Mon, 19 May 2025 00:42:42 +0200
4Subject: fix CVE-2025-46805: socket.c - don't send signals with root
5
6Gbp-Pq: fix-CVE-2025-46805-socket.c-don-t-send-signals-with-.patch.
7
8Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/screen/patch/?id=aa9f51f996a22470b8461d2b6a32e62c7ec30ed5
9Upstream commit https://git.savannah.gnu.org/cgit/screen.git/commit/?id=161f85b98b7e1d5e4893aeed20f4cdb5e3dfaaa4]
10CVE: CVE-2025-46805
11Signed-off-by: Ashish Sharma <asharma@mvista.com>
12
13 socket.c | 21 +++++++++++++--------
14 1 file changed, 13 insertions(+), 8 deletions(-)
15
16diff --git a/socket.c b/socket.c
17index e268e3d..11b5e59 100644
18--- a/socket.c
19+++ b/socket.c
20@@ -832,6 +832,11 @@ int pid;
21 return UserStatus();
22 }
23
24+static void KillUnpriv(pid_t pid, int sig) {
25+ UserContext();
26+ UserReturn(kill(pid, sig));
27+}
28+
29 #ifdef hpux
30 /*
31 * From: "F. K. Bruner" <napalm@ugcs.caltech.edu>
32@@ -917,14 +922,14 @@ struct win *wi;
33 {
34 Msg(errno, "Could not perform necessary sanity checks on pts device.");
35 close(i);
36- Kill(pid, SIG_BYE);
37+ KillUnpriv(pid, SIG_BYE);
38 return -1;
39 }
40 if (strcmp(ttyname_in_ns, m->m_tty))
41 {
42 Msg(errno, "Attach: passed fd does not match tty: %s - %s!", ttyname_in_ns, m->m_tty[0] != '\0' ? m->m_tty : "(null)");
43 close(i);
44- Kill(pid, SIG_BYE);
45+ KillUnpriv(pid, SIG_BYE);
46 return -1;
47 }
48 /* m->m_tty so far contains the actual name of the pts device in the
49@@ -941,19 +946,19 @@ struct win *wi;
50 {
51 Msg(errno, "Attach: passed fd does not match tty: %s - %s!", m->m_tty, myttyname ? myttyname : "NULL");
52 close(i);
53- Kill(pid, SIG_BYE);
54+ KillUnpriv(pid, SIG_BYE);
55 return -1;
56 }
57 }
58 else if ((i = secopen(m->m_tty, O_RDWR | O_NONBLOCK, 0)) < 0)
59 {
60 Msg(errno, "Attach: Could not open %s!", m->m_tty);
61- Kill(pid, SIG_BYE);
62+ KillUnpriv(pid, SIG_BYE);
63 return -1;
64 }
65 #ifdef MULTIUSER
66 if (attach)
67- Kill(pid, SIGCONT);
68+ KillUnpriv(pid, SIGCONT);
69 #endif
70
71 #if defined(ultrix) || defined(pyr) || defined(NeXT)
72@@ -966,7 +971,7 @@ struct win *wi;
73 {
74 write(i, "Attaching from inside of screen?\n", 33);
75 close(i);
76- Kill(pid, SIG_BYE);
77+ KillUnpriv(pid, SIG_BYE);
78 Msg(0, "Attach msg ignored: coming from inside.");
79 return -1;
80 }
81@@ -977,7 +982,7 @@ struct win *wi;
82 {
83 write(i, "Access to session denied.\n", 26);
84 close(i);
85- Kill(pid, SIG_BYE);
86+ KillUnpriv(pid, SIG_BYE);
87 Msg(0, "Attach: access denied for user %s.", user);
88 return -1;
89 }
90@@ -1295,7 +1300,7 @@ ReceiveMsg()
91 Msg(0, "Query attempt with bad pid(%d)!", m.m.command.apid);
92 }
93 else {
94- Kill(m.m.command.apid,
95+ KillUnpriv(m.m.command.apid,
96 (queryflag >= 0)
97 ? SIGCONT
98 : SIG_BYE); /* Send SIG_BYE if an error happened */
99--
100cgit v1.2.3
101
diff --git a/meta/recipes-extended/screen/screen_4.9.1.bb b/meta/recipes-extended/screen/screen_4.9.1.bb
index 7b040e6b57..706351a593 100644
--- a/meta/recipes-extended/screen/screen_4.9.1.bb
+++ b/meta/recipes-extended/screen/screen_4.9.1.bb
@@ -21,6 +21,9 @@ SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \
21 file://0002-comm.h-now-depends-on-term.h.patch \ 21 file://0002-comm.h-now-depends-on-term.h.patch \
22 file://0001-fix-for-multijob-build.patch \ 22 file://0001-fix-for-multijob-build.patch \
23 file://0001-Remove-more-compatibility-stuff.patch \ 23 file://0001-Remove-more-compatibility-stuff.patch \
24 file://CVE-2025-46805.patch \
25 file://CVE-2025-46802.patch \
26 file://CVE-2025-46804.patch \
24 " 27 "
25 28
26SRC_URI[sha256sum] = "26cef3e3c42571c0d484ad6faf110c5c15091fbf872b06fa7aa4766c7405ac69" 29SRC_URI[sha256sum] = "26cef3e3c42571c0d484ad6faf110c5c15091fbf872b06fa7aa4766c7405ac69"
diff --git a/meta/recipes-extended/timezone/timezone.inc b/meta/recipes-extended/timezone/timezone.inc
index 4734adcc08..f21bedf4fc 100644
--- a/meta/recipes-extended/timezone/timezone.inc
+++ b/meta/recipes-extended/timezone/timezone.inc
@@ -6,7 +6,7 @@ SECTION = "base"
6LICENSE = "PD & BSD-3-Clause" 6LICENSE = "PD & BSD-3-Clause"
7LIC_FILES_CHKSUM = "file://LICENSE;md5=c679c9d6b02bc2757b3eaf8f53c43fba" 7LIC_FILES_CHKSUM = "file://LICENSE;md5=c679c9d6b02bc2757b3eaf8f53c43fba"
8 8
9PV = "2024a" 9PV = "2025b"
10 10
11SRC_URI =" http://www.iana.org/time-zones/repository/releases/tzcode${PV}.tar.gz;name=tzcode;subdir=tz \ 11SRC_URI =" http://www.iana.org/time-zones/repository/releases/tzcode${PV}.tar.gz;name=tzcode;subdir=tz \
12 http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata;subdir=tz \ 12 http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata;subdir=tz \
@@ -16,5 +16,5 @@ S = "${WORKDIR}/tz"
16 16
17UPSTREAM_CHECK_URI = "http://www.iana.org/time-zones" 17UPSTREAM_CHECK_URI = "http://www.iana.org/time-zones"
18 18
19SRC_URI[tzcode.sha256sum] = "80072894adff5a458f1d143e16e4ca1d8b2a122c9c5399da482cb68cba6a1ff8" 19SRC_URI[tzcode.sha256sum] = "05f8fedb3525ee70d49c87d3fae78a8a0dbae4fe87aa565c65cda9948ae135ec"
20SRC_URI[tzdata.sha256sum] = "0d0434459acbd2059a7a8da1f3304a84a86591f6ed69c6248fffa502b6edffe3" 20SRC_URI[tzdata.sha256sum] = "11810413345fc7805017e27ea9fa4885fd74cd61b2911711ad038f5d28d71474"
diff --git a/meta/recipes-extended/timezone/tzcode-native.bb b/meta/recipes-extended/timezone/tzcode-native.bb
index d0b23a9d80..dc9f076377 100644
--- a/meta/recipes-extended/timezone/tzcode-native.bb
+++ b/meta/recipes-extended/timezone/tzcode-native.bb
@@ -4,7 +4,7 @@ SUMMARY = "tzcode, timezone zoneinfo utils -- zic, zdump, tzselect"
4 4
5inherit native 5inherit native
6 6
7EXTRA_OEMAKE += "cc='${CC}'" 7EXTRA_OEMAKE += "CC='${CC}'"
8 8
9do_install () { 9do_install () {
10 install -d ${D}${bindir}/ 10 install -d ${D}${bindir}/
diff --git a/meta/recipes-extended/wget/wget/CVE-2024-10524.patch b/meta/recipes-extended/wget/wget/CVE-2024-10524.patch
new file mode 100644
index 0000000000..21f990ee73
--- /dev/null
+++ b/meta/recipes-extended/wget/wget/CVE-2024-10524.patch
@@ -0,0 +1,197 @@
1From c419542d956a2607bbce5df64b9d378a8588d778 Mon Sep 17 00:00:00 2001
2From: Tim Rühsen <tim.ruehsen@gmx.de>
3Date: Sun, 27 Oct 2024 19:53:14 +0100
4Subject: [PATCH] Fix CVE-2024-10524 (drop support for shorthand URLs)
5
6* doc/wget.texi: Add documentation for removed support for shorthand URLs.
7* src/html-url.c (src/html-url.c): Call maybe_prepend_scheme.
8* src/main.c (main): Likewise.
9* src/retr.c (getproxy): Likewise.
10* src/url.c: Rename definition of rewrite_shorthand_url to maybe_prepend_scheme,
11 add new function is_valid_port.
12* src/url.h: Rename declaration of rewrite_shorthand_url to maybe_prepend_scheme.
13
14Reported-by: Goni Golan <gonig@jfrog.com>
15
16CVE: CVE-2024-10524
17
18Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/wget.git/commit/?id=c419542d956a2607bbce5df64b9d378a8588d778]
19
20Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
21---
22 doc/wget.texi | 12 ++++-------
23 src/html-url.c | 2 +-
24 src/main.c | 2 +-
25 src/retr.c | 2 +-
26 src/url.c | 57 ++++++++++++++++----------------------------------
27 src/url.h | 2 +-
28 6 files changed, 26 insertions(+), 51 deletions(-)
29
30diff --git a/doc/wget.texi b/doc/wget.texi
31index 3c24de2..503a03d 100644
32--- a/doc/wget.texi
33+++ b/doc/wget.texi
34@@ -314,8 +314,8 @@ for text files. Here is an example:
35 ftp://host/directory/file;type=a
36 @end example
37
38-Two alternative variants of @sc{url} specification are also supported,
39-because of historical (hysterical?) reasons and their widespreaded use.
40+The two alternative variants of @sc{url} specifications are no longer
41+supported because of security considerations:
42
43 @sc{ftp}-only syntax (supported by @code{NcFTP}):
44 @example
45@@ -327,12 +327,8 @@ host:/dir/file
46 host[:port]/dir/file
47 @end example
48
49-These two alternative forms are deprecated, and may cease being
50-supported in the future.
51-
52-If you do not understand the difference between these notations, or do
53-not know which one to use, just use the plain ordinary format you use
54-with your favorite browser, like @code{Lynx} or @code{Netscape}.
55+These two alternative forms have been deprecated long time ago,
56+and support is removed with version 1.22.0.
57
58 @c man begin OPTIONS
59
60diff --git a/src/html-url.c b/src/html-url.c
61index 896d6fc..3deea9c 100644
62--- a/src/html-url.c
63+++ b/src/html-url.c
64@@ -931,7 +931,7 @@ get_urls_file (const char *file)
65 url_text = merged;
66 }
67
68- new_url = rewrite_shorthand_url (url_text);
69+ new_url = maybe_prepend_scheme (url_text);
70 if (new_url)
71 {
72 xfree (url_text);
73diff --git a/src/main.c b/src/main.c
74index d1c3c3e..f1d7792 100644
75--- a/src/main.c
76+++ b/src/main.c
77@@ -2126,7 +2126,7 @@ only if outputting to a regular file.\n"));
78 struct iri *iri = iri_new ();
79 struct url *url_parsed;
80
81- t = rewrite_shorthand_url (argv[optind]);
82+ t = maybe_prepend_scheme (argv[optind]);
83 if (!t)
84 t = argv[optind];
85
86diff --git a/src/retr.c b/src/retr.c
87index 38c9fcf..a124046 100644
88--- a/src/retr.c
89+++ b/src/retr.c
90@@ -1493,7 +1493,7 @@ getproxy (struct url *u)
91
92 /* Handle shorthands. `rewritten_storage' is a kludge to allow
93 getproxy() to return static storage. */
94- rewritten_url = rewrite_shorthand_url (proxy);
95+ rewritten_url = maybe_prepend_scheme (proxy);
96 if (rewritten_url)
97 return rewritten_url;
98
99diff --git a/src/url.c b/src/url.c
100index 0acd3f3..6868825 100644
101--- a/src/url.c
102+++ b/src/url.c
103@@ -594,60 +594,39 @@ parse_credentials (const char *beg, const char *end, char **user, char **passwd)
104 return true;
105 }
106
107-/* Used by main.c: detect URLs written using the "shorthand" URL forms
108- originally popularized by Netscape and NcFTP. HTTP shorthands look
109- like this:
110-
111- www.foo.com[:port]/dir/file -> http://www.foo.com[:port]/dir/file
112- www.foo.com[:port] -> http://www.foo.com[:port]
113-
114- FTP shorthands look like this:
115-
116- foo.bar.com:dir/file -> ftp://foo.bar.com/dir/file
117- foo.bar.com:/absdir/file -> ftp://foo.bar.com//absdir/file
118+static bool is_valid_port(const char *p)
119+{
120+ unsigned port = (unsigned) atoi (p);
121+ if (port == 0 || port > 65535)
122+ return false;
123
124- If the URL needs not or cannot be rewritten, return NULL. */
125+ int digits = strspn (p, "0123456789");
126+ return digits && (p[digits] == '/' || p[digits] == '\0');
127+}
128
129+/* Prepend "http://" to url if scheme is missing, otherwise return NULL. */
130 char *
131-rewrite_shorthand_url (const char *url)
132+maybe_prepend_scheme (const char *url)
133 {
134- const char *p;
135- char *ret;
136-
137 if (url_scheme (url) != SCHEME_INVALID)
138 return NULL;
139
140- /* Look for a ':' or '/'. The former signifies NcFTP syntax, the
141- latter Netscape. */
142- p = strpbrk (url, ":/");
143+ const char *p = strchr (url, ':');
144 if (p == url)
145 return NULL;
146
147 /* If we're looking at "://", it means the URL uses a scheme we
148 don't support, which may include "https" when compiled without
149- SSL support. Don't bogusly rewrite such URLs. */
150+ SSL support. Don't bogusly prepend "http://" to such URLs. */
151 if (p && p[0] == ':' && p[1] == '/' && p[2] == '/')
152 return NULL;
153
154- if (p && *p == ':')
155- {
156- /* Colon indicates ftp, as in foo.bar.com:path. Check for
157- special case of http port number ("localhost:10000"). */
158- int digits = strspn (p + 1, "0123456789");
159- if (digits && (p[1 + digits] == '/' || p[1 + digits] == '\0'))
160- goto http;
161-
162- /* Turn "foo.bar.com:path" to "ftp://foo.bar.com/path". */
163- if ((ret = aprintf ("ftp://%s", url)) != NULL)
164- ret[6 + (p - url)] = '/';
165- }
166- else
167- {
168- http:
169- /* Just prepend "http://" to URL. */
170- ret = aprintf ("http://%s", url);
171- }
172- return ret;
173+ if (p && p[0] == ':' && !is_valid_port (p + 1))
174+ return NULL;
175+
176+
177+ fprintf(stderr, "Prepended http:// to '%s'\n", url);
178+ return aprintf ("http://%s", url);
179 }
180
181 static void split_path (const char *, char **, char **);
182diff --git a/src/url.h b/src/url.h
183index fb9da33..5f99b0a 100644
184--- a/src/url.h
185+++ b/src/url.h
186@@ -128,7 +128,7 @@ char *uri_merge (const char *, const char *);
187
188 int mkalldirs (const char *);
189
190-char *rewrite_shorthand_url (const char *);
191+char *maybe_prepend_scheme (const char *);
192 bool schemes_are_similar_p (enum url_scheme a, enum url_scheme b);
193
194 bool are_urls_equal (const char *u1, const char *u2);
195--
1962.40.0
197
diff --git a/meta/recipes-extended/wget/wget_1.21.4.bb b/meta/recipes-extended/wget/wget_1.21.4.bb
index bc65a8f7c8..b5f50f6c84 100644
--- a/meta/recipes-extended/wget/wget_1.21.4.bb
+++ b/meta/recipes-extended/wget/wget_1.21.4.bb
@@ -1,6 +1,7 @@
1SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \ 1SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
2 file://0002-improve-reproducibility.patch \ 2 file://0002-improve-reproducibility.patch \
3 file://CVE-2024-38428.patch \ 3 file://CVE-2024-38428.patch \
4 file://CVE-2024-10524.patch \
4 " 5 "
5 6
6SRC_URI[sha256sum] = "81542f5cefb8faacc39bbbc6c82ded80e3e4a88505ae72ea51df27525bcde04c" 7SRC_URI[sha256sum] = "81542f5cefb8faacc39bbbc6c82ded80e3e4a88505ae72ea51df27525bcde04c"
diff --git a/meta/recipes-extended/xz/xz/CVE-2025-31115-01.patch b/meta/recipes-extended/xz/xz/CVE-2025-31115-01.patch
new file mode 100644
index 0000000000..efbb9b1e12
--- /dev/null
+++ b/meta/recipes-extended/xz/xz/CVE-2025-31115-01.patch
@@ -0,0 +1,29 @@
1From bdb788137e1f1d967e0c9d885b859e5b95c1b5bf Mon Sep 17 00:00:00 2001
2From: Lasse Collin <lasse.collin@tukaani.org>
3Date: Thu, 3 Apr 2025 14:34:42 +0300
4Subject: [PATCH 1/4] liblzma: mt dec: Fix a comment
5
6Reviewed-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
7Thanks-to: Sam James <sam@gentoo.org>
8(cherry picked from commit 831b55b971cf579ee16a854f177c36b20d3c6999)
9
10CVE: CVE-2025-31115
11Upstream-Status: Backport [https://github.com/tukaani-project/xz/commit/bdb788137e1f1d967e0c9d885b859e5b95c1b5bf]
12Signed-off-by: Peter Marko <peter.marko@siemens.com>
13---
14 src/liblzma/common/stream_decoder_mt.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/src/liblzma/common/stream_decoder_mt.c b/src/liblzma/common/stream_decoder_mt.c
18index 76212b46..8b378852 100644
19--- a/src/liblzma/common/stream_decoder_mt.c
20+++ b/src/liblzma/common/stream_decoder_mt.c
21@@ -348,7 +348,7 @@ worker_enable_partial_update(void *thr_ptr)
22
23
24 /// Things do to at THR_STOP or when finishing a Block.
25-/// This is called with thr->mutex locked.
26+/// This is called with thr->coder->mutex locked.
27 static void
28 worker_stop(struct worker_thread *thr)
29 {
diff --git a/meta/recipes-extended/xz/xz/CVE-2025-31115-02.patch b/meta/recipes-extended/xz/xz/CVE-2025-31115-02.patch
new file mode 100644
index 0000000000..9a1351961d
--- /dev/null
+++ b/meta/recipes-extended/xz/xz/CVE-2025-31115-02.patch
@@ -0,0 +1,152 @@
1From 2ce9ab6588a94cbf04a9c174e562ea5feb00cfb3 Mon Sep 17 00:00:00 2001
2From: Lasse Collin <lasse.collin@tukaani.org>
3Date: Thu, 3 Apr 2025 14:34:42 +0300
4Subject: [PATCH 2/4] liblzma: mt dec: Simplify by removing the THR_STOP state
5
6The main thread can directly set THR_IDLE in threads_stop() which is
7called when errors are detected. threads_stop() won't return the stopped
8threads to the pool or free the memory pointed by thr->in anymore, but
9it doesn't matter because the existing workers won't be reused after
10an error. The resources will be cleaned up when threads_end() is
11called (reinitializing the decoder always calls threads_end()).
12
13Reviewed-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
14Thanks-to: Sam James <sam@gentoo.org>
15(cherry picked from commit c0c835964dfaeb2513a3c0bdb642105152fe9f34)
16
17CVE: CVE-2025-31115
18Upstream-Status: Backport [https://github.com/tukaani-project/xz/commit/2ce9ab6588a94cbf04a9c174e562ea5feb00cfb3]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 src/liblzma/common/stream_decoder_mt.c | 75 ++++++++++----------------
22 1 file changed, 29 insertions(+), 46 deletions(-)
23
24diff --git a/src/liblzma/common/stream_decoder_mt.c b/src/liblzma/common/stream_decoder_mt.c
25index 8b378852..e8e53587 100644
26--- a/src/liblzma/common/stream_decoder_mt.c
27+++ b/src/liblzma/common/stream_decoder_mt.c
28@@ -24,15 +24,10 @@ typedef enum {
29 THR_IDLE,
30
31 /// Decoding is in progress.
32- /// Main thread may change this to THR_STOP or THR_EXIT.
33+ /// Main thread may change this to THR_IDLE or THR_EXIT.
34 /// The worker thread may change this to THR_IDLE.
35 THR_RUN,
36
37- /// The main thread wants the thread to stop whatever it was doing
38- /// but not exit. Main thread may change this to THR_EXIT.
39- /// The worker thread may change this to THR_IDLE.
40- THR_STOP,
41-
42 /// The main thread wants the thread to exit.
43 THR_EXIT,
44
45@@ -347,27 +342,6 @@ worker_enable_partial_update(void *thr_ptr)
46 }
47
48
49-/// Things do to at THR_STOP or when finishing a Block.
50-/// This is called with thr->coder->mutex locked.
51-static void
52-worker_stop(struct worker_thread *thr)
53-{
54- // Update memory usage counters.
55- thr->coder->mem_in_use -= thr->in_size;
56- thr->in_size = 0; // thr->in was freed above.
57-
58- thr->coder->mem_in_use -= thr->mem_filters;
59- thr->coder->mem_cached += thr->mem_filters;
60-
61- // Put this thread to the stack of free threads.
62- thr->next = thr->coder->threads_free;
63- thr->coder->threads_free = thr;
64-
65- mythread_cond_signal(&thr->coder->cond);
66- return;
67-}
68-
69-
70 static MYTHREAD_RET_TYPE
71 worker_decoder(void *thr_ptr)
72 {
73@@ -398,17 +372,6 @@ next_loop_unlocked:
74 return MYTHREAD_RET_VALUE;
75 }
76
77- if (thr->state == THR_STOP) {
78- thr->state = THR_IDLE;
79- mythread_mutex_unlock(&thr->mutex);
80-
81- mythread_sync(thr->coder->mutex) {
82- worker_stop(thr);
83- }
84-
85- goto next_loop_lock;
86- }
87-
88 assert(thr->state == THR_RUN);
89
90 // Update progress info for get_progress().
91@@ -511,7 +474,22 @@ next_loop_unlocked:
92 && thr->coder->thread_error == LZMA_OK)
93 thr->coder->thread_error = ret;
94
95- worker_stop(thr);
96+ // Return the worker thread to the stack of available
97+ // threads.
98+ {
99+ // Update memory usage counters.
100+ thr->coder->mem_in_use -= thr->in_size;
101+ thr->in_size = 0; // thr->in was freed above.
102+
103+ thr->coder->mem_in_use -= thr->mem_filters;
104+ thr->coder->mem_cached += thr->mem_filters;
105+
106+ // Put this thread to the stack of free threads.
107+ thr->next = thr->coder->threads_free;
108+ thr->coder->threads_free = thr;
109+ }
110+
111+ mythread_cond_signal(&thr->coder->cond);
112 }
113
114 goto next_loop_lock;
115@@ -545,17 +523,22 @@ threads_end(struct lzma_stream_coder *coder, const lzma_allocator *allocator)
116 }
117
118
119+/// Tell worker threads to stop without doing any cleaning up.
120+/// The clean up will be done when threads_exit() is called;
121+/// it's not possible to reuse the threads after threads_stop().
122+///
123+/// This is called before returning an unrecoverable error code
124+/// to the application. It would be waste of processor time
125+/// to keep the threads running in such a situation.
126 static void
127 threads_stop(struct lzma_stream_coder *coder)
128 {
129 for (uint32_t i = 0; i < coder->threads_initialized; ++i) {
130+ // The threads that are in the THR_RUN state will stop
131+ // when they check the state the next time. There's no
132+ // need to signal coder->threads[i].cond.
133 mythread_sync(coder->threads[i].mutex) {
134- // The state must be changed conditionally because
135- // THR_IDLE -> THR_STOP is not a valid state change.
136- if (coder->threads[i].state != THR_IDLE) {
137- coder->threads[i].state = THR_STOP;
138- mythread_cond_signal(&coder->threads[i].cond);
139- }
140+ coder->threads[i].state = THR_IDLE;
141 }
142 }
143
144@@ -1949,7 +1932,7 @@ stream_decoder_mt_init(lzma_next_coder *next, const lzma_allocator *allocator,
145 // accounting from scratch, too. Changes in filter and block sizes may
146 // affect number of threads.
147 //
148- // FIXME? Reusing should be easy but unlike the single-threaded
149+ // Reusing threads doesn't seem worth it. Unlike the single-threaded
150 // decoder, with some types of input file combinations reusing
151 // could leave quite a lot of memory allocated but unused (first
152 // file could allocate a lot, the next files could use fewer
diff --git a/meta/recipes-extended/xz/xz/CVE-2025-31115-03.patch b/meta/recipes-extended/xz/xz/CVE-2025-31115-03.patch
new file mode 100644
index 0000000000..a40a024cb0
--- /dev/null
+++ b/meta/recipes-extended/xz/xz/CVE-2025-31115-03.patch
@@ -0,0 +1,98 @@
1From 9a9c17712bd2a070581d9239692e527a2fe13845 Mon Sep 17 00:00:00 2001
2From: Lasse Collin <lasse.collin@tukaani.org>
3Date: Thu, 3 Apr 2025 14:34:42 +0300
4Subject: [PATCH 3/4] liblzma: mt dec: Don't free the input buffer too early
5 (CVE-2025-31115)
6
7The input buffer must be valid as long as the main thread is writing
8to the worker-specific input buffer. Fix it by making the worker
9thread not free the buffer on errors and not return the worker thread to
10the pool. The input buffer will be freed when threads_end() is called.
11
12With invalid input, the bug could at least result in a crash. The
13effects include heap use after free and writing to an address based
14on the null pointer plus an offset.
15
16The bug has been there since the first committed version of the threaded
17decoder and thus affects versions from 5.3.3alpha to 5.8.0.
18
19As the commit message in 4cce3e27f529 says, I had made significant
20changes on top of Sebastian's patch. This bug was indeed introduced
21by my changes; it wasn't in Sebastian's version.
22
23Thanks to Harri K. Koskinen for discovering and reporting this issue.
24
25Fixes: 4cce3e27f529 ("liblzma: Add threaded .xz decompressor.")
26Reported-by: Harri K. Koskinen <x64nop@nannu.org>
27Reviewed-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
28Thanks-to: Sam James <sam@gentoo.org>
29(cherry picked from commit d5a2ffe41bb77b918a8c96084885d4dbe4bf6480)
30
31CVE: CVE-2025-31115
32Upstream-Status: Backport [https://github.com/tukaani-project/xz/commit/9a9c17712bd2a070581d9239692e527a2fe13845]
33Signed-off-by: Peter Marko <peter.marko@siemens.com>
34---
35 src/liblzma/common/stream_decoder_mt.c | 31 ++++++++++++++++++--------
36 1 file changed, 22 insertions(+), 9 deletions(-)
37
38diff --git a/src/liblzma/common/stream_decoder_mt.c b/src/liblzma/common/stream_decoder_mt.c
39index e8e53587..259c4c65 100644
40--- a/src/liblzma/common/stream_decoder_mt.c
41+++ b/src/liblzma/common/stream_decoder_mt.c
42@@ -436,8 +436,7 @@ next_loop_unlocked:
43 }
44
45 // Either we finished successfully (LZMA_STREAM_END) or an error
46- // occurred. Both cases are handled almost identically. The error
47- // case requires updating thr->coder->thread_error.
48+ // occurred.
49 //
50 // The sizes are in the Block Header and the Block decoder
51 // checks that they match, thus we know these:
52@@ -445,16 +444,30 @@ next_loop_unlocked:
53 assert(ret != LZMA_STREAM_END
54 || thr->out_pos == thr->block_options.uncompressed_size);
55
56- // Free the input buffer. Don't update in_size as we need
57- // it later to update thr->coder->mem_in_use.
58- lzma_free(thr->in, thr->allocator);
59- thr->in = NULL;
60-
61 mythread_sync(thr->mutex) {
62+ // Block decoder ensures this, but do a sanity check anyway
63+ // because thr->in_filled < thr->in_size means that the main
64+ // thread is still writing to thr->in.
65+ if (ret == LZMA_STREAM_END && thr->in_filled != thr->in_size) {
66+ assert(0);
67+ ret = LZMA_PROG_ERROR;
68+ }
69+
70 if (thr->state != THR_EXIT)
71 thr->state = THR_IDLE;
72 }
73
74+ // Free the input buffer. Don't update in_size as we need
75+ // it later to update thr->coder->mem_in_use.
76+ //
77+ // This step is skipped if an error occurred because the main thread
78+ // might still be writing to thr->in. The memory will be freed after
79+ // threads_end() sets thr->state = THR_EXIT.
80+ if (ret == LZMA_STREAM_END) {
81+ lzma_free(thr->in, thr->allocator);
82+ thr->in = NULL;
83+ }
84+
85 mythread_sync(thr->coder->mutex) {
86 // Move our progress info to the main thread.
87 thr->coder->progress_in += thr->in_pos;
88@@ -475,8 +488,8 @@ next_loop_unlocked:
89 thr->coder->thread_error = ret;
90
91 // Return the worker thread to the stack of available
92- // threads.
93- {
94+ // threads only if no errors occurred.
95+ if (ret == LZMA_STREAM_END) {
96 // Update memory usage counters.
97 thr->coder->mem_in_use -= thr->in_size;
98 thr->in_size = 0; // thr->in was freed above.
diff --git a/meta/recipes-extended/xz/xz/CVE-2025-31115-04.patch b/meta/recipes-extended/xz/xz/CVE-2025-31115-04.patch
new file mode 100644
index 0000000000..8dea412281
--- /dev/null
+++ b/meta/recipes-extended/xz/xz/CVE-2025-31115-04.patch
@@ -0,0 +1,56 @@
1From c8bb46c5a16ed02401f4a0b46c74f0f46c1b6434 Mon Sep 17 00:00:00 2001
2From: Lasse Collin <lasse.collin@tukaani.org>
3Date: Thu, 3 Apr 2025 14:34:42 +0300
4Subject: [PATCH 4/4] liblzma: mt dec: Don't modify thr->in_size in the worker
5 thread
6
7Don't set thr->in_size = 0 when returning the thread to the stack of
8available threads. Not only is it useless, but the main thread may
9read the value in SEQ_BLOCK_THR_RUN. With valid inputs, it made
10no difference if the main thread saw the original value or 0. With
11invalid inputs (when worker thread stops early), thr->in_size was
12no longer modified after the previous commit with the security fix
13("Don't free the input buffer too early").
14
15So while the bug appears harmless now, it's important to fix it because
16the variable was being modified without proper locking. It's trivial
17to fix because there is no need to change the value. Only main thread
18needs to set the value in (in SEQ_BLOCK_THR_INIT) when starting a new
19Block before the worker thread is activated.
20
21Fixes: 4cce3e27f529 ("liblzma: Add threaded .xz decompressor.")
22Reviewed-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
23Thanks-to: Sam James <sam@gentoo.org>
24(cherry picked from commit 8188048854e8d11071b8a50d093c74f4c030acc9)
25
26CVE: CVE-2025-31115
27Upstream-Status: Backport [https://github.com/tukaani-project/xz/commit/c8bb46c5a16ed02401f4a0b46c74f0f46c1b6434]
28Signed-off-by: Peter Marko <peter.marko@siemens.com>
29---
30 src/liblzma/common/stream_decoder_mt.c | 6 ++++--
31 1 file changed, 4 insertions(+), 2 deletions(-)
32
33diff --git a/src/liblzma/common/stream_decoder_mt.c b/src/liblzma/common/stream_decoder_mt.c
34index 259c4c65..6bbbe53b 100644
35--- a/src/liblzma/common/stream_decoder_mt.c
36+++ b/src/liblzma/common/stream_decoder_mt.c
37@@ -492,8 +492,6 @@ next_loop_unlocked:
38 if (ret == LZMA_STREAM_END) {
39 // Update memory usage counters.
40 thr->coder->mem_in_use -= thr->in_size;
41- thr->in_size = 0; // thr->in was freed above.
42-
43 thr->coder->mem_in_use -= thr->mem_filters;
44 thr->coder->mem_cached += thr->mem_filters;
45
46@@ -1558,6 +1556,10 @@ stream_decode_mt(void *coder_ptr, const lzma_allocator *allocator,
47 }
48
49 // Return if the input didn't contain the whole Block.
50+ //
51+ // NOTE: When we updated coder->thr->in_filled a few lines
52+ // above, the worker thread might by now have finished its
53+ // work and returned itself back to the stack of free threads.
54 if (coder->thr->in_filled < coder->thr->in_size) {
55 assert(*in_pos == in_size);
56 return LZMA_OK;
diff --git a/meta/recipes-extended/xz/xz_5.4.6.bb b/meta/recipes-extended/xz/xz_5.4.7.bb
index 3f82e476bf..563643d4d9 100644
--- a/meta/recipes-extended/xz/xz_5.4.6.bb
+++ b/meta/recipes-extended/xz/xz_5.4.7.bb
@@ -17,7 +17,7 @@ LICENSE:${PN}-dbg = "GPL-2.0-or-later"
17LICENSE:${PN}-locale = "GPL-2.0-or-later" 17LICENSE:${PN}-locale = "GPL-2.0-or-later"
18LICENSE:liblzma = "PD" 18LICENSE:liblzma = "PD"
19 19
20LIC_FILES_CHKSUM = "file://COPYING;md5=d4378ea9d5d1fc9ab0ae10d7948827d9 \ 20LIC_FILES_CHKSUM = "file://COPYING;md5=c8ea84ebe7b93cce676b54355dc6b2c0 \
21 file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ 21 file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
22 file://COPYING.GPLv3;md5=1ebbd3e34237af26da5dc08a4e440464 \ 22 file://COPYING.GPLv3;md5=1ebbd3e34237af26da5dc08a4e440464 \
23 file://COPYING.LGPLv2.1;md5=4fbd65380cdd255951079008b364516c \ 23 file://COPYING.LGPLv2.1;md5=4fbd65380cdd255951079008b364516c \
@@ -26,8 +26,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d4378ea9d5d1fc9ab0ae10d7948827d9 \
26 26
27SRC_URI = "https://github.com/tukaani-project/xz/releases/download/v${PV}/xz-${PV}.tar.gz \ 27SRC_URI = "https://github.com/tukaani-project/xz/releases/download/v${PV}/xz-${PV}.tar.gz \
28 file://run-ptest \ 28 file://run-ptest \
29 file://CVE-2025-31115-01.patch \
30 file://CVE-2025-31115-02.patch \
31 file://CVE-2025-31115-03.patch \
32 file://CVE-2025-31115-04.patch \
29 " 33 "
30SRC_URI[sha256sum] = "aeba3e03bf8140ddedf62a0a367158340520f6b384f75ca6045ccc6c0d43fd5c" 34SRC_URI[sha256sum] = "8db6664c48ca07908b92baedcfe7f3ba23f49ef2476864518ab5db6723836e71"
31UPSTREAM_CHECK_REGEX = "releases/tag/v(?P<pver>\d+(\.\d+)+)" 35UPSTREAM_CHECK_REGEX = "releases/tag/v(?P<pver>\d+(\.\d+)+)"
32UPSTREAM_CHECK_URI = "https://github.com/tukaani-project/xz/releases/" 36UPSTREAM_CHECK_URI = "https://github.com/tukaani-project/xz/releases/"
33 37
diff --git a/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb b/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb
index 497be6805a..aae69271ac 100644
--- a/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb
+++ b/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb
@@ -16,6 +16,7 @@ DEPENDS = " \
16 graphene \ 16 graphene \
17 harfbuzz \ 17 harfbuzz \
18 jpeg \ 18 jpeg \
19 libdrm \
19 libepoxy \ 20 libepoxy \
20 libpng \ 21 libpng \
21 librsvg \ 22 librsvg \
diff --git a/meta/recipes-graphics/builder/builder_0.1.bb b/meta/recipes-graphics/builder/builder_0.1.bb
index 52c9351f93..709a0b4608 100644
--- a/meta/recipes-graphics/builder/builder_0.1.bb
+++ b/meta/recipes-graphics/builder/builder_0.1.bb
@@ -28,4 +28,5 @@ do_install () {
28 chown builder.builder ${D}${sysconfdir}/mini_x/session.d/builder_session.sh 28 chown builder.builder ${D}${sysconfdir}/mini_x/session.d/builder_session.sh
29} 29}
30 30
31CVE_STATUS[CVE-2008-4178] = "cpe-incorrect: This CVE is for an unrelated builder" 31# do not report CVEs for other builder apps
32CVE_PRODUCT = "yoctoproject:builder"
diff --git a/meta/recipes-graphics/freetype/freetype/CVE-2025-27363.patch b/meta/recipes-graphics/freetype/freetype/CVE-2025-27363.patch
new file mode 100644
index 0000000000..0882b01498
--- /dev/null
+++ b/meta/recipes-graphics/freetype/freetype/CVE-2025-27363.patch
@@ -0,0 +1,33 @@
1From 73720c7c9958e87b3d134a7574d1720ad2d24442 Mon Sep 17 00:00:00 2001
2From: Alexei Podtelezhnikov <apodtele@gmail.com>
3Date: Sun, 23 Jun 2024 10:58:00 -0400
4Subject: [PATCH] * src/truetype/ttgload.c (load_truetype_glyph): Unsigned fix.
5
6CVE: CVE-2025-27363
7Upstream-Status: Backport [https://gitlab.freedesktop.org/freetype/freetype/-/commit/73720c7c9958e87b3d134a7574d1720ad2d24442]
8Signed-off-by: Peter Marko <peter.marko@siemens.com>
9---
10 src/truetype/ttgload.c | 4 ++--
11 1 file changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
14index 8cddc394c..b656ccf04 100644
15--- a/src/truetype/ttgload.c
16+++ b/src/truetype/ttgload.c
17@@ -1741,14 +1741,14 @@
18 if ( FT_IS_NAMED_INSTANCE( FT_FACE( face ) ) ||
19 FT_IS_VARIATION( FT_FACE( face ) ) )
20 {
21- short i, limit;
22+ FT_UShort i, limit;
23 FT_SubGlyph subglyph;
24
25 FT_Outline outline = { 0, 0, NULL, NULL, NULL, 0 };
26 FT_Vector* unrounded = NULL;
27
28
29- limit = (short)gloader->current.num_subglyphs;
30+ limit = (FT_UShort)gloader->current.num_subglyphs;
31
32 /* construct an outline structure for */
33 /* communication with `TT_Vary_Apply_Glyph_Deltas' */
diff --git a/meta/recipes-graphics/freetype/freetype_2.13.2.bb b/meta/recipes-graphics/freetype/freetype_2.13.2.bb
index 4e7a0ad160..ce7a615a3c 100644
--- a/meta/recipes-graphics/freetype/freetype_2.13.2.bb
+++ b/meta/recipes-graphics/freetype/freetype_2.13.2.bb
@@ -13,7 +13,9 @@ LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=843b6efc16f6b1652ec97f89d5a516c0 \
13 file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec \ 13 file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec \
14 " 14 "
15 15
16SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BP}.tar.xz" 16SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BP}.tar.xz \
17 file://CVE-2025-27363.patch \
18"
17SRC_URI[sha256sum] = "12991c4e55c506dd7f9b765933e62fd2be2e06d421505d7950a132e4f1bb484d" 19SRC_URI[sha256sum] = "12991c4e55c506dd7f9b765933e62fd2be2e06d421505d7950a132e4f1bb484d"
18 20
19UPSTREAM_CHECK_REGEX = "freetype-(?P<pver>\d+(\.\d+)+)" 21UPSTREAM_CHECK_REGEX = "freetype-(?P<pver>\d+(\.\d+)+)"
diff --git a/meta/recipes-graphics/libsdl2/libsdl2_2.30.1.bb b/meta/recipes-graphics/libsdl2/libsdl2_2.30.1.bb
index 891e91190a..7a14104671 100644
--- a/meta/recipes-graphics/libsdl2/libsdl2_2.30.1.bb
+++ b/meta/recipes-graphics/libsdl2/libsdl2_2.30.1.bb
@@ -67,6 +67,7 @@ PACKAGECONFIG[directfb] = "-DSDL_DIRECTFB=ON,-DSDL_DIRECTFB=OFF,directfb,direc
67PACKAGECONFIG[gles2] = "-DSDL_OPENGLES=ON,-DSDL_OPENGLES=OFF,virtual/libgles2" 67PACKAGECONFIG[gles2] = "-DSDL_OPENGLES=ON,-DSDL_OPENGLES=OFF,virtual/libgles2"
68PACKAGECONFIG[jack] = "-DSDL_JACK=ON,-DSDL_JACK=OFF,jack" 68PACKAGECONFIG[jack] = "-DSDL_JACK=ON,-DSDL_JACK=OFF,jack"
69PACKAGECONFIG[kmsdrm] = "-DSDL_KMSDRM=ON,-DSDL_KMSDRM=OFF,libdrm virtual/libgbm" 69PACKAGECONFIG[kmsdrm] = "-DSDL_KMSDRM=ON,-DSDL_KMSDRM=OFF,libdrm virtual/libgbm"
70PACKAGECONFIG[libsamplerate] = "-DSDL_LIBSAMPLERATE=ON,-DSDL_LIBSAMPLERATE=OFF,libsamplerate0"
70# The hidraw support doesn't catch Xbox, PS4 and Nintendo controllers, 71# The hidraw support doesn't catch Xbox, PS4 and Nintendo controllers,
71# so we'll just use libusb when it's available. 72# so we'll just use libusb when it's available.
72PACKAGECONFIG[libusb] = ",,libusb1" 73PACKAGECONFIG[libusb] = ",,libusb1"
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vrend-Fix-int-conversion-fatal-build-error-with-GCC-.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vrend-Fix-int-conversion-fatal-build-error-with-GCC-.patch
new file mode 100644
index 0000000000..9c49ee512a
--- /dev/null
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vrend-Fix-int-conversion-fatal-build-error-with-GCC-.patch
@@ -0,0 +1,41 @@
1From 464deabe4d1bfce6b8f414ab0945d9a62b66ddd4 Mon Sep 17 00:00:00 2001
2From: Purushottam Choudhary <purushottam27.kumar@lge.com>
3Date: Tue, 8 Oct 2024 11:47:21 +0530
4Subject: [PATCH] vrend: Fix int-conversion fatal build error with GCC-14
5
6Getting below error int conversion during compilation as one the
7platforms where EGLNativeDisplayType is an int instead of a pointer.
8
9| ../git/src/vrend_winsys_egl.c: In function 'virgl_egl_init':
10| ../git/src/vrend_winsys_egl.c:364:62: error: passing argument 2 of 'egl->funcs.epoxy_eglGetPlatformDisplay' makes pointer from
11| 364 | (EGLNativeDisplayType)egl->gbm->device, NULL);
12| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13| | |
14| | int
15| ../git/src/vrend_winsys_egl.c:364:62: note: expected 'void *' but argument is of type 'int'
16
17Upstream-Status: Backport [https://gitlab.freedesktop.org/virgl/virglrenderer/-/commit/464deabe4d1bfce6b8f414ab0945d9a62b66ddd4]
18
19Signed-off-by: Purushottam Choudhary <purushottam27.kumar@lge.com>
20Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1440>
21---
22
23 src/vrend_winsys_egl.c | 2 +-
24 1 file changed, 1 insertion(+), 1 deletion(-)
25
26diff --git a/src/vrend_winsys_egl.c b/src/vrend_winsys_egl.c
27index 9d9f410c..8750f6b2 100644
28--- a/src/vrend_winsys_egl.c
29+++ b/src/vrend_winsys_egl.c
30@@ -361,7 +361,7 @@ struct virgl_egl *virgl_egl_init(EGLNativeDisplayType display_id, bool surfacele
31 #ifdef ENABLE_GBM
32 else
33 egl->egl_display = egl->funcs.eglGetPlatformDisplay(EGL_PLATFORM_GBM_KHR,
34- (EGLNativeDisplayType)egl->gbm->device, NULL);
35+ (EGLNativeDisplayType*)egl->gbm->device, NULL);
36 #endif
37 } else {
38 #ifdef ENABLE_GBM
39--
402.34.1
41
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.1.bb b/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.1.bb
index 0501b0c59c..87f25a3461 100644
--- a/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.1.bb
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.1.bb
@@ -12,6 +12,7 @@ DEPENDS = "libdrm libepoxy virtual/egl virtual/libgbm"
12SRCREV = "690680e5f0f952e22424fca1538c1b24457a0868" 12SRCREV = "690680e5f0f952e22424fca1538c1b24457a0868"
13SRC_URI = "git://gitlab.freedesktop.org/virgl/virglrenderer.git;branch=main;protocol=https \ 13SRC_URI = "git://gitlab.freedesktop.org/virgl/virglrenderer.git;branch=main;protocol=https \
14 file://0001-meson.build-use-python3-directly-for-python.patch \ 14 file://0001-meson.build-use-python3-directly-for-python.patch \
15 file://0001-vrend-Fix-int-conversion-fatal-build-error-with-GCC-.patch \
15 " 16 "
16 17
17S = "${WORKDIR}/git" 18S = "${WORKDIR}/git"
diff --git a/meta/recipes-graphics/wayland/weston/0001-vnc-Allow-neatvnc-in-version-0.8.0.patch b/meta/recipes-graphics/wayland/weston/0001-vnc-Allow-neatvnc-in-version-0.8.0.patch
new file mode 100644
index 0000000000..4ac1c075fd
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston/0001-vnc-Allow-neatvnc-in-version-0.8.0.patch
@@ -0,0 +1,27 @@
1From 534cfa08ea0a0c2646b4aec20b16bf95f6d0aae6 Mon Sep 17 00:00:00 2001
2From: Lukasz Czechowski <lukasz.czechowski@thaumatec.com>
3Date: Mon, 3 Jun 2024 13:39:27 +0200
4Subject: [PATCH] vnc: Allow neatvnc in version 0.8.0
5
6Neat VNC 0.8.0 does not introduce any changes that breaks API used
7by VNC backend, so it is safe to extend compatibility.
8
9Upstream-Status: Backport [05e5405651054c580b248c4ab2791ed8d66369e3]
10Signed-off-by: Lukasz Czechowski <lukasz.czechowski@thaumatec.com>
11---
12 libweston/backend-vnc/meson.build | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/libweston/backend-vnc/meson.build b/libweston/backend-vnc/meson.build
16index b7b6916..39b15cf 100644
17--- a/libweston/backend-vnc/meson.build
18+++ b/libweston/backend-vnc/meson.build
19@@ -3,7 +3,7 @@ if not get_option('backend-vnc')
20 endif
21
22 config_h.set('BUILD_VNC_COMPOSITOR', '1')
23-dep_neatvnc = dependency('neatvnc', version: ['>= 0.7.0', '< 0.8.0'], required: false, fallback: ['neatvnc', 'neatvnc_dep'])
24+dep_neatvnc = dependency('neatvnc', version: ['>= 0.7.0', '< 0.9.0'], required: false, fallback: ['neatvnc', 'neatvnc_dep'])
25 if not dep_neatvnc.found()
26 error('VNC backend requires neatvnc which was not found. Or, you can use \'-Dbackend-vnc=false\'.')
27 endif
diff --git a/meta/recipes-graphics/wayland/weston_13.0.1.bb b/meta/recipes-graphics/wayland/weston_13.0.1.bb
index dd9517a4dd..d8f0279b65 100644
--- a/meta/recipes-graphics/wayland/weston_13.0.1.bb
+++ b/meta/recipes-graphics/wayland/weston_13.0.1.bb
@@ -8,6 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
8 8
9SRC_URI = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz \ 9SRC_URI = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz \
10 file://0001-libweston-tools-Include-libgen.h-for-basename-signat.patch \ 10 file://0001-libweston-tools-Include-libgen.h-for-basename-signat.patch \
11 file://0001-vnc-Allow-neatvnc-in-version-0.8.0.patch \
11 file://weston.png \ 12 file://weston.png \
12 file://weston.desktop \ 13 file://weston.desktop \
13 file://xwayland.weston-start \ 14 file://xwayland.weston-start \
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuall/noblank.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuall/noblank.conf
new file mode 100644
index 0000000000..9d40a9599a
--- /dev/null
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuall/noblank.conf
@@ -0,0 +1,7 @@
1# Disable screen blanking
2Section "ServerFlags"
3 Option "BlankTime" "0"
4 Option "StandbyTime" "0"
5 Option "SuspendTime" "0"
6 Option "OffTime" "0"
7EndSection
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf
deleted file mode 100644
index 3eb380a0a4..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf
+++ /dev/null
@@ -1,42 +0,0 @@
1
2Section "Files"
3EndSection
4
5Section "Device"
6 Identifier "Graphics Controller"
7 Driver "fbdev"
8EndSection
9
10Section "Monitor"
11 Identifier "Generic Monitor"
12 Option "DPMS"
13 # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
14 Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync
15 # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
16 ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
17 # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
18 ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync
19 # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
20 ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
21 # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
22 ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
23EndSection
24
25Section "Screen"
26 Identifier "Default Screen"
27 Device "Graphics Controller"
28 Monitor "Generic Monitor"
29 SubSection "Display"
30 Modes "640x480"
31 EndSubSection
32EndSection
33
34Section "ServerLayout"
35 Identifier "Default Layout"
36 Screen "Default Screen"
37 Option "AllowEmptyInput" "no"
38 Option "BlankTime" "0"
39 Option "StandbyTime" "0"
40 Option "SuspendTime" "0"
41 Option "OffTime" "0"
42EndSection
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf
deleted file mode 100644
index 3eb380a0a4..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf
+++ /dev/null
@@ -1,42 +0,0 @@
1
2Section "Files"
3EndSection
4
5Section "Device"
6 Identifier "Graphics Controller"
7 Driver "fbdev"
8EndSection
9
10Section "Monitor"
11 Identifier "Generic Monitor"
12 Option "DPMS"
13 # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
14 Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync
15 # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
16 ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
17 # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
18 ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync
19 # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
20 ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
21 # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
22 ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
23EndSection
24
25Section "Screen"
26 Identifier "Default Screen"
27 Device "Graphics Controller"
28 Monitor "Generic Monitor"
29 SubSection "Display"
30 Modes "640x480"
31 EndSubSection
32EndSection
33
34Section "ServerLayout"
35 Identifier "Default Layout"
36 Screen "Default Screen"
37 Option "AllowEmptyInput" "no"
38 Option "BlankTime" "0"
39 Option "StandbyTime" "0"
40 Option "SuspendTime" "0"
41 Option "OffTime" "0"
42EndSection
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf
deleted file mode 100644
index 3eb380a0a4..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf
+++ /dev/null
@@ -1,42 +0,0 @@
1
2Section "Files"
3EndSection
4
5Section "Device"
6 Identifier "Graphics Controller"
7 Driver "fbdev"
8EndSection
9
10Section "Monitor"
11 Identifier "Generic Monitor"
12 Option "DPMS"
13 # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
14 Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync
15 # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
16 ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
17 # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
18 ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync
19 # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
20 ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
21 # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
22 ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
23EndSection
24
25Section "Screen"
26 Identifier "Default Screen"
27 Device "Graphics Controller"
28 Monitor "Generic Monitor"
29 SubSection "Display"
30 Modes "640x480"
31 EndSubSection
32EndSection
33
34Section "ServerLayout"
35 Identifier "Default Layout"
36 Screen "Default Screen"
37 Option "AllowEmptyInput" "no"
38 Option "BlankTime" "0"
39 Option "StandbyTime" "0"
40 Option "SuspendTime" "0"
41 Option "OffTime" "0"
42EndSection
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86-64/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86-64/xorg.conf
deleted file mode 100644
index c01c3331c5..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86-64/xorg.conf
+++ /dev/null
@@ -1,37 +0,0 @@
1
2Section "Files"
3EndSection
4
5Section "Monitor"
6 Identifier "Generic Monitor"
7 Option "DPMS"
8 # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
9 Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync
10 # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
11 ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
12 # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
13 ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync
14 # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
15 ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
16 # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
17 ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
18EndSection
19
20Section "Screen"
21 Identifier "Default Screen"
22 Device "Graphics Controller"
23 Monitor "Generic Monitor"
24 SubSection "Display"
25 Modes "640x480"
26 EndSubSection
27EndSection
28
29Section "ServerLayout"
30 Identifier "Default Layout"
31 Screen "Default Screen"
32 Option "AllowEmptyInput" "no"
33 Option "BlankTime" "0"
34 Option "StandbyTime" "0"
35 Option "SuspendTime" "0"
36 Option "OffTime" "0"
37EndSection
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86/xorg.conf
deleted file mode 100644
index c01c3331c5..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86/xorg.conf
+++ /dev/null
@@ -1,37 +0,0 @@
1
2Section "Files"
3EndSection
4
5Section "Monitor"
6 Identifier "Generic Monitor"
7 Option "DPMS"
8 # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
9 Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync
10 # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
11 ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
12 # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
13 ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync
14 # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
15 ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
16 # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
17 ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
18EndSection
19
20Section "Screen"
21 Identifier "Default Screen"
22 Device "Graphics Controller"
23 Monitor "Generic Monitor"
24 SubSection "Display"
25 Modes "640x480"
26 EndSubSection
27EndSection
28
29Section "ServerLayout"
30 Identifier "Default Layout"
31 Screen "Default Screen"
32 Option "AllowEmptyInput" "no"
33 Option "BlankTime" "0"
34 Option "StandbyTime" "0"
35 Option "SuspendTime" "0"
36 Option "OffTime" "0"
37EndSection
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb
index 03f14cef2b..841d931e82 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb
@@ -5,6 +5,7 @@ LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" 5LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
6 6
7SRC_URI = "file://xorg.conf" 7SRC_URI = "file://xorg.conf"
8SRC_URI:append:qemuall = " file://noblank.conf"
8 9
9S = "${WORKDIR}" 10S = "${WORKDIR}"
10 11
@@ -18,4 +19,9 @@ do_install () {
18 install -d ${D}/${sysconfdir}/X11 19 install -d ${D}/${sysconfdir}/X11
19 install -m 0644 ${WORKDIR}/xorg.conf ${D}/${sysconfdir}/X11/ 20 install -m 0644 ${WORKDIR}/xorg.conf ${D}/${sysconfdir}/X11/
20 fi 21 fi
22
23 if test -s ${S}/noblank.conf; then
24 install -d ${D}/${sysconfdir}/X11/xorg.conf.d
25 install -m 0644 ${S}/noblank.conf ${D}/${sysconfdir}/X11/xorg.conf.d/
26 fi
21} 27}
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
index e2754426cf..815be6a498 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -177,3 +177,7 @@ python populate_packages:prepend() {
177} 177}
178 178
179CVE_STATUS[CVE-2023-5574] = "${@bb.utils.contains('PACKAGECONFIG', 'xvfb', 'unpatched', 'not-applicable-config: specific to Xvfb', d)}" 179CVE_STATUS[CVE-2023-5574] = "${@bb.utils.contains('PACKAGECONFIG', 'xvfb', 'unpatched', 'not-applicable-config: specific to Xvfb', d)}"
180
181CVE_STATUS_GROUPS = "CVE_STATUS_REDHAT"
182CVE_STATUS_REDHAT = "CVE-2025-26594 CVE-2025-26595 CVE-2025-26596 CVE-2025-26597 CVE-2025-26598 CVE-2025-26599 CVE-2025-26600 CVE-2025-26601"
183CVE_STATUS_REDHAT[status] = "fixed-version: these are tracked as versionless redhat CVEs in NVD DB, fixed in 21.1.16"
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.13.bb b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.16.bb
index 1f18c22fa8..38c81f2372 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.13.bb
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.16.bb
@@ -3,7 +3,7 @@ require xserver-xorg.inc
3SRC_URI += "file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \ 3SRC_URI += "file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \
4 file://0001-Avoid-duplicate-definitions-of-IOPortBase.patch \ 4 file://0001-Avoid-duplicate-definitions-of-IOPortBase.patch \
5 " 5 "
6SRC_URI[sha256sum] = "b45a02d5943f72236a360d3cc97e75134aa4f63039ff88c04686b508a3dc740c" 6SRC_URI[sha256sum] = "b14a116d2d805debc5b5b2aac505a279e69b217dae2fae2dfcb62400471a9970"
7 7
8# These extensions are now integrated into the server, so declare the migration 8# These extensions are now integrated into the server, so declare the migration
9# path for in-place upgrades. 9# path for in-place upgrades.
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2024-9632.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2024-9632.patch
new file mode 100644
index 0000000000..54888f6347
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2024-9632.patch
@@ -0,0 +1,59 @@
1From ba1d14f8eff2a123bd7ff4d48c02e1d5131358e0 Mon Sep 17 00:00:00 2001
2From: Matthieu Herrb <matthieu@herrb.eu>
3Date: Thu, 10 Oct 2024 10:37:28 +0200
4Subject: [PATCH] xkb: Fix buffer overflow in _XkbSetCompatMap()
5
6The _XkbSetCompatMap() function attempts to resize the `sym_interpret`
7buffer.
8
9However, It didn't update its size properly. It updated `num_si` only,
10without updating `size_si`.
11
12This may lead to local privilege escalation if the server is run as root
13or remote code execution (e.g. x11 over ssh).
14
15CVE-2024-9632, ZDI-CAN-24756
16
17This vulnerability was discovered by:
18Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
19
20Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
21Tested-by: Peter Hutterer <peter.hutterer@who-t.net>
22Reviewed-by: José Expósito <jexposit@redhat.com>
23(cherry picked from commit 85b77657)
24
25Part-of: <!1734>
26
27CVE: CVE-2024-9632
28Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/ba1d14f8eff2a123bd7ff4d48c02e1d5131358e0]
29
30Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
31Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
32---
33 xkb/xkb.c | 8 ++++----
34 1 file changed, 4 insertions(+), 4 deletions(-)
35
36diff --git a/xkb/xkb.c b/xkb/xkb.c
37index 276dc19..7da00a0 100644
38--- a/xkb/xkb.c
39+++ b/xkb/xkb.c
40@@ -2992,13 +2992,13 @@ _XkbSetCompatMap(ClientPtr client, DeviceIntPtr dev,
41 XkbSymInterpretPtr sym;
42 unsigned int skipped = 0;
43
44- if ((unsigned) (req->firstSI + req->nSI) > compat->num_si) {
45- compat->num_si = req->firstSI + req->nSI;
46+ if ((unsigned) (req->firstSI + req->nSI) > compat->size_si) {
47+ compat->num_si = compat->size_si = req->firstSI + req->nSI;
48 compat->sym_interpret = reallocarray(compat->sym_interpret,
49- compat->num_si,
50+ compat->size_si,
51 sizeof(XkbSymInterpretRec));
52 if (!compat->sym_interpret) {
53- compat->num_si = 0;
54+ compat->num_si = compat->size_si = 0;
55 return BadAlloc;
56 }
57 }
58--
592.40.0
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26594-1.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26594-1.patch
new file mode 100644
index 0000000000..f34a89e6ea
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26594-1.patch
@@ -0,0 +1,54 @@
1From 01642f263f12becf803b19be4db95a4a83f94acc Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Wed, 27 Nov 2024 11:27:05 +0100
4Subject: [PATCH] Cursor: Refuse to free the root cursor
5
6If a cursor reference count drops to 0, the cursor is freed.
7
8The root cursor however is referenced with a specific global variable,
9and when the root cursor is freed, the global variable may still point
10to freed memory.
11
12Make sure to prevent the rootCursor from being explicitly freed by a
13client.
14
15CVE-2025-26594, ZDI-CAN-25544
16
17This vulnerability was discovered by:
18Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
19
20v2: Explicitly forbid XFreeCursor() on the root cursor (Peter Hutterer
21<peter.hutterer@who-t.net>)
22v3: Return BadCursor instead of BadValue (Michel Danzer
23<michel@daenzer.net>)
24
25Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
26Suggested-by: Peter Hutterer <peter.hutterer@who-t.net>
27Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
28Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
29
30Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/01642f26]
31CVE: CVE-2025-26594
32Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
33---
34 dix/dispatch.c | 4 ++++
35 1 file changed, 4 insertions(+)
36
37diff --git a/dix/dispatch.c b/dix/dispatch.c
38index 4602961..30b95c1 100644
39--- a/dix/dispatch.c
40+++ b/dix/dispatch.c
41@@ -3107,6 +3107,10 @@ ProcFreeCursor(ClientPtr client)
42 rc = dixLookupResourceByType((void **) &pCursor, stuff->id, RT_CURSOR,
43 client, DixDestroyAccess);
44 if (rc == Success) {
45+ if (pCursor == rootCursor) {
46+ client->errorValue = stuff->id;
47+ return BadCursor;
48+ }
49 FreeResource(stuff->id, RT_NONE);
50 return Success;
51 }
52--
532.25.1
54
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26594-2.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26594-2.patch
new file mode 100644
index 0000000000..6ebf540ab9
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26594-2.patch
@@ -0,0 +1,51 @@
1From b0a09ba6020147961acc62d9c73d807b4cccd9f7 Mon Sep 17 00:00:00 2001
2From: Peter Hutterer <peter.hutterer@who-t.net>
3Date: Wed, 4 Dec 2024 15:49:43 +1000
4Subject: [PATCH] dix: keep a ref to the rootCursor
5
6CreateCursor returns a cursor with refcount 1 - that refcount is used by
7the resource system, any caller needs to call RefCursor to get their own
8reference. That happens correctly for normal cursors but for our
9rootCursor we keep a variable to the cursor despite not having a ref for
10ourselves.
11
12Fix this by reffing/unreffing the rootCursor to ensure our pointer is
13valid.
14
15Related to CVE-2025-26594, ZDI-CAN-25544
16
17Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
18Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
19
20Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/b0a09ba6]
21CVE: CVE-2025-26594
22Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
23---
24 dix/main.c | 4 ++++
25 1 file changed, 4 insertions(+)
26
27diff --git a/dix/main.c b/dix/main.c
28index bfc8add..38e29ce 100644
29--- a/dix/main.c
30+++ b/dix/main.c
31@@ -231,6 +231,8 @@ dix_main(int argc, char *argv[], char *envp[])
32 FatalError("could not open default cursor font");
33 }
34
35+ rootCursor = RefCursor(rootCursor);
36+
37 #ifdef PANORAMIX
38 /*
39 * Consolidate window and colourmap information for each screen
40@@ -271,6 +273,8 @@ dix_main(int argc, char *argv[], char *envp[])
41
42 Dispatch();
43
44+ UnrefCursor(rootCursor);
45+
46 UndisplayDevices();
47 DisableAllDevices();
48
49--
502.25.1
51
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26595.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26595.patch
new file mode 100644
index 0000000000..a7478d9e2a
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26595.patch
@@ -0,0 +1,65 @@
1From 11fcda8753e994e15eb915d28cf487660ec8e722 Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Wed, 27 Nov 2024 14:41:45 +0100
4Subject: [PATCH] xkb: Fix buffer overflow in XkbVModMaskText()
5
6The code in XkbVModMaskText() allocates a fixed sized buffer on the
7stack and copies the virtual mod name.
8
9There's actually two issues in the code that can lead to a buffer
10overflow.
11
12First, the bound check mixes pointers and integers using misplaced
13parenthesis, defeating the bound check.
14
15But even though, if the check fails, the data is still copied, so the
16stack overflow will occur regardless.
17
18Change the logic to skip the copy entirely if the bound check fails.
19
20CVE-2025-26595, ZDI-CAN-25545
21
22This vulnerability was discovered by:
23Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
24
25Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
26Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
27Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
28
29Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/11fcda87]
30CVE: CVE-2025-26595
31Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
32---
33 xkb/xkbtext.c | 16 ++++++++--------
34 1 file changed, 8 insertions(+), 8 deletions(-)
35
36diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c
37index 0184664207..93262528bb 100644
38--- a/xkb/xkbtext.c
39+++ b/xkb/xkbtext.c
40@@ -173,14 +173,14 @@ XkbVModMaskText(XkbDescPtr xkb,
41 len = strlen(tmp) + 1 + (str == buf ? 0 : 1);
42 if (format == XkbCFile)
43 len += 4;
44- if ((str - (buf + len)) <= VMOD_BUFFER_SIZE) {
45- if (str != buf) {
46- if (format == XkbCFile)
47- *str++ = '|';
48- else
49- *str++ = '+';
50- len--;
51- }
52+ if ((str - buf) + len > VMOD_BUFFER_SIZE)
53+ continue; /* Skip */
54+ if (str != buf) {
55+ if (format == XkbCFile)
56+ *str++ = '|';
57+ else
58+ *str++ = '+';
59+ len--;
60 }
61 if (format == XkbCFile)
62 sprintf(str, "%sMask", tmp);
63--
64GitLab
65
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26596.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26596.patch
new file mode 100644
index 0000000000..f9df8d75ea
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26596.patch
@@ -0,0 +1,49 @@
1From 80d69f01423fc065c950e1ff4e8ddf9f675df773 Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Thu, 28 Nov 2024 11:49:34 +0100
4Subject: [PATCH] xkb: Fix computation of XkbSizeKeySyms
5
6The computation of the length in XkbSizeKeySyms() differs from what is
7actually written in XkbWriteKeySyms(), leading to a heap overflow.
8
9Fix the calculation in XkbSizeKeySyms() to match what kbWriteKeySyms()
10does.
11
12CVE-2025-26596, ZDI-CAN-25543
13
14This vulnerability was discovered by:
15Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
16
17Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
18Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
19Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
20
21Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/80d69f01]
22CVE: CVE-2025-26596
23Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
24---
25 xkb/xkb.c | 8 ++++----
26 1 file changed, 4 insertions(+), 4 deletions(-)
27
28diff --git a/xkb/xkb.c b/xkb/xkb.c
29index 85659382da..744dba63d7 100644
30--- a/xkb/xkb.c
31+++ b/xkb/xkb.c
32@@ -1095,10 +1095,10 @@ XkbSizeKeySyms(XkbDescPtr xkb, xkbGetMapReply * rep)
33 len = rep->nKeySyms * SIZEOF(xkbSymMapWireDesc);
34 symMap = &xkb->map->key_sym_map[rep->firstKeySym];
35 for (i = nSyms = 0; i < rep->nKeySyms; i++, symMap++) {
36- if (symMap->offset != 0) {
37- nSymsThisKey = XkbNumGroups(symMap->group_info) * symMap->width;
38- nSyms += nSymsThisKey;
39- }
40+ nSymsThisKey = XkbNumGroups(symMap->group_info) * symMap->width;
41+ if (nSymsThisKey == 0)
42+ continue;
43+ nSyms += nSymsThisKey;
44 }
45 len += nSyms * 4;
46 rep->totalSyms = nSyms;
47--
48GitLab
49
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26597.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26597.patch
new file mode 100644
index 0000000000..b0735d0b46
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26597.patch
@@ -0,0 +1,46 @@
1From 0e4ed94952b255c04fe910f6a1d9c852878dcd64 Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Thu, 28 Nov 2024 14:09:04 +0100
4Subject: [PATCH] xkb: Fix buffer overflow in XkbChangeTypesOfKey()
5
6If XkbChangeTypesOfKey() is called with nGroups == 0, it will resize the
7key syms to 0 but leave the key actions unchanged.
8
9If later, the same function is called with a non-zero value for nGroups,
10this will cause a buffer overflow because the key actions are of the wrong
11size.
12
13To avoid the issue, make sure to resize both the key syms and key actions
14when nGroups is 0.
15
16CVE-2025-26597, ZDI-CAN-25683
17
18This vulnerability was discovered by:
19Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
20
21Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
22Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
23Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
24
25Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/0e4ed949]
26CVE: CVE-2025-26597
27Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
28---
29 xkb/XKBMisc.c | 1 +
30 1 file changed, 1 insertion(+)
31
32diff --git a/xkb/XKBMisc.c b/xkb/XKBMisc.c
33index abbfed90eb..fd180fad2c 100644
34--- a/xkb/XKBMisc.c
35+++ b/xkb/XKBMisc.c
36@@ -553,6 +553,7 @@ XkbChangeTypesOfKey(XkbDescPtr xkb,
37 i = XkbSetNumGroups(i, 0);
38 xkb->map->key_sym_map[key].group_info = i;
39 XkbResizeKeySyms(xkb, key, 0);
40+ XkbResizeKeyActions(xkb, key, 0);
41 return Success;
42 }
43
44--
45GitLab
46
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26598.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26598.patch
new file mode 100644
index 0000000000..210a76262a
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26598.patch
@@ -0,0 +1,120 @@
1From bba9df1a9d57234c76c0b93f88dacb143d01bca2 Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Mon, 16 Dec 2024 11:25:11 +0100
4Subject: [PATCH] Xi: Fix barrier device search
5
6The function GetBarrierDevice() would search for the pointer device
7based on its device id and return the matching value, or supposedly NULL
8if no match was found.
9
10Unfortunately, as written, it would return the last element of the list
11if no matching device id was found which can lead to out of bounds
12memory access.
13
14Fix the search function to return NULL if not matching device is found,
15and adjust the callers to handle the case where the device cannot be
16found.
17
18CVE-2025-26598, ZDI-CAN-25740
19
20This vulnerability was discovered by:
21Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
22
23Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
24Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
25Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
26
27Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/bba9df1a]
28CVE: CVE-2025-26598
29Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
30---
31 Xi/xibarriers.c | 27 +++++++++++++++++++++++----
32 1 file changed, 23 insertions(+), 4 deletions(-)
33
34diff --git a/Xi/xibarriers.c b/Xi/xibarriers.c
35index 700b2b8c53..6761bcb49a 100644
36--- a/Xi/xibarriers.c
37+++ b/Xi/xibarriers.c
38@@ -132,14 +132,15 @@ static void FreePointerBarrierClient(struct PointerBarrierClient *c)
39
40 static struct PointerBarrierDevice *GetBarrierDevice(struct PointerBarrierClient *c, int deviceid)
41 {
42- struct PointerBarrierDevice *pbd = NULL;
43+ struct PointerBarrierDevice *p, *pbd = NULL;
44
45- xorg_list_for_each_entry(pbd, &c->per_device, entry) {
46- if (pbd->deviceid == deviceid)
47+ xorg_list_for_each_entry(p, &c->per_device, entry) {
48+ if (p->deviceid == deviceid) {
49+ pbd = p;
50 break;
51+ }
52 }
53
54- BUG_WARN(!pbd);
55 return pbd;
56 }
57
58@@ -340,6 +341,9 @@ barrier_find_nearest(BarrierScreenPtr cs, DeviceIntPtr dev,
59 double distance;
60
61 pbd = GetBarrierDevice(c, dev->id);
62+ if (!pbd)
63+ continue;
64+
65 if (pbd->seen)
66 continue;
67
68@@ -448,6 +452,9 @@ input_constrain_cursor(DeviceIntPtr dev, ScreenPtr screen,
69 nearest = &c->barrier;
70
71 pbd = GetBarrierDevice(c, master->id);
72+ if (!pbd)
73+ continue;
74+
75 new_sequence = !pbd->hit;
76
77 pbd->seen = TRUE;
78@@ -488,6 +495,9 @@ input_constrain_cursor(DeviceIntPtr dev, ScreenPtr screen,
79 int flags = 0;
80
81 pbd = GetBarrierDevice(c, master->id);
82+ if (!pbd)
83+ continue;
84+
85 pbd->seen = FALSE;
86 if (!pbd->hit)
87 continue;
88@@ -682,6 +692,9 @@ BarrierFreeBarrier(void *data, XID id)
89 continue;
90
91 pbd = GetBarrierDevice(c, dev->id);
92+ if (!pbd)
93+ continue;
94+
95 if (!pbd->hit)
96 continue;
97
98@@ -741,6 +754,8 @@ static void remove_master_func(void *res, XID id, void *devid)
99 barrier = container_of(b, struct PointerBarrierClient, barrier);
100
101 pbd = GetBarrierDevice(barrier, *deviceid);
102+ if (!pbd)
103+ return;
104
105 if (pbd->hit) {
106 BarrierEvent ev = {
107@@ -905,6 +920,10 @@ ProcXIBarrierReleasePointer(ClientPtr client)
108 barrier = container_of(b, struct PointerBarrierClient, barrier);
109
110 pbd = GetBarrierDevice(barrier, dev->id);
111+ if (!pbd) {
112+ client->errorValue = dev->id;
113+ return BadDevice;
114+ }
115
116 if (pbd->barrier_event_id == event_id)
117 pbd->release_event_id = event_id;
118--
119GitLab
120
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26599-1.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26599-1.patch
new file mode 100644
index 0000000000..60b68a0d9a
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26599-1.patch
@@ -0,0 +1,66 @@
1From c1ff84bef2569b4ba4be59323cf575d1798ba9be Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Tue, 17 Dec 2024 15:19:45 +0100
4Subject: [PATCH] composite: Handle failure to redirect in compRedirectWindow()
5
6The function compCheckRedirect() may fail if it cannot allocate the
7backing pixmap.
8
9In that case, compRedirectWindow() will return a BadAlloc error.
10
11However that failure code path will shortcut the validation of the
12window tree marked just before, which leaves the validate data partly
13initialized.
14
15That causes a use of uninitialized pointer later.
16
17The fix is to not shortcut the call to compHandleMarkedWindows() even in
18the case of compCheckRedirect() returning an error.
19
20CVE-2025-26599, ZDI-CAN-25851
21
22This vulnerability was discovered by:
23Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
24
25Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
26Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
27Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
28
29Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/c1ff84be]
30CVE: CVE-2025-26599
31Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
32---
33 composite/compalloc.c | 5 +++--
34 1 file changed, 3 insertions(+), 2 deletions(-)
35
36diff --git a/composite/compalloc.c b/composite/compalloc.c
37index eaabf0d..0bbbc55 100644
38--- a/composite/compalloc.c
39+++ b/composite/compalloc.c
40@@ -140,6 +140,7 @@ compRedirectWindow(ClientPtr pClient, WindowPtr pWin, int update)
41 CompScreenPtr cs = GetCompScreen(pWin->drawable.pScreen);
42 WindowPtr pLayerWin;
43 Bool anyMarked = FALSE;
44+ int status = Success;
45
46 if (pWin == cs->pOverlayWin) {
47 return Success;
48@@ -218,13 +219,13 @@ compRedirectWindow(ClientPtr pClient, WindowPtr pWin, int update)
49
50 if (!compCheckRedirect(pWin)) {
51 FreeResource(ccw->id, RT_NONE);
52- return BadAlloc;
53+ status = BadAlloc;
54 }
55
56 if (anyMarked)
57 compHandleMarkedWindows(pWin, pLayerWin);
58
59- return Success;
60+ return status;
61 }
62
63 void
64--
652.25.1
66
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26599-2.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26599-2.patch
new file mode 100644
index 0000000000..252b033261
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26599-2.patch
@@ -0,0 +1,129 @@
1From b07192a8bedb90b039dc0f70ae69daf047ff9598 Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Mon, 13 Jan 2025 16:09:43 +0100
4Subject: [PATCH] composite: initialize border clip even when pixmap alloc
5 fails
6
7If it fails to allocate the pixmap, the function compAllocPixmap() would
8return early and leave the borderClip region uninitialized, which may
9lead to the use of uninitialized value as reported by valgrind:
10
11 Conditional jump or move depends on uninitialised value(s)
12 at 0x4F9B33: compClipNotify (compwindow.c:317)
13 by 0x484FC9: miComputeClips (mivaltree.c:476)
14 by 0x48559A: miValidateTree (mivaltree.c:679)
15 by 0x4F0685: MapWindow (window.c:2693)
16 by 0x4A344A: ProcMapWindow (dispatch.c:922)
17 by 0x4A25B5: Dispatch (dispatch.c:560)
18 by 0x4B082A: dix_main (main.c:282)
19 by 0x429233: main (stubmain.c:34)
20 Uninitialised value was created by a heap allocation
21 at 0x4841866: malloc (vg_replace_malloc.c:446)
22 by 0x4F47BC: compRedirectWindow (compalloc.c:171)
23 by 0x4FA8AD: compCreateWindow (compwindow.c:592)
24 by 0x4EBB89: CreateWindow (window.c:925)
25 by 0x4A2E6E: ProcCreateWindow (dispatch.c:768)
26 by 0x4A25B5: Dispatch (dispatch.c:560)
27 by 0x4B082A: dix_main (main.c:282)
28 by 0x429233: main (stubmain.c:34)
29
30 Conditional jump or move depends on uninitialised value(s)
31 at 0x48EEDBC: pixman_region_translate (pixman-region.c:2233)
32 by 0x4F9255: RegionTranslate (regionstr.h:312)
33 by 0x4F9B7E: compClipNotify (compwindow.c:319)
34 by 0x484FC9: miComputeClips (mivaltree.c:476)
35 by 0x48559A: miValidateTree (mivaltree.c:679)
36 by 0x4F0685: MapWindow (window.c:2693)
37 by 0x4A344A: ProcMapWindow (dispatch.c:922)
38 by 0x4A25B5: Dispatch (dispatch.c:560)
39 by 0x4B082A: dix_main (main.c:282)
40 by 0x429233: main (stubmain.c:34)
41 Uninitialised value was created by a heap allocation
42 at 0x4841866: malloc (vg_replace_malloc.c:446)
43 by 0x4F47BC: compRedirectWindow (compalloc.c:171)
44 by 0x4FA8AD: compCreateWindow (compwindow.c:592)
45 by 0x4EBB89: CreateWindow (window.c:925)
46 by 0x4A2E6E: ProcCreateWindow (dispatch.c:768)
47 by 0x4A25B5: Dispatch (dispatch.c:560)
48 by 0x4B082A: dix_main (main.c:282)
49 by 0x429233: main (stubmain.c:34)
50
51 Conditional jump or move depends on uninitialised value(s)
52 at 0x48EEE33: UnknownInlinedFun (pixman-region.c:2241)
53 by 0x48EEE33: pixman_region_translate (pixman-region.c:2225)
54 by 0x4F9255: RegionTranslate (regionstr.h:312)
55 by 0x4F9B7E: compClipNotify (compwindow.c:319)
56 by 0x484FC9: miComputeClips (mivaltree.c:476)
57 by 0x48559A: miValidateTree (mivaltree.c:679)
58 by 0x4F0685: MapWindow (window.c:2693)
59 by 0x4A344A: ProcMapWindow (dispatch.c:922)
60 by 0x4A25B5: Dispatch (dispatch.c:560)
61 by 0x4B082A: dix_main (main.c:282)
62 by 0x429233: main (stubmain.c:34)
63 Uninitialised value was created by a heap allocation
64 at 0x4841866: malloc (vg_replace_malloc.c:446)
65 by 0x4F47BC: compRedirectWindow (compalloc.c:171)
66 by 0x4FA8AD: compCreateWindow (compwindow.c:592)
67 by 0x4EBB89: CreateWindow (window.c:925)
68 by 0x4A2E6E: ProcCreateWindow (dispatch.c:768)
69 by 0x4A25B5: Dispatch (dispatch.c:560)
70 by 0x4B082A: dix_main (main.c:282)
71 by 0x429233: main (stubmain.c:34)
72
73Fix compAllocPixmap() to initialize the border clip even if the creation
74of the backing pixmap has failed, to avoid depending later on
75uninitialized border clip values.
76
77Related to CVE-2025-26599, ZDI-CAN-25851
78
79Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
80Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
81Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
82
83Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/b07192a8]
84CVE: CVE-2025-26599
85Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
86---
87 composite/compalloc.c | 11 ++++++++---
88 1 file changed, 8 insertions(+), 3 deletions(-)
89
90diff --git a/composite/compalloc.c b/composite/compalloc.c
91index 7cf7351e00..4a1243170d 100644
92--- a/composite/compalloc.c
93+++ b/composite/compalloc.c
94@@ -605,9 +605,12 @@ compAllocPixmap(WindowPtr pWin)
95 int h = pWin->drawable.height + (bw << 1);
96 PixmapPtr pPixmap = compNewPixmap(pWin, x, y, w, h);
97 CompWindowPtr cw = GetCompWindow(pWin);
98+ Bool status;
99
100- if (!pPixmap)
101- return FALSE;
102+ if (!pPixmap) {
103+ status = FALSE;
104+ goto out;
105+ }
106 if (cw->update == CompositeRedirectAutomatic)
107 pWin->redirectDraw = RedirectDrawAutomatic;
108 else
109@@ -621,14 +624,16 @@ compAllocPixmap(WindowPtr pWin)
110 DamageRegister(&pWin->drawable, cw->damage);
111 cw->damageRegistered = TRUE;
112 }
113+ status = TRUE;
114
115+out:
116 /* Make sure our borderClip is up to date */
117 RegionUninit(&cw->borderClip);
118 RegionCopy(&cw->borderClip, &pWin->borderClip);
119 cw->borderClipX = pWin->drawable.x;
120 cw->borderClipY = pWin->drawable.y;
121
122- return TRUE;
123+ return status;
124 }
125
126 void
127--
128GitLab
129
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26600.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26600.patch
new file mode 100644
index 0000000000..43b47b3ca3
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26600.patch
@@ -0,0 +1,68 @@
1From 6e0f332ba4c8b8c9a9945dc9d7989bfe06f80e14 Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Mon, 16 Dec 2024 16:18:04 +0100
4Subject: [PATCH] dix: Dequeue pending events on frozen device on removal
5
6When a device is removed while still frozen, the events queued for that
7device remain while the device itself is freed.
8
9As a result, replaying the events will cause a use after free.
10
11To avoid the issue, make sure to dequeue and free any pending events on
12a frozen device when removed.
13
14CVE-2025-26600, ZDI-CAN-25871
15
16This vulnerability was discovered by:
17Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
18
19Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
20Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
21Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
22
23Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/6e0f332b]
24CVE: CVE-2025-26600
25Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
26---
27 dix/devices.c | 18 ++++++++++++++++++
28 1 file changed, 18 insertions(+)
29
30diff --git a/dix/devices.c b/dix/devices.c
31index 1516147..459f1ed 100644
32--- a/dix/devices.c
33+++ b/dix/devices.c
34@@ -962,6 +962,23 @@ FreeAllDeviceClasses(ClassesPtr classes)
35
36 }
37
38+static void
39+FreePendingFrozenDeviceEvents(DeviceIntPtr dev)
40+{
41+ QdEventPtr qe, tmp;
42+
43+ if (!dev->deviceGrab.sync.frozen)
44+ return;
45+
46+ /* Dequeue any frozen pending events */
47+ xorg_list_for_each_entry_safe(qe, tmp, &syncEvents.pending, next) {
48+ if (qe->device == dev) {
49+ xorg_list_del(&qe->next);
50+ free(qe);
51+ }
52+ }
53+}
54+
55 /**
56 * Close down a device and free all resources.
57 * Once closed down, the driver will probably not expect you that you'll ever
58@@ -1026,6 +1043,7 @@ CloseDevice(DeviceIntPtr dev)
59 free(dev->last.touches[j].valuators);
60 free(dev->last.touches);
61 dev->config_info = NULL;
62+ FreePendingFrozenDeviceEvents(dev);
63 dixFreePrivates(dev->devPrivates, PRIVATE_DEVICE);
64 free(dev);
65 }
66--
672.25.1
68
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-1.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-1.patch
new file mode 100644
index 0000000000..df5416a452
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-1.patch
@@ -0,0 +1,71 @@
1From 16a1242d0ffc7f45ed3c595ee7564b5c04287e0b Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Mon, 20 Jan 2025 16:52:01 +0100
4Subject: [PATCH] sync: Do not let sync objects uninitialized
5
6When changing an alarm, the change mask values are evaluated one after
7the other, changing the trigger values as requested and eventually,
8SyncInitTrigger() is called.
9
10SyncInitTrigger() will evaluate the XSyncCACounter first and may free
11the existing sync object.
12
13Other changes are then evaluated and may trigger an error and an early
14return, not adding the new sync object.
15
16This can be used to cause a use after free when the alarm eventually
17triggers.
18
19To avoid the issue, delete the existing sync object as late as possible
20only once we are sure that no further error will cause an early exit.
21
22CVE-2025-26601, ZDI-CAN-25870
23
24This vulnerability was discovered by:
25Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
26
27Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
28Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
29Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
30
31Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/16a1242d]
32CVE: CVE-2025-26601
33Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
34---
35 Xext/sync.c | 13 ++++++++-----
36 1 file changed, 8 insertions(+), 5 deletions(-)
37
38diff --git a/Xext/sync.c b/Xext/sync.c
39index ee0010e657..585cfa6f68 100644
40--- a/Xext/sync.c
41+++ b/Xext/sync.c
42@@ -360,11 +360,6 @@ SyncInitTrigger(ClientPtr client, SyncTrigger * pTrigger, XID syncObject,
43 client->errorValue = syncObject;
44 return rc;
45 }
46- if (pSync != pTrigger->pSync) { /* new counter for trigger */
47- SyncDeleteTriggerFromSyncObject(pTrigger);
48- pTrigger->pSync = pSync;
49- newSyncObject = TRUE;
50- }
51 }
52
53 /* if system counter, ask it what the current value is */
54@@ -432,6 +427,14 @@ SyncInitTrigger(ClientPtr client, SyncTrigger * pTrigger, XID syncObject,
55 }
56 }
57
58+ if (changes & XSyncCACounter) {
59+ if (pSync != pTrigger->pSync) { /* new counter for trigger */
60+ SyncDeleteTriggerFromSyncObject(pTrigger);
61+ pTrigger->pSync = pSync;
62+ newSyncObject = TRUE;
63+ }
64+ }
65+
66 /* we wait until we're sure there are no errors before registering
67 * a new counter on a trigger
68 */
69--
70GitLab
71
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-2.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-2.patch
new file mode 100644
index 0000000000..22e751c017
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-2.patch
@@ -0,0 +1,85 @@
1From f52cea2f93a0c891494eb3334894442a92368030 Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Mon, 20 Jan 2025 16:54:30 +0100
4Subject: [PATCH] sync: Check values before applying changes
5
6In SyncInitTrigger(), we would set the CheckTrigger function before
7validating the counter value.
8
9As a result, if the counter value overflowed, we would leave the
10function SyncInitTrigger() with the CheckTrigger applied but without
11updating the trigger object.
12
13To avoid that issue, move the portion of code checking for the trigger
14check value before updating the CheckTrigger function.
15
16Related to CVE-2025-26601, ZDI-CAN-25870
17
18Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
19Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
20Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
21
22Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/f52cea2f]
23CVE: CVE-2025-26601
24Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
25---
26 Xext/sync.c | 36 ++++++++++++++++++------------------
27 1 file changed, 18 insertions(+), 18 deletions(-)
28
29diff --git a/Xext/sync.c b/Xext/sync.c
30index 585cfa6f68..10302160fb 100644
31--- a/Xext/sync.c
32+++ b/Xext/sync.c
33@@ -381,6 +381,24 @@ SyncInitTrigger(ClientPtr client, SyncTrigger * pTrigger, XID syncObject,
34 }
35 }
36
37+ if (changes & (XSyncCAValueType | XSyncCAValue)) {
38+ if (pTrigger->value_type == XSyncAbsolute)
39+ pTrigger->test_value = pTrigger->wait_value;
40+ else { /* relative */
41+ Bool overflow;
42+
43+ if (pCounter == NULL)
44+ return BadMatch;
45+
46+ overflow = checked_int64_add(&pTrigger->test_value,
47+ pCounter->value, pTrigger->wait_value);
48+ if (overflow) {
49+ client->errorValue = pTrigger->wait_value >> 32;
50+ return BadValue;
51+ }
52+ }
53+ }
54+
55 if (changes & XSyncCATestType) {
56
57 if (pSync && SYNC_FENCE == pSync->type) {
58@@ -409,24 +427,6 @@ SyncInitTrigger(ClientPtr client, SyncTrigger * pTrigger, XID syncObject,
59 }
60 }
61
62- if (changes & (XSyncCAValueType | XSyncCAValue)) {
63- if (pTrigger->value_type == XSyncAbsolute)
64- pTrigger->test_value = pTrigger->wait_value;
65- else { /* relative */
66- Bool overflow;
67-
68- if (pCounter == NULL)
69- return BadMatch;
70-
71- overflow = checked_int64_add(&pTrigger->test_value,
72- pCounter->value, pTrigger->wait_value);
73- if (overflow) {
74- client->errorValue = pTrigger->wait_value >> 32;
75- return BadValue;
76- }
77- }
78- }
79-
80 if (changes & XSyncCACounter) {
81 if (pSync != pTrigger->pSync) { /* new counter for trigger */
82 SyncDeleteTriggerFromSyncObject(pTrigger);
83--
84GitLab
85
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-3.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-3.patch
new file mode 100644
index 0000000000..8d714f0302
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-3.patch
@@ -0,0 +1,52 @@
1From 8cbc90c8817306af75a60f494ec9dbb1061e50db Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Mon, 20 Jan 2025 17:06:07 +0100
4Subject: [PATCH] sync: Do not fail SyncAddTriggerToSyncObject()
5
6We do not want to return a failure at the very last step in
7SyncInitTrigger() after having all changes applied.
8
9SyncAddTriggerToSyncObject() must not fail on memory allocation, if the
10allocation of the SyncTriggerList fails, trigger a FatalError() instead.
11
12Related to CVE-2025-26601, ZDI-CAN-25870
13
14Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
15Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
16Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
17
18Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/8cbc90c8]
19CVE: CVE-2025-26601
20Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
21---
22 Xext/sync.c | 7 +++----
23 1 file changed, 3 insertions(+), 4 deletions(-)
24
25diff --git a/Xext/sync.c b/Xext/sync.c
26index 10302160fb..65f2d43780 100644
27--- a/Xext/sync.c
28+++ b/Xext/sync.c
29@@ -201,8 +201,8 @@ SyncAddTriggerToSyncObject(SyncTrigger * pTrigger)
30 return Success;
31 }
32
33- if (!(pCur = malloc(sizeof(SyncTriggerList))))
34- return BadAlloc;
35+ /* Failure is not an option, it's succeed or burst! */
36+ pCur = XNFalloc(sizeof(SyncTriggerList));
37
38 pCur->pTrigger = pTrigger;
39 pCur->next = pTrigger->pSync->pTriglist;
40@@ -439,8 +439,7 @@ SyncInitTrigger(ClientPtr client, SyncTrigger * pTrigger, XID syncObject,
41 * a new counter on a trigger
42 */
43 if (newSyncObject) {
44- if ((rc = SyncAddTriggerToSyncObject(pTrigger)) != Success)
45- return rc;
46+ SyncAddTriggerToSyncObject(pTrigger);
47 }
48 else if (pCounter && IsSystemCounter(pCounter)) {
49 SyncComputeBracketValues(pCounter);
50--
51GitLab
52
diff --git a/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-4.patch b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-4.patch
new file mode 100644
index 0000000000..e2261192fa
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland/CVE-2025-26601-4.patch
@@ -0,0 +1,132 @@
1From c285798984c6bb99e454a33772cde23d394d3dcd Mon Sep 17 00:00:00 2001
2From: Olivier Fourdan <ofourdan@redhat.com>
3Date: Mon, 20 Jan 2025 17:10:31 +0100
4Subject: [PATCH] sync: Apply changes last in SyncChangeAlarmAttributes()
5
6SyncChangeAlarmAttributes() would apply the various changes while
7checking for errors.
8
9If one of the changes triggers an error, the changes for the trigger,
10counter or delta value would remain, possibly leading to inconsistent
11changes.
12
13Postpone the actual changes until we're sure nothing else can go wrong.
14
15Related to CVE-2025-26601, ZDI-CAN-25870
16
17Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
18Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
19Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1828>
20
21Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/-/commit/c2857989]
22CVE: CVE-2025-26601
23Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
24---
25 Xext/sync.c | 42 +++++++++++++++++++++++++++---------------
26 1 file changed, 27 insertions(+), 15 deletions(-)
27
28diff --git a/Xext/sync.c b/Xext/sync.c
29index 65f2d43780..cab73be927 100644
30--- a/Xext/sync.c
31+++ b/Xext/sync.c
32@@ -830,8 +830,14 @@ SyncChangeAlarmAttributes(ClientPtr client, SyncAlarm * pAlarm, Mask mask,
33 int status;
34 XSyncCounter counter;
35 Mask origmask = mask;
36+ SyncTrigger trigger;
37+ Bool select_events_changed = FALSE;
38+ Bool select_events_value = FALSE;
39+ int64_t delta;
40
41- counter = pAlarm->trigger.pSync ? pAlarm->trigger.pSync->id : None;
42+ trigger = pAlarm->trigger;
43+ delta = pAlarm->delta;
44+ counter = trigger.pSync ? trigger.pSync->id : None;
45
46 while (mask) {
47 int index2 = lowbit(mask);
48@@ -847,24 +853,24 @@ SyncChangeAlarmAttributes(ClientPtr client, SyncAlarm * pAlarm, Mask mask,
49 case XSyncCAValueType:
50 mask &= ~XSyncCAValueType;
51 /* sanity check in SyncInitTrigger */
52- pAlarm->trigger.value_type = *values++;
53+ trigger.value_type = *values++;
54 break;
55
56 case XSyncCAValue:
57 mask &= ~XSyncCAValue;
58- pAlarm->trigger.wait_value = ((int64_t)values[0] << 32) | values[1];
59+ trigger.wait_value = ((int64_t)values[0] << 32) | values[1];
60 values += 2;
61 break;
62
63 case XSyncCATestType:
64 mask &= ~XSyncCATestType;
65 /* sanity check in SyncInitTrigger */
66- pAlarm->trigger.test_type = *values++;
67+ trigger.test_type = *values++;
68 break;
69
70 case XSyncCADelta:
71 mask &= ~XSyncCADelta;
72- pAlarm->delta = ((int64_t)values[0] << 32) | values[1];
73+ delta = ((int64_t)values[0] << 32) | values[1];
74 values += 2;
75 break;
76
77@@ -874,10 +880,8 @@ SyncChangeAlarmAttributes(ClientPtr client, SyncAlarm * pAlarm, Mask mask,
78 client->errorValue = *values;
79 return BadValue;
80 }
81- status = SyncEventSelectForAlarm(pAlarm, client,
82- (Bool) (*values++));
83- if (status != Success)
84- return status;
85+ select_events_value = (Bool) (*values++);
86+ select_events_changed = TRUE;
87 break;
88
89 default:
90@@ -886,25 +890,33 @@ SyncChangeAlarmAttributes(ClientPtr client, SyncAlarm * pAlarm, Mask mask,
91 }
92 }
93
94+ if (select_events_changed) {
95+ status = SyncEventSelectForAlarm(pAlarm, client, select_events_value);
96+ if (status != Success)
97+ return status;
98+ }
99+
100 /* "If the test-type is PositiveComparison or PositiveTransition
101 * and delta is less than zero, or if the test-type is
102 * NegativeComparison or NegativeTransition and delta is
103 * greater than zero, a Match error is generated."
104 */
105 if (origmask & (XSyncCADelta | XSyncCATestType)) {
106- if ((((pAlarm->trigger.test_type == XSyncPositiveComparison) ||
107- (pAlarm->trigger.test_type == XSyncPositiveTransition))
108- && pAlarm->delta < 0)
109+ if ((((trigger.test_type == XSyncPositiveComparison) ||
110+ (trigger.test_type == XSyncPositiveTransition))
111+ && delta < 0)
112 ||
113- (((pAlarm->trigger.test_type == XSyncNegativeComparison) ||
114- (pAlarm->trigger.test_type == XSyncNegativeTransition))
115- && pAlarm->delta > 0)
116+ (((trigger.test_type == XSyncNegativeComparison) ||
117+ (trigger.test_type == XSyncNegativeTransition))
118+ && delta > 0)
119 ) {
120 return BadMatch;
121 }
122 }
123
124 /* postpone this until now, when we're sure nothing else can go wrong */
125+ pAlarm->delta = delta;
126+ pAlarm->trigger = trigger;
127 if ((status = SyncInitTrigger(client, &pAlarm->trigger, counter, RTCounter,
128 origmask & XSyncCAAllTrigger)) != Success)
129 return status;
130--
131GitLab
132
diff --git a/meta/recipes-graphics/xwayland/xwayland_23.2.5.bb b/meta/recipes-graphics/xwayland/xwayland_23.2.5.bb
index b934a873d1..0265366393 100644
--- a/meta/recipes-graphics/xwayland/xwayland_23.2.5.bb
+++ b/meta/recipes-graphics/xwayland/xwayland_23.2.5.bb
@@ -9,7 +9,22 @@ HOMEPAGE = "https://fedoraproject.org/wiki/Changes/XwaylandStandalone"
9LICENSE = "MIT" 9LICENSE = "MIT"
10LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880" 10LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880"
11 11
12SRC_URI = "https://www.x.org/archive/individual/xserver/xwayland-${PV}.tar.xz" 12SRC_URI = "https://www.x.org/archive/individual/xserver/xwayland-${PV}.tar.xz \
13 file://CVE-2024-9632.patch \
14 file://CVE-2025-26594-1.patch \
15 file://CVE-2025-26594-2.patch \
16 file://CVE-2025-26595.patch \
17 file://CVE-2025-26596.patch \
18 file://CVE-2025-26597.patch \
19 file://CVE-2025-26598.patch \
20 file://CVE-2025-26599-1.patch \
21 file://CVE-2025-26599-2.patch \
22 file://CVE-2025-26600.patch \
23 file://CVE-2025-26601-1.patch \
24 file://CVE-2025-26601-2.patch \
25 file://CVE-2025-26601-3.patch \
26 file://CVE-2025-26601-4.patch \
27"
13SRC_URI[sha256sum] = "33ec7ff2687a59faaa52b9b09aa8caf118e7ecb6aed8953f526a625ff9f4bd90" 28SRC_URI[sha256sum] = "33ec7ff2687a59faaa52b9b09aa8caf118e7ecb6aed8953f526a625ff9f4bd90"
14 29
15UPSTREAM_CHECK_REGEX = "xwayland-(?P<pver>\d+(\.(?!90\d)\d+)+)\.tar" 30UPSTREAM_CHECK_REGEX = "xwayland-(?P<pver>\d+(\.(?!90\d)\d+)+)\.tar"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.13.bb b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.14.bb
index d5ea9d8529..d5ea9d8529 100644
--- a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.13.bb
+++ b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.14.bb
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-module_1.13.bb b/meta/recipes-kernel/cryptodev/cryptodev-module_1.14.bb
index 5192cf03ed..6fb75675bb 100644
--- a/meta/recipes-kernel/cryptodev/cryptodev-module_1.13.bb
+++ b/meta/recipes-kernel/cryptodev/cryptodev-module_1.14.bb
@@ -7,9 +7,6 @@ inherit module
7# Header file provided by a separate package 7# Header file provided by a separate package
8DEPENDS += "cryptodev-linux" 8DEPENDS += "cryptodev-linux"
9 9
10SRC_URI += "file://0001-Disable-installing-header-file-provided-by-another-p.patch \
11 "
12
13EXTRA_OEMAKE='KERNEL_DIR="${STAGING_KERNEL_DIR}" PREFIX="${D}"' 10EXTRA_OEMAKE='KERNEL_DIR="${STAGING_KERNEL_DIR}" PREFIX="${D}"'
14 11
15RCONFLICTS:${PN} = "ocf-linux" 12RCONFLICTS:${PN} = "ocf-linux"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.13.bb b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.14.bb
index 458ad8ecf2..f6a286e1b7 100644
--- a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.13.bb
+++ b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.14.bb
@@ -4,10 +4,6 @@ SUMMARY = "A test suite for /dev/crypto device driver"
4 4
5DEPENDS += "openssl" 5DEPENDS += "openssl"
6 6
7SRC_URI += " \
8 file://0001-tests-Makefile-do-not-use-Werror.patch \
9 "
10
11EXTRA_OEMAKE='KERNEL_DIR="${STAGING_EXECPREFIXDIR}" PREFIX="${D}"' 7EXTRA_OEMAKE='KERNEL_DIR="${STAGING_EXECPREFIXDIR}" PREFIX="${D}"'
12 8
13do_compile() { 9do_compile() {
diff --git a/meta/recipes-kernel/cryptodev/cryptodev.inc b/meta/recipes-kernel/cryptodev/cryptodev.inc
index 64a9c2926b..8d0aad4a01 100644
--- a/meta/recipes-kernel/cryptodev/cryptodev.inc
+++ b/meta/recipes-kernel/cryptodev/cryptodev.inc
@@ -10,8 +10,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
10 10
11SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux;branch=master;protocol=https \ 11SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux;branch=master;protocol=https \
12 " 12 "
13SRCREV = "bb8bc7cf60d2c0b097c8b3b0e807f805b577a53f" 13SRCREV = "135cbff90af2ba97d88f1472be595ce78721972c"
14PV = "1.13+git${SRCPV}" 14PV = "1.14"
15 15
16S = "${WORKDIR}/git" 16S = "${WORKDIR}/git"
17 17
diff --git a/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch b/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch
deleted file mode 100644
index c7fdef4da4..0000000000
--- a/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1From 66d85d3f26e21cf7c38b27de0dcc42376f5d853e Mon Sep 17 00:00:00 2001
2From: Denys Dmytriyenko <denys@ti.com>
3Date: Sun, 6 Apr 2014 19:51:39 -0400
4Subject: [PATCH] Disable installing header file provided by another package
5
6Signed-off-by: Denys Dmytriyenko <denys@ti.com>
7
8Upstream-Status: Inappropriate [ OE specific ]
9
10---
11 Makefile | 1 -
12 1 file changed, 1 deletion(-)
13
14diff --git a/Makefile b/Makefile
15index d83aee6..c8d8ae5 100644
16--- a/Makefile
17+++ b/Makefile
18@@ -36,7 +36,6 @@ install: modules_install
19
20 modules_install:
21 $(MAKE) $(KERNEL_MAKE_OPTS) modules_install
22- install -m 644 -D crypto/cryptodev.h $(DESTDIR)/$(includedir)/crypto/cryptodev.h
23
24 install_tests: tests
25 $(MAKE) -C tests install DESTDIR=$(PREFIX)
diff --git a/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch b/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch
deleted file mode 100644
index 3285548a57..0000000000
--- a/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1From 47438e53e1156db0916c0f4683a24fe4d82152f2 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Fri, 10 Sep 2021 10:44:42 +0200
4Subject: [PATCH] tests/Makefile: do not use -Werror
5
6Otherwise, openssl 3 deprecation warnings become errors.
7Reported at https://github.com/cryptodev-linux/cryptodev-linux/issues/67
8
9Upstream-Status: Inappropriate [upstream needs to update the code]
10Signed-off-by: Alexander Kanavin <alex@linutronix.de>
11
12---
13 tests/Makefile | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/tests/Makefile b/tests/Makefile
17index 2fb7a9a..e94f80e 100644
18--- a/tests/Makefile
19+++ b/tests/Makefile
20@@ -1,4 +1,4 @@
21-CFLAGS += -I.. $(CRYPTODEV_CFLAGS) -Wall -Werror
22+CFLAGS += -I.. $(CRYPTODEV_CFLAGS) -Wall
23
24 comp_progs := cipher_comp hash_comp hmac_comp
25
diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20240909.bb
index 5819d9287c..30c47d7720 100644
--- a/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb
+++ b/meta/recipes-kernel/linux-firmware/linux-firmware_20240909.bb
@@ -82,7 +82,7 @@ LICENSE = "\
82LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ 82LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
83 file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \ 83 file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \
84 file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \ 84 file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \
85 file://LICENSE.amdgpu;md5=a2589a05ea5b6bd2b7f4f623c7e7a649 \ 85 file://LICENSE.amdgpu;md5=1433dfea38c97a2e563a248a863dcb94 \
86 file://LICENSE.amd-ucode;md5=6ca90c57f7b248de1e25c7f68ffc4698 \ 86 file://LICENSE.amd-ucode;md5=6ca90c57f7b248de1e25c7f68ffc4698 \
87 file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \ 87 file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \
88 file://LICENSE.amphion_vpu;md5=2bcdc00527b2d0542bd92b52aaec2b60 \ 88 file://LICENSE.amphion_vpu;md5=2bcdc00527b2d0542bd92b52aaec2b60 \
@@ -142,7 +142,7 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
142 file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \ 142 file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \
143 file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \ 143 file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \
144 file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \ 144 file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \
145 file://LICENCE.ti-connectivity;md5=c5e02be633f1499c109d1652514d85ec \ 145 file://LICENCE.ti-connectivity;md5=3b1e9cf54aba8146dad4b735777d406f \
146 file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \ 146 file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \
147 file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \ 147 file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \
148 file://LICENCE.via_vt6656;md5=e4159694cba42d4377a912e78a6e850f \ 148 file://LICENCE.via_vt6656;md5=e4159694cba42d4377a912e78a6e850f \
@@ -154,7 +154,7 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
154 " 154 "
155# WHENCE checksum is defined separately to ease overriding it if 155# WHENCE checksum is defined separately to ease overriding it if
156# class-devupstream is selected. 156# class-devupstream is selected.
157WHENCE_CHKSUM = "514da1cd8b363373030f0c16749feb8d" 157WHENCE_CHKSUM = "6ae5ffd807c84809977286ad0b37acdb"
158 158
159# These are not common licenses, set NO_GENERIC_LICENSE for them 159# These are not common licenses, set NO_GENERIC_LICENSE for them
160# so that the license files will be copied from fetched source 160# so that the license files will be copied from fetched source
@@ -241,7 +241,7 @@ SRC_URI:class-devupstream = "git://git.kernel.org/pub/scm/linux/kernel/git/firmw
241# Pin this to the 20220509 release, override this in local.conf 241# Pin this to the 20220509 release, override this in local.conf
242SRCREV:class-devupstream ?= "b19cbdca78ab2adfd210c91be15a22568e8b8cae" 242SRCREV:class-devupstream ?= "b19cbdca78ab2adfd210c91be15a22568e8b8cae"
243 243
244SRC_URI[sha256sum] = "b2327a54ad1897c828008caf63af5ee15469ba723a5016be58f2b44f07bd4b94" 244SRC_URI[sha256sum] = "943fbd19883cf8eadf89e0b22422549db056557b1ecd30a56400615971369671"
245 245
246inherit allarch 246inherit allarch
247 247
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb
index 2c8725f27a..d855ee3f8a 100644
--- a/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb
@@ -14,13 +14,13 @@ python () {
14 raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") 14 raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
15} 15}
16 16
17SRCREV_machine ?= "f1958988835e4b36462e9a7762001b695989288c" 17SRCREV_machine ?= "1933814ca46d38977965bbfe58ee3a1f8aacfb36"
18SRCREV_meta ?= "c82d4e5d08201d0259c29a4d15ce1e72fc63c65f" 18SRCREV_meta ?= "8e66f449e449f9ae2809b6c395ed7089aa37d7a3"
19 19
20SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ 20SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \
21 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" 21 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https"
22 22
23LINUX_VERSION ?= "6.6.50" 23LINUX_VERSION ?= "6.6.92"
24 24
25LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 25LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
26 26
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb
index ce20fbc07d..382a74f648 100644
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb
@@ -8,7 +8,7 @@ require recipes-kernel/linux/linux-yocto.inc
8# CVE exclusions 8# CVE exclusions
9include recipes-kernel/linux/cve-exclusion_6.6.inc 9include recipes-kernel/linux/cve-exclusion_6.6.inc
10 10
11LINUX_VERSION ?= "6.6.50" 11LINUX_VERSION ?= "6.6.92"
12LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 12LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
13 13
14DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" 14DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -17,8 +17,8 @@ DEPENDS += "openssl-native util-linux-native"
17KMETA = "kernel-meta" 17KMETA = "kernel-meta"
18KCONF_BSP_AUDIT_LEVEL = "2" 18KCONF_BSP_AUDIT_LEVEL = "2"
19 19
20SRCREV_machine ?= "10604010520101e717ca658ada47b394a46e1539" 20SRCREV_machine ?= "c72b190dc393b310be436153c864144694b184a6"
21SRCREV_meta ?= "c82d4e5d08201d0259c29a4d15ce1e72fc63c65f" 21SRCREV_meta ?= "8e66f449e449f9ae2809b6c395ed7089aa37d7a3"
22 22
23PV = "${LINUX_VERSION}+git" 23PV = "${LINUX_VERSION}+git"
24 24
diff --git a/meta/recipes-kernel/linux/linux-yocto_6.6.bb b/meta/recipes-kernel/linux/linux-yocto_6.6.bb
index b871b30157..c1bb736e04 100644
--- a/meta/recipes-kernel/linux/linux-yocto_6.6.bb
+++ b/meta/recipes-kernel/linux/linux-yocto_6.6.bb
@@ -18,25 +18,25 @@ KBRANCH:qemux86-64 ?= "v6.6/standard/base"
18KBRANCH:qemuloongarch64 ?= "v6.6/standard/base" 18KBRANCH:qemuloongarch64 ?= "v6.6/standard/base"
19KBRANCH:qemumips64 ?= "v6.6/standard/mti-malta64" 19KBRANCH:qemumips64 ?= "v6.6/standard/mti-malta64"
20 20
21SRCREV_machine:qemuarm ?= "36f604ad9d400626d19666688399af0d0ae93e53" 21SRCREV_machine:qemuarm ?= "1d95b0a9486ae02a4eb38df55b94cb64485bd4c0"
22SRCREV_machine:qemuarm64 ?= "10604010520101e717ca658ada47b394a46e1539" 22SRCREV_machine:qemuarm64 ?= "8cd580eb06e43c9a4e9c26e1dd954a334f656fbd"
23SRCREV_machine:qemuloongarch64 ?= "10604010520101e717ca658ada47b394a46e1539" 23SRCREV_machine:qemuloongarch64 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
24SRCREV_machine:qemumips ?= "8ca27eda30aa6ceb72b61c784ebb057de07201ae" 24SRCREV_machine:qemumips ?= "a3bbede9b1c6dbd0b51132b8447adbbde1f46f85"
25SRCREV_machine:qemuppc ?= "10604010520101e717ca658ada47b394a46e1539" 25SRCREV_machine:qemuppc ?= "a5bba7e08dbb26c0dc7d7ec0624e903b7c6bac94"
26SRCREV_machine:qemuriscv64 ?= "10604010520101e717ca658ada47b394a46e1539" 26SRCREV_machine:qemuriscv64 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
27SRCREV_machine:qemuriscv32 ?= "10604010520101e717ca658ada47b394a46e1539" 27SRCREV_machine:qemuriscv32 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
28SRCREV_machine:qemux86 ?= "10604010520101e717ca658ada47b394a46e1539" 28SRCREV_machine:qemux86 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
29SRCREV_machine:qemux86-64 ?= "10604010520101e717ca658ada47b394a46e1539" 29SRCREV_machine:qemux86-64 ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
30SRCREV_machine:qemumips64 ?= "72b65c64c2fd2b4d252b4a93642acc268ca2f006" 30SRCREV_machine:qemumips64 ?= "a1ed8408c3b0bc729270cc2bd2c9dd0056ab9271"
31SRCREV_machine ?= "10604010520101e717ca658ada47b394a46e1539" 31SRCREV_machine ?= "6032c9c1ac18edd7c8eadd6f9f655556b5f5e77c"
32SRCREV_meta ?= "c82d4e5d08201d0259c29a4d15ce1e72fc63c65f" 32SRCREV_meta ?= "8e66f449e449f9ae2809b6c395ed7089aa37d7a3"
33 33
34# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll 34# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
35# get the <version>/base branch, which is pure upstream -stable, and the same 35# get the <version>/base branch, which is pure upstream -stable, and the same
36# meta SRCREV as the linux-yocto-standard builds. Select your version using the 36# meta SRCREV as the linux-yocto-standard builds. Select your version using the
37# normal PREFERRED_VERSION settings. 37# normal PREFERRED_VERSION settings.
38BBCLASSEXTEND = "devupstream:target" 38BBCLASSEXTEND = "devupstream:target"
39SRCREV_machine:class-devupstream ?= "ad07a29023cebd40848fce81e6732d671ede5fe6" 39SRCREV_machine:class-devupstream ?= "ffaf6178137b9cdcc9742d6677b70be164dfeb8c"
40PN:class-devupstream = "linux-yocto-upstream" 40PN:class-devupstream = "linux-yocto-upstream"
41KBRANCH:class-devupstream = "v6.6/base" 41KBRANCH:class-devupstream = "v6.6/base"
42 42
@@ -44,7 +44,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA
44 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" 44 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https"
45 45
46LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 46LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
47LINUX_VERSION ?= "6.6.50" 47LINUX_VERSION ?= "6.6.92"
48 48
49PV = "${LINUX_VERSION}+git" 49PV = "${LINUX_VERSION}+git"
50 50
diff --git a/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb b/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb
index d6c75d7580..bd6eb9ba1c 100644
--- a/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb
+++ b/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb
@@ -93,3 +93,15 @@ do_install_ptest () {
93 # Remove architechture specific testfiles 93 # Remove architechture specific testfiles
94 rm -rf ${D}${PTEST_PATH}/tests/data/plugins/flt.lttng-utils.debug-info/* 94 rm -rf ${D}${PTEST_PATH}/tests/data/plugins/flt.lttng-utils.debug-info/*
95} 95}
96
97do_install:append:class-nativesdk() {
98 mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
99 cat <<- EOF > ${D}${SDKPATHNATIVE}/environment-setup.d/babeltrace2.sh
100 export BABELTRACE_PLUGIN_PATH="${libdir}/babeltrace2/plugins"
101 export LIBBABELTRACE2_PLUGIN_PROVIDER_DIR="${libdir}/babeltrace2/plugin-providers"
102 EOF
103}
104
105FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/babeltrace2.sh"
106
107BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb b/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb
index f4d9b5e42a..2585747fb6 100644
--- a/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb
+++ b/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb
@@ -96,3 +96,5 @@ do_install_ptest () {
96 sed -i 's:^BTBIN.*:BTBIN=/usr/bin/babeltrace:' ${f} 96 sed -i 's:^BTBIN.*:BTBIN=/usr/bin/babeltrace:' ${f}
97 done 97 done
98} 98}
99
100BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-sched_stat_runtime-changed-in-Linux-6.6.66.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-sched_stat_runtime-changed-in-Linux-6.6.66.patch
new file mode 100644
index 0000000000..3c7731ae8f
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-sched_stat_runtime-changed-in-Linux-6.6.66.patch
@@ -0,0 +1,51 @@
1From a04234d63999f91405574928c80ded870dca157a Mon Sep 17 00:00:00 2001
2From: Kienan Stewart <kstewart@efficios.com>
3Date: Sun, 22 Dec 2024 17:39:35 +0800
4Subject: [PATCH] Fix: sched_stat_runtime changed in Linux 6.6.66
5
6The following commit has been backported into the 6.6.y branch.
7
8See upstream commit:
9
10 commit 5fe6ec8f6ab549b6422e41551abb51802bd48bc7
11 Author: Peter Zijlstra <peterz@infradead.org>
12 Date: Mon Nov 6 13:41:43 2023 +0100
13
14 sched: Remove vruntime from trace_sched_stat_runtime()
15
16 Tracing the runtime delta makes sense, observer can sum over time.
17 Tracing the absolute vruntime makes less sense, inconsistent:
18 absolute-vs-delta, but also vruntime delta can be computed from
19 runtime delta.
20
21 Removing the vruntime thing also makes the two tracepoint sites
22 identical, allowing to unify the code in a later patch.
23
24Change-Id: I74acf0b8340c371e8411116e07e5c97b10f9c756
25Signed-off-by: Kienan Stewart <kstewart@efficios.com>
26
27Upstream-Status: Pending [https://review.lttng.org/c/lttng-modules/+/13813]
28
29[Xiangyu: BP to fix compile error on linux 6.6.66, Minor conflict resolution]
30Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
31---
32 include/instrumentation/events/sched.h | 3 ++-
33 1 file changed, 2 insertions(+), 1 deletion(-)
34
35diff --git a/include/instrumentation/events/sched.h b/include/instrumentation/events/sched.h
36index 24cf37c8..637a1e3a 100644
37--- a/include/instrumentation/events/sched.h
38+++ b/include/instrumentation/events/sched.h
39@@ -646,7 +646,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(sched_stat_template, sched_stat_blocked,
40 TP_ARGS(tsk, delay))
41 #endif
42
43-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,8,0))
44+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,8,0) || \
45+ LTTNG_KERNEL_RANGE(6,6,66, 6,7,0))
46 /*
47 * Tracepoint for accounting runtime (time the task is executing
48 * on a CPU).
49--
502.43.0
51
diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb
index 95d5e2d615..34aff1ba8d 100644
--- a/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb
+++ b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb
@@ -14,6 +14,7 @@ SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
14 file://0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch \ 14 file://0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch \
15 file://0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch \ 15 file://0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch \
16 file://0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch \ 16 file://0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch \
17 file://0001-Fix-sched_stat_runtime-changed-in-Linux-6.6.66.patch \
17 " 18 "
18 19
19# Use :append here so that the patch is applied also when using devupstream 20# Use :append here so that the patch is applied also when using devupstream
diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-Fix-Build-examples-when-rpath-is-stripped-from-in-bu.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-Fix-Build-examples-when-rpath-is-stripped-from-in-bu.patch
new file mode 100644
index 0000000000..6da675fa31
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-ust/0001-Fix-Build-examples-when-rpath-is-stripped-from-in-bu.patch
@@ -0,0 +1,161 @@
1From 5d10459b6b5182fcbc98240d9dace026c87a5037 Mon Sep 17 00:00:00 2001
2From: Kienan Stewart <kstewart@efficios.com>
3Date: Mon, 5 Aug 2024 15:41:34 -0400
4Subject: [PATCH] Fix: Build examples when rpath is stripped from in-build-tree
5 libs
6
7Observed issue
8==============
9
10Certain tool chains[1, 2] emit warnings or errors when building the
11example applications.
12
13```
14make[3]: Entering directory
15'/home/xxx/src/efficios/lttng/master/src/lttng-ust/doc/examples/easy-ust'
16CC sample.o
17CC tp.o
18CCLD sample
19
20/usr/bin/ld: warning: liblttng-ust-common.so.1, needed by ../../../src/lib/lttng-ust/.libs/liblttng-ust.so, not found (try using -rpath or -rpath-link)
21/usr/bin/ld: warning: liblttng-ust-tracepoint.so.1, needed by ../../../src/lib/lttng-ust/.libs/liblttng-ust.so, not found (try using -rpath or -rpath-link)
22/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_add_fd_to_tracker'
23/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_urcu_after_fork_child'
24/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_common_ctor'
25/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_tp_init'
26/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_tp_probe_register_queue_release'
27/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_cancelstate_disable_pop'
28/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_urcu_synchronize_rcu'
29/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_urcu_register_thread'
30/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_tp_probe_prune_release_queue'
31/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_cancelstate_disable_push'
32/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_urcu_before_fork'
33/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_lock_fd_tracker'
34/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_trace_clock'
35/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_urcu_has_sys_membarrier'
36/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_unlock_fd_tracker'
37/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_tp_exit'
38/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_get_cpu_sym'
39/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_common_alloc_tls'
40/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_urcu_after_fork_parent'
41/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_delete_fd_from_tracker'
42/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_urcu_register'
43/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_urcu_reader'
44/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_urcu_gp'
45/usr/bin/ld: ../../../src/lib/lttng-ust/.libs/liblttng-ust.so: undefined reference to `lttng_ust_tp_probe_unregister_queue_release'
46collect2: error: ld returned 1 exit status
47```
48
49=== Reproducer ===
50
51The easiest way to consistently reproduce this type of build failure
52is to perform the following steps:
53
54```
55./configure
56make -j$(nproc)
57find . -iname '*.so' -exec chrpath -d {} \;
58make -C doc/examples clean
59make -j$(nproc)
60```
61
62As the examples are not built with libtool, finding the libraries to
63link against depends on the shared objects having an rpath.
64
65E.g.
66
67```
68$ chrpath src/lib/lttng-ust/.libs/liblttng-ust.so.1.0.0
69src/lib/lttng-ust/.libs/liblttng-ust.so.1.0.0: RUNPATH=/home/xxx/src/efficios/lttng/master/src/lttng-ust/src/lib/lttng-ust-common/.libs:/home/xxx/src/efficios/lttng/master/src/lttng-ust/src/lib/lttng-ust-tracepoint/.libs:/home/xxx/src/efficios/lttng/master/usr/lib
70```
71
72The current examples build with `-Wl,-rpath` for `liblttng-ust`, but
73not the dependencies of `liblttng-ust` (which would normally be found
74via it's own rpath). If the `rpath` is stripped from
75`liblttng-ust.so`, or if the tool chain ignores `rpath` explicitly,
76then the build with fail.
77
78In the case of a yocto build environment as in GitHub#61[1], the
79following commands reproduced the warnings and the errors seen in the
80above test case.
81
82```
83git clone git://git.yoctoproject.org/poky && cd poky/
84. oe-init-build-env
85echo "PACKAGECONFIG:pn-lttng-ust = 'examples'" >>conf/local.conf
86bitbake lttng-ust
87```
88
89=== Solution ===
90
91Explicitly add library search paths and set linker rpath-link are set
92for both the standard and cmake examples. Similar changes were
93proposed for each of those parts respectively in GitHub#61[1] and GitHub#63[2].
94
95=== Known issues ===
96
97While the `rpath-link` for the second order library dependencies will
98allow the builds to complete, the examples will not work at
99runtime even when using `rpath`. From `man ld.so`, the rpaths in an
100executable or shared object are only considered for direct
101dependencies. Therefore, without setting `LD_LIBRARY_PATH` or
102installing the libraries test applications will fail as follows:
103
104```
105$ ./doc/examples/easy-ust/sample
106./doc/examples/easy-ust/sample: error while loading shared libraries: liblttng-ust-common.so.1: cannot open shared object file: No such file or directory
107```
108
109References
110==========
111
112[1]: https://github.com/lttng/lttng-ust/pull/61
113[2]: https://github.com/lttng/lttng-ust/pull/63
114
115Change-Id: I273ccddd0d0b7a1b57b9e09ddf48d8b5b41e6f8e
116Signed-off-by: Kienan Stewart <kstewart@efficios.com>
117Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
118
119Upstream-Status: Backport [https://github.com/lttng/lttng-ust/commit/5d10459b6b5182fcbc98240d9dace026c87a5037]
120Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
121
122---
123 doc/examples/Makefile.am | 13 ++++++++++---
124 1 file changed, 10 insertions(+), 3 deletions(-)
125
126diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
127index aebf63bd..79766ec0 100644
128--- a/doc/examples/Makefile.am
129+++ b/doc/examples/Makefile.am
130@@ -169,7 +169,10 @@ all-local:
131 CFLAGS='$(CFLAGS)' \
132 AM_CFLAGS='$(AM_CFLAGS)' \
133 LDFLAGS="$(LDFLAGS)" \
134- AM_LDFLAGS='$(AM_LDFLAGS) -L../../../src/lib/lttng-ust/.libs -Wl,-rpath="$(PWD)/../../src/lib/lttng-ust/.libs/" -Wl,-rpath-link="$(PWD)/../../src/lib/lttng-ust/.libs/"' \
135+ AM_LDFLAGS='$(AM_LDFLAGS) -L../../../src/lib/lttng-ust/.libs -L../../../src/lib/lttng-ust-common/.libs -L../../../src/lib/lttng-ust-tracepoint/.libs \
136+ -Wl,-rpath="$(abs_top_builddir)/src/lib/lttng-ust/.libs/" \
137+ -Wl,-rpath-link="$(abs_top_builddir)/src/lib/lttng-ust-common/.libs/" \
138+ -Wl,-rpath-link="$(abs_top_builddir)/src/lib/lttng-ust-tracepoint/.libs/"' \
139 LTTNG_GEN_TP_PATH="$$rel_src_subdir$(top_srcdir)/tools/" \
140 AM_V_P="$(AM_V_P)" \
141 AM_V_at="$(AM_V_at)" \
142@@ -222,10 +225,14 @@ all-local:
143 CXX="$(CXX)" \
144 $(CMAKE) \
145 -DCMAKE_INCLUDE_PATH="$(abs_top_srcdir)/include;$(abs_top_builddir)/include" \
146- -DCMAKE_LIBRARY_PATH="$(abs_top_builddir)/src/lib/lttng-ust/.libs" \
147+ -DCMAKE_LIBRARY_PATH="$(abs_top_builddir)/src/lib/lttng-ust/.libs;$(abs_top_builddir)/src/lib/lttng-ust-common/.libs;$(abs_top_builddir)/src/lib/lttng-ust-tracepoint/.libs" \
148 -DCMAKE_C_FLAGS="$(AM_CFLAGS) $(CPPFLAGS) $(CFLAGS)" \
149 -DCMAKE_CXX_FLAGS="$(AM_CXXFLAGS) $(CXXFLAGS) $(CPPFLAGS)" \
150- -DCMAKE_EXE_LINKER_FLAGS="$(AM_LDFLAGS) $(LDFLAGS)" \
151+ -DCMAKE_EXE_LINKER_FLAGS="$(AM_LDFLAGS) $(LDFLAGS) \
152+ -L../../../src/lib/lttng-ust/.libs -L../../../src/lib/lttng-ust-common/.libs -L../../../src/lib/lttng-ust-tracepoint/.libs \
153+ -Wl,-rpath=$(abs_top_builddir)/src/lib/lttng-ust/.libs/ \
154+ -Wl,-rpath-link=$(abs_top_builddir)/src/lib/lttng-ust-common/.libs/ \
155+ -Wl,-rpath-link=$(abs_top_builddir)/src/lib/lttng-ust-tracepoint/.libs/" \
156 .. && \
157 $(MAKE) \
158 ) || exit 1; \
159--
1602.43.0
161
diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch
deleted file mode 100644
index 6aca8f85fa..0000000000
--- a/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch
+++ /dev/null
@@ -1,33 +0,0 @@
1From 7d053804ab3823d40ae10d90f4efc49dbfb4cb66 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Wed, 22 Sep 2021 16:33:10 +0800
4Subject: [PATCH] Makefile.am: update rpath link
5
6since commit 6339062 Move liblttng-ust to 'src/lib/',
7liblttng-ust.so/liblttng-ust-common.so/liblttng-ust-tracepoint.so
8's location changed from one dir to multiple dirs. which make below
9error:
10ld: warning: liblttng-ust-common.so.1, needed by ../../../src/lib/lttng-ust/.libs/liblttng-ust.so, not found (try using -rpath or -rpath-link)
11ld: warning: liblttng-ust-tracepoint.so.1, needed by ../../../src/lib/lttng-ust/.libs/liblttng-ust.so, not found (try using -rpath or -rpath-link)
12
13Upstream-Status: Submitted [https://github.com/lttng/lttng-ust/pull/61]
14
15Signed-off-by: Changqing Li <changqing.li@windriver.com>
16
17---
18 doc/examples/Makefile.am | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
22index 57782cc..d46caa6 100644
23--- a/doc/examples/Makefile.am
24+++ b/doc/examples/Makefile.am
25@@ -167,7 +167,7 @@ all-local:
26 CFLAGS='$(CFLAGS)' \
27 AM_CFLAGS='$(AM_CFLAGS)' \
28 LDFLAGS="$(LDFLAGS)" \
29- AM_LDFLAGS='$(AM_LDFLAGS) -L../../../src/lib/lttng-ust/.libs -Wl,-rpath="$(PWD)/../../src/lib/lttng-ust/.libs/" -Wl,-rpath-link="$(PWD)/../../src/lib/lttng-ust/.libs/"' \
30+ AM_LDFLAGS='$(AM_LDFLAGS) -L../../../src/lib/lttng-ust/.libs -Wl,-rpath="$(PWD)/../../src/lib/lttng-ust/.libs/" -Wl,-rpath-link="$(PWD)/../../src/lib/lttng-ust/.libs/:$(PWD)/../../src/lib/lttng-ust-tracepoint/.libs:$(PWD)/../../src/lib/lttng-ust-common/.libs/"' \
31 LTTNG_GEN_TP_PATH="$$rel_src_subdir$(top_srcdir)/tools/" \
32 AM_V_P="$(AM_V_P)" \
33 AM_V_at="$(AM_V_at)" \
diff --git a/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb b/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb
index dddd3a5004..bf2524bdc0 100644
--- a/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb
+++ b/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb
@@ -31,7 +31,7 @@ PE = "2"
31SRC_URI = "https://lttng.org/files/lttng-ust/lttng-ust-${PV}.tar.bz2 \ 31SRC_URI = "https://lttng.org/files/lttng-ust/lttng-ust-${PV}.tar.bz2 \
32 file://0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch \ 32 file://0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch \
33 file://0001-lttng-ust-common-link-with-liburcu-explicitly.patch \ 33 file://0001-lttng-ust-common-link-with-liburcu-explicitly.patch \
34 file://0001-Makefile.am-update-rpath-link.patch \ 34 file://0001-Fix-Build-examples-when-rpath-is-stripped-from-in-bu.patch \
35 " 35 "
36 36
37SRC_URI[sha256sum] = "d4ef98dab9a37ad4f524ccafdfd50af4f266039b528dd5afabce78e49024d937" 37SRC_URI[sha256sum] = "d4ef98dab9a37ad4f524ccafdfd50af4f266039b528dd5afabce78e49024d937"
diff --git a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.07.04.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.10.07.bb
index daf5e6dfcd..0e4100fba7 100644
--- a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.07.04.bb
+++ b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.10.07.bb
@@ -5,7 +5,7 @@ LICENSE = "ISC"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c" 5LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c"
6 6
7SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz" 7SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz"
8SRC_URI[sha256sum] = "9832a14e1be24abff7be30dee3c9a1afb5fdfcf475a0d91aafef039f8d85f5eb" 8SRC_URI[sha256sum] = "f76f2bd79a653e9f9dd50548d99d03a4a4eb157da056dfd5892f403ec28fb3d5"
9 9
10inherit bin_package allarch 10inherit bin_package allarch
11 11
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-49501.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-49501.patch
new file mode 100644
index 0000000000..80d542952a
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-49501.patch
@@ -0,0 +1,30 @@
1From 4adb93dff05dd947878c67784d98c9a4e13b57a7 Mon Sep 17 00:00:00 2001
2From: Paul B Mahol <onemda@gmail.com>
3Date: Thu, 23 Nov 2023 14:58:35 +0100
4Subject: [PATCH] avfilter/asrc_afirsrc: fix by one smaller allocation of
5 buffer
6
7CVE: CVE-2023-49501
8
9Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/4adb93dff05dd947878c67784d98c9a4e13b57a7]
10
11Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
12---
13 libavfilter/asrc_afirsrc.c | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/libavfilter/asrc_afirsrc.c b/libavfilter/asrc_afirsrc.c
17index e2359c1..ea04c35 100644
18--- a/libavfilter/asrc_afirsrc.c
19+++ b/libavfilter/asrc_afirsrc.c
20@@ -480,7 +480,7 @@ static av_cold int config_eq_output(AVFilterLink *outlink)
21 if (ret < 0)
22 return ret;
23
24- s->magnitude = av_calloc(s->nb_magnitude, sizeof(*s->magnitude));
25+ s->magnitude = av_calloc(s->nb_magnitude + 1, sizeof(*s->magnitude));
26 if (!s->magnitude)
27 return AVERROR(ENOMEM);
28 memcpy(s->magnitude, eq_presets[s->preset].gains, sizeof(*s->magnitude) * s->nb_magnitude);
29--
302.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-49528.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-49528.patch
new file mode 100644
index 0000000000..37e1ab61d1
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-49528.patch
@@ -0,0 +1,58 @@
1From 2d9ed64859c9887d0504cd71dbd5b2c15e14251a Mon Sep 17 00:00:00 2001
2From: Paul B Mahol <onemda@gmail.com>
3Date: Sat, 25 Nov 2023 12:54:28 +0100
4Subject: [PATCH 3/3] avfilter/af_dialoguenhance: fix overreads
5
6CVE: CVE-2023-49528
7
8Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/2d9ed64859c9887d0504cd71dbd5b2c15e14251a]
9
10Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
11---
12 libavfilter/af_dialoguenhance.c | 17 +++++++++--------
13 1 file changed, 9 insertions(+), 8 deletions(-)
14
15diff --git a/libavfilter/af_dialoguenhance.c b/libavfilter/af_dialoguenhance.c
16index 1762ea7..29c8ab1 100644
17--- a/libavfilter/af_dialoguenhance.c
18+++ b/libavfilter/af_dialoguenhance.c
19@@ -96,12 +96,12 @@ static int config_input(AVFilterLink *inlink)
20 if (!s->window)
21 return AVERROR(ENOMEM);
22
23- s->in_frame = ff_get_audio_buffer(inlink, s->fft_size * 4);
24- s->center_frame = ff_get_audio_buffer(inlink, s->fft_size * 4);
25- s->out_dist_frame = ff_get_audio_buffer(inlink, s->fft_size * 4);
26- s->windowed_frame = ff_get_audio_buffer(inlink, s->fft_size * 4);
27- s->windowed_out = ff_get_audio_buffer(inlink, s->fft_size * 4);
28- s->windowed_prev = ff_get_audio_buffer(inlink, s->fft_size * 4);
29+ s->in_frame = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2);
30+ s->center_frame = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2);
31+ s->out_dist_frame = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2);
32+ s->windowed_frame = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2);
33+ s->windowed_out = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2);
34+ s->windowed_prev = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2);
35 if (!s->in_frame || !s->windowed_out || !s->windowed_prev ||
36 !s->out_dist_frame || !s->windowed_frame || !s->center_frame)
37 return AVERROR(ENOMEM);
38@@ -250,6 +250,7 @@ static int de_stereo(AVFilterContext *ctx, AVFrame *out)
39 float *right_osamples = (float *)out->extended_data[1];
40 float *center_osamples = (float *)out->extended_data[2];
41 const int offset = s->fft_size - s->overlap;
42+ const int nb_samples = FFMIN(s->overlap, s->in->nb_samples);
43 float vad;
44
45 // shift in/out buffers
46@@ -258,8 +259,8 @@ static int de_stereo(AVFilterContext *ctx, AVFrame *out)
47 memmove(left_out, &left_out[s->overlap], offset * sizeof(float));
48 memmove(right_out, &right_out[s->overlap], offset * sizeof(float));
49
50- memcpy(&left_in[offset], left_samples, s->overlap * sizeof(float));
51- memcpy(&right_in[offset], right_samples, s->overlap * sizeof(float));
52+ memcpy(&left_in[offset], left_samples, nb_samples * sizeof(float));
53+ memcpy(&right_in[offset], right_samples, nb_samples * sizeof(float));
54 memset(&left_out[offset], 0, s->overlap * sizeof(float));
55 memset(&right_out[offset], 0, s->overlap * sizeof(float));
56
57--
582.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-50007.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-50007.patch
new file mode 100644
index 0000000000..d86e39707e
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2023-50007.patch
@@ -0,0 +1,78 @@
1From b1942734c7cbcdc9034034373abcc9ecb9644c47 Mon Sep 17 00:00:00 2001
2From: Paul B Mahol <onemda@gmail.com>
3Date: Mon, 27 Nov 2023 11:45:34 +0100
4Subject: [PATCH 2/3] avfilter/af_afwtdn: fix crash with EOF handling
5
6CVE: CVE-2023-50007
7
8Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/b1942734c7cbcdc9034034373abcc9ecb9644c47]
9
10Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
11---
12 libavfilter/af_afwtdn.c | 34 +++++++++++++++++++---------------
13 1 file changed, 19 insertions(+), 15 deletions(-)
14
15diff --git a/libavfilter/af_afwtdn.c b/libavfilter/af_afwtdn.c
16index 0fcfa77..63b7f5f 100644
17--- a/libavfilter/af_afwtdn.c
18+++ b/libavfilter/af_afwtdn.c
19@@ -408,6 +408,7 @@ typedef struct AudioFWTDNContext {
20
21 uint64_t sn;
22 int64_t eof_pts;
23+ int eof;
24
25 int wavelet_type;
26 int channels;
27@@ -1069,7 +1070,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
28 s->drop_samples = 0;
29 } else {
30 if (s->padd_samples < 0 && eof) {
31- out->nb_samples += s->padd_samples;
32+ out->nb_samples = FFMAX(0, out->nb_samples + s->padd_samples);
33 s->padd_samples = 0;
34 }
35 if (!eof)
36@@ -1208,23 +1209,26 @@ static int activate(AVFilterContext *ctx)
37
38 FF_FILTER_FORWARD_STATUS_BACK(outlink, inlink);
39
40- ret = ff_inlink_consume_samples(inlink, s->nb_samples, s->nb_samples, &in);
41- if (ret < 0)
42- return ret;
43- if (ret > 0)
44- return filter_frame(inlink, in);
45+ if (!s->eof) {
46+ ret = ff_inlink_consume_samples(inlink, s->nb_samples, s->nb_samples, &in);
47+ if (ret < 0)
48+ return ret;
49+ if (ret > 0)
50+ return filter_frame(inlink, in);
51+ }
52
53 if (ff_inlink_acknowledge_status(inlink, &status, &pts)) {
54- if (status == AVERROR_EOF) {
55- while (s->padd_samples != 0) {
56- ret = filter_frame(inlink, NULL);
57- if (ret < 0)
58- return ret;
59- }
60- ff_outlink_set_status(outlink, status, pts);
61- return ret;
62- }
63+ if (status == AVERROR_EOF)
64+ s->eof = 1;
65 }
66+
67+ if (s->eof && s->padd_samples != 0) {
68+ return filter_frame(inlink, NULL);
69+ } else if (s->eof) {
70+ ff_outlink_set_status(outlink, AVERROR_EOF, s->eof_pts);
71+ return 0;
72+ }
73+
74 FF_FILTER_FORWARD_WANTED(outlink, inlink);
75
76 return FFERROR_NOT_READY;
77--
782.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-28661.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-28661.patch
new file mode 100644
index 0000000000..b42badb567
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-28661.patch
@@ -0,0 +1,37 @@
1From 66b50445cb36cf6adb49c2397362509aedb42c71 Mon Sep 17 00:00:00 2001
2From: James Almer <jamrial@gmail.com>
3Date: Fri, 16 Feb 2024 11:17:13 -0300
4Subject: [PATCH 1/3] avcodec/speexdec: check for sane frame_size values
5
6Regression since ab39cc36c72bb73318bb911acb66873de850a107.
7
8Fixes heap buffer overflows
9Fixes ticket #10866
10
11Reported-by: sploitem <sploitem@gmail.com>
12Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
13Signed-off-by: James Almer <jamrial@gmail.com>
14
15CVE: CVE-2024-28661
16
17Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/66b50445cb36cf6adb49c2397362509aedb42c71]
18
19Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
20---
21 libavcodec/speexdec.c | 1 +
22 1 file changed, 1 insertion(+)
23
24diff --git a/libavcodec/speexdec.c b/libavcodec/speexdec.c
25index 08c7e77..23b8605 100644
26--- a/libavcodec/speexdec.c
27+++ b/libavcodec/speexdec.c
28@@ -1422,6 +1422,7 @@ static int parse_speex_extradata(AVCodecContext *avctx,
29 s->frame_size = bytestream_get_le32(&buf);
30 if (s->frame_size < NB_FRAME_SIZE << s->mode)
31 return AVERROR_INVALIDDATA;
32+ s->frame_size *= 1 + (s->mode > 0);
33 s->vbr = bytestream_get_le32(&buf);
34 s->frames_per_packet = bytestream_get_le32(&buf);
35 if (s->frames_per_packet <= 0 ||
36--
372.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-32230.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-32230.patch
deleted file mode 100644
index 0f30c9ecf5..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-32230.patch
+++ /dev/null
@@ -1,36 +0,0 @@
1From 96449cfeaeb95fcfd7a2b8d9ccf7719e97471ed1 Mon Sep 17 00:00:00 2001
2From: Michael Niedermayer <michael@niedermayer.cc>
3Date: Mon, 8 Apr 2024 18:38:42 +0200
4Subject: [PATCH] avcodec/mpegvideo_enc: Fix 1 line and one column images
5
6Fixes: Ticket10952
7Fixes: poc21ffmpeg
8Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
9
10CVE: CVE-2024-32230
11
12Upstream-Status: Backport [https://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=96449cfeaeb95fcfd7a2b8d9ccf7719e97471ed1]
13
14Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
15---
16 libavcodec/mpegvideo_enc.c | 4 ++--
17 1 file changed, 2 insertions(+), 2 deletions(-)
18
19diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
20index e460ca4..fb4aaa2 100644
21--- a/libavcodec/mpegvideo_enc.c
22+++ b/libavcodec/mpegvideo_enc.c
23@@ -1198,8 +1198,8 @@ static int load_input_picture(MpegEncContext *s, const AVFrame *pic_arg)
24 int dst_stride = i ? s->uvlinesize : s->linesize;
25 int h_shift = i ? s->chroma_x_shift : 0;
26 int v_shift = i ? s->chroma_y_shift : 0;
27- int w = s->width >> h_shift;
28- int h = s->height >> v_shift;
29+ int w = AV_CEIL_RSHIFT(s->width , h_shift);
30+ int h = AV_CEIL_RSHIFT(s->height, v_shift);
31 const uint8_t *src = pic_arg->data[i];
32 uint8_t *dst = pic->f->data[i];
33 int vpad = 16;
34--
352.40.0
36
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35365.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35365.patch
new file mode 100644
index 0000000000..2b5646e07c
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35365.patch
@@ -0,0 +1,62 @@
1From ced5c5fdb8634d39ca9472a2026b2d2fea16c4e5 Mon Sep 17 00:00:00 2001
2From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
3Date: Mon, 25 Mar 2024 16:54:25 +0100
4Subject: [PATCH] fftools/ffmpeg_mux_init: Fix double-free on error
5
6MATCH_PER_STREAM_OPT iterates over all options of a given
7OptionDef and tests whether they apply to the current stream;
8if so, they are set to ost->apad, otherwise, the code errors
9out. If no error happens, ost->apad is av_strdup'ed in order
10to take ownership of this pointer.
11
12But this means that setting it originally was premature,
13as it leads to double-frees when an error happens lateron.
14This can simply be reproduced with
15ffmpeg -filter_complex anullsrc -apad bar -apad:n baz -f null -
16This is a regression since 83ace80bfd80fcdba2c65fa1d554923ea931d5bd.
17
18Fix this by using a temporary variable instead of directly
19setting ost->apad. Also only strdup the string if it actually
20is != NULL.
21
22Reviewed-by: Marth64 <marth64@proxyid.net>
23Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
24
25CVE: CVE-2024-35365
26
27Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/ced5c5fdb8634d39ca9472a2026b2d2fea16c4e5]
28
29Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
30---
31 fftools/ffmpeg_mux_init.c | 9 +++++++--
32 1 file changed, 7 insertions(+), 2 deletions(-)
33
34diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c
35index 63a25a3..685c064 100644
36--- a/fftools/ffmpeg_mux_init.c
37+++ b/fftools/ffmpeg_mux_init.c
38@@ -845,6 +845,7 @@ static int new_stream_audio(Muxer *mux, const OptionsContext *o,
39 int channels = 0;
40 char *layout = NULL;
41 char *sample_fmt = NULL;
42+ const char *apad = NULL;
43
44 MATCH_PER_STREAM_OPT(audio_channels, i, channels, oc, st);
45 if (channels) {
46@@ -882,8 +883,12 @@ static int new_stream_audio(Muxer *mux, const OptionsContext *o,
47
48 MATCH_PER_STREAM_OPT(audio_sample_rate, i, audio_enc->sample_rate, oc, st);
49
50- MATCH_PER_STREAM_OPT(apad, str, ost->apad, oc, st);
51- ost->apad = av_strdup(ost->apad);
52+ MATCH_PER_STREAM_OPT(apad, str, apad, oc, st);
53+ if (apad) {
54+ ost->apad = av_strdup(apad);
55+ if (!ost->apad)
56+ return AVERROR(ENOMEM);
57+ }
58
59 #if FFMPEG_OPT_MAP_CHANNEL
60 /* check for channel mapping for this audio stream */
61--
622.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35367.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35367.patch
new file mode 100644
index 0000000000..a1bec43c66
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35367.patch
@@ -0,0 +1,47 @@
1From 09e6840cf7a3ee07a73c3ae88a020bf27ca1a667 Mon Sep 17 00:00:00 2001
2From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
3Date: Wed, 13 Mar 2024 02:10:26 +0100
4Subject: [PATCH] avcodec/ppc/vp8dsp_altivec: Fix out-of-bounds access
5
6h_subpel_filters_inner[i] and h_subpel_filters_outer[i / 2]
7belong together and the former allows the range 0..6,
8so the latter needs to support 0..3. But it has only three
9elements. Add another one.
10The value for the last element has been guesstimated
11from subpel_filters in libavcodec/vp8dsp.c.
12
13This is also intended to fix FATE-failures with UBSan here:
14https://fate.ffmpeg.org/report.cgi?time=20240312011016&slot=ppc-linux-gcc-13.2-ubsan-altivec-qemu
15
16Tested-by: Sean McGovern <gseanmcg@gmail.com>
17Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
18
19CVE: CVE-2024-35367
20
21Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/09e6840cf7a3ee07a73c3ae88a020bf27ca1a667]
22
23Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
24---
25 libavcodec/ppc/vp8dsp_altivec.c | 3 ++-
26 1 file changed, 2 insertions(+), 1 deletion(-)
27
28diff --git a/libavcodec/ppc/vp8dsp_altivec.c b/libavcodec/ppc/vp8dsp_altivec.c
29index 12dac8b..061914f 100644
30--- a/libavcodec/ppc/vp8dsp_altivec.c
31+++ b/libavcodec/ppc/vp8dsp_altivec.c
32@@ -50,11 +50,12 @@ static const vec_s8 h_subpel_filters_inner[7] =
33 // for 6tap filters, these are the outer two taps
34 // The zeros mask off pixels 4-7 when filtering 0-3
35 // and vice-versa
36-static const vec_s8 h_subpel_filters_outer[3] =
37+static const vec_s8 h_subpel_filters_outer[4] =
38 {
39 REPT4(0, 0, 2, 1),
40 REPT4(0, 0, 3, 3),
41 REPT4(0, 0, 1, 2),
42+ REPT4(0, 0, 0, 0),
43 };
44
45 #define LOAD_H_SUBPEL_FILTER(i) \
46--
472.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35368.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35368.patch
new file mode 100644
index 0000000000..7b802762eb
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35368.patch
@@ -0,0 +1,41 @@
1From 4513300989502090c4fd6560544dce399a8cd53c Mon Sep 17 00:00:00 2001
2From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
3Date: Sun, 24 Sep 2023 13:15:48 +0200
4Subject: [PATCH] avcodec/rkmppdec: Fix double-free on error
5
6After having created the AVBuffer that is put into frame->buf[0],
7ownership of several objects (namely an AVDRMFrameDescriptor,
8an MppFrame and some AVBufferRefs framecontextref and decoder_ref)
9has passed to the AVBuffer and therefore to the frame.
10Yet it has nevertheless been freed manually on error
11afterwards, which would lead to a double-free as soon
12as the AVFrame is unreferenced.
13
14Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
15
16CVE: CVE-2024-35368
17
18Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/4513300989502090c4fd6560544dce399a8cd53c]
19
20Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
21---
22 libavcodec/rkmppdec.c | 4 ++--
23 1 file changed, 2 insertions(+), 2 deletions(-)
24
25diff --git a/libavcodec/rkmppdec.c b/libavcodec/rkmppdec.c
26index 5768568..2ca368e 100644
27--- a/libavcodec/rkmppdec.c
28+++ b/libavcodec/rkmppdec.c
29@@ -462,8 +462,8 @@ static int rkmpp_retrieve_frame(AVCodecContext *avctx, AVFrame *frame)
30
31 frame->hw_frames_ctx = av_buffer_ref(decoder->frames_ref);
32 if (!frame->hw_frames_ctx) {
33- ret = AVERROR(ENOMEM);
34- goto fail;
35+ av_frame_unref(frame);
36+ return AVERROR(ENOMEM);
37 }
38
39 return 0;
40--
412.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35369.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35369.patch
new file mode 100644
index 0000000000..72dc8d14a7
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-35369.patch
@@ -0,0 +1,37 @@
1From 0895ef0d6d6406ee6cd158fc4d47d80f201b8e9c Mon Sep 17 00:00:00 2001
2From: James Almer <jamrial@gmail.com>
3Date: Sat, 17 Feb 2024 09:45:57 -0300
4Subject: [PATCH] avcodec/speexdec: further check for sane frame_size values
5
6Prevent potential integer overflows.
7
8Signed-off-by: James Almer <jamrial@gmail.com>
9
10CVE: CVE-2024-35369
11
12Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/0895ef0d6d6406ee6cd158fc4d47d80f201b8e9c]
13
14Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
15---
16 libavcodec/speexdec.c | 5 +++--
17 1 file changed, 3 insertions(+), 2 deletions(-)
18
19diff --git a/libavcodec/speexdec.c b/libavcodec/speexdec.c
20index 23b8605..a034009 100644
21--- a/libavcodec/speexdec.c
22+++ b/libavcodec/speexdec.c
23@@ -1420,9 +1420,10 @@ static int parse_speex_extradata(AVCodecContext *avctx,
24 return AVERROR_INVALIDDATA;
25 s->bitrate = bytestream_get_le32(&buf);
26 s->frame_size = bytestream_get_le32(&buf);
27- if (s->frame_size < NB_FRAME_SIZE << s->mode)
28+ if (s->frame_size < NB_FRAME_SIZE << (s->mode > 0) ||
29+ s->frame_size > INT32_MAX >> (s->mode > 0))
30 return AVERROR_INVALIDDATA;
31- s->frame_size *= 1 + (s->mode > 0);
32+ s->frame_size <<= (s->mode > 0);
33 s->vbr = bytestream_get_le32(&buf);
34 s->frames_per_packet = bytestream_get_le32(&buf);
35 if (s->frames_per_packet <= 0 ||
36--
372.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36618.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36618.patch
new file mode 100644
index 0000000000..5caca2da7c
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2024-36618.patch
@@ -0,0 +1,36 @@
1From 7a089ed8e049e3bfcb22de1250b86f2106060857 Mon Sep 17 00:00:00 2001
2From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
3Date: Tue, 12 Mar 2024 23:23:17 +0100
4Subject: [PATCH] avformat/avidec: Fix integer overflow iff ULONG_MAX <
5 INT64_MAX
6
7Affects many FATE-tests, see
8https://fate.ffmpeg.org/report.cgi?time=20240312011016&slot=ppc-linux-gcc-13.2-ubsan-altivec-qemu
9
10Reviewed-by: James Almer <jamrial@gmail.com>
11Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
12
13CVE: CVE-2024-36618
14
15Upstream-Status: Backport [https://github.com/ffmpeg/ffmpeg/commit/7a089ed8e049e3bfcb22de1250b86f2106060857]
16
17Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
18---
19 libavformat/avidec.c | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/libavformat/avidec.c b/libavformat/avidec.c
23index 00bd7a9..bc95466 100644
24--- a/libavformat/avidec.c
25+++ b/libavformat/avidec.c
26@@ -1696,7 +1696,7 @@ static int check_stream_max_drift(AVFormatContext *s)
27 int *idx = av_calloc(s->nb_streams, sizeof(*idx));
28 if (!idx)
29 return AVERROR(ENOMEM);
30- for (min_pos = pos = 0; min_pos != INT64_MAX; pos = min_pos + 1LU) {
31+ for (min_pos = pos = 0; min_pos != INT64_MAX; pos = min_pos + 1ULL) {
32 int64_t max_dts = INT64_MIN / 2;
33 int64_t min_dts = INT64_MAX / 2;
34 int64_t max_buffer = 0;
35--
362.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-0518.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-0518.patch
new file mode 100644
index 0000000000..d3e02bebe6
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-0518.patch
@@ -0,0 +1,34 @@
1From b5b6391d64807578ab872dc58fb8aa621dcfc38a Mon Sep 17 00:00:00 2001
2From: Michael Niedermayer <michael@niedermayer.cc>
3Date: Mon, 6 Jan 2025 22:01:39 +0100
4Subject: [PATCH] avfilter/af_pan: Fix sscanf() use
5
6Fixes: Memory Data Leak
7
8Found-by: Simcha Kosman <simcha.kosman@cyberark.com>
9Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
10
11CVE: CVE-2025-0518
12
13Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/b5b6391d64807578ab872dc58fb8aa621dcfc38a]
14
15Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
16---
17 libavfilter/af_pan.c | 2 +-
18 1 file changed, 1 insertion(+), 1 deletion(-)
19
20diff --git a/libavfilter/af_pan.c b/libavfilter/af_pan.c
21index cfed9f1..ffcd214 100644
22--- a/libavfilter/af_pan.c
23+++ b/libavfilter/af_pan.c
24@@ -165,7 +165,7 @@ static av_cold int init(AVFilterContext *ctx)
25 sign = 1;
26 while (1) {
27 gain = 1;
28- if (sscanf(arg, "%lf%n *%n", &gain, &len, &len))
29+ if (sscanf(arg, "%lf%n *%n", &gain, &len, &len) >= 1)
30 arg += len;
31 if (parse_channel_name(&arg, &in_ch_id, &named)){
32 av_log(ctx, AV_LOG_ERROR,
33--
342.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-22919.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-22919.patch
new file mode 100644
index 0000000000..f895576de3
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-22919.patch
@@ -0,0 +1,39 @@
1From 1446e37d3d032e1452844778b3e6ba2c20f0c322 Mon Sep 17 00:00:00 2001
2From: James Almer <jamrial@gmail.com>
3Date: Mon, 30 Dec 2024 00:25:41 -0300
4Subject: [PATCH] avfilter/buffersrc: check for valid sample rate
5
6A sample rate <= 0 is invalid.
7
8Fixes an assert in ffmpeg_enc.c that assumed a valid sample rate would be set.
9Fixes ticket #11385.
10
11Signed-off-by: James Almer <jamrial@gmail.com>
12
13CVE: CVE-2025-22919
14
15Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/1446e37d3d032e1452844778b3e6ba2c20f0c322]
16
17Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
18---
19 libavfilter/buffersrc.c | 5 +++++
20 1 file changed, 5 insertions(+)
21
22diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c
23index 453fc0f..f49aa91 100644
24--- a/libavfilter/buffersrc.c
25+++ b/libavfilter/buffersrc.c
26@@ -401,6 +401,11 @@ FF_ENABLE_DEPRECATION_WARNINGS
27 av_channel_layout_describe(&s->ch_layout, buf, sizeof(buf));
28 }
29
30+ if (s->sample_rate <= 0) {
31+ av_log(ctx, AV_LOG_ERROR, "Sample rate not set\n");
32+ return AVERROR(EINVAL);
33+ }
34+
35 if (!s->time_base.num)
36 s->time_base = (AVRational){1, s->sample_rate};
37
38--
392.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-22921.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-22921.patch
new file mode 100644
index 0000000000..20fac68d01
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-22921.patch
@@ -0,0 +1,34 @@
1From 7f9c7f9849a2155224711f0ff57ecdac6e4bfb57 Mon Sep 17 00:00:00 2001
2From: James Almer <jamrial@gmail.com>
3Date: Wed, 1 Jan 2025 23:58:39 -0300
4Subject: [PATCH] avcodec/jpeg2000dec: clear array length when freeing it
5
6Fixes NULL pointer dereferences.
7Fixes ticket #11393.
8
9Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
10Signed-off-by: James Almer <jamrial@gmail.com>
11
12CVE: CVE-2025-22921
13
14Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/7f9c7f9849a2155224711f0ff57ecdac6e4bfb57]
15
16Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
17---
18 libavcodec/jpeg2000dec.c | 1 +
19 1 file changed, 1 insertion(+)
20
21diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
22index 691cfbd..b56902c 100644
23--- a/libavcodec/jpeg2000dec.c
24+++ b/libavcodec/jpeg2000dec.c
25@@ -1223,6 +1223,7 @@ static int jpeg2000_decode_packet(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile,
26 }
27 }
28 av_freep(&cblk->lengthinc);
29+ cblk->nb_lengthinc = 0;
30 }
31 }
32 // Save state of stream
33--
342.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-25473.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-25473.patch
new file mode 100644
index 0000000000..ea619025d1
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/CVE-2025-25473.patch
@@ -0,0 +1,36 @@
1From c08d300481b8ebb846cd43a473988fdbc6793d1b Mon Sep 17 00:00:00 2001
2From: James Almer <jamrial@gmail.com>
3Date: Fri, 17 Jan 2025 00:05:31 -0300
4Subject: [PATCH] avformat/avformat: also clear FFFormatContext packet queue
5 when closing a muxer
6
7packet_buffer is used in mux.c, and if a muxing process fails at a point where
8packets remained in said queue, they will leak.
9
10Fixes ticket #11419
11
12Signed-off-by: James Almer <jamrial@gmail.com>
13
14CVE: CVE-2025-25473
15
16Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/c08d300481b8ebb846cd43a473988fdbc6793d1b]
17
18Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
19---
20 libavformat/avformat.c | 1 +
21 1 file changed, 1 insertion(+)
22
23diff --git a/libavformat/avformat.c b/libavformat/avformat.c
24index 5b8bb78..73f31cd 100644
25--- a/libavformat/avformat.c
26+++ b/libavformat/avformat.c
27@@ -138,6 +138,7 @@ void avformat_free_context(AVFormatContext *s)
28 av_dict_free(&si->id3v2_meta);
29 av_packet_free(&si->pkt);
30 av_packet_free(&si->parse_pkt);
31+ avpriv_packet_list_free(&si->packet_buffer);
32 av_freep(&s->streams);
33 ff_flush_packet_queue(s);
34 av_freep(&s->url);
35--
362.40.0
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch
index 74db148b3b..be6c6b7416 100644
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/vulkan_av1_stable_API.patch
@@ -6,6 +6,9 @@ Subject: [PATCH] vulkan_av1: port to the new stable API
6Co-Authored-by: Dave Airlie <airlied@redhat.com> 6Co-Authored-by: Dave Airlie <airlied@redhat.com>
7Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> 7Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
8Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/ecdc94b97f809d5f2b88640842fd0541951ad295] 8Upstream-Status: Backport [https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/ecdc94b97f809d5f2b88640842fd0541951ad295]
9
10Comment: Patch is refreshed as per codebase of 6.1.2
11Signed-off-by: Divyanshu Rathore <divyanshu.rathore@kpit.com>
9--- 12---
10 configure | 4 +- 13 configure | 4 +-
11 libavcodec/Makefile | 5 +- 14 libavcodec/Makefile | 5 +-
@@ -26,7 +29,7 @@ diff --git a/configure b/configure
26index e853deb51d..9fa639fca6 100755 29index e853deb51d..9fa639fca6 100755
27--- a/configure 30--- a/configure
28+++ b/configure 31+++ b/configure
29@@ -7300,8 +7300,8 @@ enabled vdpau && 32@@ -7160,8 +7160,8 @@ enabled crystalhd && check_lib crystalhd
30 "in maintaining it." 33 "in maintaining it."
31 34
32 if enabled vulkan; then 35 if enabled vulkan; then
@@ -41,21 +44,19 @@ diff --git a/libavcodec/Makefile b/libavcodec/Makefile
41index 7ef2e03ca6..9ce6d445c1 100644 44index 7ef2e03ca6..9ce6d445c1 100644
42--- a/libavcodec/Makefile 45--- a/libavcodec/Makefile
43+++ b/libavcodec/Makefile 46+++ b/libavcodec/Makefile
44@@ -1258,8 +1258,7 @@ SKIPHEADERS += %_tablegen.h \ 47@@ -1284,7 +1284,6 @@ SKIPHEADERS +
45 aacenc_quantization.h \ 48 aacenc_quantization.h \
46 aacenc_quantization_misc.h \ 49 aacenc_quantization_misc.h \
47 bitstream_template.h \ 50 bitstream_template.h \
48- vulkan_video_codec_av1std.h \ 51- vulkan_video_codec_av1std_mesa.h \
49- $(ARCH)/vpx_arith.h \ 52 $(ARCH)/vpx_arith.h \
50+ $(ARCH)/vpx_arith.h \
51 53
52 SKIPHEADERS-$(CONFIG_AMF) += amfenc.h 54 SKIPHEADERS-$(CONFIG_AMF) += amfenc.h
53 SKIPHEADERS-$(CONFIG_D3D11VA) += d3d11va.h dxva2_internal.h 55@@ -1306,7 +1305,7 @@ SKIPHEADERS-$(CONFIG_XVMC) +
54@@ -1280,7 +1279,7 @@ SKIPHEADERS-$(CONFIG_QSVENC) += qsvenc.h
55 SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_decode.h vaapi_hevc.h vaapi_encode.h 56 SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_decode.h vaapi_hevc.h vaapi_encode.h
56 SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h vdpau_internal.h 57 SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h vdpau_internal.h
57 SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vt_internal.h 58 SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vt_internal.h
58-SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h vulkan_video_codec_av1std_decode.h 59-SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h vulkan_video_codec_av1std_decode_mesa.h
59+SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h 60+SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h
60 SKIPHEADERS-$(CONFIG_V4L2_M2M) += v4l2_buffers.h v4l2_context.h v4l2_m2m.h 61 SKIPHEADERS-$(CONFIG_V4L2_M2M) += v4l2_buffers.h v4l2_context.h v4l2_m2m.h
61 SKIPHEADERS-$(CONFIG_ZLIB) += zlib_wrapper.h 62 SKIPHEADERS-$(CONFIG_ZLIB) += zlib_wrapper.h
@@ -866,19 +867,19 @@ diff --git a/libavcodec/vulkan_video.h b/libavcodec/vulkan_video.h
866index bb69e920bb..01a1de7d9d 100644 867index bb69e920bb..01a1de7d9d 100644
867--- a/libavcodec/vulkan_video.h 868--- a/libavcodec/vulkan_video.h
868+++ b/libavcodec/vulkan_video.h 869+++ b/libavcodec/vulkan_video.h
869@@ -22,8 +22,6 @@ 870@@ -23,8 +23,6 @@
870 #include "vulkan.h" 871 #include "vulkan.h"
871 872
872 #include <vk_video/vulkan_video_codecs_common.h> 873 #include <vk_video/vulkan_video_codecs_common.h>
873-#include "vulkan_video_codec_av1std.h" 874-#include "vulkan_video_codec_av1std_mesa.h"
874-#include "vulkan_video_codec_av1std_decode.h" 875-#include "vulkan_video_codec_av1std_decode_mesa.h"
875 876
876 #define CODEC_VER_MAJ(ver) (ver >> 22) 877 #define CODEC_VER_MAJ(ver) (ver >> 22)
877 #define CODEC_VER_MIN(ver) ((ver >> 12) & ((1 << 10) - 1)) 878 #define CODEC_VER_MIN(ver) ((ver >> 12) & ((1 << 10) - 1))
878diff --git a/libavcodec/vulkan_video_codec_av1std_decode.h b/libavcodec/vulkan_video_codec_av1std_decode.h 879diff --git a/libavcodec/vulkan_video_codec_av1std_decode_mesa.h b/libavcodec/vulkan_video_codec_av1std_decode_mesa.h
879deleted file mode 100644 880deleted file mode 100644
880index e2f37b4e6e..0000000000 881index e2f37b4e6e..0000000000
881--- a/libavcodec/vulkan_video_codec_av1std_decode.h 882--- a/libavcodec/vulkan_video_codec_av1std_decode_mesa.h
882+++ /dev/null 883+++ /dev/null
883@@ -1,36 +0,0 @@ 884@@ -1,36 +0,0 @@
884-/* Copyright 2023 Lynne 885-/* Copyright 2023 Lynne
@@ -897,8 +898,8 @@ index e2f37b4e6e..0000000000
897- * limitations under the License. 898- * limitations under the License.
898- */ 899- */
899- 900-
900-#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ 901-#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_MESA_H_
901-#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ 1 902-#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_MESA_H_ 1
902- 903-
903-/* 904-/*
904-** This header is NOT YET generated from the Khronos Vulkan XML API Registry. 905-** This header is NOT YET generated from the Khronos Vulkan XML API Registry.
@@ -917,10 +918,10 @@ index e2f37b4e6e..0000000000
917-#endif 918-#endif
918- 919-
919-#endif 920-#endif
920diff --git a/libavcodec/vulkan_video_codec_av1std.h b/libavcodec/vulkan_video_codec_av1std.h 921diff --git a/libavcodec/vulkan_video_codec_av1std_mesa.h b/libavcodec/vulkan_video_codec_av1std_mesa.h
921deleted file mode 100644 922deleted file mode 100644
922index c91589eee2..0000000000 923index c91589eee2..0000000000
923--- a/libavcodec/vulkan_video_codec_av1std.h 924--- a/libavcodec/vulkan_video_codec_av1std_mesa.h
924+++ /dev/null 925+++ /dev/null
925@@ -1,403 +0,0 @@ 926@@ -1,403 +0,0 @@
926-/* Copyright 2023 Lynne 927-/* Copyright 2023 Lynne
@@ -939,8 +940,8 @@ index c91589eee2..0000000000
939- * limitations under the License. 940- * limitations under the License.
940- */ 941- */
941- 942-
942-#ifndef VULKAN_VIDEO_CODEC_AV1STD_H_ 943-#ifndef VULKAN_VIDEO_CODEC_AV1STD_MESA_H_
943-#define VULKAN_VIDEO_CODEC_AV1STD_H_ 1 944-#define VULKAN_VIDEO_CODEC_AV1STD_MESA_H_ 1
944- 945-
945-/* 946-/*
946-** This header is NOT YET generated from the Khronos Vulkan XML API Registry. 947-** This header is NOT YET generated from the Khronos Vulkan XML API Registry.
@@ -1379,4 +1380,3 @@ diff --git a/libavcodec/vulkan_video.c b/libavcodec/vulkan_video.c
1379 1380
1380-- 1381--
13812.25.1 13822.25.1
1382
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.1.bb b/meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.2.bb
index 13051f4e36..a789980dde 100644
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.1.bb
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg_6.1.2.bb
@@ -31,10 +31,22 @@ SRC_URI = " \
31 file://CVE-2024-31578.patch \ 31 file://CVE-2024-31578.patch \
32 file://CVE-2024-31582.patch \ 32 file://CVE-2024-31582.patch \
33 file://CVE-2023-50008.patch \ 33 file://CVE-2023-50008.patch \
34 file://CVE-2024-32230.patch \ 34 file://CVE-2023-49501.patch \
35 file://CVE-2024-28661.patch \
36 file://CVE-2023-50007.patch \
37 file://CVE-2023-49528.patch \
38 file://CVE-2024-35367.patch \
39 file://CVE-2024-35368.patch \
40 file://CVE-2024-35365.patch \
41 file://CVE-2024-36618.patch \
42 file://CVE-2024-35369.patch \
43 file://CVE-2025-25473.patch \
44 file://CVE-2025-22919.patch \
45 file://CVE-2025-22921.patch \
46 file://CVE-2025-0518.patch \
35" 47"
36 48
37SRC_URI[sha256sum] = "8684f4b00f94b85461884c3719382f1261f0d9eb3d59640a1f4ac0873616f968" 49SRC_URI[sha256sum] = "3b624649725ecdc565c903ca6643d41f33bd49239922e45c9b1442c63dca4e38"
38 50
39# https://nvd.nist.gov/vuln/detail/CVE-2023-39018 51# https://nvd.nist.gov/vuln/detail/CVE-2023-39018
40# https://github.com/bramp/ffmpeg-cli-wrapper/issues/291 52# https://github.com/bramp/ffmpeg-cli-wrapper/issues/291
@@ -43,6 +55,10 @@ SRC_URI[sha256sum] = "8684f4b00f94b85461884c3719382f1261f0d9eb3d59640a1f4ac08736
43CVE_STATUS[CVE-2023-39018] = "cpe-incorrect: This issue belongs to ffmpeg-cli-wrapper \ 55CVE_STATUS[CVE-2023-39018] = "cpe-incorrect: This issue belongs to ffmpeg-cli-wrapper \
44(Java wrapper around the FFmpeg CLI) and not ffmepg itself." 56(Java wrapper around the FFmpeg CLI) and not ffmepg itself."
45 57
58# Introduced: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/19f7dae81ab2c19643b97da7556383ee3f721e78
59# Fixed: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/43be8d07281caca2e88bfd8ee2333633e1fb1a13
60CVE_STATUS[CVE-2025-1373] = "fixed-version: Vulnerable code not present in any release"
61
46# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717 62# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
47ARM_INSTRUCTION_SET:armv4 = "arm" 63ARM_INSTRUCTION_SET:armv4 = "arm"
48ARM_INSTRUCTION_SET:armv5 = "arm" 64ARM_INSTRUCTION_SET:armv5 = "arm"
@@ -194,3 +210,5 @@ INSANE_SKIP:${MLPREFIX}libavutil = "textrel"
194INSANE_SKIP:${MLPREFIX}libswscale = "textrel" 210INSANE_SKIP:${MLPREFIX}libswscale = "textrel"
195INSANE_SKIP:${MLPREFIX}libswresample = "textrel" 211INSANE_SKIP:${MLPREFIX}libswresample = "textrel"
196INSANE_SKIP:${MLPREFIX}libpostproc = "textrel" 212INSANE_SKIP:${MLPREFIX}libpostproc = "textrel"
213
214CVE_PRODUCT = "ffmpeg libswresample libavcodec"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-vorbisdec-Set-at-most-64-channels-to-NONE-position.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-vorbisdec-Set-at-most-64-channels-to-NONE-position.patch
new file mode 100644
index 0000000000..2c44348a5d
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-vorbisdec-Set-at-most-64-channels-to-NONE-position.patch
@@ -0,0 +1,35 @@
1From 3eee4954d70accf94262299994eb21107a65dea8 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 21:35:07 +0300
4Subject: [PATCH] vorbisdec: Set at most 64 channels to NONE position
5
6Thanks to Antonio Morales for finding and reporting the issue.
7
8Fixes GHSL-2024-115
9Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3869
10
11Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8035>
12
13CVE: CVE-2024-47538
14Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/3eee4954d70accf94262299994eb21107a65dea8]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 ext/vorbis/gstvorbisdec.c | 2 +-
18 1 file changed, 1 insertion(+), 1 deletion(-)
19
20diff --git a/ext/vorbis/gstvorbisdec.c b/ext/vorbis/gstvorbisdec.c
21index 6a410ed858..1fc4fa883e 100644
22--- a/ext/vorbis/gstvorbisdec.c
23+++ b/ext/vorbis/gstvorbisdec.c
24@@ -204,7 +204,7 @@ vorbis_handle_identification_packet (GstVorbisDec * vd)
25 }
26 default:{
27 GstAudioChannelPosition position[64];
28- gint i, max_pos = MAX (vd->vi.channels, 64);
29+ gint i, max_pos = MIN (vd->vi.channels, 64);
30
31 GST_ELEMENT_WARNING (vd, STREAM, DECODE,
32 (NULL), ("Using NONE channel layout for more than 8 channels"));
33--
342.30.2
35
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-opusdec-Set-at-most-64-channels-to-NONE-position.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-opusdec-Set-at-most-64-channels-to-NONE-position.patch
new file mode 100644
index 0000000000..7a27af1291
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-opusdec-Set-at-most-64-channels-to-NONE-position.patch
@@ -0,0 +1,41 @@
1From 2838374d6ee4a0c9c4c4221ac46d5c1688f26e59 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Tue, 1 Oct 2024 13:22:50 +0300
4Subject: [PATCH] opusdec: Set at most 64 channels to NONE position
5
6Thanks to Antonio Morales for finding and reporting the issue.
7
8Fixes GHSL-2024-116
9Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3871
10
11Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8037>
12
13CVE: CVE-2024-47607
14Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/2838374d6ee4a0c9c4c4221ac46d5c1688f26e59]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 ext/opus/gstopusdec.c | 4 ++--
18 1 file changed, 2 insertions(+), 2 deletions(-)
19
20diff --git a/ext/opus/gstopusdec.c b/ext/opus/gstopusdec.c
21index 99289fa7d2..d3f461d9a8 100644
22--- a/ext/opus/gstopusdec.c
23+++ b/ext/opus/gstopusdec.c
24@@ -440,12 +440,12 @@ gst_opus_dec_parse_header (GstOpusDec * dec, GstBuffer * buf)
25 posn = gst_opus_channel_positions[dec->n_channels - 1];
26 break;
27 default:{
28- gint i;
29+ guint i, max_pos = MIN (dec->n_channels, 64);
30
31 GST_ELEMENT_WARNING (GST_ELEMENT (dec), STREAM, DECODE,
32 (NULL), ("Using NONE channel layout for more than 8 channels"));
33
34- for (i = 0; i < dec->n_channels; i++)
35+ for (i = 0; i < max_pos; i++)
36 pos[i] = GST_AUDIO_CHANNEL_POSITION_NONE;
37
38 posn = pos;
39--
402.30.2
41
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0006-vorbis_parse-check-writes-to-GstOggStream.vorbis_mod.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0006-vorbis_parse-check-writes-to-GstOggStream.vorbis_mod.patch
new file mode 100644
index 0000000000..37d0b463cb
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0006-vorbis_parse-check-writes-to-GstOggStream.vorbis_mod.patch
@@ -0,0 +1,80 @@
1From 006047a23a4e4c146e40e5dab765bc6318a94744 Mon Sep 17 00:00:00 2001
2From: Mathieu Duponchelle <mathieu@centricular.com>
3Date: Wed, 2 Oct 2024 15:16:30 +0200
4Subject: [PATCH 1/2] vorbis_parse: check writes to
5 GstOggStream.vorbis_mode_sizes
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-117 Fixes gstreamer#3875
10
11Also perform out-of-bounds check for accesses to op->packet
12
13Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8038>
14
15CVE: CVE-2024-47615
16Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/006047a23a4e4c146e40e5dab765bc6318a94744]
17Signed-off-by: Peter Marko <peter.marko@siemens.com>
18---
19 ext/ogg/vorbis_parse.c | 21 +++++++++++++++++++++
20 1 file changed, 21 insertions(+)
21
22diff --git a/ext/ogg/vorbis_parse.c b/ext/ogg/vorbis_parse.c
23index 65ef463808..757c7cd82b 100644
24--- a/ext/ogg/vorbis_parse.c
25+++ b/ext/ogg/vorbis_parse.c
26@@ -165,6 +165,10 @@ gst_parse_vorbis_setup_packet (GstOggStream * pad, ogg_packet * op)
27 if (offset == 0) {
28 offset = 8;
29 current_pos -= 1;
30+
31+ /* have we underrun? */
32+ if (current_pos < op->packet)
33+ return -1;
34 }
35 }
36
37@@ -178,6 +182,10 @@ gst_parse_vorbis_setup_packet (GstOggStream * pad, ogg_packet * op)
38 if (offset == 7)
39 current_pos -= 1;
40
41+ /* have we underrun? */
42+ if (current_pos < op->packet + 5)
43+ return -1;
44+
45 if (((current_pos[-5] & ~((1 << (offset + 1)) - 1)) != 0)
46 ||
47 current_pos[-4] != 0
48@@ -199,9 +207,18 @@ gst_parse_vorbis_setup_packet (GstOggStream * pad, ogg_packet * op)
49 /* Give ourselves a chance to recover if we went back too far by using
50 * the size check. */
51 for (ii = 0; ii < 2; ii++) {
52+
53 if (offset > 4) {
54+ /* have we underrun? */
55+ if (current_pos < op->packet)
56+ return -1;
57+
58 size_check = (current_pos[0] >> (offset - 5)) & 0x3F;
59 } else {
60+ /* have we underrun? */
61+ if (current_pos < op->packet + 1)
62+ return -1;
63+
64 /* mask part of byte from current_pos */
65 size_check = (current_pos[0] & ((1 << (offset + 1)) - 1));
66 /* shift to appropriate position */
67@@ -233,6 +250,10 @@ gst_parse_vorbis_setup_packet (GstOggStream * pad, ogg_packet * op)
68
69 mode_size_ptr = pad->vorbis_mode_sizes;
70
71+ if (size > G_N_ELEMENTS (pad->vorbis_mode_sizes)) {
72+ return -1;
73+ }
74+
75 for (i = 0; i < size; i++) {
76 offset = (offset + 1) % 8;
77 if (offset == 0)
78--
792.30.2
80
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0007-oggstream-review-and-fix-per-format-min_packet_size.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0007-oggstream-review-and-fix-per-format-min_packet_size.patch
new file mode 100644
index 0000000000..b469049a94
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0007-oggstream-review-and-fix-per-format-min_packet_size.patch
@@ -0,0 +1,168 @@
1From e633ec642825466b91fc12da6629c307906fa206 Mon Sep 17 00:00:00 2001
2From: Mathieu Duponchelle <mathieu@centricular.com>
3Date: Wed, 2 Oct 2024 16:52:51 +0200
4Subject: [PATCH 2/2] oggstream: review and fix per-format min_packet_size
5
6This addresses all manually detected invalid reads in setup functions.
7
8Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8038>
9
10CVE: CVE-2024-47615
11Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/e633ec642825466b91fc12da6629c307906fa206]
12Signed-off-by: Peter Marko <peter.marko@siemens.com>
13---
14 ext/ogg/gstoggstream.c | 40 ++++++++++++----------------------------
15 1 file changed, 12 insertions(+), 28 deletions(-)
16
17diff --git a/ext/ogg/gstoggstream.c b/ext/ogg/gstoggstream.c
18index a8883304a5..ab6be238dc 100644
19--- a/ext/ogg/gstoggstream.c
20+++ b/ext/ogg/gstoggstream.c
21@@ -665,11 +665,6 @@ setup_vp8_mapper (GstOggStream * pad, ogg_packet * packet)
22 {
23 gint width, height, par_n, par_d, fps_n, fps_d;
24
25- if (packet->bytes < 26) {
26- GST_DEBUG ("Failed to parse VP8 BOS page");
27- return FALSE;
28- }
29-
30 width = GST_READ_UINT16_BE (packet->packet + 8);
31 height = GST_READ_UINT16_BE (packet->packet + 10);
32 par_n = GST_READ_UINT24_BE (packet->packet + 12);
33@@ -1221,11 +1216,6 @@ setup_fishead_mapper (GstOggStream * pad, ogg_packet * packet)
34 gint64 prestime_n, prestime_d;
35 gint64 basetime_n, basetime_d;
36
37- if (packet->bytes < 44) {
38- GST_DEBUG ("Not enough data for fishead header");
39- return FALSE;
40- }
41-
42 data = packet->packet;
43
44 data += 8; /* header */
45@@ -1256,8 +1246,8 @@ setup_fishead_mapper (GstOggStream * pad, ogg_packet * packet)
46 pad->prestime = -1;
47
48 /* Ogg Skeleton 3.3+ streams provide additional information in the header */
49- if (packet->bytes >= SKELETON_FISHEAD_3_3_MIN_SIZE && pad->skeleton_major == 3
50- && pad->skeleton_minor > 0) {
51+ if (packet->bytes - 44 >= SKELETON_FISHEAD_3_3_MIN_SIZE
52+ && pad->skeleton_major == 3 && pad->skeleton_minor > 0) {
53 gint64 firstsampletime_n, firstsampletime_d;
54 gint64 lastsampletime_n, lastsampletime_d;
55 gint64 firstsampletime, lastsampletime;
56@@ -1296,7 +1286,7 @@ setup_fishead_mapper (GstOggStream * pad, ogg_packet * packet)
57
58 GST_INFO ("skeleton fishead parsed total: %" GST_TIME_FORMAT,
59 GST_TIME_ARGS (pad->total_time));
60- } else if (packet->bytes >= SKELETON_FISHEAD_4_0_MIN_SIZE
61+ } else if (packet->bytes - 44 >= SKELETON_FISHEAD_4_0_MIN_SIZE
62 && pad->skeleton_major == 4) {
63 guint64 segment_length, content_offset;
64
65@@ -1980,9 +1970,6 @@ setup_kate_mapper (GstOggStream * pad, ogg_packet * packet)
66 guint8 *data = packet->packet;
67 const char *category;
68
69- if (packet->bytes < 64)
70- return FALSE;
71-
72 pad->granulerate_n = GST_READ_UINT32_LE (data + 24);
73 pad->granulerate_d = GST_READ_UINT32_LE (data + 28);
74 pad->granuleshift = GST_READ_UINT8 (data + 15);
75@@ -2111,9 +2098,6 @@ setup_opus_mapper (GstOggStream * pad, ogg_packet * packet)
76 {
77 GstBuffer *buffer;
78
79- if (packet->bytes < 19)
80- return FALSE;
81-
82 pad->granulerate_n = 48000;
83 pad->granulerate_d = 1;
84 pad->granuleshift = 0;
85@@ -2394,7 +2378,7 @@ const GstOggMap mappers[] = {
86 NULL
87 },
88 {
89- "\001vorbis", 7, 22,
90+ "\001vorbis", 7, 29,
91 "audio/x-vorbis",
92 setup_vorbis_mapper,
93 NULL,
94@@ -2426,7 +2410,7 @@ const GstOggMap mappers[] = {
95 NULL
96 },
97 {
98- "PCM ", 8, 0,
99+ "PCM ", 8, 28,
100 "audio/x-raw",
101 setup_pcm_mapper,
102 NULL,
103@@ -2442,7 +2426,7 @@ const GstOggMap mappers[] = {
104 NULL
105 },
106 {
107- "CMML\0\0\0\0", 8, 0,
108+ "CMML\0\0\0\0", 8, 29,
109 "text/x-cmml",
110 setup_cmml_mapper,
111 NULL,
112@@ -2458,7 +2442,7 @@ const GstOggMap mappers[] = {
113 NULL
114 },
115 {
116- "Annodex", 7, 0,
117+ "Annodex", 7, 44,
118 "application/x-annodex",
119 setup_fishead_mapper,
120 NULL,
121@@ -2537,7 +2521,7 @@ const GstOggMap mappers[] = {
122 NULL
123 },
124 {
125- "CELT ", 8, 0,
126+ "CELT ", 8, 60,
127 "audio/x-celt",
128 setup_celt_mapper,
129 NULL,
130@@ -2553,7 +2537,7 @@ const GstOggMap mappers[] = {
131 NULL
132 },
133 {
134- "\200kate\0\0\0", 8, 0,
135+ "\200kate\0\0\0", 8, 64,
136 "text/x-kate",
137 setup_kate_mapper,
138 NULL,
139@@ -2585,7 +2569,7 @@ const GstOggMap mappers[] = {
140 NULL
141 },
142 {
143- "OVP80\1\1", 7, 4,
144+ "OVP80\1\1", 7, 26,
145 "video/x-vp8",
146 setup_vp8_mapper,
147 setup_vp8_mapper_from_caps,
148@@ -2601,7 +2585,7 @@ const GstOggMap mappers[] = {
149 update_stats_vp8
150 },
151 {
152- "OpusHead", 8, 0,
153+ "OpusHead", 8, 19,
154 "audio/x-opus",
155 setup_opus_mapper,
156 NULL,
157@@ -2649,7 +2633,7 @@ const GstOggMap mappers[] = {
158 NULL
159 },
160 {
161- "\001text\0\0\0", 9, 9,
162+ "\001text\0\0\0", 9, 25,
163 "application/x-ogm-text",
164 setup_ogmtext_mapper,
165 NULL,
166--
1672.30.2
168
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0008-ssaparse-Search-for-closing-brace-after-opening-brac.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0008-ssaparse-Search-for-closing-brace-after-opening-brac.patch
new file mode 100644
index 0000000000..a20d2b4cca
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0008-ssaparse-Search-for-closing-brace-after-opening-brac.patch
@@ -0,0 +1,38 @@
1From 15bb318416e1bf6b6b557006a37d1da86c3a76a8 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 21:40:44 +0300
4Subject: [PATCH 1/2] ssaparse: Search for closing brace after opening brace
5
6Otherwise removing anything between the braces leads to out of bound writes if
7there is a closing brace before the first opening brace.
8
9Thanks to Antonio Morales for finding and reporting the issue.
10
11Fixes GHSL-2024-228
12Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3870
13
14Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8036>
15
16CVE: CVE-2024-47541
17Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/15bb318416e1bf6b6b557006a37d1da86c3a76a8]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 gst/subparse/gstssaparse.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/gst/subparse/gstssaparse.c b/gst/subparse/gstssaparse.c
24index 42fbb42b99..37b892e928 100644
25--- a/gst/subparse/gstssaparse.c
26+++ b/gst/subparse/gstssaparse.c
27@@ -238,7 +238,7 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
28 gboolean removed_any = FALSE;
29
30 while ((t = strchr (txt, '{'))) {
31- end = strchr (txt, '}');
32+ end = strchr (t, '}');
33 if (end == NULL) {
34 GST_WARNING_OBJECT (parse, "Missing { for style override code");
35 return removed_any;
36--
372.30.2
38
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-ssaparse-Don-t-use-strstr-on-strings-that-are-potent.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-ssaparse-Don-t-use-strstr-on-strings-that-are-potent.patch
new file mode 100644
index 0000000000..e6674c7bfd
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0009-ssaparse-Don-t-use-strstr-on-strings-that-are-potent.patch
@@ -0,0 +1,99 @@
1From 403b10eba06679319aa2e35d310236234782102f Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 18:36:19 +0300
4Subject: [PATCH 2/2] ssaparse: Don't use strstr() on strings that are
5 potentially not NULL-terminated
6
7Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8036>
8
9CVE: CVE-2024-47541
10Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/403b10eba06679319aa2e35d310236234782102f]
11Signed-off-by: Peter Marko <peter.marko@siemens.com>
12---
13 gst/subparse/gstssaparse.c | 36 +++++++++++++++++++++++++++++++++++-
14 meson.build | 1 +
15 2 files changed, 36 insertions(+), 1 deletion(-)
16
17diff --git a/gst/subparse/gstssaparse.c b/gst/subparse/gstssaparse.c
18index 37b892e928..c162a542f5 100644
19--- a/gst/subparse/gstssaparse.c
20+++ b/gst/subparse/gstssaparse.c
21@@ -146,6 +146,35 @@ gst_ssa_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
22 return res;
23 }
24
25+#ifndef HAVE_MEMMEM
26+// memmem() is a GNU extension so if it's not available we'll need
27+// our own implementation here. Thanks C.
28+static void *
29+my_memmem (const void *haystack, size_t haystacklen, const void *needle,
30+ size_t needlelen)
31+{
32+ const guint8 *cur, *end;
33+
34+ if (needlelen > haystacklen)
35+ return NULL;
36+ if (needlelen == 0)
37+ return (void *) haystack;
38+
39+
40+ cur = haystack;
41+ end = cur + haystacklen - needlelen;
42+
43+ for (; cur <= end; cur++) {
44+ if (memcmp (cur, needle, needlelen) == 0)
45+ return (void *) cur;
46+ }
47+
48+ return NULL;
49+}
50+#else
51+#define my_memmem memmem
52+#endif
53+
54 static gboolean
55 gst_ssa_parse_setcaps (GstPad * sinkpad, GstCaps * caps)
56 {
57@@ -154,6 +183,7 @@ gst_ssa_parse_setcaps (GstPad * sinkpad, GstCaps * caps)
58 const GValue *val;
59 GstStructure *s;
60 const guchar bom_utf8[] = { 0xEF, 0xBB, 0xBF };
61+ const guint8 header[] = "[Script Info]";
62 const gchar *end;
63 GstBuffer *priv;
64 GstMapInfo map;
65@@ -193,7 +223,7 @@ gst_ssa_parse_setcaps (GstPad * sinkpad, GstCaps * caps)
66 left -= 3;
67 }
68
69- if (!strstr (ptr, "[Script Info]"))
70+ if (!my_memmem (ptr, left, header, sizeof (header) - 1))
71 goto invalid_init;
72
73 if (!g_utf8_validate (ptr, left, &end)) {
74@@ -231,6 +261,10 @@ invalid_init:
75 }
76 }
77
78+#ifdef my_memmem
79+#undef my_memmem
80+#endif
81+
82 static gboolean
83 gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
84 {
85diff --git a/meson.build b/meson.build
86index d1033bef4a..65d0944114 100644
87--- a/meson.build
88+++ b/meson.build
89@@ -199,6 +199,7 @@ check_functions = [
90 ['HAVE_LRINTF', 'lrintf', '#include<math.h>'],
91 ['HAVE_MMAP', 'mmap', '#include<sys/mman.h>'],
92 ['HAVE_LOG2', 'log2', '#include<math.h>'],
93+ ['HAVE_MEMMEM', 'memmem', '#include<string.h>'],
94 ]
95
96 libm = cc.find_library('m', required : false)
97--
982.30.2
99
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-id3v2-Don-t-try-parsing-extended-header-if-not-enoug.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-id3v2-Don-t-try-parsing-extended-header-if-not-enoug.patch
new file mode 100644
index 0000000000..4b514ff875
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0010-id3v2-Don-t-try-parsing-extended-header-if-not-enoug.patch
@@ -0,0 +1,64 @@
1From 537161868f36048571f400648ac7909f26c73d53 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Thu, 26 Sep 2024 13:43:06 +0300
4Subject: [PATCH] id3v2: Don't try parsing extended header if not enough data
5 is available
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-235
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3842
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8033>
13
14CVE: CVE-2024-47542
15Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/537161868f36048571f400648ac7909f26c73d53]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 gst-libs/gst/tag/id3v2.c | 11 ++++++++---
19 1 file changed, 8 insertions(+), 3 deletions(-)
20
21diff --git a/gst-libs/gst/tag/id3v2.c b/gst-libs/gst/tag/id3v2.c
22index 7db2cb7e12..70f975d133 100644
23--- a/gst-libs/gst/tag/id3v2.c
24+++ b/gst-libs/gst/tag/id3v2.c
25@@ -29,7 +29,7 @@
26
27 #define HANDLE_INVALID_SYNCSAFE
28
29-static gboolean id3v2_frames_to_tag_list (ID3TagsWorking * work, guint size);
30+static gboolean id3v2_frames_to_tag_list (ID3TagsWorking * work);
31
32 #ifndef GST_DISABLE_GST_DEBUG
33
34@@ -258,7 +258,7 @@ gst_tag_list_from_id3v2_tag (GstBuffer * buffer)
35 GST_MEMDUMP ("ID3v2 tag (un-unsyced)", uu_data, work.hdr.frame_data_size);
36 }
37
38- id3v2_frames_to_tag_list (&work, work.hdr.frame_data_size);
39+ id3v2_frames_to_tag_list (&work);
40
41 g_free (uu_data);
42
43@@ -440,12 +440,17 @@ id3v2_add_id3v2_frame_blob_to_taglist (ID3TagsWorking * work,
44 }
45
46 static gboolean
47-id3v2_frames_to_tag_list (ID3TagsWorking * work, guint size)
48+id3v2_frames_to_tag_list (ID3TagsWorking * work)
49 {
50 guint frame_hdr_size;
51
52 /* Extended header if present */
53 if (work->hdr.flags & ID3V2_HDR_FLAG_EXTHDR) {
54+ if (work->hdr.frame_data_size < 4) {
55+ GST_DEBUG ("Tag has no extended header data. Broken tag");
56+ return FALSE;
57+ }
58+
59 work->hdr.ext_hdr_size = id3v2_read_synch_uint (work->hdr.frame_data, 4);
60
61 /* In id3v2.4.x the header size is the size of the *whole*
62--
632.30.2
64
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-discoverer-Don-t-print-channel-layout-for-more-than-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-discoverer-Don-t-print-channel-layout-for-more-than-.patch
new file mode 100644
index 0000000000..6762f256e0
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0011-discoverer-Don-t-print-channel-layout-for-more-than-.patch
@@ -0,0 +1,38 @@
1From aa07d94c10d71fac389dbbb264a59c1f6117eead Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 18:19:30 +0300
4Subject: [PATCH] discoverer: Don't print channel layout for more than 64
5 channels
6
764+ channels are always unpositioned / unknown layout.
8
9Thanks to Antonio Morales for finding and reporting the issue.
10
11Fixes GHSL-2024-248
12Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3864
13
14Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8034>
15
16CVE: CVE-2024-47600
17Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/aa07d94c10d71fac389dbbb264a59c1f6117eead]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 tools/gst-discoverer.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/tools/gst-discoverer.c b/tools/gst-discoverer.c
24index e3f048bed5..4a2a1b4bc4 100644
25--- a/tools/gst-discoverer.c
26+++ b/tools/gst-discoverer.c
27@@ -222,7 +222,7 @@ format_channel_mask (GstDiscovererAudioInfo * ainfo)
28
29 channel_mask = gst_discoverer_audio_info_get_channel_mask (ainfo);
30
31- if (channel_mask != 0) {
32+ if (channel_mask != 0 && channels <= 64) {
33 gst_audio_channel_positions_from_mask (channels, channel_mask, position);
34
35 for (i = 0; i < channels; i++) {
36--
372.30.2
38
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0012-subparse-Check-for-NULL-return-of-strchr-when-parsin.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0012-subparse-Check-for-NULL-return-of-strchr-when-parsin.patch
new file mode 100644
index 0000000000..b778e7053b
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0012-subparse-Check-for-NULL-return-of-strchr-when-parsin.patch
@@ -0,0 +1,39 @@
1From 4c40f73b7002967e824ef34a5435282f4a0ea363 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Wed, 9 Oct 2024 11:23:47 -0400
4Subject: [PATCH] subparse: Check for NULL return of strchr() when parsing LRC
5 subtitles
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-263
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3892
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8039>
13
14CVE: CVE-2024-47835
15Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/4c40f73b7002967e824ef34a5435282f4a0ea363]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 gst/subparse/gstsubparse.c | 5 +++++
19 1 file changed, 5 insertions(+)
20
21diff --git a/gst/subparse/gstsubparse.c b/gst/subparse/gstsubparse.c
22index 8d925524a6..7d286ed318 100644
23--- a/gst/subparse/gstsubparse.c
24+++ b/gst/subparse/gstsubparse.c
25@@ -1068,6 +1068,11 @@ parse_lrc (ParserState * state, const gchar * line)
26 return NULL;
27
28 start = strchr (line, ']');
29+ // sscanf() does not check for the trailing ] but only up to the last
30+ // placeholder, so there might be no ] at the end.
31+ if (!start)
32+ return NULL;
33+
34 if (start - line == 9)
35 milli = 10;
36 else
37--
382.30.2
39
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.12.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.12.bb
index 5905c2d5b1..05cb956815 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.12.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.12.bb
@@ -10,6 +10,15 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-ba
10 file://0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch \ 10 file://0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch \
11 file://0003-viv-fb-Make-sure-config.h-is-included.patch \ 11 file://0003-viv-fb-Make-sure-config.h-is-included.patch \
12 file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \ 12 file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \
13 file://0004-vorbisdec-Set-at-most-64-channels-to-NONE-position.patch \
14 file://0005-opusdec-Set-at-most-64-channels-to-NONE-position.patch \
15 file://0006-vorbis_parse-check-writes-to-GstOggStream.vorbis_mod.patch \
16 file://0007-oggstream-review-and-fix-per-format-min_packet_size.patch \
17 file://0008-ssaparse-Search-for-closing-brace-after-opening-brac.patch \
18 file://0009-ssaparse-Don-t-use-strstr-on-strings-that-are-potent.patch \
19 file://0010-id3v2-Don-t-try-parsing-extended-header-if-not-enoug.patch \
20 file://0011-discoverer-Don-t-print-channel-layout-for-more-than-.patch \
21 file://0012-subparse-Check-for-NULL-return-of-strchr-when-parsin.patch \
13 " 22 "
14SRC_URI[sha256sum] = "73cfadc3a6ffe77ed974cfd6fb391c605e4531f48db21dd6b9f42b8cb69bd8c1" 23SRC_URI[sha256sum] = "73cfadc3a6ffe77ed974cfd6fb391c605e4531f48db21dd6b9f42b8cb69bd8c1"
15 24
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qtdemux-Skip-zero-sized-boxes-instead-of-stopping-to.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qtdemux-Skip-zero-sized-boxes-instead-of-stopping-to.patch
new file mode 100644
index 0000000000..d9f1474ba4
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qtdemux-Skip-zero-sized-boxes-instead-of-stopping-to.patch
@@ -0,0 +1,124 @@
1From 62de06c7a443a5ac40ab2a4f2589625932bf9632 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Tue, 24 Sep 2024 09:50:34 +0300
4Subject: [PATCH 01/13] qtdemux: Skip zero-sized boxes instead of stopping to
5 look at further boxes
6
7A zero-sized box is not really a problem and can be skipped to look at any
8possibly following ones.
9
10BMD ATEM devices specifically write a zero-sized bmdc box in the sample
11description, followed by the avcC box in case of h264. Previously the avcC box
12would simply not be read at all and the file would be unplayable.
13
14Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7620>
15
16Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/62de06c7a443a5ac40ab2a4f2589625932bf9632]
17Signed-off-by: Peter Marko <peter.marko@siemens.com>
18---
19 gst/isomp4/qtdemux.c | 54 +++++++++++++++++++++++++++++---------------
20 1 file changed, 36 insertions(+), 18 deletions(-)
21
22diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
23index a53d61e649..2f2ca4459b 100644
24--- a/gst/isomp4/qtdemux.c
25+++ b/gst/isomp4/qtdemux.c
26@@ -11666,9 +11666,12 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
27 else
28 size = len - 0x8;
29
30- if (size < 1)
31- /* No real data, so break out */
32- break;
33+ /* No real data, so skip */
34+ if (size < 1) {
35+ len -= 8;
36+ avc_data += 8;
37+ continue;
38+ }
39
40 switch (QT_FOURCC (avc_data + 0x4)) {
41 case FOURCC_avcC:
42@@ -11783,9 +11786,12 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
43 else
44 size = len - 0x8;
45
46- if (size < 1)
47- /* No real data, so break out */
48- break;
49+ /* No real data, so skip */
50+ if (size < 1) {
51+ len -= 8;
52+ hevc_data += 8;
53+ continue;
54+ }
55
56 switch (QT_FOURCC (hevc_data + 0x4)) {
57 case FOURCC_hvcC:
58@@ -12207,9 +12213,12 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
59 else
60 size = len - 8;
61
62- if (size < 1)
63- /* No real data, so break out */
64- break;
65+ /* No real data, so skip */
66+ if (size < 1) {
67+ len -= 8;
68+ vc1_data += 8;
69+ continue;
70+ }
71
72 switch (QT_FOURCC (vc1_data + 0x4)) {
73 case GST_MAKE_FOURCC ('d', 'v', 'c', '1'):
74@@ -12249,9 +12258,12 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
75 else
76 size = len - 0x8;
77
78- if (size < 1)
79- /* No real data, so break out */
80- break;
81+ /* No real data, so skip */
82+ if (size < 1) {
83+ len -= 8;
84+ av1_data += 8;
85+ continue;
86+ }
87
88 switch (QT_FOURCC (av1_data + 0x4)) {
89 case FOURCC_av1C:
90@@ -12359,9 +12371,12 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
91 else
92 size = len - 0x8;
93
94- if (size < 1)
95- /* No real data, so break out */
96- break;
97+ /* No real data, so skip */
98+ if (size < 1) {
99+ len -= 8;
100+ vpcc_data += 8;
101+ continue;
102+ }
103
104 switch (QT_FOURCC (vpcc_data + 0x4)) {
105 case FOURCC_vpcC:
106@@ -12861,9 +12876,12 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
107 else
108 size = len - 8;
109
110- if (size < 1)
111- /* No real data, so break out */
112- break;
113+ /* No real data, so skip */
114+ if (size < 1) {
115+ len -= 8;
116+ wfex_data += 8;
117+ continue;
118+ }
119
120 switch (QT_FOURCC (wfex_data + 4)) {
121 case GST_MAKE_FOURCC ('w', 'f', 'e', 'x'):
122--
1232.30.2
124
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0002-qtdemux-Fix-integer-overflow-when-allocating-the-sam.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0002-qtdemux-Fix-integer-overflow-when-allocating-the-sam.patch
new file mode 100644
index 0000000000..4eacb4e198
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0002-qtdemux-Fix-integer-overflow-when-allocating-the-sam.patch
@@ -0,0 +1,63 @@
1From 0e58b2f7ad7b310201eada442a6782aaebe8e2bd Mon Sep 17 00:00:00 2001
2From: Antonio Morales <antonio-morales@github.com>
3Date: Thu, 26 Sep 2024 18:39:37 +0300
4Subject: [PATCH 02/13] qtdemux: Fix integer overflow when allocating the
5 samples table for fragmented MP4
6
7This can lead to out of bounds writes and NULL pointer dereferences.
8
9Fixes GHSL-2024-094, GHSL-2024-237, GHSL-2024-241
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3839
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
13
14CVE: CVE-2024-47537
15Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/0e58b2f7ad7b310201eada442a6782aaebe8e2bd]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 gst/isomp4/qtdemux.c | 12 ++++++------
19 1 file changed, 6 insertions(+), 6 deletions(-)
20
21diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
22index 2ccc9f3595..54f2dfead3 100644
23--- a/gst/isomp4/qtdemux.c
24+++ b/gst/isomp4/qtdemux.c
25@@ -3342,6 +3342,7 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun,
26 gint i;
27 guint8 *data;
28 guint entry_size, dur_offset, size_offset, flags_offset = 0, ct_offset = 0;
29+ guint new_n_samples;
30 QtDemuxSample *sample;
31 gboolean ismv = FALSE;
32 gint64 initial_offset;
33@@ -3442,14 +3443,13 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun,
34 goto fail;
35 data = (guint8 *) gst_byte_reader_peek_data_unchecked (trun);
36
37- if (stream->n_samples + samples_count >=
38- QTDEMUX_MAX_SAMPLE_INDEX_SIZE / sizeof (QtDemuxSample))
39+ if (!g_uint_checked_add (&new_n_samples, stream->n_samples, samples_count) ||
40+ new_n_samples >= QTDEMUX_MAX_SAMPLE_INDEX_SIZE / sizeof (QtDemuxSample))
41 goto index_too_big;
42
43 GST_DEBUG_OBJECT (qtdemux, "allocating n_samples %u * %u (%.2f MB)",
44- stream->n_samples + samples_count, (guint) sizeof (QtDemuxSample),
45- (stream->n_samples + samples_count) *
46- sizeof (QtDemuxSample) / (1024.0 * 1024.0));
47+ new_n_samples, (guint) sizeof (QtDemuxSample),
48+ (new_n_samples) * sizeof (QtDemuxSample) / (1024.0 * 1024.0));
49
50 /* create a new array of samples if it's the first sample parsed */
51 if (stream->n_samples == 0) {
52@@ -3458,7 +3458,7 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun,
53 /* or try to reallocate it with space enough to insert the new samples */
54 } else
55 stream->samples = g_try_renew (QtDemuxSample, stream->samples,
56- stream->n_samples + samples_count);
57+ new_n_samples);
58 if (stream->samples == NULL)
59 goto out_of_memory;
60
61--
622.30.2
63
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-qtdemux-Fix-debug-output-during-trun-parsing.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-qtdemux-Fix-debug-output-during-trun-parsing.patch
new file mode 100644
index 0000000000..298ecb0fe6
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0003-qtdemux-Fix-debug-output-during-trun-parsing.patch
@@ -0,0 +1,72 @@
1From c077ff2585927540f038635f26ca4ba99dc92f10 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Thu, 26 Sep 2024 18:40:56 +0300
4Subject: [PATCH 03/13] qtdemux: Fix debug output during trun parsing
5
6Various integers are unsigned so print them as such. Also print the actual
7allocation size if allocation fails, not only parts of it.
8
9Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
10
11Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/c077ff2585927540f038635f26ca4ba99dc92f10]
12Signed-off-by: Peter Marko <peter.marko@siemens.com>
13---
14 gst/isomp4/qtdemux.c | 17 +++++++++--------
15 1 file changed, 9 insertions(+), 8 deletions(-)
16
17diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
18index 54f2dfead3..4bb24b1b80 100644
19--- a/gst/isomp4/qtdemux.c
20+++ b/gst/isomp4/qtdemux.c
21@@ -3348,8 +3348,8 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun,
22 gint64 initial_offset;
23 gint32 min_ct = 0;
24
25- GST_LOG_OBJECT (qtdemux, "parsing trun track-id %d; "
26- "default dur %d, size %d, flags 0x%x, base offset %" G_GINT64_FORMAT ", "
27+ GST_LOG_OBJECT (qtdemux, "parsing trun track-id %u; "
28+ "default dur %u, size %u, flags 0x%x, base offset %" G_GINT64_FORMAT ", "
29 "decode ts %" G_GINT64_FORMAT, stream->track_id, d_sample_duration,
30 d_sample_size, d_sample_flags, *base_offset, decode_ts);
31
32@@ -3377,7 +3377,7 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun,
33 /* note this is really signed */
34 if (!gst_byte_reader_get_int32_be (trun, &data_offset))
35 goto fail;
36- GST_LOG_OBJECT (qtdemux, "trun data offset %d", data_offset);
37+ GST_LOG_OBJECT (qtdemux, "trun data offset %u", data_offset);
38 /* default base offset = first byte of moof */
39 if (*base_offset == -1) {
40 GST_LOG_OBJECT (qtdemux, "base_offset at moof");
41@@ -3399,7 +3399,7 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun,
42
43 GST_LOG_OBJECT (qtdemux, "running offset now %" G_GINT64_FORMAT,
44 *running_offset);
45- GST_LOG_OBJECT (qtdemux, "trun offset %d, flags 0x%x, entries %d",
46+ GST_LOG_OBJECT (qtdemux, "trun offset %u, flags 0x%x, entries %u",
47 data_offset, flags, samples_count);
48
49 if (flags & TR_FIRST_SAMPLE_FLAGS) {
50@@ -3608,14 +3608,15 @@ fail:
51 }
52 out_of_memory:
53 {
54- GST_WARNING_OBJECT (qtdemux, "failed to allocate %d samples",
55- stream->n_samples);
56+ GST_WARNING_OBJECT (qtdemux, "failed to allocate %u + %u samples",
57+ stream->n_samples, samples_count);
58 return FALSE;
59 }
60 index_too_big:
61 {
62- GST_WARNING_OBJECT (qtdemux, "not allocating index of %d samples, would "
63- "be larger than %uMB (broken file?)", stream->n_samples,
64+ GST_WARNING_OBJECT (qtdemux,
65+ "not allocating index of %u + %u samples, would "
66+ "be larger than %uMB (broken file?)", stream->n_samples, samples_count,
67 QTDEMUX_MAX_SAMPLE_INDEX_SIZE >> 20);
68 return FALSE;
69 }
70--
712.30.2
72
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0004-qtdemux-Don-t-iterate-over-all-trun-entries-if-none-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0004-qtdemux-Don-t-iterate-over-all-trun-entries-if-none-.patch
new file mode 100644
index 0000000000..bc924391fe
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0004-qtdemux-Don-t-iterate-over-all-trun-entries-if-none-.patch
@@ -0,0 +1,35 @@
1From 53464dd2cf1a03f838899f7355133766ff211fce Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Thu, 26 Sep 2024 18:41:39 +0300
4Subject: [PATCH 04/13] qtdemux: Don't iterate over all trun entries if none of
5 the flags are set
6
7Nothing would be printed anyway.
8
9Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
10
11Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/53464dd2cf1a03f838899f7355133766ff211fce]
12Signed-off-by: Peter Marko <peter.marko@siemens.com>
13---
14 gst/isomp4/qtdemux_dump.c | 5 +++++
15 1 file changed, 5 insertions(+)
16
17diff --git a/gst/isomp4/qtdemux_dump.c b/gst/isomp4/qtdemux_dump.c
18index 22da35e9e7..297b580ef0 100644
19--- a/gst/isomp4/qtdemux_dump.c
20+++ b/gst/isomp4/qtdemux_dump.c
21@@ -836,6 +836,11 @@ qtdemux_dump_trun (GstQTDemux * qtdemux, GstByteReader * data, int depth)
22 GST_LOG ("%*s first-sample-flags: %u", depth, "", first_sample_flags);
23 }
24
25+ /* Nothing to print below */
26+ if ((flags & (TR_SAMPLE_DURATION | TR_SAMPLE_SIZE | TR_SAMPLE_FLAGS |
27+ TR_COMPOSITION_TIME_OFFSETS)) == 0)
28+ return TRUE;
29+
30 for (i = 0; i < samples_count; i++) {
31 if (flags & TR_SAMPLE_DURATION) {
32 if (!gst_byte_reader_get_uint32_be (data, &sample_duration))
33--
342.30.2
35
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0005-qtdemux-Check-sizes-of-stsc-stco-stts-before-trying-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0005-qtdemux-Check-sizes-of-stsc-stco-stts-before-trying-.patch
new file mode 100644
index 0000000000..25796bd983
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0005-qtdemux-Check-sizes-of-stsc-stco-stts-before-trying-.patch
@@ -0,0 +1,63 @@
1From 1fac18a8fa269343dd43c9a4bca8d89f307fb7a0 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 27 Sep 2024 15:50:54 +0300
4Subject: [PATCH 05/13] qtdemux: Check sizes of stsc/stco/stts before trying to
5 merge entries
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-246
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3854
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
13
14CVE: CVE-2024-47598
15Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/1fac18a8fa269343dd43c9a4bca8d89f307fb7a0]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 gst/isomp4/qtdemux.c | 22 ++++++++++++++++++++++
19 1 file changed, 22 insertions(+)
20
21diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
22index 4bb24b1b80..d1aa9ee5a0 100644
23--- a/gst/isomp4/qtdemux.c
24+++ b/gst/isomp4/qtdemux.c
25@@ -9476,6 +9476,21 @@ qtdemux_merge_sample_table (GstQTDemux * qtdemux, QtDemuxStream * stream)
26 return;
27 }
28
29+ if (gst_byte_reader_get_remaining (&stream->stts) < 8) {
30+ GST_DEBUG_OBJECT (qtdemux, "Too small stts");
31+ return;
32+ }
33+
34+ if (stream->stco.size < 8) {
35+ GST_DEBUG_OBJECT (qtdemux, "Too small stco");
36+ return;
37+ }
38+
39+ if (stream->n_samples_per_chunk == 0) {
40+ GST_DEBUG_OBJECT (qtdemux, "No samples per chunk");
41+ return;
42+ }
43+
44 /* Parse the stts to get the sample duration and number of samples */
45 gst_byte_reader_skip_unchecked (&stream->stts, 4);
46 stts_duration = gst_byte_reader_get_uint32_be_unchecked (&stream->stts);
47@@ -9487,6 +9502,13 @@ qtdemux_merge_sample_table (GstQTDemux * qtdemux, QtDemuxStream * stream)
48 GST_DEBUG_OBJECT (qtdemux, "sample_duration %d, num_chunks %u", stts_duration,
49 num_chunks);
50
51+ if (gst_byte_reader_get_remaining (&stream->stsc) <
52+ stream->n_samples_per_chunk * 3 * 4 +
53+ (stream->n_samples_per_chunk - 1) * 4) {
54+ GST_DEBUG_OBJECT (qtdemux, "Too small stsc");
55+ return;
56+ }
57+
58 /* Now parse stsc, convert chunks into single samples and generate a
59 * new stsc, stts and stsz from this information */
60 gst_byte_writer_init (&stsc);
61--
622.30.2
63
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0006-qtdemux-Make-sure-only-an-even-number-of-bytes-is-pr.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0006-qtdemux-Make-sure-only-an-even-number-of-bytes-is-pr.patch
new file mode 100644
index 0000000000..f2ee62fd01
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0006-qtdemux-Make-sure-only-an-even-number-of-bytes-is-pr.patch
@@ -0,0 +1,44 @@
1From 6cca274bf25a5679330debdd61a59840e50c68ab Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Thu, 26 Sep 2024 09:20:28 +0300
4Subject: [PATCH 06/13] qtdemux: Make sure only an even number of bytes is
5 processed when handling CEA608 data
6
7An odd number of bytes would lead to out of bound reads and writes, and doesn't
8make any sense as CEA608 comes in byte pairs.
9
10Strip off any leftover bytes and assume everything before that is valid.
11
12Thanks to Antonio Morales for finding and reporting the issue.
13
14Fixes GHSL-2024-195
15Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3841
16
17Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
18
19CVE: CVE-2024-47539
20Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/6cca274bf25a5679330debdd61a59840e50c68ab]
21Signed-off-by: Peter Marko <peter.marko@siemens.com>
22---
23 gst/isomp4/qtdemux.c | 5 +++++
24 1 file changed, 5 insertions(+)
25
26diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
27index d1aa9ee5a0..ce1a1b8d59 100644
28--- a/gst/isomp4/qtdemux.c
29+++ b/gst/isomp4/qtdemux.c
30@@ -5784,6 +5784,11 @@ convert_to_s334_1a (const guint8 * ccpair, guint8 ccpair_size, guint field,
31 guint8 *storage;
32 gsize i;
33
34+ /* Strip off any leftover odd bytes and assume everything before is valid */
35+ if (ccpair_size % 2 != 0) {
36+ ccpair_size -= 1;
37+ }
38+
39 /* We are converting from pairs to triplets */
40 *res = ccpair_size / 2 * 3;
41 storage = g_malloc (*res);
42--
432.30.2
44
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0007-qtdemux-Make-sure-enough-data-is-available-before-re.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0007-qtdemux-Make-sure-enough-data-is-available-before-re.patch
new file mode 100644
index 0000000000..9b885669a0
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0007-qtdemux-Make-sure-enough-data-is-available-before-re.patch
@@ -0,0 +1,120 @@
1From 64fa1ec0de71db28387a45819681ba760a71e6bc Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Thu, 26 Sep 2024 14:17:02 +0300
4Subject: [PATCH 07/13] qtdemux: Make sure enough data is available before
5 reading wave header node
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-236
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3843
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
13
14CVE: CVE-2024-47543
15Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/64fa1ec0de71db28387a45819681ba760a71e6bc]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 gst/isomp4/qtdemux.c | 84 ++++++++++++++++++++++++--------------------
19 1 file changed, 45 insertions(+), 39 deletions(-)
20
21diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
22index ce1a1b8d59..ed83227d70 100644
23--- a/gst/isomp4/qtdemux.c
24+++ b/gst/isomp4/qtdemux.c
25@@ -13139,47 +13139,53 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
26 } else {
27 guint32 datalen = QT_UINT32 (stsd_entry_data + offset + 16);
28 const guint8 *data = stsd_entry_data + offset + 16;
29- GNode *wavenode;
30- GNode *waveheadernode;
31-
32- wavenode = g_node_new ((guint8 *) data);
33- if (qtdemux_parse_node (qtdemux, wavenode, data, datalen)) {
34- const guint8 *waveheader;
35- guint32 headerlen;
36-
37- waveheadernode = qtdemux_tree_get_child_by_type (wavenode, fourcc);
38- if (waveheadernode) {
39- waveheader = (const guint8 *) waveheadernode->data;
40- headerlen = QT_UINT32 (waveheader);
41-
42- if (headerlen > 8) {
43- gst_riff_strf_auds *header = NULL;
44- GstBuffer *headerbuf;
45- GstBuffer *extra;
46-
47- waveheader += 8;
48- headerlen -= 8;
49-
50- headerbuf = gst_buffer_new_and_alloc (headerlen);
51- gst_buffer_fill (headerbuf, 0, waveheader, headerlen);
52-
53- if (gst_riff_parse_strf_auds (GST_ELEMENT_CAST (qtdemux),
54- headerbuf, &header, &extra)) {
55- gst_caps_unref (entry->caps);
56- /* FIXME: Need to do something with the channel reorder map */
57- entry->caps =
58- gst_riff_create_audio_caps (header->format, NULL, header,
59- extra, NULL, NULL, NULL);
60-
61- if (extra)
62- gst_buffer_unref (extra);
63- g_free (header);
64+
65+ if (len < datalen || len - datalen < offset + 16) {
66+ GST_WARNING_OBJECT (qtdemux, "Not enough data for waveheadernode");
67+ } else {
68+ GNode *wavenode;
69+ GNode *waveheadernode;
70+
71+ wavenode = g_node_new ((guint8 *) data);
72+ if (qtdemux_parse_node (qtdemux, wavenode, data, datalen)) {
73+ const guint8 *waveheader;
74+ guint32 headerlen;
75+
76+ waveheadernode =
77+ qtdemux_tree_get_child_by_type (wavenode, fourcc);
78+ if (waveheadernode) {
79+ waveheader = (const guint8 *) waveheadernode->data;
80+ headerlen = QT_UINT32 (waveheader);
81+
82+ if (headerlen > 8) {
83+ gst_riff_strf_auds *header = NULL;
84+ GstBuffer *headerbuf;
85+ GstBuffer *extra;
86+
87+ waveheader += 8;
88+ headerlen -= 8;
89+
90+ headerbuf = gst_buffer_new_and_alloc (headerlen);
91+ gst_buffer_fill (headerbuf, 0, waveheader, headerlen);
92+
93+ if (gst_riff_parse_strf_auds (GST_ELEMENT_CAST (qtdemux),
94+ headerbuf, &header, &extra)) {
95+ gst_caps_unref (entry->caps);
96+ /* FIXME: Need to do something with the channel reorder map */
97+ entry->caps =
98+ gst_riff_create_audio_caps (header->format, NULL,
99+ header, extra, NULL, NULL, NULL);
100+
101+ if (extra)
102+ gst_buffer_unref (extra);
103+ g_free (header);
104+ }
105 }
106- }
107- } else
108- GST_DEBUG ("Didn't find waveheadernode for this codec");
109+ } else
110+ GST_DEBUG ("Didn't find waveheadernode for this codec");
111+ }
112+ g_node_destroy (wavenode);
113 }
114- g_node_destroy (wavenode);
115 }
116 } else if (esds) {
117 gst_qtdemux_handle_esds (qtdemux, stream, entry, esds,
118--
1192.30.2
120
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0008-qtdemux-Fix-length-checks-and-offsets-in-stsd-entry-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0008-qtdemux-Fix-length-checks-and-offsets-in-stsd-entry-.patch
new file mode 100644
index 0000000000..75ca64f432
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0008-qtdemux-Fix-length-checks-and-offsets-in-stsd-entry-.patch
@@ -0,0 +1,450 @@
1From 2fbd654d4702e396b61b3963caddcefd024be4bc Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 27 Sep 2024 00:12:57 +0300
4Subject: [PATCH 08/13] qtdemux: Fix length checks and offsets in stsd entry
5 parsing
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-242
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3845
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
13
14CVE: CVE-2024-47545
15Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/2fbd654d4702e396b61b3963caddcefd024be4bc]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 gst/isomp4/qtdemux.c | 218 ++++++++++++++++---------------------------
19 1 file changed, 79 insertions(+), 139 deletions(-)
20
21diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
22index ed83227d70..94ce75b2d4 100644
23--- a/gst/isomp4/qtdemux.c
24+++ b/gst/isomp4/qtdemux.c
25@@ -11679,43 +11679,35 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
26 case FOURCC_avc1:
27 case FOURCC_avc3:
28 {
29- guint len = QT_UINT32 (stsd_entry_data);
30+ guint32 len = QT_UINT32 (stsd_entry_data);
31 len = len <= 0x56 ? 0 : len - 0x56;
32 const guint8 *avc_data = stsd_entry_data + 0x56;
33
34 /* find avcC */
35- while (len >= 0x8) {
36- guint size;
37+ while (len >= 8) {
38+ guint32 size = QT_UINT32 (avc_data);
39
40- if (QT_UINT32 (avc_data) <= 0x8)
41- size = 0;
42- else if (QT_UINT32 (avc_data) <= len)
43- size = QT_UINT32 (avc_data) - 0x8;
44- else
45- size = len - 0x8;
46+ if (size < 8 || size > len)
47+ break;
48
49- /* No real data, so skip */
50- if (size < 1) {
51- len -= 8;
52- avc_data += 8;
53- continue;
54- }
55-
56- switch (QT_FOURCC (avc_data + 0x4)) {
57+ switch (QT_FOURCC (avc_data + 4)) {
58 case FOURCC_avcC:
59 {
60 /* parse, if found */
61 GstBuffer *buf;
62
63+ if (size < 8 + 1)
64+ break;
65+
66 GST_DEBUG_OBJECT (qtdemux, "found avcC codec_data in stsd");
67
68 /* First 4 bytes are the length of the atom, the next 4 bytes
69 * are the fourcc, the next 1 byte is the version, and the
70 * subsequent bytes are profile_tier_level structure like data. */
71 gst_codec_utils_h264_caps_set_level_and_profile (entry->caps,
72- avc_data + 8 + 1, size - 1);
73- buf = gst_buffer_new_and_alloc (size);
74- gst_buffer_fill (buf, 0, avc_data + 0x8, size);
75+ avc_data + 8 + 1, size - 8 - 1);
76+ buf = gst_buffer_new_and_alloc (size - 8);
77+ gst_buffer_fill (buf, 0, avc_data + 8, size - 8);
78 gst_caps_set_simple (entry->caps,
79 "codec_data", GST_TYPE_BUFFER, buf, NULL);
80 gst_buffer_unref (buf);
81@@ -11726,6 +11718,9 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
82 {
83 GstBuffer *buf;
84
85+ if (size < 8 + 40 + 1)
86+ break;
87+
88 GST_DEBUG_OBJECT (qtdemux, "found strf codec_data in stsd");
89
90 /* First 4 bytes are the length of the atom, the next 4 bytes
91@@ -11733,17 +11728,14 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
92 * next 1 byte is the version, and the
93 * subsequent bytes are sequence parameter set like data. */
94
95- size -= 40; /* we'll be skipping BITMAPINFOHEADER */
96- if (size > 1) {
97- gst_codec_utils_h264_caps_set_level_and_profile
98- (entry->caps, avc_data + 8 + 40 + 1, size - 1);
99+ gst_codec_utils_h264_caps_set_level_and_profile
100+ (entry->caps, avc_data + 8 + 40 + 1, size - 8 - 40 - 1);
101
102- buf = gst_buffer_new_and_alloc (size);
103- gst_buffer_fill (buf, 0, avc_data + 8 + 40, size);
104- gst_caps_set_simple (entry->caps,
105- "codec_data", GST_TYPE_BUFFER, buf, NULL);
106- gst_buffer_unref (buf);
107- }
108+ buf = gst_buffer_new_and_alloc (size - 8 - 40);
109+ gst_buffer_fill (buf, 0, avc_data + 8 + 40, size - 8 - 40);
110+ gst_caps_set_simple (entry->caps,
111+ "codec_data", GST_TYPE_BUFFER, buf, NULL);
112+ gst_buffer_unref (buf);
113 break;
114 }
115 case FOURCC_btrt:
116@@ -11751,11 +11743,11 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
117 guint avg_bitrate, max_bitrate;
118
119 /* bufferSizeDB, maxBitrate and avgBitrate - 4 bytes each */
120- if (size < 12)
121+ if (size < 8 + 12)
122 break;
123
124- max_bitrate = QT_UINT32 (avc_data + 0xc);
125- avg_bitrate = QT_UINT32 (avc_data + 0x10);
126+ max_bitrate = QT_UINT32 (avc_data + 8 + 4);
127+ avg_bitrate = QT_UINT32 (avc_data + 8 + 8);
128
129 if (!max_bitrate && !avg_bitrate)
130 break;
131@@ -11787,8 +11779,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
132 break;
133 }
134
135- len -= size + 8;
136- avc_data += size + 8;
137+ len -= size;
138+ avc_data += size;
139 }
140
141 break;
142@@ -11799,44 +11791,36 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
143 case FOURCC_dvh1:
144 case FOURCC_dvhe:
145 {
146- guint len = QT_UINT32 (stsd_entry_data);
147+ guint32 len = QT_UINT32 (stsd_entry_data);
148 len = len <= 0x56 ? 0 : len - 0x56;
149 const guint8 *hevc_data = stsd_entry_data + 0x56;
150
151 /* find hevc */
152- while (len >= 0x8) {
153- guint size;
154+ while (len >= 8) {
155+ guint32 size = QT_UINT32 (hevc_data);
156
157- if (QT_UINT32 (hevc_data) <= 0x8)
158- size = 0;
159- else if (QT_UINT32 (hevc_data) <= len)
160- size = QT_UINT32 (hevc_data) - 0x8;
161- else
162- size = len - 0x8;
163+ if (size < 8 || size > len)
164+ break;
165
166- /* No real data, so skip */
167- if (size < 1) {
168- len -= 8;
169- hevc_data += 8;
170- continue;
171- }
172-
173- switch (QT_FOURCC (hevc_data + 0x4)) {
174+ switch (QT_FOURCC (hevc_data + 4)) {
175 case FOURCC_hvcC:
176 {
177 /* parse, if found */
178 GstBuffer *buf;
179
180+ if (size < 8 + 1)
181+ break;
182+
183 GST_DEBUG_OBJECT (qtdemux, "found hvcC codec_data in stsd");
184
185 /* First 4 bytes are the length of the atom, the next 4 bytes
186 * are the fourcc, the next 1 byte is the version, and the
187 * subsequent bytes are sequence parameter set like data. */
188 gst_codec_utils_h265_caps_set_level_tier_and_profile
189- (entry->caps, hevc_data + 8 + 1, size - 1);
190+ (entry->caps, hevc_data + 8 + 1, size - 8 - 1);
191
192- buf = gst_buffer_new_and_alloc (size);
193- gst_buffer_fill (buf, 0, hevc_data + 0x8, size);
194+ buf = gst_buffer_new_and_alloc (size - 8);
195+ gst_buffer_fill (buf, 0, hevc_data + 8, size - 8);
196 gst_caps_set_simple (entry->caps,
197 "codec_data", GST_TYPE_BUFFER, buf, NULL);
198 gst_buffer_unref (buf);
199@@ -11845,8 +11829,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
200 default:
201 break;
202 }
203- len -= size + 8;
204- hevc_data += size + 8;
205+ len -= size;
206+ hevc_data += size;
207 }
208 break;
209 }
210@@ -12226,36 +12210,25 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
211 }
212 case FOURCC_vc_1:
213 {
214- guint len = QT_UINT32 (stsd_entry_data);
215+ guint32 len = QT_UINT32 (stsd_entry_data);
216 len = len <= 0x56 ? 0 : len - 0x56;
217 const guint8 *vc1_data = stsd_entry_data + 0x56;
218
219 /* find dvc1 */
220 while (len >= 8) {
221- guint size;
222+ guint32 size = QT_UINT32 (vc1_data);
223
224- if (QT_UINT32 (vc1_data) <= 8)
225- size = 0;
226- else if (QT_UINT32 (vc1_data) <= len)
227- size = QT_UINT32 (vc1_data) - 8;
228- else
229- size = len - 8;
230+ if (size < 8 || size > len)
231+ break;
232
233- /* No real data, so skip */
234- if (size < 1) {
235- len -= 8;
236- vc1_data += 8;
237- continue;
238- }
239-
240- switch (QT_FOURCC (vc1_data + 0x4)) {
241+ switch (QT_FOURCC (vc1_data + 4)) {
242 case GST_MAKE_FOURCC ('d', 'v', 'c', '1'):
243 {
244 GstBuffer *buf;
245
246 GST_DEBUG_OBJECT (qtdemux, "found dvc1 codec_data in stsd");
247- buf = gst_buffer_new_and_alloc (size);
248- gst_buffer_fill (buf, 0, vc1_data + 8, size);
249+ buf = gst_buffer_new_and_alloc (size - 8);
250+ gst_buffer_fill (buf, 0, vc1_data + 8, size - 8);
251 gst_caps_set_simple (entry->caps,
252 "codec_data", GST_TYPE_BUFFER, buf, NULL);
253 gst_buffer_unref (buf);
254@@ -12264,36 +12237,25 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
255 default:
256 break;
257 }
258- len -= size + 8;
259- vc1_data += size + 8;
260+ len -= size;
261+ vc1_data += size;
262 }
263 break;
264 }
265 case FOURCC_av01:
266 {
267- guint len = QT_UINT32 (stsd_entry_data);
268+ guint32 len = QT_UINT32 (stsd_entry_data);
269 len = len <= 0x56 ? 0 : len - 0x56;
270 const guint8 *av1_data = stsd_entry_data + 0x56;
271
272 /* find av1C */
273- while (len >= 0x8) {
274- guint size;
275+ while (len >= 8) {
276+ guint32 size = QT_UINT32 (av1_data);
277
278- if (QT_UINT32 (av1_data) <= 0x8)
279- size = 0;
280- else if (QT_UINT32 (av1_data) <= len)
281- size = QT_UINT32 (av1_data) - 0x8;
282- else
283- size = len - 0x8;
284+ if (size < 8 || size > len)
285+ break;
286
287- /* No real data, so skip */
288- if (size < 1) {
289- len -= 8;
290- av1_data += 8;
291- continue;
292- }
293-
294- switch (QT_FOURCC (av1_data + 0x4)) {
295+ switch (QT_FOURCC (av1_data + 4)) {
296 case FOURCC_av1C:
297 {
298 /* parse, if found */
299@@ -12303,7 +12265,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
300 "found av1C codec_data in stsd of size %d", size);
301
302 /* not enough data, just ignore and hope for the best */
303- if (size < 4)
304+ if (size < 8 + 4)
305 break;
306
307 /* Content is:
308@@ -12352,9 +12314,9 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
309 (gint) (pres_delay_field & 0x0F) + 1, NULL);
310 }
311
312- buf = gst_buffer_new_and_alloc (size);
313+ buf = gst_buffer_new_and_alloc (size - 8);
314 GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_HEADER);
315- gst_buffer_fill (buf, 0, av1_data + 8, size);
316+ gst_buffer_fill (buf, 0, av1_data + 8, size - 8);
317 gst_caps_set_simple (entry->caps,
318 "codec_data", GST_TYPE_BUFFER, buf, NULL);
319 gst_buffer_unref (buf);
320@@ -12372,8 +12334,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
321 break;
322 }
323
324- len -= size + 8;
325- av1_data += size + 8;
326+ len -= size;
327+ av1_data += size;
328 }
329
330 break;
331@@ -12384,29 +12346,18 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
332 * vp08, vp09, and vp10 fourcc. */
333 case FOURCC_vp09:
334 {
335- guint len = QT_UINT32 (stsd_entry_data);
336+ guint32 len = QT_UINT32 (stsd_entry_data);
337 len = len <= 0x56 ? 0 : len - 0x56;
338 const guint8 *vpcc_data = stsd_entry_data + 0x56;
339
340 /* find vpcC */
341- while (len >= 0x8) {
342- guint size;
343+ while (len >= 8) {
344+ guint32 size = QT_UINT32 (vpcc_data);
345
346- if (QT_UINT32 (vpcc_data) <= 0x8)
347- size = 0;
348- else if (QT_UINT32 (vpcc_data) <= len)
349- size = QT_UINT32 (vpcc_data) - 0x8;
350- else
351- size = len - 0x8;
352+ if (size < 8 || size > len)
353+ break;
354
355- /* No real data, so skip */
356- if (size < 1) {
357- len -= 8;
358- vpcc_data += 8;
359- continue;
360- }
361-
362- switch (QT_FOURCC (vpcc_data + 0x4)) {
363+ switch (QT_FOURCC (vpcc_data + 4)) {
364 case FOURCC_vpcC:
365 {
366 const gchar *profile_str = NULL;
367@@ -12422,7 +12373,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
368
369 /* the meaning of "size" is length of the atom body, excluding
370 * atom length and fourcc fields */
371- if (size < 12)
372+ if (size < 8 + 12)
373 break;
374
375 /* Content is:
376@@ -12528,8 +12479,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
377 break;
378 }
379
380- len -= size + 8;
381- vpcc_data += size + 8;
382+ len -= size;
383+ vpcc_data += size;
384 }
385
386 break;
387@@ -12870,7 +12821,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
388 }
389 case FOURCC_wma_:
390 {
391- guint len = QT_UINT32 (stsd_entry_data);
392+ guint32 len = QT_UINT32 (stsd_entry_data);
393 len = len <= offset ? 0 : len - offset;
394 const guint8 *wfex_data = stsd_entry_data + offset;
395 const gchar *codec_name = NULL;
396@@ -12895,21 +12846,10 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
397
398 /* find wfex */
399 while (len >= 8) {
400- guint size;
401+ guint32 size = QT_UINT32 (wfex_data);
402
403- if (QT_UINT32 (wfex_data) <= 0x8)
404- size = 0;
405- else if (QT_UINT32 (wfex_data) <= len)
406- size = QT_UINT32 (wfex_data) - 8;
407- else
408- size = len - 8;
409-
410- /* No real data, so skip */
411- if (size < 1) {
412- len -= 8;
413- wfex_data += 8;
414- continue;
415- }
416+ if (size < 8 || size > len)
417+ break;
418
419 switch (QT_FOURCC (wfex_data + 4)) {
420 case GST_MAKE_FOURCC ('w', 'f', 'e', 'x'):
421@@ -12954,12 +12894,12 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
422 "width", G_TYPE_INT, wfex.wBitsPerSample,
423 "depth", G_TYPE_INT, wfex.wBitsPerSample, NULL);
424
425- if (size > wfex.cbSize) {
426+ if (size > 8 + wfex.cbSize) {
427 GstBuffer *buf;
428
429- buf = gst_buffer_new_and_alloc (size - wfex.cbSize);
430+ buf = gst_buffer_new_and_alloc (size - 8 - wfex.cbSize);
431 gst_buffer_fill (buf, 0, wfex_data + 8 + wfex.cbSize,
432- size - wfex.cbSize);
433+ size - 8 - wfex.cbSize);
434 gst_caps_set_simple (entry->caps,
435 "codec_data", GST_TYPE_BUFFER, buf, NULL);
436 gst_buffer_unref (buf);
437@@ -12976,8 +12916,8 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
438 default:
439 break;
440 }
441- len -= size + 8;
442- wfex_data += size + 8;
443+ len -= size;
444+ wfex_data += size;
445 }
446 break;
447 }
448--
4492.30.2
450
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0009-qtdemux-Fix-error-handling-when-parsing-cenc-sample-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0009-qtdemux-Fix-error-handling-when-parsing-cenc-sample-.patch
new file mode 100644
index 0000000000..53867a8970
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0009-qtdemux-Fix-error-handling-when-parsing-cenc-sample-.patch
@@ -0,0 +1,56 @@
1From da3b4e903ae990193988a873368bdd1865350521 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 27 Sep 2024 09:47:50 +0300
4Subject: [PATCH 09/13] qtdemux: Fix error handling when parsing cenc sample
5 groups fails
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-238, GHSL-2024-239, GHSL-2024-240
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3846
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
13
14CVE: CVE-2024-47544
15Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/da3b4e903ae990193988a873368bdd1865350521]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 gst/isomp4/qtdemux.c | 9 +++++++--
19 1 file changed, 7 insertions(+), 2 deletions(-)
20
21diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
22index 94ce75b2d4..e7a79be45b 100644
23--- a/gst/isomp4/qtdemux.c
24+++ b/gst/isomp4/qtdemux.c
25@@ -11400,12 +11400,15 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
26 if (stream->subtype != FOURCC_soun) {
27 GST_ERROR_OBJECT (qtdemux,
28 "Unexpeced stsd type 'aavd' outside 'soun' track");
29+ goto corrupt_file;
30 } else {
31 /* encrypted audio with sound sample description v0 */
32 GNode *enc = qtdemux_tree_get_child_by_type (stsd, fourcc);
33 stream->protected = TRUE;
34- if (!qtdemux_parse_protection_aavd (qtdemux, stream, enc, &fourcc))
35+ if (!qtdemux_parse_protection_aavd (qtdemux, stream, enc, &fourcc)) {
36 GST_ERROR_OBJECT (qtdemux, "Failed to parse protection scheme info");
37+ goto corrupt_file;
38+ }
39 }
40 }
41
42@@ -11414,8 +11417,10 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
43 * with the same type */
44 GNode *enc = qtdemux_tree_get_child_by_type (stsd, fourcc);
45 stream->protected = TRUE;
46- if (!qtdemux_parse_protection_scheme_info (qtdemux, stream, enc, &fourcc))
47+ if (!qtdemux_parse_protection_scheme_info (qtdemux, stream, enc, &fourcc)) {
48 GST_ERROR_OBJECT (qtdemux, "Failed to parse protection scheme info");
49+ goto corrupt_file;
50+ }
51 }
52
53 if (stream->subtype == FOURCC_vide) {
54--
552.30.2
56
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0010-qtdemux-Make-sure-there-are-enough-offsets-to-read-w.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0010-qtdemux-Make-sure-there-are-enough-offsets-to-read-w.patch
new file mode 100644
index 0000000000..52416b412f
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0010-qtdemux-Make-sure-there-are-enough-offsets-to-read-w.patch
@@ -0,0 +1,49 @@
1From 20503e5dd90e21ef170488b2a8b8529ae8a4cab9 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 27 Sep 2024 10:38:50 +0300
4Subject: [PATCH 10/13] qtdemux: Make sure there are enough offsets to read
5 when parsing samples
6
7While this specific case is also caught when initializing co_chunk, the error
8is ignored in various places and calling into the function would lead to out of
9bounds reads if the error message doesn't cause the pipeline to be shut down
10fast enough.
11
12To avoid this, no matter what, make sure enough offsets are available when
13parsing them. While this is potentially slower, the same is already done in the
14non-chunks_are_samples case.
15
16Thanks to Antonio Morales for finding and reporting the issue.
17
18Fixes GHSL-2024-245
19Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3847
20
21Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
22
23CVE: CVE-2024-47597
24Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/20503e5dd90e21ef170488b2a8b8529ae8a4cab9]
25Signed-off-by: Peter Marko <peter.marko@siemens.com>
26---
27 gst/isomp4/qtdemux.c | 6 +++---
28 1 file changed, 3 insertions(+), 3 deletions(-)
29
30diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
31index e7a79be45b..5277952c5e 100644
32--- a/gst/isomp4/qtdemux.c
33+++ b/gst/isomp4/qtdemux.c
34@@ -10066,9 +10066,9 @@ qtdemux_parse_samples (GstQTDemux * qtdemux, QtDemuxStream * stream, guint32 n)
35 goto done;
36 }
37
38- cur->offset =
39- qt_atom_parser_get_offset_unchecked (&stream->co_chunk,
40- stream->co_size);
41+ if (!qt_atom_parser_get_offset (&stream->co_chunk,
42+ stream->co_size, &cur->offset))
43+ goto corrupt_file;
44
45 GST_LOG_OBJECT (qtdemux, "Created entry %d with offset "
46 "%" G_GUINT64_FORMAT, j, cur->offset);
47--
482.30.2
49
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0011-qtdemux-Actually-handle-errors-returns-from-various-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0011-qtdemux-Actually-handle-errors-returns-from-various-.patch
new file mode 100644
index 0000000000..c57a3d6dac
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0011-qtdemux-Actually-handle-errors-returns-from-various-.patch
@@ -0,0 +1,97 @@
1From ed254790331a3fba2f68255a8f072552d622aac1 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 27 Sep 2024 10:39:30 +0300
4Subject: [PATCH 11/13] qtdemux: Actually handle errors returns from various
5 functions instead of ignoring them
6
7Ignoring them might cause the element to continue as if all is fine despite the
8internal state being inconsistent. This can lead to all kinds of follow-up
9issues, including memory safety issues.
10
11Thanks to Antonio Morales for finding and reporting the issue.
12
13Fixes GHSL-2024-245
14Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3847
15
16Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
17
18CVE: CVE-2024-47597
19Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/ed254790331a3fba2f68255a8f072552d622aac1]
20Signed-off-by: Peter Marko <peter.marko@siemens.com>
21---
22 gst/isomp4/qtdemux.c | 29 +++++++++++++++++++++++------
23 1 file changed, 23 insertions(+), 6 deletions(-)
24
25diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
26index 5277952c5e..1de70f184f 100644
27--- a/gst/isomp4/qtdemux.c
28+++ b/gst/isomp4/qtdemux.c
29@@ -4853,10 +4853,15 @@ gst_qtdemux_loop_state_header (GstQTDemux * qtdemux)
30 beach:
31 if (ret == GST_FLOW_EOS && (qtdemux->got_moov || qtdemux->media_caps)) {
32 /* digested all data, show what we have */
33- qtdemux_prepare_streams (qtdemux);
34+ ret = qtdemux_prepare_streams (qtdemux);
35+ if (ret != GST_FLOW_OK)
36+ return ret;
37+
38 QTDEMUX_EXPOSE_LOCK (qtdemux);
39 ret = qtdemux_expose_streams (qtdemux);
40 QTDEMUX_EXPOSE_UNLOCK (qtdemux);
41+ if (ret != GST_FLOW_OK)
42+ return ret;
43
44 qtdemux->state = QTDEMUX_STATE_MOVIE;
45 GST_DEBUG_OBJECT (qtdemux, "switching state to STATE_MOVIE (%d)",
46@@ -7548,13 +7553,21 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
47 gst_qtdemux_stream_concat (demux,
48 demux->old_streams, demux->active_streams);
49
50- qtdemux_parse_moov (demux, data, demux->neededbytes);
51+ if (!qtdemux_parse_moov (demux, data, demux->neededbytes)) {
52+ ret = GST_FLOW_ERROR;
53+ break;
54+ }
55 qtdemux_node_dump (demux, demux->moov_node);
56 qtdemux_parse_tree (demux);
57- qtdemux_prepare_streams (demux);
58+ ret = qtdemux_prepare_streams (demux);
59+ if (ret != GST_FLOW_OK)
60+ break;
61+
62 QTDEMUX_EXPOSE_LOCK (demux);
63- qtdemux_expose_streams (demux);
64+ ret = qtdemux_expose_streams (demux);
65 QTDEMUX_EXPOSE_UNLOCK (demux);
66+ if (ret != GST_FLOW_OK)
67+ break;
68
69 demux->got_moov = TRUE;
70
71@@ -7645,8 +7658,10 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
72 /* in MSS we need to expose the pads after the first moof as we won't get a moov */
73 if (demux->variant == VARIANT_MSS_FRAGMENTED && !demux->exposed) {
74 QTDEMUX_EXPOSE_LOCK (demux);
75- qtdemux_expose_streams (demux);
76+ ret = qtdemux_expose_streams (demux);
77 QTDEMUX_EXPOSE_UNLOCK (demux);
78+ if (ret != GST_FLOW_OK)
79+ goto done;
80 }
81
82 gst_qtdemux_check_send_pending_segment (demux);
83@@ -13760,8 +13775,10 @@ qtdemux_prepare_streams (GstQTDemux * qtdemux)
84
85 /* parse the initial sample for use in setting the frame rate cap */
86 while (sample_num == 0 && sample_num < stream->n_samples) {
87- if (!qtdemux_parse_samples (qtdemux, stream, sample_num))
88+ if (!qtdemux_parse_samples (qtdemux, stream, sample_num)) {
89+ ret = GST_FLOW_ERROR;
90 break;
91+ }
92 ++sample_num;
93 }
94 }
95--
962.30.2
97
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0012-qtdemux-Check-for-invalid-atom-length-when-extractin.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0012-qtdemux-Check-for-invalid-atom-length-when-extractin.patch
new file mode 100644
index 0000000000..61f5ce3787
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0012-qtdemux-Check-for-invalid-atom-length-when-extractin.patch
@@ -0,0 +1,36 @@
1From 3153fda823cb91b1031dae69738c6c5d526fb6e1 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Thu, 26 Sep 2024 19:16:19 +0300
4Subject: [PATCH 12/13] qtdemux: Check for invalid atom length when extracting
5 Closed Caption data
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-243
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3849
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
13
14CVE: CVE-2024-47546
15Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/3153fda823cb91b1031dae69738c6c5d526fb6e1]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 gst/isomp4/qtdemux.c | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
22index 1de70f184f..8850d09321 100644
23--- a/gst/isomp4/qtdemux.c
24+++ b/gst/isomp4/qtdemux.c
25@@ -5827,7 +5827,7 @@ extract_cc_from_data (QtDemuxStream * stream, const guint8 * data, gsize size,
26 goto invalid_cdat;
27 atom_length = QT_UINT32 (data);
28 fourcc = QT_FOURCC (data + 4);
29- if (G_UNLIKELY (atom_length > size || atom_length == 8))
30+ if (G_UNLIKELY (atom_length > size || atom_length <= 8))
31 goto invalid_cdat;
32
33 GST_DEBUG_OBJECT (stream->pad, "here");
34--
352.30.2
36
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0013-qtdemux-Add-size-check-for-parsing-SMI-SEQH-atom.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0013-qtdemux-Add-size-check-for-parsing-SMI-SEQH-atom.patch
new file mode 100644
index 0000000000..b46f295c46
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0013-qtdemux-Add-size-check-for-parsing-SMI-SEQH-atom.patch
@@ -0,0 +1,37 @@
1From 3ce1b812a9531611288af286b5dc6631a11e3f4a Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 27 Sep 2024 00:31:36 +0300
4Subject: [PATCH 13/13] qtdemux: Add size check for parsing SMI / SEQH atom
5
6Thanks to Antonio Morales for finding and reporting the issue.
7
8Fixes GHSL-2024-244
9Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3853
10
11Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8109>
12
13CVE: CVE-2024-47596
14Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/3ce1b812a9531611288af286b5dc6631a11e3f4a]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 gst/isomp4/qtdemux.c | 3 ++-
18 1 file changed, 2 insertions(+), 1 deletion(-)
19
20diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
21index 8850d09321..dc70287a8a 100644
22--- a/gst/isomp4/qtdemux.c
23+++ b/gst/isomp4/qtdemux.c
24@@ -10629,8 +10629,9 @@ qtdemux_parse_svq3_stsd_data (GstQTDemux * qtdemux,
25 GST_WARNING_OBJECT (qtdemux, "Unexpected second SEQH SMI atom "
26 " found, ignoring");
27 } else {
28+ /* Note: The size does *not* include the fourcc and the size field itself */
29 seqh_size = QT_UINT32 (data + 4);
30- if (seqh_size > 0) {
31+ if (seqh_size > 0 && seqh_size <= size - 8) {
32 _seqh = gst_buffer_new_and_alloc (seqh_size);
33 gst_buffer_fill (_seqh, 0, data + 8, seqh_size);
34 }
35--
362.30.2
37
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0014-gdkpixbufdec-Check-if-initializing-the-video-info-ac.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0014-gdkpixbufdec-Check-if-initializing-the-video-info-ac.patch
new file mode 100644
index 0000000000..502b26f9d5
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0014-gdkpixbufdec-Check-if-initializing-the-video-info-ac.patch
@@ -0,0 +1,53 @@
1From 1d1c9d63be51d85f9b80f0c227d4b3469fee2534 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Wed, 2 Oct 2024 14:44:21 +0300
4Subject: [PATCH] gdkpixbufdec: Check if initializing the video info actually
5 succeeded
6
7Otherwise a 0-byte buffer would be allocated, which gives NULL memory when
8mapped.
9
10Thanks to Antonio Morales for finding and reporting the issue.
11
12Fixes GHSL-2024-118
13Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3876
14
15Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8041>
16
17CVE: CVE-2024-47613
18Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/1d1c9d63be51d85f9b80f0c227d4b3469fee2534]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 ext/gdk_pixbuf/gstgdkpixbufdec.c | 9 ++++++++-
22 1 file changed, 8 insertions(+), 1 deletion(-)
23
24diff --git a/ext/gdk_pixbuf/gstgdkpixbufdec.c b/ext/gdk_pixbuf/gstgdkpixbufdec.c
25index 5482998c0d..de5f054964 100644
26--- a/ext/gdk_pixbuf/gstgdkpixbufdec.c
27+++ b/ext/gdk_pixbuf/gstgdkpixbufdec.c
28@@ -322,7 +322,8 @@ gst_gdk_pixbuf_dec_flush (GstGdkPixbufDec * filter)
29
30
31 gst_video_info_init (&info);
32- gst_video_info_set_format (&info, fmt, width, height);
33+ if (!gst_video_info_set_format (&info, fmt, width, height))
34+ goto format_not_supported;
35 info.fps_n = filter->in_fps_n;
36 info.fps_d = filter->in_fps_d;
37 caps = gst_video_info_to_caps (&info);
38@@ -384,6 +385,12 @@ channels_not_supported:
39 ("%d channels not supported", n_channels));
40 return GST_FLOW_ERROR;
41 }
42+format_not_supported:
43+ {
44+ GST_ELEMENT_ERROR (filter, STREAM, DECODE, (NULL),
45+ ("%d channels with %dx%d not supported", n_channels, width, height));
46+ return GST_FLOW_ERROR;
47+ }
48 no_buffer:
49 {
50 GST_DEBUG ("Failed to create outbuffer - %s", gst_flow_get_name (ret));
51--
522.30.2
53
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0015-matroskademux-Only-unmap-GstMapInfo-in-WavPack-heade.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0015-matroskademux-Only-unmap-GstMapInfo-in-WavPack-heade.patch
new file mode 100644
index 0000000000..354a2e5194
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0015-matroskademux-Only-unmap-GstMapInfo-in-WavPack-heade.patch
@@ -0,0 +1,60 @@
1From 008f0d52408f57f0704d5639b72db2f330b8f003 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 16:32:48 +0300
4Subject: [PATCH 1/7] matroskademux: Only unmap GstMapInfo in WavPack header
5 extraction error paths if previously mapped
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-197
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3863
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8108>
13
14CVE: CVE-2024-47597
15CVE: CVE-2024-47601
16CVE: CVE-2024-47602
17CVE: CVE-2024-47603
18CVE: CVE-2024-47834
19Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/008f0d52408f57f0704d5639b72db2f330b8f003]
20Signed-off-by: Peter Marko <peter.marko@siemens.com>
21---
22 gst/matroska/matroska-demux.c | 4 ++--
23 1 file changed, 2 insertions(+), 2 deletions(-)
24
25diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
26index 9b3cf83adb..35e60b7147 100644
27--- a/gst/matroska/matroska-demux.c
28+++ b/gst/matroska/matroska-demux.c
29@@ -3885,7 +3885,6 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
30 GstMatroskaTrackAudioContext *audiocontext =
31 (GstMatroskaTrackAudioContext *) stream;
32 GstBuffer *newbuf = NULL;
33- GstMapInfo map, outmap;
34 guint8 *buf_data, *data;
35 Wavpack4Header wvh;
36
37@@ -3902,11 +3901,11 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
38
39 if (audiocontext->channels <= 2) {
40 guint32 block_samples, tmp;
41+ GstMapInfo outmap;
42 gsize size = gst_buffer_get_size (*buf);
43
44 if (size < 4) {
45 GST_ERROR_OBJECT (element, "Too small wavpack buffer");
46- gst_buffer_unmap (*buf, &map);
47 return GST_FLOW_ERROR;
48 }
49
50@@ -3944,6 +3943,7 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
51 *buf = newbuf;
52 audiocontext->wvpk_block_index += block_samples;
53 } else {
54+ GstMapInfo map, outmap;
55 guint8 *outdata = NULL;
56 gsize buf_size, size;
57 guint32 block_samples, flags, crc;
58--
592.30.2
60
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0016-matroskademux-Fix-off-by-one-when-parsing-multi-chan.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0016-matroskademux-Fix-off-by-one-when-parsing-multi-chan.patch
new file mode 100644
index 0000000000..39346ca829
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0016-matroskademux-Fix-off-by-one-when-parsing-multi-chan.patch
@@ -0,0 +1,35 @@
1From b7e1b13af70b7c042f29674f5482b502af82d829 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 16:33:39 +0300
4Subject: [PATCH 2/7] matroskademux: Fix off-by-one when parsing multi-channel
5 WavPack
6
7Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8108>
8
9CVE: CVE-2024-47597
10CVE: CVE-2024-47601
11CVE: CVE-2024-47602
12CVE: CVE-2024-47603
13CVE: CVE-2024-47834
14Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/b7e1b13af70b7c042f29674f5482b502af82d829]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 gst/matroska/matroska-demux.c | 2 +-
18 1 file changed, 1 insertion(+), 1 deletion(-)
19
20diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
21index 35e60b7147..583fbbe6e6 100644
22--- a/gst/matroska/matroska-demux.c
23+++ b/gst/matroska/matroska-demux.c
24@@ -3970,7 +3970,7 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
25 data += 4;
26 size -= 4;
27
28- while (size > 12) {
29+ while (size >= 12) {
30 flags = GST_READ_UINT32_LE (data);
31 data += 4;
32 size -= 4;
33--
342.30.2
35
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0017-matroskademux-Check-for-big-enough-WavPack-codec-pri.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0017-matroskademux-Check-for-big-enough-WavPack-codec-pri.patch
new file mode 100644
index 0000000000..af1e9bf6d7
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0017-matroskademux-Check-for-big-enough-WavPack-codec-pri.patch
@@ -0,0 +1,43 @@
1From 455393ef0f2bb0a49c5bf32ef208af914c44e806 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 18:25:53 +0300
4Subject: [PATCH 3/7] matroskademux: Check for big enough WavPack codec private
5 data before accessing it
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-250
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3866
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8108>
13
14CVE: CVE-2024-47597
15CVE: CVE-2024-47601
16CVE: CVE-2024-47602
17CVE: CVE-2024-47603
18CVE: CVE-2024-47834
19Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/455393ef0f2bb0a49c5bf32ef208af914c44e806]
20Signed-off-by: Peter Marko <peter.marko@siemens.com>
21---
22 gst/matroska/matroska-demux.c | 5 +++++
23 1 file changed, 5 insertions(+)
24
25diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
26index 583fbbe6e6..91e66fefc3 100644
27--- a/gst/matroska/matroska-demux.c
28+++ b/gst/matroska/matroska-demux.c
29@@ -3888,6 +3888,11 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
30 guint8 *buf_data, *data;
31 Wavpack4Header wvh;
32
33+ if (!stream->codec_priv || stream->codec_priv_size < 2) {
34+ GST_ERROR_OBJECT (element, "No or too small wavpack codec private data");
35+ return GST_FLOW_ERROR;
36+ }
37+
38 wvh.ck_id[0] = 'w';
39 wvh.ck_id[1] = 'v';
40 wvh.ck_id[2] = 'p';
41--
422.30.2
43
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0018-matroskademux-Don-t-take-data-out-of-an-empty-adapte.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0018-matroskademux-Don-t-take-data-out-of-an-empty-adapte.patch
new file mode 100644
index 0000000000..aaae3d7abe
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0018-matroskademux-Don-t-take-data-out-of-an-empty-adapte.patch
@@ -0,0 +1,51 @@
1From be0ac3f40949cb951d5f0761f4a3bd597a94947f Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 19:04:51 +0300
4Subject: [PATCH 4/7] matroskademux: Don't take data out of an empty adapter
5 when processing WavPack frames
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-249
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3865
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8108>
13
14CVE: CVE-2024-47597
15CVE: CVE-2024-47601
16CVE: CVE-2024-47602
17CVE: CVE-2024-47603
18CVE: CVE-2024-47834
19Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/be0ac3f40949cb951d5f0761f4a3bd597a94947f]
20Signed-off-by: Peter Marko <peter.marko@siemens.com>
21---
22 .../gst-plugins-good/gst/matroska/matroska-demux.c | 11 ++++++++---
23 1 file changed, 8 insertions(+), 3 deletions(-)
24
25diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
26index 91e66fefc3..98ed51e86a 100644
27--- a/gst/matroska/matroska-demux.c
28+++ b/gst/matroska/matroska-demux.c
29@@ -4036,11 +4036,16 @@ gst_matroska_demux_add_wvpk_header (GstElement * element,
30 }
31 gst_buffer_unmap (*buf, &map);
32
33- newbuf = gst_adapter_take_buffer (adapter, gst_adapter_available (adapter));
34+ size = gst_adapter_available (adapter);
35+ if (size > 0) {
36+ newbuf = gst_adapter_take_buffer (adapter, size);
37+ gst_buffer_copy_into (newbuf, *buf,
38+ GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS, 0, -1);
39+ } else {
40+ newbuf = NULL;
41+ }
42 g_object_unref (adapter);
43
44- gst_buffer_copy_into (newbuf, *buf,
45- GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS, 0, -1);
46 gst_buffer_unref (*buf);
47 *buf = newbuf;
48
49--
502.30.2
51
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0019-matroskademux-Skip-over-laces-directly-when-postproc.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0019-matroskademux-Skip-over-laces-directly-when-postproc.patch
new file mode 100644
index 0000000000..7216d7c9d3
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0019-matroskademux-Skip-over-laces-directly-when-postproc.patch
@@ -0,0 +1,52 @@
1From effbbfd771487cc06c79d5a7e447a849884cc6cf Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 19:06:03 +0300
4Subject: [PATCH 5/7] matroskademux: Skip over laces directly when
5 postprocessing the frame fails
6
7Otherwise NULL buffers might be handled afterwards.
8
9Thanks to Antonio Morales for finding and reporting the issue.
10
11Fixes GHSL-2024-249
12Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3865
13
14Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8108>
15
16CVE: CVE-2024-47540
17CVE: CVE-2024-47601
18CVE: CVE-2024-47602
19CVE: CVE-2024-47603
20CVE: CVE-2024-47834
21Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/effbbfd771487cc06c79d5a7e447a849884cc6cf]
22Signed-off-by: Peter Marko <peter.marko@siemens.com>
23---
24 .../gst-plugins-good/gst/matroska/matroska-demux.c | 12 ++++++++++++
25 1 file changed, 12 insertions(+)
26
27diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
28index 98ed51e86a..e0a4405dce 100644
29--- a/gst/matroska/matroska-demux.c
30+++ b/gst/matroska/matroska-demux.c
31@@ -4982,6 +4982,18 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux,
32 if (stream->postprocess_frame) {
33 GST_LOG_OBJECT (demux, "running post process");
34 ret = stream->postprocess_frame (GST_ELEMENT (demux), stream, &sub);
35+ if (ret != GST_FLOW_OK) {
36+ gst_clear_buffer (&sub);
37+ goto next_lace;
38+ }
39+
40+ if (sub == NULL) {
41+ GST_WARNING_OBJECT (demux,
42+ "Postprocessing buffer with timestamp %" GST_TIME_FORMAT
43+ " for stream %d failed", GST_TIME_ARGS (buffer_timestamp),
44+ stream_num);
45+ goto next_lace;
46+ }
47 }
48
49 /* At this point, we have a sub-buffer pointing at data within a larger
50--
512.30.2
52
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0020-matroskademux-Skip-over-zero-sized-Xiph-stream-heade.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0020-matroskademux-Skip-over-zero-sized-Xiph-stream-heade.patch
new file mode 100644
index 0000000000..cb5ba69af0
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0020-matroskademux-Skip-over-zero-sized-Xiph-stream-heade.patch
@@ -0,0 +1,43 @@
1From ed7b46bac3fa14f95422cc4bb4655d041df51454 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 19:19:42 +0300
4Subject: [PATCH 6/7] matroskademux: Skip over zero-sized Xiph stream headers
5
6Thanks to Antonio Morales for finding and reporting the issue.
7
8Fixes GHSL-2024-251
9Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3867
10
11Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8108>
12
13CVE: CVE-2024-47540
14CVE: CVE-2024-47601
15CVE: CVE-2024-47602
16CVE: CVE-2024-47603
17CVE: CVE-2024-47834
18Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/ed7b46bac3fa14f95422cc4bb4655d041df51454]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 gst/matroska/matroska-ids.c | 6 ++++--
22 1 file changed, 4 insertions(+), 2 deletions(-)
23
24diff --git a/gst/matroska/matroska-ids.c b/gst/matroska/matroska-ids.c
25index f11b7c2ce3..ba645f7306 100644
26--- a/gst/matroska/matroska-ids.c
27+++ b/gst/matroska/matroska-ids.c
28@@ -189,8 +189,10 @@ gst_matroska_parse_xiph_stream_headers (gpointer codec_data,
29 if (offset + length[i] > codec_data_size)
30 goto error;
31
32- hdr = gst_buffer_new_memdup (p + offset, length[i]);
33- gst_buffer_list_add (list, hdr);
34+ if (length[i] > 0) {
35+ hdr = gst_buffer_new_memdup (p + offset, length[i]);
36+ gst_buffer_list_add (list, hdr);
37+ }
38
39 offset += length[i];
40 }
41--
422.30.2
43
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0021-matroskademux-Put-a-copy-of-the-codec-data-into-the-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0021-matroskademux-Put-a-copy-of-the-codec-data-into-the-.patch
new file mode 100644
index 0000000000..371eb9da9b
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0021-matroskademux-Put-a-copy-of-the-codec-data-into-the-.patch
@@ -0,0 +1,44 @@
1From 98e4356be7afa869373f96b4e8ca792c5f9707ee Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Wed, 9 Oct 2024 11:52:52 -0400
4Subject: [PATCH 7/7] matroskademux: Put a copy of the codec data into the
5 A_MS/ACM caps
6
7The original codec data buffer is owned by matroskademux and does not
8necessarily live as long as the caps.
9
10Thanks to Antonio Morales for finding and reporting the issue.
11
12Fixes GHSL-2024-280
13Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3894
14
15Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8108>
16
17CVE: CVE-2024-47540
18CVE: CVE-2024-47601
19CVE: CVE-2024-47602
20CVE: CVE-2024-47603
21CVE: CVE-2024-47834
22Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/98e4356be7afa869373f96b4e8ca792c5f9707ee]
23Signed-off-by: Peter Marko <peter.marko@siemens.com>
24---
25 gst/matroska/matroska-demux.c | 3 +--
26 1 file changed, 1 insertion(+), 2 deletions(-)
27
28diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
29index e0a4405dce..80da306731 100644
30--- a/gst/matroska/matroska-demux.c
31+++ b/gst/matroska/matroska-demux.c
32@@ -7165,8 +7165,7 @@ gst_matroska_demux_audio_caps (GstMatroskaTrackAudioContext *
33
34 /* 18 is the waveformatex size */
35 if (size > 18) {
36- codec_data = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY,
37- data + 18, size - 18, 0, size - 18, NULL, NULL);
38+ codec_data = gst_buffer_new_memdup (data + 18, size - 18);
39 }
40
41 if (riff_audio_fmt)
42--
432.30.2
44
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0022-jpegdec-Directly-error-out-on-negotiation-failures.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0022-jpegdec-Directly-error-out-on-negotiation-failures.patch
new file mode 100644
index 0000000000..037afdc4ee
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0022-jpegdec-Directly-error-out-on-negotiation-failures.patch
@@ -0,0 +1,99 @@
1From 3cdf206f4fc5a9860bfe1437ed3d01e7d23c6c3e Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Mon, 30 Sep 2024 16:22:19 +0300
4Subject: [PATCH] jpegdec: Directly error out on negotiation failures
5
6Thanks to Antonio Morales for finding and reporting the issue.
7
8Fixes GHSL-2024-247
9Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3862
10
11Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8040>
12
13CVE: CVE-2024-47599
14Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/3cdf206f4fc5a9860bfe1437ed3d01e7d23c6c3e]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 .../gst-plugins-good/ext/jpeg/gstjpegdec.c | 22 ++++++++++++++-----
18 1 file changed, 17 insertions(+), 5 deletions(-)
19
20diff --git a/ext/jpeg/gstjpegdec.c b/ext/jpeg/gstjpegdec.c
21index 51bc2d14bf..7523419835 100644
22--- a/ext/jpeg/gstjpegdec.c
23+++ b/ext/jpeg/gstjpegdec.c
24@@ -1068,13 +1068,14 @@ gst_jpeg_turbo_parse_ext_fmt_convert (GstJpegDec * dec, gint * clrspc)
25 }
26 #endif
27
28-static void
29+static gboolean
30 gst_jpeg_dec_negotiate (GstJpegDec * dec, gint width, gint height, gint clrspc,
31 gboolean interlaced)
32 {
33 GstVideoCodecState *outstate;
34 GstVideoInfo *info;
35 GstVideoFormat format;
36+ gboolean res;
37
38 #ifdef JCS_EXTENSIONS
39 if (dec->format_convert) {
40@@ -1104,7 +1105,7 @@ gst_jpeg_dec_negotiate (GstJpegDec * dec, gint width, gint height, gint clrspc,
41 height == GST_VIDEO_INFO_HEIGHT (info) &&
42 format == GST_VIDEO_INFO_FORMAT (info)) {
43 gst_video_codec_state_unref (outstate);
44- return;
45+ return TRUE;
46 }
47 gst_video_codec_state_unref (outstate);
48 }
49@@ -1118,6 +1119,8 @@ gst_jpeg_dec_negotiate (GstJpegDec * dec, gint width, gint height, gint clrspc,
50 outstate =
51 gst_video_decoder_set_output_state (GST_VIDEO_DECODER (dec), format,
52 width, height, dec->input_state);
53+ if (!outstate)
54+ return FALSE;
55
56 switch (clrspc) {
57 case JCS_RGB:
58@@ -1142,10 +1145,12 @@ gst_jpeg_dec_negotiate (GstJpegDec * dec, gint width, gint height, gint clrspc,
59
60 gst_video_codec_state_unref (outstate);
61
62- gst_video_decoder_negotiate (GST_VIDEO_DECODER (dec));
63+ res = gst_video_decoder_negotiate (GST_VIDEO_DECODER (dec));
64
65 GST_DEBUG_OBJECT (dec, "max_v_samp_factor=%d", dec->cinfo.max_v_samp_factor);
66 GST_DEBUG_OBJECT (dec, "max_h_samp_factor=%d", dec->cinfo.max_h_samp_factor);
67+
68+ return res;
69 }
70
71 static GstFlowReturn
72@@ -1425,8 +1430,9 @@ gst_jpeg_dec_handle_frame (GstVideoDecoder * bdec, GstVideoCodecFrame * frame)
73 num_fields = 1;
74 }
75
76- gst_jpeg_dec_negotiate (dec, width, output_height,
77- dec->cinfo.jpeg_color_space, num_fields == 2);
78+ if (!gst_jpeg_dec_negotiate (dec, width, output_height,
79+ dec->cinfo.jpeg_color_space, num_fields == 2))
80+ goto negotiation_failed;
81
82 state = gst_video_decoder_get_output_state (bdec);
83 ret = gst_video_decoder_allocate_output_frame (bdec, frame);
84@@ -1558,6 +1564,12 @@ map_failed:
85 ret = GST_FLOW_ERROR;
86 goto exit;
87 }
88+negotiation_failed:
89+ {
90+ GST_ELEMENT_ERROR (dec, CORE, NEGOTIATION, (NULL), ("failed to negotiate"));
91+ ret = GST_FLOW_NOT_NEGOTIATED;
92+ goto exit;
93+ }
94 decode_error:
95 {
96 gchar err_msg[JMSG_LENGTH_MAX];
97--
982.30.2
99
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0023-qtdemux-Avoid-integer-overflow-when-parsing-Theora-e.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0023-qtdemux-Avoid-integer-overflow-when-parsing-Theora-e.patch
new file mode 100644
index 0000000000..37f133a493
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0023-qtdemux-Avoid-integer-overflow-when-parsing-Theora-e.patch
@@ -0,0 +1,44 @@
1From f8e398c46fc074f266edb3f20479c0ca31b52448 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Thu, 26 Sep 2024 22:16:06 +0300
4Subject: [PATCH] qtdemux: Avoid integer overflow when parsing Theora extension
5
6Thanks to Antonio Morales for finding and reporting the issue.
7
8Fixes GHSL-2024-166
9Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3851
10
11Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8032>
12
13CVE: CVE-2024-47606
14Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/f8e398c46fc074f266edb3f20479c0ca31b52448]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 gst/isomp4/qtdemux.c | 4 ++--
18 1 file changed, 2 insertions(+), 2 deletions(-)
19
20diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
21index 5e3cb1b9e6..c2d8b5e0f1 100644
22--- a/gst/isomp4/qtdemux.c
23+++ b/gst/isomp4/qtdemux.c
24@@ -8279,7 +8279,7 @@ qtdemux_parse_theora_extension (GstQTDemux * qtdemux, QtDemuxStream * stream,
25 end -= 8;
26
27 while (buf < end) {
28- gint size;
29+ guint32 size;
30 guint32 type;
31
32 size = QT_UINT32 (buf);
33@@ -8287,7 +8287,7 @@ qtdemux_parse_theora_extension (GstQTDemux * qtdemux, QtDemuxStream * stream,
34
35 GST_LOG_OBJECT (qtdemux, "%p %p", buf, end);
36
37- if (buf + size > end || size <= 0)
38+ if (end - buf < size || size < 8)
39 break;
40
41 buf += 8;
42--
432.30.2
44
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0024-avisubtitle-Fix-size-checks-and-avoid-overflows-when.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0024-avisubtitle-Fix-size-checks-and-avoid-overflows-when.patch
new file mode 100644
index 0000000000..33af003535
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0024-avisubtitle-Fix-size-checks-and-avoid-overflows-when.patch
@@ -0,0 +1,46 @@
1From 0870e87c7c02e28e22a09a7de0c5b1e5bed68c14 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 4 Oct 2024 14:04:03 +0300
4Subject: [PATCH] avisubtitle: Fix size checks and avoid overflows when
5 checking sizes
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-262
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3890
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8043>
13
14CVE: CVE-2024-47774
15Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/0870e87c7c02e28e22a09a7de0c5b1e5bed68c14]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 gst/avi/gstavisubtitle.c | 5 +++--
19 1 file changed, 3 insertions(+), 2 deletions(-)
20
21diff --git a/gst/avi/gstavisubtitle.c b/gst/avi/gstavisubtitle.c
22index efc5f04051..c816934da6 100644
23--- a/gst/avi/gstavisubtitle.c
24+++ b/gst/avi/gstavisubtitle.c
25@@ -196,7 +196,7 @@ gst_avi_subtitle_parse_gab2_chunk (GstAviSubtitle * sub, GstBuffer * buf)
26 /* read 'name' of subtitle */
27 name_length = GST_READ_UINT32_LE (map.data + 5 + 2);
28 GST_LOG_OBJECT (sub, "length of name: %u", name_length);
29- if (map.size <= 17 + name_length)
30+ if (G_MAXUINT32 - 17 < name_length || map.size < 17 + name_length)
31 goto wrong_name_length;
32
33 name_utf8 =
34@@ -216,7 +216,8 @@ gst_avi_subtitle_parse_gab2_chunk (GstAviSubtitle * sub, GstBuffer * buf)
35 file_length = GST_READ_UINT32_LE (map.data + 13 + name_length);
36 GST_LOG_OBJECT (sub, "length srt/ssa file: %u", file_length);
37
38- if (map.size < (17 + name_length + file_length))
39+ if (G_MAXUINT32 - 17 - name_length < file_length
40+ || map.size < 17 + name_length + file_length)
41 goto wrong_total_length;
42
43 /* store this, so we can send it again after a seek; note that we shouldn't
44--
452.30.2
46
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0025-wavparse-Check-for-short-reads-when-parsing-headers-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0025-wavparse-Check-for-short-reads-when-parsing-headers-.patch
new file mode 100644
index 0000000000..4b53830e12
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0025-wavparse-Check-for-short-reads-when-parsing-headers-.patch
@@ -0,0 +1,174 @@
1From 13b48016b3ef1e822c393c2871b0a561ce19ecb3 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 4 Oct 2024 13:00:57 +0300
4Subject: [PATCH 1/7] wavparse: Check for short reads when parsing headers in
5 pull mode
6
7And also return the actual flow return to the caller instead of always returning
8GST_FLOW_ERROR.
9
10Thanks to Antonio Morales for finding and reporting the issue.
11
12Fixes GHSL-2024-258, GHSL-2024-260
13Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3886
14Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3888
15
16Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
17
18CVE: CVE-2024-47775
19CVE: CVE-2024-47776
20CVE: CVE-2024-47777
21CVE: CVE-2024-47778
22Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/13b48016b3ef1e822c393c2871b0a561ce19ecb3]
23Signed-off-by: Peter Marko <peter.marko@siemens.com>
24---
25 gst/wavparse/gstwavparse.c | 63 ++++++++++++++++++++++++++++----------
26 1 file changed, 46 insertions(+), 17 deletions(-)
27
28diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
29index d074f273c5..97d5591fae 100644
30--- a/gst/wavparse/gstwavparse.c
31+++ b/gst/wavparse/gstwavparse.c
32@@ -1096,6 +1096,24 @@ parse_ds64 (GstWavParse * wav, GstBuffer * buf)
33 return TRUE;
34 }
35
36+static GstFlowReturn
37+gst_wavparse_pull_range_exact (GstWavParse * wav, guint64 offset, guint size,
38+ GstBuffer ** buffer)
39+{
40+ GstFlowReturn res;
41+
42+ res = gst_pad_pull_range (wav->sinkpad, offset, size, buffer);
43+ if (res != GST_FLOW_OK)
44+ return res;
45+
46+ if (gst_buffer_get_size (*buffer) < size) {
47+ gst_clear_buffer (buffer);
48+ return GST_FLOW_EOS;
49+ }
50+
51+ return res;
52+}
53+
54 static GstFlowReturn
55 gst_wavparse_stream_headers (GstWavParse * wav)
56 {
57@@ -1291,9 +1309,9 @@ gst_wavparse_stream_headers (GstWavParse * wav)
58
59 buf = NULL;
60 if ((res =
61- gst_pad_pull_range (wav->sinkpad, wav->offset, 8,
62+ gst_wavparse_pull_range_exact (wav, wav->offset, 8,
63 &buf)) != GST_FLOW_OK)
64- goto header_read_error;
65+ goto header_pull_error;
66 gst_buffer_map (buf, &map, GST_MAP_READ);
67 tag = GST_READ_UINT32_LE (map.data);
68 size = GST_READ_UINT32_LE (map.data + 4);
69@@ -1396,9 +1414,9 @@ gst_wavparse_stream_headers (GstWavParse * wav)
70 gst_buffer_unref (buf);
71 buf = NULL;
72 if ((res =
73- gst_pad_pull_range (wav->sinkpad, wav->offset + 8,
74+ gst_wavparse_pull_range_exact (wav, wav->offset + 8,
75 data_size, &buf)) != GST_FLOW_OK)
76- goto header_read_error;
77+ goto header_pull_error;
78 gst_buffer_extract (buf, 0, &wav->fact, 4);
79 wav->fact = GUINT32_FROM_LE (wav->fact);
80 gst_buffer_unref (buf);
81@@ -1443,9 +1461,9 @@ gst_wavparse_stream_headers (GstWavParse * wav)
82 gst_buffer_unref (buf);
83 buf = NULL;
84 if ((res =
85- gst_pad_pull_range (wav->sinkpad, wav->offset + 8,
86- size, &buf)) != GST_FLOW_OK)
87- goto header_read_error;
88+ gst_wavparse_pull_range_exact (wav, wav->offset + 8, size,
89+ &buf)) != GST_FLOW_OK)
90+ goto header_pull_error;
91 gst_buffer_map (buf, &map, GST_MAP_READ);
92 acid = (const gst_riff_acid *) map.data;
93 tempo = acid->tempo;
94@@ -1483,9 +1501,9 @@ gst_wavparse_stream_headers (GstWavParse * wav)
95 gst_buffer_unref (buf);
96 buf = NULL;
97 if ((res =
98- gst_pad_pull_range (wav->sinkpad, wav->offset, 12,
99+ gst_wavparse_pull_range_exact (wav, wav->offset, 12,
100 &buf)) != GST_FLOW_OK)
101- goto header_read_error;
102+ goto header_pull_error;
103 gst_buffer_extract (buf, 8, &ltag, 4);
104 ltag = GUINT32_FROM_LE (ltag);
105 }
106@@ -1512,9 +1530,9 @@ gst_wavparse_stream_headers (GstWavParse * wav)
107 buf = NULL;
108 if (data_size > 0) {
109 if ((res =
110- gst_pad_pull_range (wav->sinkpad, wav->offset,
111+ gst_wavparse_pull_range_exact (wav, wav->offset,
112 data_size, &buf)) != GST_FLOW_OK)
113- goto header_read_error;
114+ goto header_pull_error;
115 }
116 }
117 if (data_size > 0) {
118@@ -1552,9 +1570,9 @@ gst_wavparse_stream_headers (GstWavParse * wav)
119 buf = NULL;
120 wav->offset += 12;
121 if ((res =
122- gst_pad_pull_range (wav->sinkpad, wav->offset,
123+ gst_wavparse_pull_range_exact (wav, wav->offset,
124 data_size, &buf)) != GST_FLOW_OK)
125- goto header_read_error;
126+ goto header_pull_error;
127 gst_buffer_map (buf, &map, GST_MAP_READ);
128 gst_wavparse_adtl_chunk (wav, (const guint8 *) map.data,
129 data_size);
130@@ -1598,9 +1616,9 @@ gst_wavparse_stream_headers (GstWavParse * wav)
131 gst_buffer_unref (buf);
132 buf = NULL;
133 if ((res =
134- gst_pad_pull_range (wav->sinkpad, wav->offset,
135+ gst_wavparse_pull_range_exact (wav, wav->offset,
136 data_size, &buf)) != GST_FLOW_OK)
137- goto header_read_error;
138+ goto header_pull_error;
139 gst_buffer_map (buf, &map, GST_MAP_READ);
140 if (!gst_wavparse_cue_chunk (wav, (const guint8 *) map.data,
141 data_size)) {
142@@ -1642,9 +1660,9 @@ gst_wavparse_stream_headers (GstWavParse * wav)
143 gst_buffer_unref (buf);
144 buf = NULL;
145 if ((res =
146- gst_pad_pull_range (wav->sinkpad, wav->offset,
147+ gst_wavparse_pull_range_exact (wav, wav->offset,
148 data_size, &buf)) != GST_FLOW_OK)
149- goto header_read_error;
150+ goto header_pull_error;
151 gst_buffer_map (buf, &map, GST_MAP_READ);
152 if (!gst_wavparse_smpl_chunk (wav, (const guint8 *) map.data,
153 data_size)) {
154@@ -1796,6 +1814,17 @@ header_read_error:
155 ("Couldn't read in header %d (%s)", res, gst_flow_get_name (res)));
156 goto fail;
157 }
158+header_pull_error:
159+ {
160+ if (res == GST_FLOW_EOS) {
161+ GST_WARNING_OBJECT (wav, "Couldn't pull header %d (%s)", res,
162+ gst_flow_get_name (res));
163+ } else {
164+ GST_ELEMENT_ERROR (wav, STREAM, DEMUX, (NULL),
165+ ("Couldn't pull header %d (%s)", res, gst_flow_get_name (res)));
166+ }
167+ goto exit;
168+ }
169 }
170
171 /*
172--
1732.30.2
174
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0026-wavparse-Make-sure-enough-data-for-the-tag-list-tag-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0026-wavparse-Make-sure-enough-data-for-the-tag-list-tag-.patch
new file mode 100644
index 0000000000..111c86e894
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0026-wavparse-Make-sure-enough-data-for-the-tag-list-tag-.patch
@@ -0,0 +1,41 @@
1From 4c198f4891cfabde868944d55ff98925e7beb757 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 4 Oct 2024 13:09:43 +0300
4Subject: [PATCH 2/7] wavparse: Make sure enough data for the tag list tag is
5 available before parsing
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-258
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3886
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
13
14CVE: CVE-2024-47775
15CVE: CVE-2024-47776
16CVE: CVE-2024-47777
17CVE: CVE-2024-47778
18Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/4c198f4891cfabde868944d55ff98925e7beb757]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 gst/wavparse/gstwavparse.c | 4 ++++
22 1 file changed, 4 insertions(+)
23
24diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
25index 97d5591fae..21cb48c07e 100644
26--- a/gst/wavparse/gstwavparse.c
27+++ b/gst/wavparse/gstwavparse.c
28@@ -1488,6 +1488,10 @@ gst_wavparse_stream_headers (GstWavParse * wav)
29 case GST_RIFF_TAG_LIST:{
30 guint32 ltag;
31
32+ /* Need at least the ltag */
33+ if (size < 4)
34+ goto exit;
35+
36 if (wav->streaming) {
37 const guint8 *data = NULL;
38
39--
402.30.2
41
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0027-wavparse-Fix-parsing-of-acid-chunk.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0027-wavparse-Fix-parsing-of-acid-chunk.patch
new file mode 100644
index 0000000000..39d0cccc9a
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0027-wavparse-Fix-parsing-of-acid-chunk.patch
@@ -0,0 +1,65 @@
1From 296e17b4ea81e5c228bb853f6037b654fdca7d47 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 4 Oct 2024 13:15:27 +0300
4Subject: [PATCH 3/7] wavparse: Fix parsing of acid chunk
5
6Simply casting the bytes to a struct can lead to crashes because of unaligned
7reads, and is also missing the endianness swapping that is necessary on big
8endian architectures.
9
10Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
11
12CVE: CVE-2024-47775
13CVE: CVE-2024-47776
14CVE: CVE-2024-47777
15CVE: CVE-2024-47778
16Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/296e17b4ea81e5c228bb853f6037b654fdca7d47]
17Signed-off-by: Peter Marko <peter.marko@siemens.com>
18---
19 gst/wavparse/gstwavparse.c | 12 +++++-------
20 1 file changed, 5 insertions(+), 7 deletions(-)
21
22diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
23index 21cb48c07e..6a0c44638e 100644
24--- a/gst/wavparse/gstwavparse.c
25+++ b/gst/wavparse/gstwavparse.c
26@@ -1433,8 +1433,7 @@ gst_wavparse_stream_headers (GstWavParse * wav)
27 break;
28 }
29 case GST_RIFF_TAG_acid:{
30- const gst_riff_acid *acid = NULL;
31- const guint data_size = sizeof (gst_riff_acid);
32+ const guint data_size = 24;
33 gfloat tempo;
34
35 GST_INFO_OBJECT (wav, "Have acid chunk");
36@@ -1448,13 +1447,13 @@ gst_wavparse_stream_headers (GstWavParse * wav)
37 break;
38 }
39 if (wav->streaming) {
40+ const guint8 *data;
41 if (!gst_wavparse_peek_chunk (wav, &tag, &size)) {
42 goto exit;
43 }
44 gst_adapter_flush (wav->adapter, 8);
45- acid = (const gst_riff_acid *) gst_adapter_map (wav->adapter,
46- data_size);
47- tempo = acid->tempo;
48+ data = gst_adapter_map (wav->adapter, data_size);
49+ tempo = GST_READ_FLOAT_LE (data + 20);
50 gst_adapter_unmap (wav->adapter);
51 } else {
52 GstMapInfo map;
53@@ -1465,8 +1464,7 @@ gst_wavparse_stream_headers (GstWavParse * wav)
54 &buf)) != GST_FLOW_OK)
55 goto header_pull_error;
56 gst_buffer_map (buf, &map, GST_MAP_READ);
57- acid = (const gst_riff_acid *) map.data;
58- tempo = acid->tempo;
59+ tempo = GST_READ_FLOAT_LE (map.data + 20);
60 gst_buffer_unmap (buf, &map);
61 }
62 /* send data as tags */
63--
642.30.2
65
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0028-wavparse-Check-that-at-least-4-bytes-are-available-b.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0028-wavparse-Check-that-at-least-4-bytes-are-available-b.patch
new file mode 100644
index 0000000000..7dbda5abdd
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0028-wavparse-Check-that-at-least-4-bytes-are-available-b.patch
@@ -0,0 +1,37 @@
1From c72025cabdfcb2fe30d24eda7bb9d1d01a1b6555 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 4 Oct 2024 13:21:44 +0300
4Subject: [PATCH 4/7] wavparse: Check that at least 4 bytes are available
5 before parsing cue chunks
6
7Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
8
9CVE: CVE-2024-47775
10CVE: CVE-2024-47776
11CVE: CVE-2024-47777
12CVE: CVE-2024-47778
13Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/c72025cabdfcb2fe30d24eda7bb9d1d01a1b6555]
14Signed-off-by: Peter Marko <peter.marko@siemens.com>
15---
16 gst/wavparse/gstwavparse.c | 5 +++++
17 1 file changed, 5 insertions(+)
18
19diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
20index 6a0c44638e..5655ee3825 100644
21--- a/gst/wavparse/gstwavparse.c
22+++ b/gst/wavparse/gstwavparse.c
23@@ -789,6 +789,11 @@ gst_wavparse_cue_chunk (GstWavParse * wav, const guint8 * data, guint32 size)
24 return TRUE;
25 }
26
27+ if (size < 4) {
28+ GST_WARNING_OBJECT (wav, "broken file %d", size);
29+ return FALSE;
30+ }
31+
32 ncues = GST_READ_UINT32_LE (data);
33
34 if (size < 4 + ncues * 24) {
35--
362.30.2
37
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0029-wavparse-Check-that-at-least-32-bytes-are-available-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0029-wavparse-Check-that-at-least-32-bytes-are-available-.patch
new file mode 100644
index 0000000000..bb5b6ff034
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0029-wavparse-Check-that-at-least-32-bytes-are-available-.patch
@@ -0,0 +1,40 @@
1From 93d79c22a82604adc5512557c1238f72f41188c4 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 4 Oct 2024 13:22:02 +0300
4Subject: [PATCH 5/7] wavparse: Check that at least 32 bytes are available
5 before parsing smpl chunks
6
7Thanks to Antonio Morales for finding and reporting the issue.
8
9Fixes GHSL-2024-259
10Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3887
11
12Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
13
14CVE: CVE-2024-47775
15CVE: CVE-2024-47776
16CVE: CVE-2024-47777
17CVE: CVE-2024-47778
18Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/93d79c22a82604adc5512557c1238f72f41188c4]
19Signed-off-by: Peter Marko <peter.marko@siemens.com>
20---
21 gst/wavparse/gstwavparse.c | 3 +++
22 1 file changed, 3 insertions(+)
23
24diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
25index 5655ee3825..8a04805ed4 100644
26--- a/gst/wavparse/gstwavparse.c
27+++ b/gst/wavparse/gstwavparse.c
28@@ -893,6 +893,9 @@ gst_wavparse_smpl_chunk (GstWavParse * wav, const guint8 * data, guint32 size)
29 {
30 guint32 note_number;
31
32+ if (size < 32)
33+ return FALSE;
34+
35 /*
36 manufacturer_id = GST_READ_UINT32_LE (data);
37 product_id = GST_READ_UINT32_LE (data + 4);
38--
392.30.2
40
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0030-wavparse-Fix-clipping-of-size-to-the-file-size.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0030-wavparse-Fix-clipping-of-size-to-the-file-size.patch
new file mode 100644
index 0000000000..d12ab9b4e1
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0030-wavparse-Fix-clipping-of-size-to-the-file-size.patch
@@ -0,0 +1,47 @@
1From 526d0eef0d850c8f2fa1bf0aef15a836797f1a67 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 4 Oct 2024 13:27:27 +0300
4Subject: [PATCH 6/7] wavparse: Fix clipping of size to the file size
5
6The size does not include the 8 bytes tag and length, so an additional 8 bytes
7must be removed here. 8 bytes are always available at this point because
8otherwise the parsing of the tag and length right above would've failed.
9
10Thanks to Antonio Morales for finding and reporting the issue.
11
12Fixes GHSL-2024-260
13Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3888
14
15Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
16
17CVE: CVE-2024-47775
18CVE: CVE-2024-47776
19CVE: CVE-2024-47777
20CVE: CVE-2024-47778
21Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/526d0eef0d850c8f2fa1bf0aef15a836797f1a67]
22Signed-off-by: Peter Marko <peter.marko@siemens.com>
23---
24 gst/wavparse/gstwavparse.c | 5 +++--
25 1 file changed, 3 insertions(+), 2 deletions(-)
26
27diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
28index 8a04805ed4..998cbb276d 100644
29--- a/gst/wavparse/gstwavparse.c
30+++ b/gst/wavparse/gstwavparse.c
31@@ -1337,10 +1337,11 @@ gst_wavparse_stream_headers (GstWavParse * wav)
32 }
33
34 /* Clip to upstream size if known */
35- if (upstream_size > 0 && size + wav->offset > upstream_size) {
36+ if (upstream_size > 0 && size + 8 + wav->offset > upstream_size) {
37 GST_WARNING_OBJECT (wav, "Clipping chunk size to file size");
38 g_assert (upstream_size >= wav->offset);
39- size = upstream_size - wav->offset;
40+ g_assert (upstream_size - wav->offset >= 8);
41+ size = upstream_size - wav->offset - 8;
42 }
43
44 /* wav is a st00pid format, we don't know for sure where data starts.
45--
462.30.2
47
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0031-wavparse-Check-size-before-reading-ds64-chunk.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0031-wavparse-Check-size-before-reading-ds64-chunk.patch
new file mode 100644
index 0000000000..b27132b16d
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0031-wavparse-Check-size-before-reading-ds64-chunk.patch
@@ -0,0 +1,41 @@
1From 4f381d15014471b026020d0990a5f5a9f420a22b Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 4 Oct 2024 13:51:00 +0300
4Subject: [PATCH 7/7] wavparse: Check size before reading ds64 chunk
5
6Thanks to Antonio Morales for finding and reporting the issue.
7
8Fixes GHSL-2024-261
9Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3889
10
11Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
12
13CVE: CVE-2024-47775
14CVE: CVE-2024-47776
15CVE: CVE-2024-47777
16CVE: CVE-2024-47778
17Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/4f381d15014471b026020d0990a5f5a9f420a22b]
18Signed-off-by: Peter Marko <peter.marko@siemens.com>
19---
20 gst/wavparse/gstwavparse.c | 5 +++++
21 1 file changed, 5 insertions(+)
22
23diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c
24index 998cbb276d..958868de6d 100644
25--- a/gst/wavparse/gstwavparse.c
26+++ b/gst/wavparse/gstwavparse.c
27@@ -1087,6 +1087,11 @@ parse_ds64 (GstWavParse * wav, GstBuffer * buf)
28 guint32 sampleCountLow, sampleCountHigh;
29
30 gst_buffer_map (buf, &map, GST_MAP_READ);
31+ if (map.size < 6 * 4) {
32+ GST_WARNING_OBJECT (wav, "Too small ds64 chunk (%" G_GSIZE_FORMAT ")",
33+ map.size);
34+ return FALSE;
35+ }
36 dataSizeLow = GST_READ_UINT32_LE (map.data + 2 * 4);
37 dataSizeHigh = GST_READ_UINT32_LE (map.data + 3 * 4);
38 sampleCountLow = GST_READ_UINT32_LE (map.data + 4 * 4);
39--
402.30.2
41
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.12.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.12.bb
index 8099d70791..608c3030ba 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.12.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.12.bb
@@ -6,7 +6,39 @@ BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues
6 6
7SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \ 7SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
8 file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \ 8 file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \
9 file://0001-v4l2-Define-ioctl_req_t-for-posix-linux-case.patch" 9 file://0001-v4l2-Define-ioctl_req_t-for-posix-linux-case.patch \
10 file://0001-qtdemux-Skip-zero-sized-boxes-instead-of-stopping-to.patch \
11 file://0002-qtdemux-Fix-integer-overflow-when-allocating-the-sam.patch \
12 file://0003-qtdemux-Fix-debug-output-during-trun-parsing.patch \
13 file://0004-qtdemux-Don-t-iterate-over-all-trun-entries-if-none-.patch \
14 file://0005-qtdemux-Check-sizes-of-stsc-stco-stts-before-trying-.patch \
15 file://0006-qtdemux-Make-sure-only-an-even-number-of-bytes-is-pr.patch \
16 file://0007-qtdemux-Make-sure-enough-data-is-available-before-re.patch \
17 file://0008-qtdemux-Fix-length-checks-and-offsets-in-stsd-entry-.patch \
18 file://0009-qtdemux-Fix-error-handling-when-parsing-cenc-sample-.patch \
19 file://0010-qtdemux-Make-sure-there-are-enough-offsets-to-read-w.patch \
20 file://0011-qtdemux-Actually-handle-errors-returns-from-various-.patch \
21 file://0012-qtdemux-Check-for-invalid-atom-length-when-extractin.patch \
22 file://0013-qtdemux-Add-size-check-for-parsing-SMI-SEQH-atom.patch \
23 file://0014-gdkpixbufdec-Check-if-initializing-the-video-info-ac.patch \
24 file://0015-matroskademux-Only-unmap-GstMapInfo-in-WavPack-heade.patch \
25 file://0016-matroskademux-Fix-off-by-one-when-parsing-multi-chan.patch \
26 file://0017-matroskademux-Check-for-big-enough-WavPack-codec-pri.patch \
27 file://0018-matroskademux-Don-t-take-data-out-of-an-empty-adapte.patch \
28 file://0019-matroskademux-Skip-over-laces-directly-when-postproc.patch \
29 file://0020-matroskademux-Skip-over-zero-sized-Xiph-stream-heade.patch \
30 file://0021-matroskademux-Put-a-copy-of-the-codec-data-into-the-.patch \
31 file://0022-jpegdec-Directly-error-out-on-negotiation-failures.patch \
32 file://0023-qtdemux-Avoid-integer-overflow-when-parsing-Theora-e.patch \
33 file://0024-avisubtitle-Fix-size-checks-and-avoid-overflows-when.patch \
34 file://0025-wavparse-Check-for-short-reads-when-parsing-headers-.patch \
35 file://0026-wavparse-Make-sure-enough-data-for-the-tag-list-tag-.patch \
36 file://0027-wavparse-Fix-parsing-of-acid-chunk.patch \
37 file://0028-wavparse-Check-that-at-least-4-bytes-are-available-b.patch \
38 file://0029-wavparse-Check-that-at-least-32-bytes-are-available-.patch \
39 file://0030-wavparse-Fix-clipping-of-size-to-the-file-size.patch \
40 file://0031-wavparse-Check-size-before-reading-ds64-chunk.patch \
41 "
10 42
11SRC_URI[sha256sum] = "9c1913f981900bd8867182639b20907b28ed78ef7a222cfbf2d8ba9dab992fa7" 43SRC_URI[sha256sum] = "9c1913f981900bd8867182639b20907b28ed78ef7a222cfbf2d8ba9dab992fa7"
12 44
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/CVE-2024-44331.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/CVE-2024-44331.patch
new file mode 100644
index 0000000000..eea58d3538
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server/CVE-2024-44331.patch
@@ -0,0 +1,44 @@
1From aa3e97d67c05d4648ea58c7ff7675e24a81ca72b Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Thu, 24 Oct 2024 20:12:55 +0300
4Subject: [PATCH] rtsp-server: Remove pointless assertions that can happen if
5 client provides invalid rates
6
7Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3731
8Fixes CVE-2024-44331
9
10Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7739>
11
12CVE: CVE-2024-44331
13
14Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/aa3e97d67c05d4648ea58c7ff7675e24a81ca72b]
15
16Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
17---
18 gst/rtsp-server/rtsp-media.c | 6 ++----
19 1 file changed, 2 insertions(+), 4 deletions(-)
20
21diff --git a/gst/rtsp-server/rtsp-media.c b/gst/rtsp-server/rtsp-media.c
22index 8c62b0d..cbdc9f9 100644
23--- a/gst/rtsp-server/rtsp-media.c
24+++ b/gst/rtsp-server/rtsp-media.c
25@@ -2755,15 +2755,13 @@ gst_rtsp_media_get_rates (GstRTSPMedia * media, gdouble * rate,
26 first_stream = FALSE;
27 } else {
28 if (save_rate != *rate || save_applied_rate != *applied_rate) {
29- /* diffrent rate or applied_rate, weird */
30- g_assert (FALSE);
31+ /* different rate or applied_rate, weird */
32 result = FALSE;
33 break;
34 }
35 }
36 } else {
37- /* complete stream withot rate and applied_rate, weird */
38- g_assert (FALSE);
39+ /* complete stream without rate and applied_rate, weird */
40 result = FALSE;
41 break;
42 }
43--
442.40.0
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.12.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.12.bb
index c89c22f334..3cd21e7181 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.12.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.12.bb
@@ -8,7 +8,9 @@ DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base"
8 8
9PNREAL = "gst-rtsp-server" 9PNREAL = "gst-rtsp-server"
10 10
11SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" 11SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz \
12 file://CVE-2024-44331.patch \
13 "
12 14
13SRC_URI[sha256sum] = "bf6c7871e7cf3528e4ec87ddc2f2949691cd269f98e536482ae744c1405cf451" 15SRC_URI[sha256sum] = "bf6c7871e7cf3528e4ec87ddc2f2949691cd269f98e536482ae744c1405cf451"
14 16
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-allocator-Avoid-integer-overflow-when-allocating-sys.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-allocator-Avoid-integer-overflow-when-allocating-sys.patch
new file mode 100644
index 0000000000..5d8575711a
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-allocator-Avoid-integer-overflow-when-allocating-sys.patch
@@ -0,0 +1,56 @@
1From f1cdc6f24340f6cce4cc7020628002f5c70dd6c7 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Thu, 26 Sep 2024 22:07:22 +0300
4Subject: [PATCH] allocator: Avoid integer overflow when allocating sysmem
5
6Thanks to Antonio Morales for finding and reporting the issue.
7
8Fixes GHSL-2024-166
9Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3851
10
11Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8032>
12
13CVE: CVE-2024-47606
14Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/f1cdc6f24340f6cce4cc7020628002f5c70dd6c7]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 gst/gstallocator.c | 14 ++++++++++++++
18 1 file changed, 14 insertions(+)
19
20diff --git a/gst/gstallocator.c b/gst/gstallocator.c
21index 996f5dc946..198cfe9523 100644
22--- a/gst/gstallocator.c
23+++ b/gst/gstallocator.c
24@@ -430,8 +430,20 @@ _sysmem_new_block (GstMemoryFlags flags,
25 /* ensure configured alignment */
26 align |= gst_memory_alignment;
27 /* allocate more to compensate for alignment */
28+ if (align > G_MAXSIZE || maxsize > G_MAXSIZE - align) {
29+ GST_CAT_WARNING (GST_CAT_MEMORY,
30+ "Allocating %" G_GSIZE_FORMAT " bytes with alignment %" G_GSIZE_FORMAT
31+ "x overflows", maxsize, align);
32+ return NULL;
33+ }
34 maxsize += align;
35 /* alloc header and data in one block */
36+ if (maxsize > G_MAXSIZE - sizeof (GstMemorySystem)) {
37+ GST_CAT_WARNING (GST_CAT_MEMORY,
38+ "Allocating %" G_GSIZE_FORMAT " bytes with alignment %" G_GSIZE_FORMAT
39+ "x overflows", maxsize, align);
40+ return NULL;
41+ }
42 slice_size = sizeof (GstMemorySystem) + maxsize;
43
44 mem = g_slice_alloc (slice_size);
45@@ -481,6 +493,8 @@ _sysmem_copy (GstMemorySystem * mem, gssize offset, gsize size)
46 size = mem->mem.size > offset ? mem->mem.size - offset : 0;
47
48 copy = _sysmem_new_block (0, size, mem->mem.align, 0, size);
49+ if (!copy)
50+ return NULL;
51 GST_CAT_DEBUG (GST_CAT_PERFORMANCE,
52 "memcpy %" G_GSIZE_FORMAT " memory %p -> %p", size, mem, copy);
53 memcpy (copy->data, mem->data + mem->mem.offset + offset, size);
54--
552.30.2
56
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.12.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.12.bb
index f4acb0977b..3f28459e2d 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.12.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.12.bb
@@ -21,6 +21,7 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.x
21 file://0002-tests-add-support-for-install-the-tests.patch \ 21 file://0002-tests-add-support-for-install-the-tests.patch \
22 file://0003-tests-use-a-dictionaries-for-environment.patch \ 22 file://0003-tests-use-a-dictionaries-for-environment.patch \
23 file://0004-tests-add-helper-script-to-run-the-installed_tests.patch \ 23 file://0004-tests-add-helper-script-to-run-the-installed_tests.patch \
24 file://0005-allocator-Avoid-integer-overflow-when-allocating-sys.patch \
24 " 25 "
25SRC_URI[sha256sum] = "ac352f3d02caa67f3b169daa9aa78b04dea0fc08a727de73cb28d89bd54c6f61" 26SRC_URI[sha256sum] = "ac352f3d02caa67f3b169daa9aa78b04dea0fc08a727de73cb28d89bd54c6f61"
26 27
@@ -71,4 +72,19 @@ RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-gconv-iso8859-5"
71 72
72CVE_PRODUCT = "gstreamer" 73CVE_PRODUCT = "gstreamer"
73 74
75CVE_STATUS[CVE-2024-0444] = "cpe-incorrect: this is patched in gstreamer1.0-plugins-bad in 1.22 branch since 1.22.9"
76
77CVE_STATUS_GROUPS += "CVE_STATUS_PLUGINS_BASE"
78CVE_STATUS_PLUGINS_BASE = "CVE-2024-47538 CVE-2024-47541 CVE-2024-47542 CVE-2024-47600 CVE-2024-47607 CVE-2024-47615 CVE-2024-47835"
79CVE_STATUS_PLUGINS_BASE[status] = "cpe-incorrect: this is patched ic gstreamer1.0-plugins-base"
80
81CVE_STATUS_GROUPS += "CVE_STATUS_PLUGINS_GOOD"
82CVE_STATUS_PLUGINS_GOOD = " \
83 CVE-2024-47537 CVE-2024-47539 CVE-2024-47540 CVE-2024-47543 CVE-2024-47544 CVE-2024-47545 \
84 CVE-2024-47546 CVE-2024-47596 CVE-2024-47597 CVE-2024-47598 CVE-2024-47599 CVE-2024-47601 \
85 CVE-2024-47602 CVE-2024-47603 CVE-2024-47613 CVE-2024-47774 CVE-2024-47775 CVE-2024-47776 \
86 CVE-2024-47777 CVE-2024-47778 CVE-2024-47834 \
87"
88CVE_STATUS_PLUGINS_GOOD[status] = "cpe-incorrect: this is patched ic gstreamer1.0-plugins-good"
89
74PTEST_BUILD_HOST_FILES = "" 90PTEST_BUILD_HOST_FILES = ""
diff --git a/meta/recipes-multimedia/liba52/liba52_0.7.4.bb b/meta/recipes-multimedia/liba52/liba52_0.7.4.bb
index 7a3b4a43c8..0aee0f022f 100644
--- a/meta/recipes-multimedia/liba52/liba52_0.7.4.bb
+++ b/meta/recipes-multimedia/liba52/liba52_0.7.4.bb
@@ -10,7 +10,7 @@ SECTION = "libs"
10 10
11inherit autotools 11inherit autotools
12 12
13SRC_URI = "http://liba52.sourceforge.net/files/a52dec-${PV}.tar.gz \ 13SRC_URI = "https://downloads.yoctoproject.org/mirror/sources/a52dec-${PV}.tar.gz \
14 file://buildcleanup.patch" 14 file://buildcleanup.patch"
15 15
16SRC_URI[md5sum] = "caa9f5bc44232dc8aeea773fea56be80" 16SRC_URI[md5sum] = "caa9f5bc44232dc8aeea773fea56be80"
diff --git a/meta/recipes-multimedia/libpng/files/run-ptest b/meta/recipes-multimedia/libpng/files/run-ptest
new file mode 100644
index 0000000000..85051a59f5
--- /dev/null
+++ b/meta/recipes-multimedia/libpng/files/run-ptest
@@ -0,0 +1,7 @@
1#!/bin/sh
2
3set -eux
4
5cd src
6
7make check-TESTS
diff --git a/meta/recipes-multimedia/libpng/libpng_1.6.42.bb b/meta/recipes-multimedia/libpng/libpng_1.6.42.bb
index 673133bb4a..4c21e8d597 100644
--- a/meta/recipes-multimedia/libpng/libpng_1.6.42.bb
+++ b/meta/recipes-multimedia/libpng/libpng_1.6.42.bb
@@ -10,7 +10,10 @@ DEPENDS = "zlib"
10 10
11LIBV = "16" 11LIBV = "16"
12 12
13SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz" 13SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz \
14 file://run-ptest \
15"
16
14SRC_URI[sha256sum] = "c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450" 17SRC_URI[sha256sum] = "c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450"
15 18
16MIRRORS += "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/ ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/older-releases/" 19MIRRORS += "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/ ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/older-releases/"
@@ -19,7 +22,7 @@ UPSTREAM_CHECK_URI = "http://libpng.org/pub/png/libpng.html"
19 22
20BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" 23BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
21 24
22inherit autotools binconfig-disabled pkgconfig 25inherit autotools binconfig-disabled pkgconfig ptest
23 26
24# Work around missing symbols 27# Work around missing symbols
25ARMNEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off", d)}" 28ARMNEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off", d)}"
@@ -30,4 +33,39 @@ PACKAGES =+ "${PN}-tools"
30 33
31FILES:${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp" 34FILES:${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp"
32 35
36RDEPENDS:${PN}-ptest += "make bash gawk"
37
38do_install_ptest() {
39 # Install test scripts to ptest path
40 install -d ${D}${PTEST_PATH}/src/tests
41 install -m 755 ${S}/tests/* ${D}${PTEST_PATH}/src/tests
42 install -m 755 ${S}/test-driver ${D}${PTEST_PATH}/src
43 install -d ${D}${PTEST_PATH}/src/tests/scripts
44 install -m 755 ${S}/scripts/*.awk ${D}${PTEST_PATH}/src/tests/scripts
45 install -m 644 ${S}/scripts/pnglib* ${S}/scripts/*.c ${S}/scripts/*.def ${S}/scripts/macro.lst ${D}${PTEST_PATH}/src/tests/scripts
46 install -m 644 ${S}/scripts/pnglibconf.h.prebuilt ${D}${PTEST_PATH}/src/tests/scripts/pnglibconf.h
47 install -d ${D}${PTEST_PATH}/src/contrib/tools
48 install -m 755 ${S}/contrib/tools/*.sh ${D}${PTEST_PATH}/src/contrib/tools
49 install -m 644 ${S}/contrib/tools/*.c ${S}/contrib/tools/*.h ${D}${PTEST_PATH}/src/contrib/tools
50
51 # Install .libs directory binaries to ptest path
52 install -m 755 ${B}/.libs/pngtest ${B}/.libs/pngstest ${B}/.libs/pngimage ${B}/.libs/pngunknown ${B}/.libs/pngvalid ${D}${PTEST_PATH}/src
53
54 # Copy png files to ptest path
55 cd ${S} && find contrib -name '*.png' | cpio -pd ${D}${PTEST_PATH}/src
56
57 # Install Makefile and png files
58 install -m 644 ${S}/pngtest.png ${D}${PTEST_PATH}/src
59 install -m 644 ${S}/*.png ${S}/*.h ${S}/*.c ${S}/*.dfa ${B}/pnglibconf.out ${S}/Makefile.am ${S}/Makefile.in ${D}${PTEST_PATH}/src/tests
60
61 sed -e 's/^abs_srcdir = ..*/abs_srcdir = \.\./' \
62 -e 's/^top_srcdir = ..*/top_srcdir = \.\./' \
63 -e 's/^srcdir = ..*/srcdir = \./' \
64 -e 's/^Makefile: ..*/Makefile: /' \
65 -e 's/check-TESTS: $(check_PROGRAMS)/check-TESTS:/g' \
66 ${B}/Makefile > ${D}${PTEST_PATH}/src/Makefile
67
68 sed -e 's|#!/bin/awk|#!/usr/bin/awk|g' -i ${D}${PTEST_PATH}/src/tests/scripts/*.awk
69}
70
33BBCLASSEXTEND = "native nativesdk" 71BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2024-50612.patch b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2024-50612.patch
new file mode 100644
index 0000000000..d96f2915c4
--- /dev/null
+++ b/meta/recipes-multimedia/libsndfile/libsndfile1/CVE-2024-50612.patch
@@ -0,0 +1,412 @@
1From 4755f5bd7854611d92ad0f1295587b439f9950ba Mon Sep 17 00:00:00 2001
2From: Arthur Taylor <art@ified.ca>
3Date: Fri, 15 Nov 2024 19:46:53 -0800
4Subject: [PATCH] src/ogg: better error checking for vorbis. Fixes #1035
5
6Upstream-Status: Backport [https://github.com/libsndfile/libsndfile/commit/4755f5bd7854611d92ad0f1295587b439f9950ba]
7CVE: CVE-2024-50612
8Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
9---
10 src/ogg.c | 12 ++--
11 src/ogg_opus.c | 17 +++--
12 src/ogg_vorbis.c | 170 ++++++++++++++++++++++++++---------------------
13 3 files changed, 114 insertions(+), 85 deletions(-)
14
15diff --git a/src/ogg.c b/src/ogg.c
16index 8cd4379..534c8f7 100644
17--- a/src/ogg.c
18+++ b/src/ogg.c
19@@ -211,12 +211,16 @@ ogg_read_first_page (SF_PRIVATE *psf, OGG_PRIVATE *odata)
20
21 int
22 ogg_write_page (SF_PRIVATE *psf, ogg_page *page)
23-{ int bytes ;
24+{ int n ;
25
26- bytes = psf_fwrite (page->header, 1, page->header_len, psf) ;
27- bytes += psf_fwrite (page->body, 1, page->body_len, psf) ;
28+ n = psf_fwrite (page->header, 1, page->header_len, psf) ;
29+ if (n == page->header_len)
30+ n += psf_fwrite (page->body, 1, page->body_len, psf) ;
31
32- return bytes == page->header_len + page->body_len ;
33+ if (n != page->body_len + page->header_len)
34+ return -1 ;
35+
36+ return n ;
37 } /* ogg_write_page */
38
39 sf_count_t
40diff --git a/src/ogg_opus.c b/src/ogg_opus.c
41index 596bb69..8e3800a 100644
42--- a/src/ogg_opus.c
43+++ b/src/ogg_opus.c
44@@ -827,15 +827,16 @@ ogg_opus_write_header (SF_PRIVATE *psf, int UNUSED (calc_length))
45
46 /* The first page MUST only contain the header, so flush it out now */
47 ogg_stream_packetin (&odata->ostream, &op) ;
48- for ( ; (nn = ogg_stream_flush (&odata->ostream, &odata->opage)) ; )
49- { if (! (nn = ogg_write_page (psf, &odata->opage)))
50+ while (ogg_stream_flush (&odata->ostream, &odata->opage))
51+ { nn = ogg_write_page (psf, &odata->opage) ;
52+ if (nn < 0)
53 { psf_log_printf (psf, "Opus : Failed to write header!\n") ;
54 if (psf->error)
55 return psf->error ;
56 return SFE_INTERNAL ;
57 } ;
58 psf->dataoffset += nn ;
59- }
60+ } ;
61
62 /*
63 ** Metadata Tags (manditory)
64@@ -850,15 +851,16 @@ ogg_opus_write_header (SF_PRIVATE *psf, int UNUSED (calc_length))
65 vorbiscomment_write_tags (psf, &op, &opustags_ident, opus_get_version_string (), - (OGG_OPUS_COMMENT_PAD)) ;
66 op.packetno = 2 ;
67 ogg_stream_packetin (&odata->ostream, &op) ;
68- for ( ; (nn = ogg_stream_flush (&odata->ostream, &odata->opage)) ; )
69- { if (! (nn = ogg_write_page (psf, &odata->opage)))
70+ while (ogg_stream_flush (&odata->ostream, &odata->opage))
71+ { nn = ogg_write_page (psf, &odata->opage) ;
72+ if (nn < 0)
73 { psf_log_printf (psf, "Opus : Failed to write comments!\n") ;
74 if (psf->error)
75 return psf->error ;
76 return SFE_INTERNAL ;
77 } ;
78 psf->dataoffset += nn ;
79- }
80+ } ;
81
82 return 0 ;
83 } /* ogg_opus_write_header */
84@@ -1132,7 +1134,8 @@ ogg_opus_write_out (SF_PRIVATE *psf, OGG_PRIVATE *odata, OPUS_PRIVATE *oopus)
85 if (nbytes > 0)
86 { oopus->u.encode.last_segments -= ogg_page_segments (&odata->opage) ;
87 oopus->pg_pos = oopus->pkt_pos ;
88- ogg_write_page (psf, &odata->opage) ;
89+ if (ogg_write_page (psf, &odata->opage) < 0)
90+ return -1 ;
91 }
92 else
93 break ;
94diff --git a/src/ogg_vorbis.c b/src/ogg_vorbis.c
95index f9428ed..2cdbed3 100644
96--- a/src/ogg_vorbis.c
97+++ b/src/ogg_vorbis.c
98@@ -82,28 +82,6 @@
99 /* How many seconds in the future to not bother bisection searching for. */
100 #define VORBIS_SEEK_THRESHOLD 2
101
102-typedef int convert_func (SF_PRIVATE *psf, int, void *, int, int, float **) ;
103-
104-static int vorbis_read_header (SF_PRIVATE *psf) ;
105-static int vorbis_write_header (SF_PRIVATE *psf, int calc_length) ;
106-static int vorbis_close (SF_PRIVATE *psf) ;
107-static int vorbis_command (SF_PRIVATE *psf, int command, void *data, int datasize) ;
108-static int vorbis_byterate (SF_PRIVATE *psf) ;
109-static int vorbis_calculate_granulepos (SF_PRIVATE *psf, uint64_t *gp_out) ;
110-static int vorbis_skip (SF_PRIVATE *psf, uint64_t target_gp) ;
111-static int vorbis_seek_trysearch (SF_PRIVATE *psf, uint64_t target_gp) ;
112-static sf_count_t vorbis_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
113-static sf_count_t vorbis_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
114-static sf_count_t vorbis_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
115-static sf_count_t vorbis_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
116-static sf_count_t vorbis_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
117-static sf_count_t vorbis_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
118-static sf_count_t vorbis_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
119-static sf_count_t vorbis_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
120-static sf_count_t vorbis_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
121-static sf_count_t vorbis_read_sample (SF_PRIVATE *psf, void *ptr, sf_count_t lens, convert_func *transfn) ;
122-static int vorbis_rnull (SF_PRIVATE *psf, int samples, void *vptr, int off , int channels, float **pcm) ;
123-
124 typedef struct
125 { int id ;
126 const char *name ;
127@@ -145,6 +123,45 @@ typedef struct
128 sf_count_t last_page ;
129 } VORBIS_PRIVATE ;
130
131+typedef int convert_func (SF_PRIVATE *psf, int, void *, int, int, float **) ;
132+
133+static int vorbis_read_header (SF_PRIVATE *psf) ;
134+static int vorbis_write_header (SF_PRIVATE *psf, int calc_length) ;
135+static int vorbis_close (SF_PRIVATE *psf) ;
136+static int vorbis_command (SF_PRIVATE *psf, int command, void *data, int datasize) ;
137+static int vorbis_byterate (SF_PRIVATE *psf) ;
138+static int vorbis_calculate_granulepos (SF_PRIVATE *psf, uint64_t *gp_out) ;
139+static int vorbis_skip (SF_PRIVATE *psf, uint64_t target_gp) ;
140+static int vorbis_seek_trysearch (SF_PRIVATE *psf, uint64_t target_gp) ;
141+static sf_count_t vorbis_seek (SF_PRIVATE *psf, int mode, sf_count_t offset) ;
142+static sf_count_t vorbis_read_s (SF_PRIVATE *psf, short *ptr, sf_count_t len) ;
143+static sf_count_t vorbis_read_i (SF_PRIVATE *psf, int *ptr, sf_count_t len) ;
144+static sf_count_t vorbis_read_f (SF_PRIVATE *psf, float *ptr, sf_count_t len) ;
145+static sf_count_t vorbis_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t len) ;
146+static sf_count_t vorbis_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t len) ;
147+static sf_count_t vorbis_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t len) ;
148+static sf_count_t vorbis_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t len) ;
149+static sf_count_t vorbis_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t len) ;
150+static sf_count_t vorbis_read_sample (SF_PRIVATE *psf, void *ptr, sf_count_t lens, convert_func *transfn) ;
151+static int vorbis_write_samples (SF_PRIVATE *psf, OGG_PRIVATE *odata, VORBIS_PRIVATE *vdata, int in_frames) ;
152+static int vorbis_rnull (SF_PRIVATE *psf, int samples, void *vptr, int off , int channels, float **pcm) ;
153+static void vorbis_log_error (SF_PRIVATE *psf, int error) ;
154+
155+
156+static void
157+vorbis_log_error(SF_PRIVATE *psf, int error) {
158+ switch (error)
159+ { case 0: return;
160+ case OV_EIMPL: psf->error = SFE_UNIMPLEMENTED ; break ;
161+ case OV_ENOTVORBIS: psf->error = SFE_MALFORMED_FILE ; break ;
162+ case OV_EBADHEADER: psf->error = SFE_MALFORMED_FILE ; break ;
163+ case OV_EVERSION: psf->error = SFE_UNSUPPORTED_ENCODING ; break ;
164+ case OV_EFAULT:
165+ case OV_EINVAL:
166+ default: psf->error = SFE_INTERNAL ;
167+ } ;
168+} ;
169+
170 static int
171 vorbis_read_header (SF_PRIVATE *psf)
172 { OGG_PRIVATE *odata = (OGG_PRIVATE *) psf->container_data ;
173@@ -380,7 +397,6 @@ vorbis_write_header (SF_PRIVATE *psf, int UNUSED (calc_length))
174 { ogg_packet header ;
175 ogg_packet header_comm ;
176 ogg_packet header_code ;
177- int result ;
178
179 vorbis_analysis_headerout (&vdata->vdsp, &vdata->vcomment, &header, &header_comm, &header_code) ;
180 ogg_stream_packetin (&odata->ostream, &header) ; /* automatically placed in its own page */
181@@ -390,9 +406,9 @@ vorbis_write_header (SF_PRIVATE *psf, int UNUSED (calc_length))
182 /* This ensures the actual
183 * audio data will start on a new page, as per spec
184 */
185- while ((result = ogg_stream_flush (&odata->ostream, &odata->opage)) != 0)
186- { ogg_write_page (psf, &odata->opage) ;
187- } ;
188+ while (ogg_stream_flush (&odata->ostream, &odata->opage))
189+ if (ogg_write_page (psf, &odata->opage) < 0)
190+ return -1 ;
191 }
192
193 return 0 ;
194@@ -402,6 +418,7 @@ static int
195 vorbis_close (SF_PRIVATE *psf)
196 { OGG_PRIVATE* odata = psf->container_data ;
197 VORBIS_PRIVATE *vdata = psf->codec_data ;
198+ int ret = 0 ;
199
200 if (odata == NULL || vdata == NULL)
201 return 0 ;
202@@ -412,34 +429,14 @@ vorbis_close (SF_PRIVATE *psf)
203 if (psf->file.mode == SFM_WRITE)
204 {
205 if (psf->write_current <= 0)
206- vorbis_write_header (psf, 0) ;
207-
208- vorbis_analysis_wrote (&vdata->vdsp, 0) ;
209- while (vorbis_analysis_blockout (&vdata->vdsp, &vdata->vblock) == 1)
210- {
211+ ret = vorbis_write_header (psf, 0) ;
212
213- /* analysis, assume we want to use bitrate management */
214- vorbis_analysis (&vdata->vblock, NULL) ;
215- vorbis_bitrate_addblock (&vdata->vblock) ;
216-
217- while (vorbis_bitrate_flushpacket (&vdata->vdsp, &odata->opacket))
218- { /* weld the packet into the bitstream */
219- ogg_stream_packetin (&odata->ostream, &odata->opacket) ;
220-
221- /* write out pages (if any) */
222- while (!odata->eos)
223- { int result = ogg_stream_pageout (&odata->ostream, &odata->opage) ;
224- if (result == 0) break ;
225- ogg_write_page (psf, &odata->opage) ;
226-
227- /* this could be set above, but for illustrative purposes, I do
228- it here (to show that vorbis does know where the stream ends) */
229-
230- if (ogg_page_eos (&odata->opage)) odata->eos = 1 ;
231- }
232- }
233- }
234- }
235+ if (ret == 0)
236+ { /* A write of zero samples tells Vorbis the stream is done and to
237+ flush. */
238+ ret = vorbis_write_samples (psf, odata, vdata, 0) ;
239+ } ;
240+ } ;
241
242 /* ogg_page and ogg_packet structs always point to storage in
243 libvorbis. They are never freed or manipulated directly */
244@@ -449,7 +446,7 @@ vorbis_close (SF_PRIVATE *psf)
245 vorbis_comment_clear (&vdata->vcomment) ;
246 vorbis_info_clear (&vdata->vinfo) ;
247
248- return 0 ;
249+ return ret ;
250 } /* vorbis_close */
251
252 int
253@@ -688,33 +685,40 @@ vorbis_read_d (SF_PRIVATE *psf, double *ptr, sf_count_t lens)
254 /*==============================================================================
255 */
256
257-static void
258+static int
259 vorbis_write_samples (SF_PRIVATE *psf, OGG_PRIVATE *odata, VORBIS_PRIVATE *vdata, int in_frames)
260-{
261- vorbis_analysis_wrote (&vdata->vdsp, in_frames) ;
262+{ int ret ;
263+
264+ if ((ret = vorbis_analysis_wrote (&vdata->vdsp, in_frames)) != 0)
265+ return ret ;
266
267 /*
268 ** Vorbis does some data preanalysis, then divvies up blocks for
269 ** more involved (potentially parallel) processing. Get a single
270 ** block for encoding now.
271 */
272- while (vorbis_analysis_blockout (&vdata->vdsp, &vdata->vblock) == 1)
273+ while ((ret = vorbis_analysis_blockout (&vdata->vdsp, &vdata->vblock)) == 1)
274 {
275 /* analysis, assume we want to use bitrate management */
276- vorbis_analysis (&vdata->vblock, NULL) ;
277- vorbis_bitrate_addblock (&vdata->vblock) ;
278+ if ((ret = vorbis_analysis (&vdata->vblock, NULL)) != 0)
279+ return ret ;
280+ if ((ret = vorbis_bitrate_addblock (&vdata->vblock)) != 0)
281+ return ret ;
282
283- while (vorbis_bitrate_flushpacket (&vdata->vdsp, &odata->opacket))
284+ while ((ret = vorbis_bitrate_flushpacket (&vdata->vdsp, &odata->opacket)) == 1)
285 {
286 /* weld the packet into the bitstream */
287- ogg_stream_packetin (&odata->ostream, &odata->opacket) ;
288+ if ((ret = ogg_stream_packetin (&odata->ostream, &odata->opacket)) != 0)
289+ return ret ;
290
291 /* write out pages (if any) */
292 while (!odata->eos)
293- { int result = ogg_stream_pageout (&odata->ostream, &odata->opage) ;
294- if (result == 0)
295+ { ret = ogg_stream_pageout (&odata->ostream, &odata->opage) ;
296+ if (ret == 0)
297 break ;
298- ogg_write_page (psf, &odata->opage) ;
299+
300+ if (ogg_write_page (psf, &odata->opage) < 0)
301+ return -1 ;
302
303 /* This could be set above, but for illustrative purposes, I do
304 ** it here (to show that vorbis does know where the stream ends) */
305@@ -722,16 +726,22 @@ vorbis_write_samples (SF_PRIVATE *psf, OGG_PRIVATE *odata, VORBIS_PRIVATE *vdata
306 odata->eos = 1 ;
307 } ;
308 } ;
309+ if (ret != 0)
310+ return ret ;
311 } ;
312+ if (ret != 0)
313+ return ret ;
314
315 vdata->gp += in_frames ;
316+
317+ return 0 ;
318 } /* vorbis_write_data */
319
320
321 static sf_count_t
322 vorbis_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t lens)
323 {
324- int i, m, j = 0 ;
325+ int i, m, j = 0, ret ;
326 OGG_PRIVATE *odata = (OGG_PRIVATE *) psf->container_data ;
327 VORBIS_PRIVATE *vdata = (VORBIS_PRIVATE *) psf->codec_data ;
328 int in_frames = lens / psf->sf.channels ;
329@@ -740,14 +750,17 @@ vorbis_write_s (SF_PRIVATE *psf, const short *ptr, sf_count_t lens)
330 for (m = 0 ; m < psf->sf.channels ; m++)
331 buffer [m][i] = (float) (ptr [j++]) / 32767.0f ;
332
333- vorbis_write_samples (psf, odata, vdata, in_frames) ;
334+ if ((ret = vorbis_write_samples (psf, odata, vdata, in_frames)))
335+ { vorbis_log_error (psf, ret) ;
336+ return 0 ;
337+ } ;
338
339 return lens ;
340 } /* vorbis_write_s */
341
342 static sf_count_t
343 vorbis_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t lens)
344-{ int i, m, j = 0 ;
345+{ int i, m, j = 0, ret ;
346 OGG_PRIVATE *odata = (OGG_PRIVATE *) psf->container_data ;
347 VORBIS_PRIVATE *vdata = (VORBIS_PRIVATE *) psf->codec_data ;
348 int in_frames = lens / psf->sf.channels ;
349@@ -756,14 +769,17 @@ vorbis_write_i (SF_PRIVATE *psf, const int *ptr, sf_count_t lens)
350 for (m = 0 ; m < psf->sf.channels ; m++)
351 buffer [m][i] = (float) (ptr [j++]) / 2147483647.0f ;
352
353- vorbis_write_samples (psf, odata, vdata, in_frames) ;
354+ if ((ret = vorbis_write_samples (psf, odata, vdata, in_frames)))
355+ { vorbis_log_error (psf, ret) ;
356+ return 0 ;
357+ } ;
358
359 return lens ;
360 } /* vorbis_write_i */
361
362 static sf_count_t
363 vorbis_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t lens)
364-{ int i, m, j = 0 ;
365+{ int i, m, j = 0, ret ;
366 OGG_PRIVATE *odata = (OGG_PRIVATE *) psf->container_data ;
367 VORBIS_PRIVATE *vdata = (VORBIS_PRIVATE *) psf->codec_data ;
368 int in_frames = lens / psf->sf.channels ;
369@@ -772,14 +788,17 @@ vorbis_write_f (SF_PRIVATE *psf, const float *ptr, sf_count_t lens)
370 for (m = 0 ; m < psf->sf.channels ; m++)
371 buffer [m][i] = ptr [j++] ;
372
373- vorbis_write_samples (psf, odata, vdata, in_frames) ;
374+ if ((ret = vorbis_write_samples (psf, odata, vdata, in_frames)) != 0)
375+ { vorbis_log_error (psf, ret) ;
376+ return 0 ;
377+ } ;
378
379 return lens ;
380 } /* vorbis_write_f */
381
382 static sf_count_t
383 vorbis_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t lens)
384-{ int i, m, j = 0 ;
385+{ int i, m, j = 0, ret ;
386 OGG_PRIVATE *odata = (OGG_PRIVATE *) psf->container_data ;
387 VORBIS_PRIVATE *vdata = (VORBIS_PRIVATE *) psf->codec_data ;
388 int in_frames = lens / psf->sf.channels ;
389@@ -788,7 +807,10 @@ vorbis_write_d (SF_PRIVATE *psf, const double *ptr, sf_count_t lens)
390 for (m = 0 ; m < psf->sf.channels ; m++)
391 buffer [m][i] = (float) ptr [j++] ;
392
393- vorbis_write_samples (psf, odata, vdata, in_frames) ;
394+ if ((ret = vorbis_write_samples (psf, odata, vdata, in_frames)) != 0)
395+ { vorbis_log_error (psf, ret) ;
396+ return 0 ;
397+ } ;
398
399 return lens ;
400 } /* vorbis_write_d */
401@@ -884,7 +906,7 @@ vorbis_seek_trysearch (SF_PRIVATE *psf, uint64_t target_gp)
402 return 0 ;
403
404 /* Search for a position a half large-block before our target. As Vorbis is
405- ** lapped, every sample position come from two blocks, the "left" half of
406+ ** lapped, every sample position comes from two blocks, the "left" half of
407 ** one block and the "right" half of the previous block. The granule
408 ** position of an Ogg page of a Vorbis stream is the sample offset of the
409 ** last finished sample in the stream that can be decoded from a page. A
410--
4112.25.1
412
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1_1.2.2.bb b/meta/recipes-multimedia/libsndfile/libsndfile1_1.2.2.bb
index a9ee7c3575..2a1b96d5e7 100644
--- a/meta/recipes-multimedia/libsndfile/libsndfile1_1.2.2.bb
+++ b/meta/recipes-multimedia/libsndfile/libsndfile1_1.2.2.bb
@@ -10,6 +10,7 @@ LICENSE = "LGPL-2.1-only"
10SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/libsndfile-${PV}.tar.xz \ 10SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/libsndfile-${PV}.tar.xz \
11 file://noopus.patch \ 11 file://noopus.patch \
12 file://cve-2022-33065.patch \ 12 file://cve-2022-33065.patch \
13 file://CVE-2024-50612.patch \
13 " 14 "
14GITHUB_BASE_URI = "https://github.com/libsndfile/libsndfile/releases/" 15GITHUB_BASE_URI = "https://github.com/libsndfile/libsndfile/releases/"
15 16
diff --git a/meta/recipes-multimedia/mpg123/mpg123_1.32.6.bb b/meta/recipes-multimedia/mpg123/mpg123_1.32.10.bb
index f7786e8588..82f7b7d332 100644
--- a/meta/recipes-multimedia/mpg123/mpg123_1.32.6.bb
+++ b/meta/recipes-multimedia/mpg123/mpg123_1.32.10.bb
@@ -10,7 +10,7 @@ LICENSE = "LGPL-2.1-only"
10LIC_FILES_CHKSUM = "file://COPYING;md5=e7b9c15fcfb986abb4cc5e8400a24169" 10LIC_FILES_CHKSUM = "file://COPYING;md5=e7b9c15fcfb986abb4cc5e8400a24169"
11 11
12SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2" 12SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2"
13SRC_URI[sha256sum] = "ccdd1d0abc31d73d8b435fc658c79049d0a905b30669b6a42a03ad169dc609e6" 13SRC_URI[sha256sum] = "87b2c17fe0c979d3ef38eeceff6362b35b28ac8589fbf1854b5be75c9ab6557c"
14 14
15UPSTREAM_CHECK_REGEX = "mpg123-(?P<pver>\d+(\.\d+)+)\.tar" 15UPSTREAM_CHECK_REGEX = "mpg123-(?P<pver>\d+(\.\d+)+)\.tar"
16 16
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
index ae16056d24..1ab3831519 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
@@ -121,7 +121,7 @@ PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack"
121# able to use pulseaudio autospawn for root as well. 121# able to use pulseaudio autospawn for root as well.
122PACKAGECONFIG[autospawn-for-root] = ",,," 122PACKAGECONFIG[autospawn-for-root] = ",,,"
123PACKAGECONFIG[lirc] = "-Dlirc=enabled,-Dlirc=disabled,lirc" 123PACKAGECONFIG[lirc] = "-Dlirc=enabled,-Dlirc=disabled,lirc"
124PACKAGECONFIG[webrtc] = "-Dwebrtc-aec=enabled,-Dwebrtc-aec=disabled,webrtc-audio-processing" 124PACKAGECONFIG[webrtc] = "-Dwebrtc-aec=enabled,-Dwebrtc-aec=disabled,webrtc-audio-processing-1"
125PACKAGECONFIG[ipv6] = "-Dipv6=true,-Dipv6=false," 125PACKAGECONFIG[ipv6] = "-Dipv6=true,-Dipv6=false,"
126PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false," 126PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,"
127 127
diff --git a/meta/recipes-sato/puzzles/puzzles_git.bb b/meta/recipes-sato/puzzles/puzzles_git.bb
index e9403ee130..48886b3039 100644
--- a/meta/recipes-sato/puzzles/puzzles_git.bb
+++ b/meta/recipes-sato/puzzles/puzzles_git.bb
@@ -47,3 +47,6 @@ STOP
47 done 47 done
48} 48}
49 49
50CVE_STATUS[CVE-2024-13769] = "cpe-incorrect: issue in ThemeREX's Wordpress theme Puzzles"
51CVE_STATUS[CVE-2024-13770] = "cpe-incorrect: issue in ThemeREX's Wordpress theme Puzzles"
52CVE_STATUS[CVE-2025-0837] = "cpe-incorrect: issue in ThemeREX's Wordpress theme Puzzles"
diff --git a/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc b/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc
index 016614b19c..aa6d908538 100644
--- a/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc
+++ b/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc
@@ -28,7 +28,8 @@ EXTRA_OECONF = "--enable-xim \
28 --with-codesets=eu --enable-pointer-blank \ 28 --with-codesets=eu --enable-pointer-blank \
29 --enable-text-blink --enable-rxvt-scroll \ 29 --enable-text-blink --enable-rxvt-scroll \
30 --enable-combining --disable-perl \ 30 --enable-combining --disable-perl \
31 --with-x=${STAGING_DIR_HOST}${prefix}" 31 --with-x=${STAGING_DIR_HOST}${prefix} \
32 ac_cv_path_TIC=:"
32 33
33PACKAGECONFIG ??= "" 34PACKAGECONFIG ??= ""
34PACKAGECONFIG[startup] = "--enable-startup-notification,--disable-startup-notification,startup-notification," 35PACKAGECONFIG[startup] = "--enable-startup-notification,--disable-startup-notification,startup-notification,"
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-CMake-Add-a-variable-to-control-macro-__PAS_ALWAYS_I.patch b/meta/recipes-sato/webkit/webkitgtk/0001-CMake-Add-a-variable-to-control-macro-__PAS_ALWAYS_I.patch
index a819e22127..a19008a41f 100644
--- a/meta/recipes-sato/webkit/webkitgtk/0001-CMake-Add-a-variable-to-control-macro-__PAS_ALWAYS_I.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-CMake-Add-a-variable-to-control-macro-__PAS_ALWAYS_I.patch
@@ -1,4 +1,4 @@
1From 575b848a3b3c14280679db80d0d518922c83d62a Mon Sep 17 00:00:00 2001 1From 99a21305ae683a216e9299e5dbdd763190a8cfe3 Mon Sep 17 00:00:00 2001
2From: Kai Kang <kai.kang@windriver.com> 2From: Kai Kang <kai.kang@windriver.com>
3Date: Fri, 11 Aug 2023 14:20:48 +0800 3Date: Fri, 11 Aug 2023 14:20:48 +0800
4Subject: [PATCH] Add a variable to control macro 4Subject: [PATCH] Add a variable to control macro
@@ -57,10 +57,10 @@ index 5d5fb38c..a554f700 100644
57 #else 57 #else
58 #define __PAS_ALWAYS_INLINE_BUT_NOT_INLINE 58 #define __PAS_ALWAYS_INLINE_BUT_NOT_INLINE
59diff --git a/Source/cmake/WebKitCompilerFlags.cmake b/Source/cmake/WebKitCompilerFlags.cmake 59diff --git a/Source/cmake/WebKitCompilerFlags.cmake b/Source/cmake/WebKitCompilerFlags.cmake
60index 9b2fecf9..7cdc2b6a 100644 60index 0732785e..4879ec40 100644
61--- a/Source/cmake/WebKitCompilerFlags.cmake 61--- a/Source/cmake/WebKitCompilerFlags.cmake
62+++ b/Source/cmake/WebKitCompilerFlags.cmake 62+++ b/Source/cmake/WebKitCompilerFlags.cmake
63@@ -453,3 +453,10 @@ endif () 63@@ -452,3 +452,10 @@ endif ()
64 64
65 # FIXME: Enable pre-compiled headers for all ports <https://webkit.org/b/139438> 65 # FIXME: Enable pre-compiled headers for all ports <https://webkit.org/b/139438>
66 set(CMAKE_DISABLE_PRECOMPILE_HEADERS ON) 66 set(CMAKE_DISABLE_PRECOMPILE_HEADERS ON)
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch b/meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
index 8e29ce17ed..dda20a7b25 100644
--- a/meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
@@ -1,4 +1,4 @@
1From 6348f91c29e2350ad3fec5264aa57dd4994d4583 Mon Sep 17 00:00:00 2001 1From d1f6a1b6a1298f6ef2f1677e9996aa60a002134a Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Tue, 27 Oct 2015 16:02:19 +0200 3Date: Tue, 27 Oct 2015 16:02:19 +0200
4Subject: [PATCH] FindGObjectIntrospection.cmake: prefix variables obtained 4Subject: [PATCH] FindGObjectIntrospection.cmake: prefix variables obtained
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Remove-ARM-specific-declarations-in-FELighting.h-unn.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Remove-ARM-specific-declarations-in-FELighting.h-unn.patch
deleted file mode 100644
index 6ffe0a9454..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/0001-Remove-ARM-specific-declarations-in-FELighting.h-unn.patch
+++ /dev/null
@@ -1,44 +0,0 @@
1From dbd1a59b239b3902e717fdeb063883dbb0b06ee9 Mon Sep 17 00:00:00 2001
2From: Adrian Perez de Castro <aperez@igalia.com>
3Date: Sun, 26 May 2024 14:24:35 -0700
4Subject: [PATCH 1/2] Remove ARM-specific declarations in FELighting.h unneeded
5 after 272873@main
6
7Unreviewed build fix.
8
9* Source/WebCore/platform/graphics/filters/FELighting.h: Remove unneeded
10 declarations for the getPowerCoefficients() and platformApplyNeon()
11 functions, which are now defined elsewhere; and were causing a build
12 failure due to usage of the protected LightingData type.
13
14Canonical link: https://commits.webkit.org/279334@main
15
16Backport this patch for fixing following compile error:
17webkitgtk-2.44.1/Source/WebCore/platform/graphics/filters/FELighting.h:73:41: error: 'LightingData' does not name a type
18 73 | inline void platformApplyNeon(const LightingData&, const LightSource::PaintingData&);
19
20Upstream-Status: Backport [https://github.com/WebKit/WebKit/commit/36d1b5d7c0ef9a733ee8055b1f35b1d24435d538]
21Signed-off-by: Changqing Li <changqing.li@windriver.com>
22---
23 Source/WebCore/platform/graphics/filters/FELighting.h | 5 -----
24 1 file changed, 5 deletions(-)
25
26diff --git a/Source/WebCore/platform/graphics/filters/FELighting.h b/Source/WebCore/platform/graphics/filters/FELighting.h
27index 4efab920..dcd80b6f 100644
28--- a/Source/WebCore/platform/graphics/filters/FELighting.h
29+++ b/Source/WebCore/platform/graphics/filters/FELighting.h
30@@ -68,11 +68,6 @@ protected:
31
32 std::unique_ptr<FilterEffectApplier> createSoftwareApplier() const override;
33
34-#if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
35- static int getPowerCoefficients(float exponent);
36- inline void platformApplyNeon(const LightingData&, const LightSource::PaintingData&);
37-#endif
38-
39 Color m_lightingColor;
40 float m_surfaceScale;
41 float m_diffuseConstant;
42--
432.25.1
44
diff --git a/meta/recipes-sato/webkit/webkitgtk/0002-More-dynamicDowncast-adoption-in-platform-code.patch b/meta/recipes-sato/webkit/webkitgtk/0002-More-dynamicDowncast-adoption-in-platform-code.patch
deleted file mode 100644
index a0c7b6bd57..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/0002-More-dynamicDowncast-adoption-in-platform-code.patch
+++ /dev/null
@@ -1,65 +0,0 @@
1From 88fa4b49a10ecfb74c36c678c1e2b76136357153 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Fri, 12 Jul 2024 10:16:05 +0800
4Subject: [PATCH 2/2] More dynamicDowncast<> adoption in platform code
5
6Backport part of commit [90d13e7 More dynamicDowncast<> adoption in
7platform code] to fix following compile error for ARM_NEON:
8webkitgtk-2.44.1/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp:545:37: error: 'LS_POINT' was not declared in this scope; did you mean 'WebCore::LightType::LS_POINT'?
9 545 | if (data.lightSource->type() == LS_POINT) {
10 | ^~~~~~~~
11 | WebCore::LightType::LS_POINT
12
13Upstream-Status: Backport [https://github.com/WebKit/WebKit/commit/90d13e77ab2192b7efa8e763eeb8b08dbbb6d5c3]
14
15Signed-off-by: Changqing Li <changqing.li@windriver.com>
16---
17 .../filters/FELightingNeonParallelApplier.cpp | 22 +++++++++----------
18 1 file changed, 10 insertions(+), 12 deletions(-)
19
20diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp
21index 04d855fa..dccc003d 100644
22--- a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp
23+++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNeonParallelApplier.cpp
24@@ -542,19 +542,17 @@ void FELightingNeonParallelApplier::applyPlatformParallel(const LightingData& da
25 floatArguments.colorBlue = color.blue;
26 floatArguments.padding4 = 0;
27
28- if (data.lightSource->type() == LS_POINT) {
29+ if (auto* pointLightSource = dynamicDowncast<PointLightSource>(*data.lightSource)) {
30 neonData.flags |= FLAG_POINT_LIGHT;
31- auto& pointLightSource = downcast<PointLightSource>(*data.lightSource);
32- floatArguments.lightX = pointLightSource.position().x();
33- floatArguments.lightY = pointLightSource.position().y();
34- floatArguments.lightZ = pointLightSource.position().z();
35+ floatArguments.lightX = pointLightSource->position().x();
36+ floatArguments.lightY = pointLightSource->position().y();
37+ floatArguments.lightZ = pointLightSource->position().z();
38 floatArguments.padding2 = 0;
39- } else if (data.lightSource->type() == LS_SPOT) {
40+ } else if (auto* spotLightSource = dynamicDowncast<SpotLightSource>(*data.lightSource)) {
41 neonData.flags |= FLAG_SPOT_LIGHT;
42- auto& spotLightSource = downcast<SpotLightSource>(*data.lightSource);
43- floatArguments.lightX = spotLightSource.position().x();
44- floatArguments.lightY = spotLightSource.position().y();
45- floatArguments.lightZ = spotLightSource.position().z();
46+ floatArguments.lightX = spotLightSource->position().x();
47+ floatArguments.lightY = spotLightSource->position().y();
48+ floatArguments.lightZ = spotLightSource->position().z();
49 floatArguments.padding2 = 0;
50
51 floatArguments.directionX = paintingData.directionVector.x();
52@@ -565,8 +563,8 @@ void FELightingNeonParallelApplier::applyPlatformParallel(const LightingData& da
53 floatArguments.coneCutOffLimit = paintingData.coneCutOffLimit;
54 floatArguments.coneFullLight = paintingData.coneFullLight;
55 floatArguments.coneCutOffRange = paintingData.coneCutOffLimit - paintingData.coneFullLight;
56- neonData.coneExponent = getPowerCoefficients(spotLightSource.specularExponent());
57- if (spotLightSource.specularExponent() == 1)
58+ neonData.coneExponent = getPowerCoefficients(spotLightSource->specularExponent());
59+ if (spotLightSource->specularExponent() == 1)
60 neonData.flags |= FLAG_CONE_EXPONENT_IS_1;
61 } else {
62 ASSERT(data.lightSource->type() == LS_DISTANT);
63--
642.25.1
65
diff --git a/meta/recipes-sato/webkit/webkitgtk/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch b/meta/recipes-sato/webkit/webkitgtk/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch
index 76bcb3df99..0d8976c502 100644
--- a/meta/recipes-sato/webkit/webkitgtk/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch
@@ -1,4 +1,4 @@
1From 1523e00a2a76e285262c8aa3721b5d99f3f2d612 Mon Sep 17 00:00:00 2001 1From 2ee948191de1c561b72ebf462605376cfb3ce7af Mon Sep 17 00:00:00 2001
2From: Thomas Devoogdt <thomas.devoogdt@barco.com> 2From: Thomas Devoogdt <thomas.devoogdt@barco.com>
3Date: Mon, 16 Jan 2023 17:03:30 +0100 3Date: Mon, 16 Jan 2023 17:03:30 +0100
4Subject: [PATCH] REGRESSION(257865@main): B3Validate.cpp: fix 4Subject: [PATCH] REGRESSION(257865@main): B3Validate.cpp: fix
diff --git a/meta/recipes-sato/webkit/webkitgtk/no-musttail-arm.patch b/meta/recipes-sato/webkit/webkitgtk/no-musttail-arm.patch
index 8ce37a01cc..793be48df2 100644
--- a/meta/recipes-sato/webkit/webkitgtk/no-musttail-arm.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/no-musttail-arm.patch
@@ -1,4 +1,4 @@
1From a9c874f7418cefbe78f7cd26505ae495cb59bbcf Mon Sep 17 00:00:00 2001 1From 31dca9601888f2a539dfb22693ffd62c22ee8912 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com> 2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 12 Jan 2024 09:21:39 -0800 3Date: Fri, 12 Jan 2024 09:21:39 -0800
4Subject: [PATCH] clang/arm: Do not use MUST_TAIL_CALL 4Subject: [PATCH] clang/arm: Do not use MUST_TAIL_CALL
@@ -16,10 +16,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
16 1 file changed, 1 insertion(+), 1 deletion(-) 16 1 file changed, 1 insertion(+), 1 deletion(-)
17 17
18diff --git a/Source/WTF/wtf/Compiler.h b/Source/WTF/wtf/Compiler.h 18diff --git a/Source/WTF/wtf/Compiler.h b/Source/WTF/wtf/Compiler.h
19index 0ea5cb76..c5480dbc 100644 19index 449ca502..daac29d7 100644
20--- a/Source/WTF/wtf/Compiler.h 20--- a/Source/WTF/wtf/Compiler.h
21+++ b/Source/WTF/wtf/Compiler.h 21+++ b/Source/WTF/wtf/Compiler.h
22@@ -284,7 +284,7 @@ 22@@ -321,7 +321,7 @@
23 /* MUST_TAIL_CALL */ 23 /* MUST_TAIL_CALL */
24 24
25 #if !defined(MUST_TAIL_CALL) && defined(__cplusplus) && defined(__has_cpp_attribute) 25 #if !defined(MUST_TAIL_CALL) && defined(__cplusplus) && defined(__has_cpp_attribute)
diff --git a/meta/recipes-sato/webkit/webkitgtk/reproducibility.patch b/meta/recipes-sato/webkit/webkitgtk/reproducibility.patch
index 93a431a0b1..d614a1ee4f 100644
--- a/meta/recipes-sato/webkit/webkitgtk/reproducibility.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/reproducibility.patch
@@ -1,4 +1,4 @@
1From d096b945113ddecaf33062296e20b6d5a007cab3 Mon Sep 17 00:00:00 2001 1From cb5458b5d15aafa3543a47a33975609026d45d32 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org> 2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Mon, 3 Jan 2022 14:18:34 +0000 3Date: Mon, 3 Jan 2022 14:18:34 +0000
4Subject: [PATCH] webkitgtk: Add reproducibility fix 4Subject: [PATCH] webkitgtk: Add reproducibility fix
diff --git a/meta/recipes-sato/webkit/webkitgtk/t6-not-declared.patch b/meta/recipes-sato/webkit/webkitgtk/t6-not-declared.patch
index d4720e4f28..064925dace 100644
--- a/meta/recipes-sato/webkit/webkitgtk/t6-not-declared.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/t6-not-declared.patch
@@ -1,10 +1,9 @@
1From 3d5373575695b293b8559155431d0079a6153aff Mon Sep 17 00:00:00 2001 1From 36c092723ec6d4908039341c9d157db8ab1c0a59 Mon Sep 17 00:00:00 2001
2From: Michael Catanzaro <mcatanzaro@redhat.com> 2From: Michael Catanzaro <mcatanzaro@redhat.com>
3Date: Mon, 5 Feb 2024 11:00:49 -0600 3Date: Mon, 5 Feb 2024 11:00:49 -0600
4Subject: [PATCH] =?UTF-8?q?[GTK]=20[2.42.5]=20LowLevelInterpreter.cpp:339:?= 4Subject: [PATCH] =?UTF-8?q?LowLevelInterpreter.cpp:339:21:=20error:=20?=
5 =?UTF-8?q?21:=20error:=20=E2=80=98t6=E2=80=99=20was=20not=20declared=20in?= 5 =?UTF-8?q?=E2=80=98t6=E2=80=99=20was=20not=20declared=20in=20this=20scope?=
6 =?UTF-8?q?=20this=20scope=20https://bugs.webkit.org/show=5Fbug.cgi=3Fid?= 6 =?UTF-8?q?=20https://bugs.webkit.org/show=5Fbug.cgi=3Fid=3D268739?=
7 =?UTF-8?q?=3D268739?=
8MIME-Version: 1.0 7MIME-Version: 1.0
9Content-Type: text/plain; charset=UTF-8 8Content-Type: text/plain; charset=UTF-8
10Content-Transfer-Encoding: 8bit 9Content-Transfer-Encoding: 8bit
@@ -22,7 +21,7 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
22 1 file changed, 2 deletions(-) 21 1 file changed, 2 deletions(-)
23 22
24diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp 23diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
25index 5064ead6cd2e7..9a2e2653b1219 100644 24index 75cecbbd..b1020ea4 100644
26--- a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp 25--- a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
27+++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp 26+++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
28@@ -336,8 +336,6 @@ JSValue CLoop::execute(OpcodeID entryOpcodeID, void* executableAddress, VM* vm, 27@@ -336,8 +336,6 @@ JSValue CLoop::execute(OpcodeID entryOpcodeID, void* executableAddress, VM* vm,
@@ -34,4 +33,3 @@ index 5064ead6cd2e7..9a2e2653b1219 100644
34 33
35 struct StackPointerScope { 34 struct StackPointerScope {
36 StackPointerScope(CLoopStack& stack) 35 StackPointerScope(CLoopStack& stack)
37
diff --git a/meta/recipes-sato/webkit/webkitgtk_2.44.1.bb b/meta/recipes-sato/webkit/webkitgtk_2.44.3.bb
index c4a3c464c1..a8f825e164 100644
--- a/meta/recipes-sato/webkit/webkitgtk_2.44.1.bb
+++ b/meta/recipes-sato/webkit/webkitgtk_2.44.3.bb
@@ -16,10 +16,8 @@ SRC_URI = "https://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
16 file://no-musttail-arm.patch \ 16 file://no-musttail-arm.patch \
17 file://t6-not-declared.patch \ 17 file://t6-not-declared.patch \
18 file://30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch \ 18 file://30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch \
19 file://0001-Remove-ARM-specific-declarations-in-FELighting.h-unn.patch \
20 file://0002-More-dynamicDowncast-adoption-in-platform-code.patch \
21 " 19 "
22SRC_URI[sha256sum] = "425b1459b0f04d0600c78d1abb5e7edfa3c060a420f8b231e9a6a2d5d29c5561" 20SRC_URI[sha256sum] = "dc82d042ecaca981a4852357c06e5235743319cf10a94cd36ad41b97883a0b54"
23 21
24inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gi-docgen 22inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gi-docgen
25 23
diff --git a/meta/recipes-support/boost/boost-1.84.0.inc b/meta/recipes-support/boost/boost-1.84.0.inc
index 5bbea2ba5b..be1ad20f47 100644
--- a/meta/recipes-support/boost/boost-1.84.0.inc
+++ b/meta/recipes-support/boost/boost-1.84.0.inc
@@ -11,7 +11,7 @@ BOOST_VER = "${@"_".join(d.getVar("PV").split("."))}"
11BOOST_MAJ = "${@"_".join(d.getVar("PV").split(".")[0:2])}" 11BOOST_MAJ = "${@"_".join(d.getVar("PV").split(".")[0:2])}"
12BOOST_P = "boost_${BOOST_VER}" 12BOOST_P = "boost_${BOOST_VER}"
13 13
14SRC_URI = "https://boostorg.jfrog.io/artifactory/main/release/${PV}/source/${BOOST_P}.tar.bz2" 14SRC_URI = "https://archives.boost.io/release/${PV}/source/${BOOST_P}.tar.bz2"
15SRC_URI[sha256sum] = "cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454" 15SRC_URI[sha256sum] = "cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454"
16 16
17UPSTREAM_CHECK_URI = "http://www.boost.org/users/download/" 17UPSTREAM_CHECK_URI = "http://www.boost.org/users/download/"
diff --git a/meta/recipes-support/curl/curl/CVE-2024-11053-0001.patch b/meta/recipes-support/curl/curl/CVE-2024-11053-0001.patch
new file mode 100644
index 0000000000..52ba390cde
--- /dev/null
+++ b/meta/recipes-support/curl/curl/CVE-2024-11053-0001.patch
@@ -0,0 +1,353 @@
1From 9bee39bfed2c413b4cc4eb306a57ac92a1854907 Mon Sep 17 00:00:00 2001
2From: Daniel Stenberg <daniel@haxx.se>
3Date: Sat, 12 Oct 2024 23:54:39 +0200
4Subject: [PATCH] url: use same credentials on redirect
5
6Previously it could lose the username and only use the password.
7
8Added test 998 and 999 to verify.
9
10Reported-by: Tobias Bora
11Fixes #15262
12Closes #15282
13
14Changes:
15- Test files are added in Makefile.inc.
16
17CVE: CVE-2024-11053
18Upstream-Status: Backport [https://github.com/curl/curl/commit/9bee39bfed2c413b4cc4eb306a57ac92a1854907]
19
20Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
21---
22 lib/transfer.c | 3 ++
23 lib/url.c | 19 +++++----
24 lib/urldata.h | 9 +++-
25 tests/data/Makefile.inc | 2 +-
26 tests/data/test998 | 92 +++++++++++++++++++++++++++++++++++++++++
27 tests/data/test999 | 81 ++++++++++++++++++++++++++++++++++++
28 6 files changed, 195 insertions(+), 11 deletions(-)
29 create mode 100644 tests/data/test998
30 create mode 100644 tests/data/test999
31
32diff --git a/lib/transfer.c b/lib/transfer.c
33index e31d1d6..ccd042b 100644
34--- a/lib/transfer.c
35+++ b/lib/transfer.c
36@@ -700,6 +700,9 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
37 return CURLE_OUT_OF_MEMORY;
38 }
39
40+ if(data->set.str[STRING_USERNAME] ||
41+ data->set.str[STRING_PASSWORD])
42+ data->state.creds_from = CREDS_OPTION;
43 if(!result)
44 result = Curl_setstropt(&data->state.aptr.user,
45 data->set.str[STRING_USERNAME]);
46diff --git a/lib/url.c b/lib/url.c
47index 224b9f3..05431b9 100644
48--- a/lib/url.c
49+++ b/lib/url.c
50@@ -1899,10 +1899,10 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
51 return result;
52
53 /*
54- * User name and password set with their own options override the
55- * credentials possibly set in the URL.
56+ * username and password set with their own options override the credentials
57+ * possibly set in the URL, but netrc does not.
58 */
59- if(!data->set.str[STRING_PASSWORD]) {
60+ if(!data->state.aptr.passwd || (data->state.creds_from != CREDS_OPTION)) {
61 uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, 0);
62 if(!uc) {
63 char *decoded;
64@@ -1915,12 +1915,13 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
65 result = Curl_setstropt(&data->state.aptr.passwd, decoded);
66 if(result)
67 return result;
68+ data->state.creds_from = CREDS_URL;
69 }
70 else if(uc != CURLUE_NO_PASSWORD)
71 return Curl_uc_to_curlcode(uc);
72 }
73
74- if(!data->set.str[STRING_USERNAME]) {
75+ if(!data->state.aptr.user || (data->state.creds_from != CREDS_OPTION)) {
76 /* we don't use the URL API's URL decoder option here since it rejects
77 control codes and we want to allow them for some schemes in the user
78 and password fields */
79@@ -1934,13 +1935,10 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
80 return result;
81 conn->user = decoded;
82 result = Curl_setstropt(&data->state.aptr.user, decoded);
83+ data->state.creds_from = CREDS_URL;
84 }
85 else if(uc != CURLUE_NO_USER)
86 return Curl_uc_to_curlcode(uc);
87- else if(data->state.aptr.passwd) {
88- /* no user was set but a password, set a blank user */
89- result = Curl_setstropt(&data->state.aptr.user, "");
90- }
91 if(result)
92 return result;
93 }
94@@ -2730,7 +2728,8 @@ static CURLcode override_login(struct Curl_easy *data,
95 int ret;
96 bool url_provided = FALSE;
97
98- if(data->state.aptr.user) {
99+ if(data->state.aptr.user &&
100+ (data->state.creds_from != CREDS_NETRC)) {
101 /* there was a user name in the URL. Use the URL decoded version */
102 userp = &data->state.aptr.user;
103 url_provided = TRUE;
104@@ -2778,6 +2777,7 @@ static CURLcode override_login(struct Curl_easy *data,
105 result = Curl_setstropt(&data->state.aptr.user, *userp);
106 if(result)
107 return result;
108+ data->state.creds_from = CREDS_NETRC;
109 }
110 }
111 if(data->state.aptr.user) {
112@@ -2795,6 +2795,7 @@ static CURLcode override_login(struct Curl_easy *data,
113 CURLcode result = Curl_setstropt(&data->state.aptr.passwd, *passwdp);
114 if(result)
115 return result;
116+ data->state.creds_from = CREDS_NETRC;
117 }
118 if(data->state.aptr.passwd) {
119 uc = curl_url_set(data->state.uh, CURLUPART_PASSWORD,
120diff --git a/lib/urldata.h b/lib/urldata.h
121index ce28f25..b68d023 100644
122--- a/lib/urldata.h
123+++ b/lib/urldata.h
124@@ -1207,6 +1207,11 @@ struct urlpieces {
125 char *query;
126 };
127
128+#define CREDS_NONE 0
129+#define CREDS_URL 1 /* from URL */
130+#define CREDS_OPTION 2 /* set with a CURLOPT_ */
131+#define CREDS_NETRC 3 /* found in netrc */
132+
133 struct UrlState {
134 /* Points to the connection cache */
135 struct conncache *conn_cache;
136@@ -1344,7 +1349,6 @@ struct UrlState {
137 char *proxyuser;
138 char *proxypasswd;
139 } aptr;
140-
141 unsigned char httpwant; /* when non-zero, a specific HTTP version requested
142 to be used in the library's request(s) */
143 unsigned char httpversion; /* the lowest HTTP version*10 reported by any
144@@ -1354,6 +1358,9 @@ struct UrlState {
145 unsigned char select_bits; /* != 0 -> bitmask of socket events for this
146 transfer overriding anything the socket may
147 report */
148+ unsigned int creds_from:2; /* where is the server credentials originating
149+ from, see the CREDS_* defines above */
150+
151 #ifdef CURLDEBUG
152 BIT(conncache_lock);
153 #endif
154diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
155index d89e565..03cb6a0 100644
156--- a/tests/data/Makefile.inc
157+++ b/tests/data/Makefile.inc
158@@ -126,7 +126,7 @@ test952 test953 test954 test955 test956 test957 test958 test959 test960 \
159 test961 test962 test963 test964 test965 test966 test967 test968 test969 \
160 test970 test971 test972 test973 test974 test975 test976 test977 test978 \
161 test979 test980 test981 test982 test983 test984 test985 test986 test987 \
162-test988 test989 test990 test991 test992 \
163+test988 test989 test990 test991 test992 test998 test999 \
164 \
165 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
166 test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
167diff --git a/tests/data/test998 b/tests/data/test998
168new file mode 100644
169index 0000000..596b18e
170--- /dev/null
171+++ b/tests/data/test998
172@@ -0,0 +1,92 @@
173+<testcase>
174+ <info>
175+ <keywords>
176+ HTTP
177+ --location-trusted
178+ </keywords>
179+ </info>
180+
181+ #
182+ # Server-side
183+ <reply>
184+ <data>
185+ HTTP/1.1 301 redirect
186+ Date: Tue, 09 Nov 2010 14:49:00 GMT
187+ Server: test-server/fake
188+ Content-Length: 0
189+ Connection: close
190+ Content-Type: text/html
191+ Location: http://somewhere.else.example/a/path/%TESTNUMBER0002
192+
193+ </data>
194+ <data2>
195+ HTTP/1.1 200 OK
196+ Date: Tue, 09 Nov 2010 14:49:00 GMT
197+ Content-Length: 6
198+ Content-Type: text/html
199+ Funny-head: yesyes
200+
201+ -foo-
202+ </data2>
203+
204+ <datacheck>
205+ HTTP/1.1 301 redirect
206+ Date: Tue, 09 Nov 2010 14:49:00 GMT
207+ Server: test-server/fake
208+ Content-Length: 0
209+ Connection: close
210+ Content-Type: text/html
211+ Location: http://somewhere.else.example/a/path/%TESTNUMBER0002
212+
213+ HTTP/1.1 200 OK
214+ Date: Tue, 09 Nov 2010 14:49:00 GMT
215+ Content-Length: 6
216+ Content-Type: text/html
217+ Funny-head: yesyes
218+
219+ -foo-
220+ </datacheck>
221+
222+ </reply>
223+
224+ #
225+ # Client-side
226+ <client>
227+ <features>
228+ proxy
229+ </features>
230+ <server>
231+ http
232+ </server>
233+ <name>
234+ HTTP with auth in URL redirected to another host
235+ </name>
236+ <command>
237+ -x %HOSTIP:%HTTPPORT http://alberto:einstein@somwhere.example/%TESTNUMBER --location-trusted
238+ </command>
239+ </client>
240+
241+ #
242+ # Verify data after the test has been "shot"
243+ <verify>
244+ <strip>
245+ QUIT
246+ </strip>
247+ <protocol>
248+ GET http://somwhere.example/998 HTTP/1.1
249+ Host: somwhere.example
250+ Authorization: Basic YWxiZXJ0bzplaW5zdGVpbg==
251+ User-Agent: curl/%VERSION
252+ Accept: */*
253+ Proxy-Connection: Keep-Alive
254+
255+ GET http://somewhere.else.example/a/path/9980002 HTTP/1.1
256+ Host: somewhere.else.example
257+ Authorization: Basic YWxiZXJ0bzplaW5zdGVpbg==
258+ User-Agent: curl/%VERSION
259+ Accept: */*
260+ Proxy-Connection: Keep-Alive
261+
262+ </protocol>
263+ </verify>
264+ </testcase>
265diff --git a/tests/data/test999 b/tests/data/test999
266new file mode 100644
267index 0000000..184821d
268--- /dev/null
269+++ b/tests/data/test999
270@@ -0,0 +1,81 @@
271+<testcase>
272+ <info>
273+ <keywords>
274+ HTTP
275+ --location-trusted
276+ </keywords>
277+ </info>
278+
279+ #
280+ # Server-side
281+ <reply>
282+ <data nocheck="yes">
283+ HTTP/1.1 200 OK
284+ Date: Tue, 09 Nov 2010 14:49:00 GMT
285+ Content-Length: 6
286+ Content-Type: text/html
287+ Funny-head: yesyes
288+
289+ -foo-
290+ </data>
291+
292+ <datacheck>
293+ HTTP/1.1 301 redirect
294+ Date: Tue, 09 Nov 2010 14:49:00 GMT
295+ Server: test-server/fake
296+ Content-Length: 0
297+ Connection: close
298+ Content-Type: text/html
299+ Location: http://somewhere.else.example/a/path/%TESTNUMBER0002
300+
301+ HTTP/1.1 200 OK
302+ Date: Tue, 09 Nov 2010 14:49:00 GMT
303+ Content-Length: 6
304+ Content-Type: text/html
305+ Funny-head: yesyes
306+
307+ -foo-
308+ </datacheck>
309+
310+ </reply>
311+
312+ #
313+ # Client-side
314+ <client>
315+ <features>
316+ proxy
317+ </features>
318+ <server>
319+ http
320+ </server>
321+ <name>
322+ HTTP with auth in first URL but not second
323+ </name>
324+ <command>
325+ -x %HOSTIP:%HTTPPORT http://alberto:einstein@somwhere.example/%TESTNUMBER http://somewhere.else.example/%TESTNUMBER
326+ </command>
327+ </client>
328+
329+ #
330+ # Verify data after the test has been "shot"
331+ <verify>
332+ <strip>
333+ QUIT
334+ </strip>
335+ <protocol>
336+ GET http://somwhere.example/%TESTNUMBER HTTP/1.1
337+ Host: somwhere.example
338+ Authorization: Basic YWxiZXJ0bzplaW5zdGVpbg==
339+ User-Agent: curl/%VERSION
340+ Accept: */*
341+ Proxy-Connection: Keep-Alive
342+
343+ GET http://somewhere.else.example/%TESTNUMBER HTTP/1.1
344+ Host: somewhere.else.example
345+ User-Agent: curl/%VERSION
346+ Accept: */*
347+ Proxy-Connection: Keep-Alive
348+
349+ </protocol>
350+ </verify>
351+ </testcase>
352--
3532.40.0
diff --git a/meta/recipes-support/curl/curl/CVE-2024-11053-0002.patch b/meta/recipes-support/curl/curl/CVE-2024-11053-0002.patch
new file mode 100644
index 0000000000..7f45f79cf2
--- /dev/null
+++ b/meta/recipes-support/curl/curl/CVE-2024-11053-0002.patch
@@ -0,0 +1,728 @@
1From e9b9bbac22c26cf67316fa8e6c6b9e831af31949 Mon Sep 17 00:00:00 2001
2From: Daniel Stenberg <daniel@haxx.se>
3Date: Fri, 15 Nov 2024 11:06:36 +0100
4Subject: [PATCH] netrc: address several netrc parser flaws
5
6- make sure that a match that returns a username also returns a
7 password, that should be blank if no password is found
8
9- fix handling of multiple logins for same host where the password/login
10 order might be reversed.
11
12- reject credentials provided in the .netrc if they contain ASCII control
13 codes - if the used protocol does not support such (like HTTP and WS do)
14
15Reported-by: Harry Sintonen
16
17Add test 478, 479 and 480 to verify. Updated unit 1304.
18
19Closes #15586
20
21Changes:
22- Refresh patch context.
23- Adjust `%LOGDIR/` to 'log/' due to its absence in code.
24- Backported only required enum found_state defination from:
25 https://github.com/curl/curl/commit/3b43a05e000aa8f65bda513f733a73fefe35d5ca
26- Replaces the previous usage of the state_login, state_password, and
27 state_our_login variables with the found_state enum, which includes the
28 values NONE, LOGIN, and PASSWORD. As a result, all conditionals and memory
29 management logic associated with these variables were updated.
30
31CVE: CVE-2024-11053
32Upstream-Status: Backport [https://github.com/curl/curl/commit/e9b9bbac22c26cf67316fa8e6c6b9e831af3194]
33
34Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
35---
36 lib/netrc.c | 122 ++++++++++++++++++++++------------------
37 lib/url.c | 59 ++++++++++++-------
38 tests/data/Makefile.inc | 2 +-
39 tests/data/test478 | 73 ++++++++++++++++++++++++
40 tests/data/test479 | 107 +++++++++++++++++++++++++++++++++++
41 tests/data/test480 | 38 +++++++++++++
42 tests/unit/unit1304.c | 75 +++++++-----------------
43 7 files changed, 347 insertions(+), 129 deletions(-)
44 create mode 100644 tests/data/test478
45 create mode 100644 tests/data/test479
46 create mode 100644 tests/data/test480
47
48diff --git a/lib/netrc.c b/lib/netrc.c
49index cd2a284..64efdc0 100644
50--- a/lib/netrc.c
51+++ b/lib/netrc.c
52@@ -49,6 +49,15 @@ enum host_lookup_state {
53 MACDEF
54 };
55
56+enum found_state {
57+ NONE,
58+ LOGIN,
59+ PASSWORD
60+};
61+
62+#define FOUND_LOGIN 1
63+#define FOUND_PASSWORD 2
64+
65 #define NETRC_FILE_MISSING 1
66 #define NETRC_FAILED -1
67 #define NETRC_SUCCESS 0
68@@ -59,23 +68,20 @@ enum host_lookup_state {
69 * Returns zero on success.
70 */
71 static int parsenetrc(const char *host,
72- char **loginp,
73+ char **loginp, /* might point to a username */
74 char **passwordp,
75 char *netrcfile)
76 {
77 FILE *file;
78 int retcode = NETRC_FILE_MISSING;
79 char *login = *loginp;
80- char *password = *passwordp;
81- bool specific_login = (login && *login != 0);
82- bool login_alloc = FALSE;
83- bool password_alloc = FALSE;
84+ char *password = NULL;
85+ bool specific_login = login; /* points to something */
86 enum host_lookup_state state = NOTHING;
87-
88- char state_login = 0; /* Found a login keyword */
89- char state_password = 0; /* Found a password keyword */
90- int state_our_login = TRUE; /* With specific_login, found *our* login
91- name (or login-less line) */
92+ enum found_state keyword = NONE;
93+ unsigned char found = 0; /* login + password found bits, as they can come in
94+ any order */
95+ bool our_login = FALSE; /* found our login name */
96
97 DEBUGASSERT(netrcfile);
98
99@@ -97,7 +103,7 @@ static int parsenetrc(const char *host,
100 continue;
101 }
102 tok = netrcbuffer;
103- while(tok) {
104+ while(tok && !done) {
105 while(ISBLANK(*tok))
106 tok++;
107 /* tok is first non-space letter */
108@@ -156,11 +162,6 @@ static int parsenetrc(const char *host,
109 }
110 }
111
112- if((login && *login) && (password && *password)) {
113- done = TRUE;
114- break;
115- }
116-
117 switch(state) {
118 case NOTHING:
119 if(strcasecompare("macdef", tok)) {
120@@ -175,6 +176,12 @@ static int parsenetrc(const char *host,
121 after this we need to search for 'login' and
122 'password'. */
123 state = HOSTFOUND;
124+ keyword = NONE;
125+ found = 0;
126+ our_login = FALSE;
127+ Curl_safefree(password);
128+ if(!specific_login)
129+ Curl_safefree(login);
130 }
131 else if(strcasecompare("default", tok)) {
132 state = HOSTVALID;
133@@ -198,48 +205,55 @@ static int parsenetrc(const char *host,
134 break;
135 case HOSTVALID:
136 /* we are now parsing sub-keywords concerning "our" host */
137- if(state_login) {
138+ if(keyword == LOGIN) {
139 if(specific_login) {
140- state_our_login = !Curl_timestrcmp(login, tok);
141+ our_login = !Curl_timestrcmp(login, tok);
142 }
143- else if(!login || Curl_timestrcmp(login, tok)) {
144- if(login_alloc) {
145- free(login);
146- login_alloc = FALSE;
147- }
148+ else {
149+ our_login = TRUE;
150+ free(login);
151 login = strdup(tok);
152 if(!login) {
153 retcode = NETRC_FAILED; /* allocation failed */
154 goto out;
155 }
156- login_alloc = TRUE;
157 }
158- state_login = 0;
159+ found |= FOUND_LOGIN;
160+ keyword = NONE;
161 }
162- else if(state_password) {
163- if((state_our_login || !specific_login)
164- && (!password || Curl_timestrcmp(password, tok))) {
165- if(password_alloc) {
166- free(password);
167- password_alloc = FALSE;
168- }
169- password = strdup(tok);
170- if(!password) {
171- retcode = NETRC_FAILED; /* allocation failed */
172- goto out;
173- }
174- password_alloc = TRUE;
175+ else if(keyword == PASSWORD) {
176+ free(password);
177+ password = strdup(tok);
178+ if(!password) {
179+ retcode = NETRC_FAILED; /* allocation failed */
180+ goto out;
181 }
182- state_password = 0;
183+ found |= FOUND_PASSWORD;
184+ keyword = NONE;
185 }
186 else if(strcasecompare("login", tok))
187- state_login = 1;
188+ keyword = LOGIN;
189 else if(strcasecompare("password", tok))
190- state_password = 1;
191+ keyword = PASSWORD;
192 else if(strcasecompare("machine", tok)) {
193- /* ok, there's machine here go => */
194+ /* a new machine here */
195 state = HOSTFOUND;
196- state_our_login = FALSE;
197+ keyword = NONE;
198+ found = 0;
199+ Curl_safefree(password);
200+ if(!specific_login)
201+ Curl_safefree(login);
202+ }
203+ else if(strcasecompare("default", tok)) {
204+ state = HOSTVALID;
205+ retcode = NETRC_SUCCESS; /* we did find our host */
206+ Curl_safefree(password);
207+ if(!specific_login)
208+ Curl_safefree(login);
209+ }
210+ if((found == (FOUND_PASSWORD|FOUND_LOGIN)) && our_login) {
211+ done = TRUE;
212+ break;
213 }
214 break;
215 } /* switch (state) */
216@@ -249,24 +263,22 @@ static int parsenetrc(const char *host,
217
218 out:
219 Curl_dyn_free(&buf);
220+ if(!retcode && !password && our_login) {
221+ /* success without a password, set a blank one */
222+ password = strdup("");
223+ if(!password)
224+ retcode = 1; /* out of memory */
225+ }
226 if(!retcode) {
227 /* success */
228- if(login_alloc) {
229- if(*loginp)
230- free(*loginp);
231+ if(!specific_login)
232 *loginp = login;
233- }
234- if(password_alloc) {
235- if(*passwordp)
236- free(*passwordp);
237- *passwordp = password;
238- }
239+ *passwordp = password;
240 }
241 else {
242- if(login_alloc)
243+ if(!specific_login)
244 free(login);
245- if(password_alloc)
246- free(password);
247+ free(password);
248 }
249 fclose(file);
250 }
251diff --git a/lib/url.c b/lib/url.c
252index 05431b9..1439c9e 100644
253--- a/lib/url.c
254+++ b/lib/url.c
255@@ -2699,6 +2699,17 @@ static CURLcode parse_remote_port(struct Curl_easy *data,
256 return CURLE_OK;
257 }
258
259+static bool str_has_ctrl(const char *input)
260+{
261+ const unsigned char *str = (const unsigned char *)input;
262+ while(*str) {
263+ if(*str < 0x20)
264+ return TRUE;
265+ str++;
266+ }
267+ return FALSE;
268+}
269+
270 /*
271 * Override the login details from the URL with that in the CURLOPT_USERPWD
272 * option or a .netrc file, if applicable.
273@@ -2730,29 +2741,39 @@ static CURLcode override_login(struct Curl_easy *data,
274
275 if(data->state.aptr.user &&
276 (data->state.creds_from != CREDS_NETRC)) {
277- /* there was a user name in the URL. Use the URL decoded version */
278+ /* there was a username with a length in the URL. Use the URL decoded
279+ version */
280 userp = &data->state.aptr.user;
281 url_provided = TRUE;
282 }
283
284- ret = Curl_parsenetrc(conn->host.name,
285- userp, passwdp,
286- data->set.str[STRING_NETRC_FILE]);
287- if(ret > 0) {
288- infof(data, "Couldn't find host %s in the %s file; using defaults",
289- conn->host.name,
290- (data->set.str[STRING_NETRC_FILE] ?
291- data->set.str[STRING_NETRC_FILE] : ".netrc"));
292- }
293- else if(ret < 0) {
294- failf(data, ".netrc parser error");
295- return CURLE_READ_ERROR;
296- }
297- else {
298- /* set bits.netrc TRUE to remember that we got the name from a .netrc
299- file, so that it is safe to use even if we followed a Location: to a
300- different host or similar. */
301- conn->bits.netrc = TRUE;
302+ if(!*passwdp) {
303+ ret = Curl_parsenetrc(conn->host.name, userp, passwdp,
304+ data->set.str[STRING_NETRC_FILE]);
305+ if(ret > 0) {
306+ infof(data, "Couldn't find host %s in the %s file; using defaults",
307+ conn->host.name,
308+ (data->set.str[STRING_NETRC_FILE] ?
309+ data->set.str[STRING_NETRC_FILE] : ".netrc"));
310+ }
311+ else if(ret < 0) {
312+ failf(data, ".netrc parser error");
313+ return CURLE_READ_ERROR;
314+ }
315+ else {
316+ if(!(conn->handler->flags&PROTOPT_USERPWDCTRL)) {
317+ /* if the protocol can't handle control codes in credentials, make
318+ sure there are none */
319+ if(str_has_ctrl(*userp) || str_has_ctrl(*passwdp)) {
320+ failf(data, "control code detected in .netrc credentials");
321+ return CURLE_READ_ERROR;
322+ }
323+ }
324+ /* set bits.netrc TRUE to remember that we got the name from a .netrc
325+ file, so that it is safe to use even if we followed a Location: to a
326+ different host or similar. */
327+ conn->bits.netrc = TRUE;
328+ }
329 }
330 if(url_provided) {
331 Curl_safefree(conn->user);
332diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
333index 03cb6a0..e3508cb 100644
334--- a/tests/data/Makefile.inc
335+++ b/tests/data/Makefile.inc
336@@ -73,7 +73,7 @@ test426 test427 test428 test429 test430 test431 test432 test433 test434 \
337 test435 test436 test437 test438 test439 test440 test441 test442 test443 \
338 test444 test445 test446 test447 test448 test449 test450 test451 test452 \
339 test453 test454 test455 test456 test457 test458 test459 test460 test461 \
340-test462 test463 test467 test468 \
341+test462 test463 test467 test468 test478 test479 test480 \
342 \
343 test490 test491 test492 test493 test494 test495 test496 test497 test498 \
344 test499 test500 test501 test502 test503 test504 test505 test506 test507 \
345diff --git a/tests/data/test478 b/tests/data/test478
346new file mode 100644
347index 0000000..4acc72e
348--- /dev/null
349+++ b/tests/data/test478
350@@ -0,0 +1,73 @@
351+<testcase>
352+ <info>
353+ <keywords>
354+ netrc
355+ HTTP
356+ </keywords>
357+ </info>
358+ #
359+ # Server-side
360+ <reply>
361+ <data crlf="yes">
362+ HTTP/1.1 200 OK
363+ Date: Tue, 09 Nov 2010 14:49:00 GMT
364+ Server: test-server/fake
365+ Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
366+ ETag: "21025-dc7-39462498"
367+ Accept-Ranges: bytes
368+ Content-Length: 6
369+ Connection: close
370+ Content-Type: text/html
371+ Funny-head: yesyes
372+
373+ -foo-
374+ </data>
375+ </reply>
376+
377+ #
378+ # Client-side
379+ <client>
380+ <server>
381+ http
382+ </server>
383+ <features>
384+ proxy
385+ </features>
386+ <name>
387+ .netrc with multiple accounts for same host
388+ </name>
389+ <command>
390+ --netrc --netrc-file log/netrc%TESTNUMBER -x http://%HOSTIP:%HTTPPORT/ http://debbie@github.com/
391+ </command>
392+ <file name="log/netrc%TESTNUMBER" >
393+
394+ machine github.com
395+ password weird
396+ password firstone
397+ login daniel
398+
399+ machine github.com
400+
401+ machine github.com
402+ login debbie
403+
404+ machine github.com
405+ password weird
406+ password "second\r"
407+ login debbie
408+
409+ </file>
410+ </client>
411+
412+ <verify>
413+ <protocol>
414+ GET http://github.com/ HTTP/1.1
415+ Host: github.com
416+ Authorization: Basic %b64[debbie:second%0D]b64%
417+ User-Agent: curl/%VERSION
418+ Accept: */*
419+ Proxy-Connection: Keep-Alive
420+
421+ </protocol>
422+ </verify>
423+ </testcase>
424diff --git a/tests/data/test479 b/tests/data/test479
425new file mode 100644
426index 0000000..62a2057
427--- /dev/null
428+++ b/tests/data/test479
429@@ -0,0 +1,107 @@
430+<testcase>
431+ <info>
432+ <keywords>
433+ netrc
434+ HTTP
435+ </keywords>
436+ </info>
437+ #
438+ # Server-side
439+ <reply>
440+ <data crlf="yes">
441+ HTTP/1.1 301 Follow this you fool
442+ Date: Tue, 09 Nov 2010 14:49:00 GMT
443+ Server: test-server/fake
444+ Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
445+ ETag: "21025-dc7-39462498"
446+ Accept-Ranges: bytes
447+ Content-Length: 6
448+ Connection: close
449+ Location: http://b.com/%TESTNUMBER0002
450+
451+ -foo-
452+ </data>
453+
454+ <data2 crlf="yes">
455+ HTTP/1.1 200 OK
456+ Date: Tue, 09 Nov 2010 14:49:00 GMT
457+ Server: test-server/fake
458+ Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
459+ ETag: "21025-dc7-39462498"
460+ Accept-Ranges: bytes
461+ Content-Length: 7
462+ Connection: close
463+
464+ target
465+ </data2>
466+
467+ <datacheck crlf="yes">
468+ HTTP/1.1 301 Follow this you fool
469+ Date: Tue, 09 Nov 2010 14:49:00 GMT
470+ Server: test-server/fake
471+ Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
472+ ETag: "21025-dc7-39462498"
473+ Accept-Ranges: bytes
474+ Content-Length: 6
475+ Connection: close
476+ Location: http://b.com/%TESTNUMBER0002
477+
478+ HTTP/1.1 200 OK
479+ Date: Tue, 09 Nov 2010 14:49:00 GMT
480+ Server: test-server/fake
481+ Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
482+ ETag: "21025-dc7-39462498"
483+ Accept-Ranges: bytes
484+ Content-Length: 7
485+ Connection: close
486+
487+ target
488+ </datacheck>
489+ </reply>
490+
491+ #
492+ # Client-side
493+ <client>
494+ <server>
495+ http
496+ </server>
497+ <features>
498+ proxy
499+ </features>
500+ <name>
501+ .netrc with redirect and default without password
502+ </name>
503+ <command>
504+ --netrc --netrc-file log/netrc%TESTNUMBER -L -x http://%HOSTIP:%HTTPPORT/ http://a.com/
505+ </command>
506+ <file name="log/netrc%TESTNUMBER" >
507+
508+ machine a.com
509+ login alice
510+ password alicespassword
511+
512+ default
513+ login bob
514+
515+ </file>
516+ </client>
517+
518+ <verify>
519+ <protocol>
520+ GET http://a.com/ HTTP/1.1
521+ Host: a.com
522+ Authorization: Basic %b64[alice:alicespassword]b64%
523+ User-Agent: curl/%VERSION
524+ Accept: */*
525+ Proxy-Connection: Keep-Alive
526+
527+ GET http://b.com/%TESTNUMBER0002 HTTP/1.1
528+ Host: b.com
529+ Authorization: Basic %b64[bob:]b64%
530+ User-Agent: curl/%VERSION
531+ Accept: */*
532+ Proxy-Connection: Keep-Alive
533+
534+ </protocol>
535+ </verify>
536+ </testcase>
537diff --git a/tests/data/test480 b/tests/data/test480
538new file mode 100644
539index 0000000..47db7ab
540--- /dev/null
541+++ b/tests/data/test480
542@@ -0,0 +1,38 @@
543+<testcase>
544+ <info>
545+ <keywords>
546+ netrc
547+ pop3
548+ </keywords>
549+ </info>
550+ #
551+ # Server-side
552+ <reply>
553+
554+ </reply>
555+
556+ #
557+ # Client-side
558+ <client>
559+ <server>
560+ pop3
561+ </server>
562+ <name>
563+ Reject .netrc with credentials using CRLF for POP3
564+ </name>
565+ <command>
566+ --netrc --netrc-file log/netrc%TESTNUMBER pop3://%HOSTIP:%POP3PORT/%TESTNUMBER
567+ </command>
568+ <file name="log/netrc%TESTNUMBER" >
569+ machine %HOSTIP
570+ login alice
571+ password "password\r\ncommand"
572+ </file>
573+ </client>
574+
575+ <verify>
576+ <errorcode>
577+ 26
578+ </errorcode>
579+ </verify>
580+ </testcase>
581diff --git a/tests/unit/unit1304.c b/tests/unit/unit1304.c
582index 0288562..b2b4366 100644
583--- a/tests/unit/unit1304.c
584+++ b/tests/unit/unit1304.c
585@@ -32,13 +32,8 @@ static char *password;
586
587 static CURLcode unit_setup(void)
588 {
589- password = strdup("");
590- login = strdup("");
591- if(!password || !login) {
592- Curl_safefree(password);
593- Curl_safefree(login);
594- return CURLE_OUT_OF_MEMORY;
595- }
596+ password = NULL;
597+ login = NULL;
598 return CURLE_OK;
599 }
600
601@@ -56,76 +51,48 @@ UNITTEST_START
602 */
603 result = Curl_parsenetrc("test.example.com", &login, &password, arg);
604 fail_unless(result == 1, "Host not found should return 1");
605- abort_unless(password != NULL, "returned NULL!");
606- fail_unless(password[0] == 0, "password should not have been changed");
607- abort_unless(login != NULL, "returned NULL!");
608- fail_unless(login[0] == 0, "login should not have been changed");
609+ abort_unless(password == NULL, "password did not return NULL!");
610+ abort_unless(login == NULL, "user did not return NULL!");
611
612 /*
613 * Test a non existent login in our netrc file.
614 */
615- free(login);
616- login = strdup("me");
617- abort_unless(login != NULL, "returned NULL!");
618+ login = (char *)"me";
619 result = Curl_parsenetrc("example.com", &login, &password, arg);
620 fail_unless(result == 0, "Host should have been found");
621- abort_unless(password != NULL, "returned NULL!");
622- fail_unless(password[0] == 0, "password should not have been changed");
623- abort_unless(login != NULL, "returned NULL!");
624- fail_unless(strncmp(login, "me", 2) == 0,
625- "login should not have been changed");
626+ abort_unless(password == NULL, "password is not NULL!");
627
628 /*
629 * Test a non existent login and host in our netrc file.
630 */
631- free(login);
632- login = strdup("me");
633- abort_unless(login != NULL, "returned NULL!");
634+ login = (char *)"me";
635 result = Curl_parsenetrc("test.example.com", &login, &password, arg);
636 fail_unless(result == 1, "Host not found should return 1");
637- abort_unless(password != NULL, "returned NULL!");
638- fail_unless(password[0] == 0, "password should not have been changed");
639- abort_unless(login != NULL, "returned NULL!");
640- fail_unless(strncmp(login, "me", 2) == 0,
641- "login should not have been changed");
642+ abort_unless(password == NULL, "password is not NULL!");
643
644 /*
645 * Test a non existent login (substring of an existing one) in our
646 * netrc file.
647 */
648- free(login);
649- login = strdup("admi");
650- abort_unless(login != NULL, "returned NULL!");
651+ login = (char *)"admi";
652 result = Curl_parsenetrc("example.com", &login, &password, arg);
653 fail_unless(result == 0, "Host should have been found");
654- abort_unless(password != NULL, "returned NULL!");
655- fail_unless(password[0] == 0, "password should not have been changed");
656- abort_unless(login != NULL, "returned NULL!");
657- fail_unless(strncmp(login, "admi", 4) == 0,
658- "login should not have been changed");
659+ abort_unless(password == NULL, "password is not NULL!");
660
661 /*
662 * Test a non existent login (superstring of an existing one)
663 * in our netrc file.
664 */
665- free(login);
666- login = strdup("adminn");
667- abort_unless(login != NULL, "returned NULL!");
668+ login = (char *)"adminn";
669 result = Curl_parsenetrc("example.com", &login, &password, arg);
670 fail_unless(result == 0, "Host should have been found");
671- abort_unless(password != NULL, "returned NULL!");
672- fail_unless(password[0] == 0, "password should not have been changed");
673- abort_unless(login != NULL, "returned NULL!");
674- fail_unless(strncmp(login, "adminn", 6) == 0,
675- "login should not have been changed");
676+ abort_unless(password == NULL, "password is not NULL!");
677
678 /*
679 * Test for the first existing host in our netrc file
680 * with login[0] = 0.
681 */
682- free(login);
683- login = strdup("");
684- abort_unless(login != NULL, "returned NULL!");
685+ login = NULL;
686 result = Curl_parsenetrc("example.com", &login, &password, arg);
687 fail_unless(result == 0, "Host should have been found");
688 abort_unless(password != NULL, "returned NULL!");
689@@ -139,8 +106,9 @@ UNITTEST_START
690 * with login[0] != 0.
691 */
692 free(password);
693- password = strdup("");
694- abort_unless(password != NULL, "returned NULL!");
695+ free(login);
696+ password = NULL;
697+ login = NULL;
698 result = Curl_parsenetrc("example.com", &login, &password, arg);
699 fail_unless(result == 0, "Host should have been found");
700 abort_unless(password != NULL, "returned NULL!");
701@@ -154,11 +122,9 @@ UNITTEST_START
702 * with login[0] = 0.
703 */
704 free(password);
705- password = strdup("");
706- abort_unless(password != NULL, "returned NULL!");
707+ password = NULL;
708 free(login);
709- login = strdup("");
710- abort_unless(login != NULL, "returned NULL!");
711+ login = NULL;
712 result = Curl_parsenetrc("curl.example.com", &login, &password, arg);
713 fail_unless(result == 0, "Host should have been found");
714 abort_unless(password != NULL, "returned NULL!");
715@@ -172,8 +138,9 @@ UNITTEST_START
716 * with login[0] != 0.
717 */
718 free(password);
719- password = strdup("");
720- abort_unless(password != NULL, "returned NULL!");
721+ free(login);
722+ password = NULL;
723+ login = NULL;
724 result = Curl_parsenetrc("curl.example.com", &login, &password, arg);
725 fail_unless(result == 0, "Host should have been found");
726 abort_unless(password != NULL, "returned NULL!");
727--
7282.40.0
diff --git a/meta/recipes-support/curl/curl/CVE-2024-11053-0003.patch b/meta/recipes-support/curl/curl/CVE-2024-11053-0003.patch
new file mode 100644
index 0000000000..32fb1812d6
--- /dev/null
+++ b/meta/recipes-support/curl/curl/CVE-2024-11053-0003.patch
@@ -0,0 +1,130 @@
1From 9fce2c55d4b0273ac99b59bd8cb982a6d96b88cf Mon Sep 17 00:00:00 2001
2From: Daniel Stenberg <daniel@haxx.se>
3Date: Tue, 17 Dec 2024 23:56:42 +0100
4Subject: [PATCH] netrc: fix password-only entries
5
6When a specific hostname matched, and only a password is set before
7another machine is specified in the netrc file, the parser would not be
8happy and stop there and return the password-only state. It instead
9continued and did not return a match.
10
11Add test 2005 to verify this case
12
13Regression from e9b9bba, shipped in 8.11.1.
14
15Reported-by: Ben Zanin
16Fixes #15767
17Closes #15768
18
19CVE: CVE-2024-11053
20Upstream-Status: Backport [https://github.com/curl/curl/commit/9fce2c55d4b0273ac99b59bd8cb982a6d96b88cf]
21
22Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
23---
24 lib/netrc.c | 7 +++++-
25 tests/data/Makefile.inc | 2 +-
26 tests/data/test2005 | 55 +++++++++++++++++++++++++++++++++++++++++
27 3 files changed, 62 insertions(+), 2 deletions(-)
28 create mode 100644 tests/data/test2005
29
30diff --git a/lib/netrc.c b/lib/netrc.c
31index 64efdc0..695e89a 100644
32--- a/lib/netrc.c
33+++ b/lib/netrc.c
34@@ -228,7 +228,8 @@ static int parsenetrc(const char *host,
35 retcode = NETRC_FAILED; /* allocation failed */
36 goto out;
37 }
38- found |= FOUND_PASSWORD;
39+ if(!specific_login || our_login)
40+ found |= FOUND_PASSWORD;
41 keyword = NONE;
42 }
43 else if(strcasecompare("login", tok))
44@@ -237,6 +238,10 @@ static int parsenetrc(const char *host,
45 keyword = PASSWORD;
46 else if(strcasecompare("machine", tok)) {
47 /* a new machine here */
48+ if(found & FOUND_PASSWORD) {
49+ done = TRUE;
50+ break;
51+ }
52 state = HOSTFOUND;
53 keyword = NONE;
54 found = 0;
55diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
56index e3508cb..dc2af79 100644
57--- a/tests/data/Makefile.inc
58+++ b/tests/data/Makefile.inc
59@@ -230,7 +230,7 @@ test1941 test1942 test1943 test1944 test1945 test1946 test1947 test1948 \
60 test1955 test1956 test1957 test1958 test1959 test1960 test1964 \
61 test1970 test1971 test1972 test1973 test1974 test1975 \
62 \
63-test2000 test2001 test2002 test2003 test2004 \
64+test2000 test2001 test2002 test2003 test2004 test2005 \
65 \
66 test2023 \
67 test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
68diff --git a/tests/data/test2005 b/tests/data/test2005
69new file mode 100644
70index 0000000..66afe84
71--- /dev/null
72+++ b/tests/data/test2005
73@@ -0,0 +1,55 @@
74+<testcase>
75+ <info>
76+ <keywords>
77+ HTTP
78+ netrc
79+ </keywords>
80+ </info>
81+ #
82+ # Server-side
83+ <reply>
84+ <data>
85+ HTTP/1.1 200 OK
86+ Date: Fri, 05 Aug 2022 10:09:00 GMT
87+ Server: test-server/fake
88+ Content-Type: text/plain
89+ Content-Length: 6
90+ Connection: close
91+
92+ -foo-
93+ </data>
94+ </reply>
95+
96+ #
97+ # Client-side
98+ <client>
99+ <server>
100+ http
101+ </server>
102+ <name>
103+ netrc match with password only in file, no username. machine follows
104+ </name>
105+ <command>
106+ --netrc-optional --netrc-file log/netrc%TESTNUMBER http://%HOSTIP:%HTTPPORT/
107+ </command>
108+ <file name="log/netrc%TESTNUMBER" >
109+ machine %HOSTIP
110+ password 5up3r53cr37
111+
112+ machine example.com
113+ </file>
114+ </client>
115+
116+ #
117+ # Verify data after the test has been "shot"
118+ <verify>
119+ <protocol>
120+ GET / HTTP/1.1
121+ Host: %HOSTIP:%HTTPPORT
122+ Authorization: Basic %b64[:5up3r53cr37]b64%
123+ User-Agent: curl/%VERSION
124+ Accept: */*
125+
126+ </protocol>
127+ </verify>
128+ </testcase>
129--
1302.40.0
diff --git a/meta/recipes-support/curl/curl/CVE-2024-9681.patch b/meta/recipes-support/curl/curl/CVE-2024-9681.patch
new file mode 100644
index 0000000000..d9131228fc
--- /dev/null
+++ b/meta/recipes-support/curl/curl/CVE-2024-9681.patch
@@ -0,0 +1,85 @@
1From a94973805df96269bf3f3bf0a20ccb9887313316 Mon Sep 17 00:00:00 2001
2From: Daniel Stenberg <daniel@haxx.se>
3Date: Wed, 9 Oct 2024 10:04:35 +0200
4Subject: [PATCH] hsts: improve subdomain handling
5
6- on load, only replace existing HSTS entries if there is a full host
7 match
8
9- on matching, prefer a full host match and secondary the longest tail
10 subdomain match
11
12Closes #15210
13
14CVE: CVE-2024-9681
15Upstream-Status: Backport [https://github.com/curl/curl/commit/a94973805df96269bf3f3bf0a20ccb9887313316]
16Signed-off-by: Peter Marko <peter.marko@siemens.com>
17---
18 lib/hsts.c | 14 ++++++++++----
19 tests/data/test1660 | 2 +-
20 2 files changed, 11 insertions(+), 5 deletions(-)
21
22diff --git a/lib/hsts.c b/lib/hsts.c
23index d5e883f51ef0f7..12052ce53c1c5a 100644
24--- a/lib/hsts.c
25+++ b/lib/hsts.c
26@@ -254,12 +254,14 @@ CURLcode Curl_hsts_parse(struct hsts *h, const char *hostname,
27 struct stsentry *Curl_hsts(struct hsts *h, const char *hostname,
28 bool subdomain)
29 {
30+ struct stsentry *bestsub = NULL;
31 if(h) {
32 char buffer[MAX_HSTS_HOSTLEN + 1];
33 time_t now = time(NULL);
34 size_t hlen = strlen(hostname);
35 struct Curl_llist_element *e;
36 struct Curl_llist_element *n;
37+ size_t blen = 0;
38
39 if((hlen > MAX_HSTS_HOSTLEN) || !hlen)
40 return NULL;
41@@ -284,15 +286,19 @@ struct stsentry *Curl_hsts(struct hsts *h, const char *hostname,
42 if(ntail < hlen) {
43 size_t offs = hlen - ntail;
44 if((hostname[offs-1] == '.') &&
45- strncasecompare(&hostname[offs], sts->host, ntail))
46- return sts;
47+ strncasecompare(&hostname[offs], sts->host, ntail) &&
48+ (ntail > blen)) {
49+ /* save the tail match with the longest tail */
50+ bestsub = sts;
51+ blen = ntail;
52+ }
53 }
54 }
55 if(strcasecompare(hostname, sts->host))
56 return sts;
57 }
58 }
59- return NULL; /* no match */
60+ return bestsub;
61 }
62
63 /*
64@@ -444,7 +450,7 @@ static CURLcode hsts_add(struct hsts *h, char *line)
65 e = Curl_hsts(h, p, subdomain);
66 if(!e)
67 result = hsts_create(h, p, subdomain, expires);
68- else {
69+ else if(strcasecompare(p, e->host)) {
70 /* the same host name, use the largest expire time */
71 if(expires > e->expires)
72 e->expires = expires;
73diff --git a/tests/data/test1660 b/tests/data/test1660
74index f86126d19cf269..4b6f9615c9d517 100644
75--- a/tests/data/test1660
76+++ b/tests/data/test1660
77@@ -52,7 +52,7 @@ this.example [this.example]: 1548400797
78 Input 12: error 43
79 Input 13: error 43
80 Input 14: error 43
81-3.example.com [example.com]: 1569905261 includeSubDomains
82+3.example.com [3.example.com]: 1569905261 includeSubDomains
83 3.example.com [example.com]: 1569905261 includeSubDomains
84 foo.example.com [example.com]: 1569905261 includeSubDomains
85 'foo.xample.com' is not HSTS
diff --git a/meta/recipes-support/curl/curl/CVE-2025-0167.patch b/meta/recipes-support/curl/curl/CVE-2025-0167.patch
new file mode 100644
index 0000000000..6dad98ef7a
--- /dev/null
+++ b/meta/recipes-support/curl/curl/CVE-2025-0167.patch
@@ -0,0 +1,178 @@
1From 0e120c5b925e8ca75d5319e319e5ce4b8080d8eb Mon Sep 17 00:00:00 2001
2From: Daniel Stenberg <daniel@haxx.se>
3Date: Fri, 3 Jan 2025 16:22:27 +0100
4Subject: [PATCH] netrc: 'default' with no credentials is not a match
5
6Test 486 verifies.
7
8Reported-by: Yihang Zhou
9
10Closes #15908
11
12Changes:
13- Test files are added in Makefile.inc.
14- Adjust `%LOGDIR/` to 'log/' due to its absence in code.
15
16CVE: CVE-2025-0167
17Upstream-Status: Backport [https://github.com/curl/curl/commit/0e120c5b925e8ca75d5319e]
18
19Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
20---
21 lib/netrc.c | 15 ++++--
22 tests/data/Makefile.inc | 2 +-
23 tests/data/test486 | 105 ++++++++++++++++++++++++++++++++++++++++
24 3 files changed, 116 insertions(+), 6 deletions(-)
25 create mode 100644 tests/data/test486
26
27diff --git a/lib/netrc.c b/lib/netrc.c
28index 64efdc0..5533ecc 100644
29--- a/lib/netrc.c
30+++ b/lib/netrc.c
31@@ -263,11 +263,16 @@ static int parsenetrc(const char *host,
32
33 out:
34 Curl_dyn_free(&buf);
35- if(!retcode && !password && our_login) {
36- /* success without a password, set a blank one */
37- password = strdup("");
38- if(!password)
39- retcode = 1; /* out of memory */
40+ if(!retcode) {
41+ if(!password && our_login) {
42+ /* success without a password, set a blank one */
43+ password = strdup("");
44+ if(!password)
45+ retcode = 1; /* out of memory */
46+ }
47+ else if(!login && !password)
48+ /* a default with no credentials */
49+ retcode = NETRC_FILE_MISSING;
50 }
51 if(!retcode) {
52 /* success */
53diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
54index e3508cb..7a8074f 100644
55--- a/tests/data/Makefile.inc
56+++ b/tests/data/Makefile.inc
57@@ -73,7 +73,7 @@ test426 test427 test428 test429 test430 test431 test432 test433 test434 \
58 test435 test436 test437 test438 test439 test440 test441 test442 test443 \
59 test444 test445 test446 test447 test448 test449 test450 test451 test452 \
60 test453 test454 test455 test456 test457 test458 test459 test460 test461 \
61-test462 test463 test467 test468 test478 test479 test480 \
62+test462 test463 test467 test468 test478 test479 test480 test486 \
63 \
64 test490 test491 test492 test493 test494 test495 test496 test497 test498 \
65 test499 test500 test501 test502 test503 test504 test505 test506 test507 \
66diff --git a/tests/data/test486 b/tests/data/test486
67new file mode 100644
68index 0000000..093899e
69--- /dev/null
70+++ b/tests/data/test486
71@@ -0,0 +1,105 @@
72+<testcase>
73+ <info>
74+ <keywords>
75+ netrc
76+ HTTP
77+ </keywords>
78+ </info>
79+ #
80+ # Server-side
81+ <reply>
82+ <data crlf="yes">
83+ HTTP/1.1 301 Follow this you fool
84+ Date: Tue, 09 Nov 2010 14:49:00 GMT
85+ Server: test-server/fake
86+ Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
87+ ETag: "21025-dc7-39462498"
88+ Accept-Ranges: bytes
89+ Content-Length: 6
90+ Connection: close
91+ Location: http://b.com/%TESTNUMBER0002
92+
93+ -foo-
94+ </data>
95+
96+ <data2 crlf="yes">
97+ HTTP/1.1 200 OK
98+ Date: Tue, 09 Nov 2010 14:49:00 GMT
99+ Server: test-server/fake
100+ Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
101+ ETag: "21025-dc7-39462498"
102+ Accept-Ranges: bytes
103+ Content-Length: 7
104+ Connection: close
105+
106+ target
107+ </data2>
108+
109+ <datacheck crlf="yes">
110+ HTTP/1.1 301 Follow this you fool
111+ Date: Tue, 09 Nov 2010 14:49:00 GMT
112+ Server: test-server/fake
113+ Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
114+ ETag: "21025-dc7-39462498"
115+ Accept-Ranges: bytes
116+ Content-Length: 6
117+ Connection: close
118+ Location: http://b.com/%TESTNUMBER0002
119+
120+ HTTP/1.1 200 OK
121+ Date: Tue, 09 Nov 2010 14:49:00 GMT
122+ Server: test-server/fake
123+ Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
124+ ETag: "21025-dc7-39462498"
125+ Accept-Ranges: bytes
126+ Content-Length: 7
127+ Connection: close
128+
129+ target
130+ </datacheck>
131+ </reply>
132+
133+ #
134+ # Client-side
135+ <client>
136+ <server>
137+ http
138+ </server>
139+ <features>
140+ proxy
141+ </features>
142+ <name>
143+ .netrc with redirect and "default" with no password or login
144+ </name>
145+ <command>
146+ --netrc --netrc-file log/netrc%TESTNUMBER -L -x http://%HOSTIP:%HTTPPORT/ http://a.com/
147+ </command>
148+ <file name="log/netrc%TESTNUMBER" >
149+
150+ machine a.com
151+ login alice
152+ password alicespassword
153+
154+ default
155+
156+ </file>
157+ </client>
158+
159+ <verify>
160+ <protocol>
161+ GET http://a.com/ HTTP/1.1
162+ Host: a.com
163+ Authorization: Basic %b64[alice:alicespassword]b64%
164+ User-Agent: curl/%VERSION
165+ Accept: */*
166+ Proxy-Connection: Keep-Alive
167+
168+ GET http://b.com/%TESTNUMBER0002 HTTP/1.1
169+ Host: b.com
170+ User-Agent: curl/%VERSION
171+ Accept: */*
172+ Proxy-Connection: Keep-Alive
173+
174+ </protocol>
175+ </verify>
176+ </testcase>
177--
1782.40.0
diff --git a/meta/recipes-support/curl/curl/environment.d-curl.sh b/meta/recipes-support/curl/curl/environment.d-curl.sh
new file mode 100644
index 0000000000..7c2971b3da
--- /dev/null
+++ b/meta/recipes-support/curl/curl/environment.d-curl.sh
@@ -0,0 +1,19 @@
1# Respect host env CURL_CA_BUNDLE/CURL_CA_PATH first, then auto-detected host cert, then cert in buildtools
2# CAFILE/CAPATH is auto-deteced when source buildtools
3if [ -z "$CURL_CA_PATH" ]; then
4 if [ -n "$CAFILE" ];then
5 export CURL_CA_BUNDLE="$CAFILE"
6 elif [ -e "${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt" ];then
7 export CURL_CA_BUNDLE="${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt"
8 fi
9fi
10
11if [ -z "$CURL_CA_PATH" ]; then
12 if [ -n "$CAPATH" ];then
13 export CURL_CA_PATH="$CAPATH"
14 elif [ -e "${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt" ];then
15 export CURL_CA_PATH="${OECORE_NATIVE_SYSROOT}/etc/ssl/certs"
16 fi
17fi
18
19export BB_ENV_PASSTHROUGH_ADDITIONS="${BB_ENV_PASSTHROUGH_ADDITIONS:-} CURL_CA_BUNDLE CURL_CA_PATH"
diff --git a/meta/recipes-support/curl/curl_8.7.1.bb b/meta/recipes-support/curl/curl_8.7.1.bb
index d094604ea1..2f5bf8c8fd 100644
--- a/meta/recipes-support/curl/curl_8.7.1.bb
+++ b/meta/recipes-support/curl/curl_8.7.1.bb
@@ -19,13 +19,25 @@ SRC_URI = " \
19 file://CVE-2024-7264-1.patch \ 19 file://CVE-2024-7264-1.patch \
20 file://CVE-2024-7264-2.patch \ 20 file://CVE-2024-7264-2.patch \
21 file://CVE-2024-8096.patch \ 21 file://CVE-2024-8096.patch \
22 file://CVE-2024-9681.patch \
23 file://CVE-2024-11053-0001.patch \
24 file://CVE-2024-11053-0002.patch \
25 file://CVE-2024-11053-0003.patch \
26 file://CVE-2025-0167.patch \
22" 27"
28
29SRC_URI:append:class-nativesdk = " \
30 file://environment.d-curl.sh \
31"
32
23SRC_URI[sha256sum] = "6fea2aac6a4610fbd0400afb0bcddbe7258a64c63f1f68e5855ebc0c659710cd" 33SRC_URI[sha256sum] = "6fea2aac6a4610fbd0400afb0bcddbe7258a64c63f1f68e5855ebc0c659710cd"
24 34
25# Curl has used many names over the years... 35# Curl has used many names over the years...
26CVE_PRODUCT = "haxx:curl haxx:libcurl curl:curl curl:libcurl libcurl:libcurl daniel_stenberg:curl" 36CVE_PRODUCT = "haxx:curl haxx:libcurl curl:curl curl:libcurl libcurl:libcurl daniel_stenberg:curl"
27CVE_STATUS[CVE-2024-32928] = "ignored: CURLOPT_SSL_VERIFYPEER was disabled on google cloud services causing a potential man in the middle attack" 37CVE_STATUS[CVE-2024-32928] = "ignored: CURLOPT_SSL_VERIFYPEER was disabled on google cloud services causing a potential man in the middle attack"
28 38
39CVE_STATUS[CVE-2025-0725] = "not-applicable-config: gzip decompression of content-encoded HTTP responses with the `CURLOPT_ACCEPT_ENCODING` option, using zlib 1.2.0.3 or older"
40
29inherit autotools pkgconfig binconfig multilib_header ptest 41inherit autotools pkgconfig binconfig multilib_header ptest
30 42
31# Entropy source for random PACKAGECONFIG option 43# Entropy source for random PACKAGECONFIG option
@@ -101,6 +113,8 @@ do_install:append:class-target() {
101 113
102do_install:append:class-nativesdk() { 114do_install:append:class-nativesdk() {
103 fix_absolute_paths 115 fix_absolute_paths
116 mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
117 install -m 644 ${WORKDIR}/environment.d-curl.sh ${D}${SDKPATHNATIVE}/environment-setup.d/curl.sh
104} 118}
105 119
106do_compile_ptest() { 120do_compile_ptest() {
@@ -149,6 +163,8 @@ RRECOMMENDS:lib${BPN} += "ca-certificates"
149 163
150FILES:${PN} += "${datadir}/zsh" 164FILES:${PN} += "${datadir}/zsh"
151 165
166FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/curl.sh"
167
152inherit multilib_script 168inherit multilib_script
153MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/curl-config" 169MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/curl-config"
154 170
diff --git a/meta/recipes-support/enchant/enchant2_2.6.7.bb b/meta/recipes-support/enchant/enchant2_2.6.7.bb
index b31bdc422b..26ff4e8502 100644
--- a/meta/recipes-support/enchant/enchant2_2.6.7.bb
+++ b/meta/recipes-support/enchant/enchant2_2.6.7.bb
@@ -14,7 +14,7 @@ inherit autotools pkgconfig github-releases
14SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/enchant-${PV}.tar.gz" 14SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/enchant-${PV}.tar.gz"
15SRC_URI[sha256sum] = "a1c2e5b59acca000bbfb24810af4a1165733d407f2154786588e076c8cd57bfc" 15SRC_URI[sha256sum] = "a1c2e5b59acca000bbfb24810af4a1165733d407f2154786588e076c8cd57bfc"
16 16
17GITHUB_BASE_URI = "https://github.com/AbiWord/enchant/releases" 17GITHUB_BASE_URI = "https://github.com/rrthomas/enchant/releases"
18 18
19S = "${WORKDIR}/enchant-${PV}" 19S = "${WORKDIR}/enchant-${PV}"
20 20
diff --git a/meta/recipes-support/gnupg/gnupg_2.4.4.bb b/meta/recipes-support/gnupg/gnupg_2.4.5.bb
index fff7d8c6da..97b5d8856c 100644
--- a/meta/recipes-support/gnupg/gnupg_2.4.4.bb
+++ b/meta/recipes-support/gnupg/gnupg_2.4.5.bb
@@ -23,7 +23,7 @@ SRC_URI:append:class-native = " file://0001-configure.ac-use-a-custom-value-for-
23 file://relocate.patch" 23 file://relocate.patch"
24SRC_URI:append:class-nativesdk = " file://relocate.patch" 24SRC_URI:append:class-nativesdk = " file://relocate.patch"
25 25
26SRC_URI[sha256sum] = "67ebe016ca90fa7688ce67a387ebd82c6261e95897db7b23df24ff335be85bc6" 26SRC_URI[sha256sum] = "f68f7d75d06cb1635c336d34d844af97436c3f64ea14bcb7c869782f96f44277"
27 27
28EXTRA_OECONF = "--disable-ldap \ 28EXTRA_OECONF = "--disable-ldap \
29 --disable-ccid-driver \ 29 --disable-ccid-driver \
@@ -88,3 +88,4 @@ BBCLASSEXTEND = "native nativesdk"
88 88
89lcl_maybe_fortify:mipsarch = "" 89lcl_maybe_fortify:mipsarch = ""
90 90
91CVE_STATUS[CVE-2022-3219] = "upstream-wontfix: Upstream doesn't seem to be keen on merging the proposed commit - https://dev.gnupg.org/T5993"
diff --git a/meta/recipes-support/gnutls/gnutls/CVE-2024-12243.patch b/meta/recipes-support/gnutls/gnutls/CVE-2024-12243.patch
new file mode 100644
index 0000000000..a7af87718f
--- /dev/null
+++ b/meta/recipes-support/gnutls/gnutls/CVE-2024-12243.patch
@@ -0,0 +1,1149 @@
1From 4760bc63531e3f5039e70ede91a20e1194410892 Mon Sep 17 00:00:00 2001
2From: Daiki Ueno <ueno@gnu.org>
3Date: Mon, 18 Nov 2024 17:23:46 +0900
4Subject: [PATCH] x509: optimize name constraints processing
5
6This switches the representation name constraints from linked lists to
7array lists to optimize the lookup performance from O(n) to O(1), also
8enforces a limit of name constraint checks against subject alternative
9names.
10
11Signed-off-by: Daiki Ueno <ueno@gnu.org>
12
13CVE: CVE-2024-12243
14Upstream-Status: Backport [https://gitlab.com/gnutls/gnutls/-/commit/4760bc63531e3f5039e70ede91a20e1194410892]
15Signed-off-by: Peter Marko <peter.marko@siemens.com>
16---
17 lib/datum.c | 7 +-
18 lib/x509/name_constraints.c | 595 +++++++++++++++++++++---------------
19 lib/x509/x509_ext.c | 80 +++--
20 lib/x509/x509_ext_int.h | 5 +
21 lib/x509/x509_int.h | 21 +-
22 5 files changed, 399 insertions(+), 309 deletions(-)
23
24diff --git a/lib/datum.c b/lib/datum.c
25index 66e016965..5577c2b4a 100644
26--- a/lib/datum.c
27+++ b/lib/datum.c
28@@ -29,6 +29,7 @@
29 #include "num.h"
30 #include "datum.h"
31 #include "errors.h"
32+#include "intprops.h"
33
34 /* On error, @dat is not changed. */
35 int _gnutls_set_datum(gnutls_datum_t *dat, const void *data, size_t data_size)
36@@ -60,7 +61,11 @@ int _gnutls_set_strdatum(gnutls_datum_t *dat, const void *data,
37 if (data == NULL)
38 return gnutls_assert_val(GNUTLS_E_ILLEGAL_PARAMETER);
39
40- unsigned char *m = gnutls_malloc(data_size + 1);
41+ size_t capacity;
42+ if (!INT_ADD_OK(data_size, 1, &capacity))
43+ return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
44+
45+ unsigned char *m = gnutls_malloc(capacity);
46 if (!m)
47 return GNUTLS_E_MEMORY_ERROR;
48
49diff --git a/lib/x509/name_constraints.c b/lib/x509/name_constraints.c
50index 8327a9d94..3c6e30630 100644
51--- a/lib/x509/name_constraints.c
52+++ b/lib/x509/name_constraints.c
53@@ -33,51 +33,98 @@
54 #include <gnutls/x509-ext.h>
55 #include "x509_b64.h"
56 #include "x509_int.h"
57+#include "x509_ext_int.h"
58 #include <libtasn1.h>
59
60 #include "ip.h"
61 #include "ip-in-cidr.h"
62+#include "intprops.h"
63+
64+#define MAX_NC_CHECKS (1 << 20)
65+
66+struct name_constraints_node_st {
67+ unsigned type;
68+ gnutls_datum_t name;
69+};
70+
71+struct name_constraints_node_list_st {
72+ struct name_constraints_node_st **data;
73+ size_t size;
74+ size_t capacity;
75+};
76+
77+struct gnutls_name_constraints_st {
78+ struct name_constraints_node_list_st nodes; /* owns elements */
79+ struct name_constraints_node_list_st permitted; /* borrows elements */
80+ struct name_constraints_node_list_st excluded; /* borrows elements */
81+};
82+
83+static struct name_constraints_node_st *
84+name_constraints_node_new(gnutls_x509_name_constraints_t nc, unsigned type,
85+ unsigned char *data, unsigned int size);
86+
87+static int
88+name_constraints_node_list_add(struct name_constraints_node_list_st *list,
89+ struct name_constraints_node_st *node)
90+{
91+ if (!list->capacity || list->size == list->capacity) {
92+ size_t new_capacity = list->capacity;
93+ struct name_constraints_node_st **new_data;
94+
95+ if (!INT_MULTIPLY_OK(new_capacity, 2, &new_capacity) ||
96+ !INT_ADD_OK(new_capacity, 1, &new_capacity))
97+ return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
98+ new_data = _gnutls_reallocarray(
99+ list->data, new_capacity,
100+ sizeof(struct name_constraints_node_st *));
101+ if (!new_data)
102+ return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
103+ list->capacity = new_capacity;
104+ list->data = new_data;
105+ }
106+ list->data[list->size++] = node;
107+ return 0;
108+}
109
110 // for documentation see the implementation
111-static int
112-name_constraints_intersect_nodes(name_constraints_node_st *nc1,
113- name_constraints_node_st *nc2,
114- name_constraints_node_st **intersection);
115+static int name_constraints_intersect_nodes(
116+ gnutls_x509_name_constraints_t nc,
117+ const struct name_constraints_node_st *node1,
118+ const struct name_constraints_node_st *node2,
119+ struct name_constraints_node_st **intersection);
120
121 /*-
122- * is_nc_empty:
123+ * _gnutls_x509_name_constraints_is_empty:
124 * @nc: name constraints structure
125- * @type: type (gnutls_x509_subject_alt_name_t)
126+ * @type: type (gnutls_x509_subject_alt_name_t or 0)
127 *
128 * Test whether given name constraints structure has any constraints (permitted
129 * or excluded) of a given type. @nc must be allocated (not NULL) before the call.
130+ * If @type is 0, type checking will be skipped.
131 *
132- * Returns: 0 if @nc contains constraints of type @type, 1 otherwise
133+ * Returns: false if @nc contains constraints of type @type, true otherwise
134 -*/
135-static unsigned is_nc_empty(struct gnutls_name_constraints_st *nc,
136- unsigned type)
137+bool _gnutls_x509_name_constraints_is_empty(gnutls_x509_name_constraints_t nc,
138+ unsigned type)
139 {
140- name_constraints_node_st *t;
141+ if (nc->permitted.size == 0 && nc->excluded.size == 0)
142+ return true;
143
144- if (nc->permitted == NULL && nc->excluded == NULL)
145- return 1;
146+ if (type == 0)
147+ return false;
148
149- t = nc->permitted;
150- while (t != NULL) {
151- if (t->type == type)
152- return 0;
153- t = t->next;
154+ for (size_t i = 0; i < nc->permitted.size; i++) {
155+ if (nc->permitted.data[i]->type == type)
156+ return false;
157 }
158
159- t = nc->excluded;
160- while (t != NULL) {
161- if (t->type == type)
162- return 0;
163- t = t->next;
164+ for (size_t i = 0; i < nc->excluded.size; i++) {
165+ if (nc->excluded.data[i]->type == type)
166+ return false;
167 }
168
169 /* no constraint for that type exists */
170- return 1;
171+ return true;
172 }
173
174 /*-
175@@ -115,21 +162,16 @@ static int validate_name_constraints_node(gnutls_x509_subject_alt_name_t type,
176 return GNUTLS_E_SUCCESS;
177 }
178
179-int _gnutls_extract_name_constraints(asn1_node c2, const char *vstr,
180- name_constraints_node_st **_nc)
181+static int extract_name_constraints(gnutls_x509_name_constraints_t nc,
182+ asn1_node c2, const char *vstr,
183+ struct name_constraints_node_list_st *nodes)
184 {
185 int ret;
186 char tmpstr[128];
187 unsigned indx;
188 gnutls_datum_t tmp = { NULL, 0 };
189 unsigned int type;
190- struct name_constraints_node_st *nc, *prev;
191-
192- prev = *_nc;
193- if (prev != NULL) {
194- while (prev->next != NULL)
195- prev = prev->next;
196- }
197+ struct name_constraints_node_st *node;
198
199 for (indx = 1;; indx++) {
200 snprintf(tmpstr, sizeof(tmpstr), "%s.?%u.base", vstr, indx);
201@@ -172,25 +214,19 @@ int _gnutls_extract_name_constraints(asn1_node c2, const char *vstr,
202 goto cleanup;
203 }
204
205- nc = gnutls_malloc(sizeof(struct name_constraints_node_st));
206- if (nc == NULL) {
207+ node = name_constraints_node_new(nc, type, tmp.data, tmp.size);
208+ _gnutls_free_datum(&tmp);
209+ if (node == NULL) {
210 gnutls_assert();
211 ret = GNUTLS_E_MEMORY_ERROR;
212 goto cleanup;
213 }
214
215- memcpy(&nc->name, &tmp, sizeof(gnutls_datum_t));
216- nc->type = type;
217- nc->next = NULL;
218-
219- if (prev == NULL) {
220- *_nc = prev = nc;
221- } else {
222- prev->next = nc;
223- prev = nc;
224+ ret = name_constraints_node_list_add(nodes, node);
225+ if (ret < 0) {
226+ gnutls_assert();
227+ goto cleanup;
228 }
229-
230- tmp.data = NULL;
231 }
232
233 assert(ret < 0);
234@@ -205,84 +241,104 @@ cleanup:
235 return ret;
236 }
237
238+int _gnutls_x509_name_constraints_extract(asn1_node c2,
239+ const char *permitted_name,
240+ const char *excluded_name,
241+ gnutls_x509_name_constraints_t nc)
242+{
243+ int ret;
244+
245+ ret = extract_name_constraints(nc, c2, permitted_name, &nc->permitted);
246+ if (ret < 0)
247+ return gnutls_assert_val(ret);
248+ ret = extract_name_constraints(nc, c2, excluded_name, &nc->excluded);
249+ if (ret < 0)
250+ return gnutls_assert_val(ret);
251+
252+ return ret;
253+}
254+
255 /*-
256- * _gnutls_name_constraints_node_free:
257+ * name_constraints_node_free:
258 * @node: name constraints node
259 *
260- * Deallocate a list of name constraints nodes starting at the given node.
261+ * Deallocate a name constraints node.
262 -*/
263-void _gnutls_name_constraints_node_free(name_constraints_node_st *node)
264+static void name_constraints_node_free(struct name_constraints_node_st *node)
265 {
266- name_constraints_node_st *next, *t;
267-
268- t = node;
269- while (t != NULL) {
270- next = t->next;
271- gnutls_free(t->name.data);
272- gnutls_free(t);
273- t = next;
274+ if (node) {
275+ gnutls_free(node->name.data);
276+ gnutls_free(node);
277 }
278 }
279
280 /*-
281 * name_constraints_node_new:
282 * @type: name constraints type to set (gnutls_x509_subject_alt_name_t)
283+ * @nc: a %gnutls_x509_name_constraints_t
284 * @data: name.data to set or NULL
285 * @size: name.size to set
286 *
287 * Allocate a new name constraints node and set its type, name size and name data.
288- * If @data is set to NULL, name data will be an array of \x00 (the length of @size).
289- * The .next pointer is set to NULL.
290 *
291 * Returns: Pointer to newly allocated node or NULL in case of memory error.
292 -*/
293-static name_constraints_node_st *
294-name_constraints_node_new(unsigned type, unsigned char *data, unsigned int size)
295+static struct name_constraints_node_st *
296+name_constraints_node_new(gnutls_x509_name_constraints_t nc, unsigned type,
297+ unsigned char *data, unsigned int size)
298 {
299- name_constraints_node_st *tmp =
300- gnutls_malloc(sizeof(struct name_constraints_node_st));
301+ struct name_constraints_node_st *tmp;
302+ int ret;
303+
304+ tmp = gnutls_calloc(1, sizeof(struct name_constraints_node_st));
305 if (tmp == NULL)
306 return NULL;
307 tmp->type = type;
308- tmp->next = NULL;
309- tmp->name.size = size;
310- tmp->name.data = NULL;
311- if (tmp->name.size > 0) {
312- tmp->name.data = gnutls_malloc(tmp->name.size);
313- if (tmp->name.data == NULL) {
314+
315+ if (data) {
316+ ret = _gnutls_set_strdatum(&tmp->name, data, size);
317+ if (ret < 0) {
318+ gnutls_assert();
319 gnutls_free(tmp);
320 return NULL;
321 }
322- if (data != NULL) {
323- memcpy(tmp->name.data, data, size);
324- } else {
325- memset(tmp->name.data, 0, size);
326- }
327 }
328+
329+ ret = name_constraints_node_list_add(&nc->nodes, tmp);
330+ if (ret < 0) {
331+ gnutls_assert();
332+ name_constraints_node_free(tmp);
333+ return NULL;
334+ }
335+
336 return tmp;
337 }
338
339 /*-
340- * @brief _gnutls_name_constraints_intersect:
341- * @_nc: first name constraints list (permitted)
342- * @_nc2: name constraints list to merge with (permitted)
343- * @_nc_excluded: Corresponding excluded name constraints list
344+ * @brief name_constraints_node_list_intersect:
345+ * @nc: %gnutls_x509_name_constraints_t
346+ * @permitted: first name constraints list (permitted)
347+ * @permitted2: name constraints list to merge with (permitted)
348+ * @excluded: Corresponding excluded name constraints list
349 *
350- * This function finds the intersection of @_nc and @_nc2. The result is placed in @_nc,
351- * the original @_nc is deallocated. @_nc2 is not changed. If necessary, a universal
352+ * This function finds the intersection of @permitted and @permitted2. The result is placed in @permitted,
353+ * the original @permitted is modified. @permitted2 is not changed. If necessary, a universal
354 * excluded name constraint node of the right type is added to the list provided
355- * in @_nc_excluded.
356+ * in @excluded.
357 *
358 * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a negative error value.
359 -*/
360-static int
361-_gnutls_name_constraints_intersect(name_constraints_node_st **_nc,
362- name_constraints_node_st *_nc2,
363- name_constraints_node_st **_nc_excluded)
364+static int name_constraints_node_list_intersect(
365+ gnutls_x509_name_constraints_t nc,
366+ struct name_constraints_node_list_st *permitted,
367+ const struct name_constraints_node_list_st *permitted2,
368+ struct name_constraints_node_list_st *excluded)
369 {
370- name_constraints_node_st *nc, *nc2, *t, *tmp, *dest = NULL,
371- *prev = NULL;
372+ struct name_constraints_node_st *tmp;
373 int ret, type, used;
374+ struct name_constraints_node_list_st removed = { .data = NULL,
375+ .size = 0,
376+ .capacity = 0 };
377
378 /* temporary array to see, if we need to add universal excluded constraints
379 * (see phase 3 for details)
380@@ -291,61 +347,73 @@ _gnutls_name_constraints_intersect(name_constraints_node_st **_nc,
381 memset(types_with_empty_intersection, 0,
382 sizeof(types_with_empty_intersection));
383
384- if (*_nc == NULL || _nc2 == NULL)
385+ if (permitted->size == 0 || permitted2->size == 0)
386 return 0;
387
388 /* Phase 1
389- * For each name in _NC, if a _NC2 does not contain a name
390- * with the same type, preserve the original name.
391- * Do this also for node of unknown type (not DNS, email, IP */
392- t = nc = *_nc;
393- while (t != NULL) {
394- name_constraints_node_st *next = t->next;
395- nc2 = _nc2;
396- while (nc2 != NULL) {
397- if (t->type == nc2->type) {
398+ * For each name in PERMITTED, if a PERMITTED2 does not contain a name
399+ * with the same type, move the original name to REMOVED.
400+ * Do this also for node of unknown type (not DNS, email, IP) */
401+ for (size_t i = 0; i < permitted->size;) {
402+ struct name_constraints_node_st *t = permitted->data[i];
403+ const struct name_constraints_node_st *found = NULL;
404+
405+ for (size_t j = 0; j < permitted2->size; j++) {
406+ const struct name_constraints_node_st *t2 =
407+ permitted2->data[j];
408+ if (t->type == t2->type) {
409 // check bounds (we will use 't->type' as index)
410- if (t->type > GNUTLS_SAN_MAX || t->type == 0)
411- return gnutls_assert_val(
412- GNUTLS_E_INTERNAL_ERROR);
413+ if (t->type > GNUTLS_SAN_MAX || t->type == 0) {
414+ gnutls_assert();
415+ ret = GNUTLS_E_INTERNAL_ERROR;
416+ goto cleanup;
417+ }
418 // note the possibility of empty intersection for this type
419 // if we add something to the intersection in phase 2,
420 // we will reset this flag back to 0 then
421 types_with_empty_intersection[t->type - 1] = 1;
422+ found = t2;
423 break;
424 }
425- nc2 = nc2->next;
426 }
427- if (nc2 == NULL || (t->type != GNUTLS_SAN_DNSNAME &&
428- t->type != GNUTLS_SAN_RFC822NAME &&
429- t->type != GNUTLS_SAN_IPADDRESS)) {
430- /* move node from NC to DEST */
431- if (prev != NULL)
432- prev->next = next;
433- else
434- prev = nc = next;
435- t->next = dest;
436- dest = t;
437- } else {
438- prev = t;
439+
440+ if (found != NULL && (t->type == GNUTLS_SAN_DNSNAME ||
441+ t->type == GNUTLS_SAN_RFC822NAME ||
442+ t->type == GNUTLS_SAN_IPADDRESS)) {
443+ /* move node from PERMITTED to REMOVED */
444+ ret = name_constraints_node_list_add(&removed, t);
445+ if (ret < 0) {
446+ gnutls_assert();
447+ goto cleanup;
448+ }
449+ /* remove node by swapping */
450+ if (i < permitted->size - 1)
451+ permitted->data[i] =
452+ permitted->data[permitted->size - 1];
453+ permitted->size--;
454+ continue;
455 }
456- t = next;
457+ i++;
458 }
459
460 /* Phase 2
461- * iterate through all combinations from nc2 and nc1
462+ * iterate through all combinations from PERMITTED2 and PERMITTED
463 * and create intersections of nodes with same type */
464- nc2 = _nc2;
465- while (nc2 != NULL) {
466- // current nc2 node has not yet been used for any intersection
467- // (and is not in DEST either)
468+ for (size_t i = 0; i < permitted2->size; i++) {
469+ const struct name_constraints_node_st *t2 = permitted2->data[i];
470+
471+ // current PERMITTED2 node has not yet been used for any intersection
472+ // (and is not in REMOVED either)
473 used = 0;
474- t = nc;
475- while (t != NULL) {
476+ for (size_t j = 0; j < removed.size; j++) {
477+ const struct name_constraints_node_st *t =
478+ removed.data[j];
479 // save intersection of name constraints into tmp
480- ret = name_constraints_intersect_nodes(t, nc2, &tmp);
481- if (ret < 0)
482- return gnutls_assert_val(ret);
483+ ret = name_constraints_intersect_nodes(nc, t, t2, &tmp);
484+ if (ret < 0) {
485+ gnutls_assert();
486+ goto cleanup;
487+ }
488 used = 1;
489 // if intersection is not empty
490 if (tmp !=
491@@ -360,32 +428,34 @@ _gnutls_name_constraints_intersect(name_constraints_node_st **_nc,
492 // we will not add universal excluded constraint for this type
493 types_with_empty_intersection[tmp->type - 1] =
494 0;
495- // add intersection node to DEST
496- tmp->next = dest;
497- dest = tmp;
498+ // add intersection node to PERMITTED
499+ ret = name_constraints_node_list_add(permitted,
500+ tmp);
501+ if (ret < 0) {
502+ gnutls_assert();
503+ goto cleanup;
504+ }
505 }
506- t = t->next;
507 }
508- // if the node from nc2 was not used for intersection, copy it to DEST
509+ // if the node from PERMITTED2 was not used for intersection, copy it to DEST
510 // Beware: also copies nodes other than DNS, email, IP,
511 // since their counterpart may have been moved in phase 1.
512 if (!used) {
513 tmp = name_constraints_node_new(
514- nc2->type, nc2->name.data, nc2->name.size);
515+ nc, t2->type, t2->name.data, t2->name.size);
516 if (tmp == NULL) {
517- _gnutls_name_constraints_node_free(dest);
518- return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
519+ gnutls_assert();
520+ ret = GNUTLS_E_MEMORY_ERROR;
521+ goto cleanup;
522+ }
523+ ret = name_constraints_node_list_add(permitted, tmp);
524+ if (ret < 0) {
525+ gnutls_assert();
526+ goto cleanup;
527 }
528- tmp->next = dest;
529- dest = tmp;
530 }
531- nc2 = nc2->next;
532 }
533
534- /* replace the original with the new */
535- _gnutls_name_constraints_node_free(nc);
536- *_nc = dest;
537-
538 /* Phase 3
539 * For each type: If we have empty permitted name constraints now
540 * and we didn't have at the beginning, we have to add a new
541@@ -400,63 +470,77 @@ _gnutls_name_constraints_intersect(name_constraints_node_st **_nc,
542 switch (type) {
543 case GNUTLS_SAN_IPADDRESS:
544 // add universal restricted range for IPv4
545- tmp = name_constraints_node_new(GNUTLS_SAN_IPADDRESS,
546- NULL, 8);
547+ tmp = name_constraints_node_new(
548+ nc, GNUTLS_SAN_IPADDRESS, NULL, 8);
549 if (tmp == NULL) {
550- _gnutls_name_constraints_node_free(dest);
551- return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
552+ gnutls_assert();
553+ ret = GNUTLS_E_MEMORY_ERROR;
554+ goto cleanup;
555+ }
556+ ret = name_constraints_node_list_add(excluded, tmp);
557+ if (ret < 0) {
558+ gnutls_assert();
559+ goto cleanup;
560 }
561- tmp->next = *_nc_excluded;
562- *_nc_excluded = tmp;
563 // add universal restricted range for IPv6
564- tmp = name_constraints_node_new(GNUTLS_SAN_IPADDRESS,
565- NULL, 32);
566+ tmp = name_constraints_node_new(
567+ nc, GNUTLS_SAN_IPADDRESS, NULL, 32);
568 if (tmp == NULL) {
569- _gnutls_name_constraints_node_free(dest);
570- return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
571+ gnutls_assert();
572+ ret = GNUTLS_E_MEMORY_ERROR;
573+ goto cleanup;
574+ }
575+ ret = name_constraints_node_list_add(excluded, tmp);
576+ if (ret < 0) {
577+ gnutls_assert();
578+ goto cleanup;
579 }
580- tmp->next = *_nc_excluded;
581- *_nc_excluded = tmp;
582 break;
583 case GNUTLS_SAN_DNSNAME:
584 case GNUTLS_SAN_RFC822NAME:
585- tmp = name_constraints_node_new(type, NULL, 0);
586+ tmp = name_constraints_node_new(nc, type, NULL, 0);
587 if (tmp == NULL) {
588- _gnutls_name_constraints_node_free(dest);
589- return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
590+ gnutls_assert();
591+ ret = GNUTLS_E_MEMORY_ERROR;
592+ goto cleanup;
593+ }
594+ ret = name_constraints_node_list_add(excluded, tmp);
595+ if (ret < 0) {
596+ gnutls_assert();
597+ goto cleanup;
598 }
599- tmp->next = *_nc_excluded;
600- *_nc_excluded = tmp;
601 break;
602 default: // do nothing, at least one node was already moved in phase 1
603 break;
604 }
605 }
606- return GNUTLS_E_SUCCESS;
607+ ret = GNUTLS_E_SUCCESS;
608+
609+cleanup:
610+ gnutls_free(removed.data);
611+ return ret;
612 }
613
614-static int _gnutls_name_constraints_append(name_constraints_node_st **_nc,
615- name_constraints_node_st *_nc2)
616+static int name_constraints_node_list_concat(
617+ gnutls_x509_name_constraints_t nc,
618+ struct name_constraints_node_list_st *nodes,
619+ const struct name_constraints_node_list_st *nodes2)
620 {
621- name_constraints_node_st *nc, *nc2;
622- struct name_constraints_node_st *tmp;
623-
624- if (_nc2 == NULL)
625- return 0;
626-
627- nc2 = _nc2;
628- while (nc2) {
629- nc = *_nc;
630-
631- tmp = name_constraints_node_new(nc2->type, nc2->name.data,
632- nc2->name.size);
633- if (tmp == NULL)
634+ for (size_t i = 0; i < nodes2->size; i++) {
635+ const struct name_constraints_node_st *node = nodes2->data[i];
636+ struct name_constraints_node_st *tmp;
637+ int ret;
638+
639+ tmp = name_constraints_node_new(nc, node->type, node->name.data,
640+ node->name.size);
641+ if (tmp == NULL) {
642 return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
643-
644- tmp->next = nc;
645- *_nc = tmp;
646-
647- nc2 = nc2->next;
648+ }
649+ ret = name_constraints_node_list_add(nodes, tmp);
650+ if (ret < 0) {
651+ name_constraints_node_free(tmp);
652+ return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
653+ }
654 }
655
656 return 0;
657@@ -524,6 +608,25 @@ cleanup:
658 return ret;
659 }
660
661+void _gnutls_x509_name_constraints_clear(gnutls_x509_name_constraints_t nc)
662+{
663+ for (size_t i = 0; i < nc->nodes.size; i++) {
664+ struct name_constraints_node_st *node = nc->nodes.data[i];
665+ name_constraints_node_free(node);
666+ }
667+ gnutls_free(nc->nodes.data);
668+ nc->nodes.capacity = 0;
669+ nc->nodes.size = 0;
670+
671+ gnutls_free(nc->permitted.data);
672+ nc->permitted.capacity = 0;
673+ nc->permitted.size = 0;
674+
675+ gnutls_free(nc->excluded.data);
676+ nc->excluded.capacity = 0;
677+ nc->excluded.size = 0;
678+}
679+
680 /**
681 * gnutls_x509_name_constraints_deinit:
682 * @nc: The nameconstraints
683@@ -534,9 +637,7 @@ cleanup:
684 **/
685 void gnutls_x509_name_constraints_deinit(gnutls_x509_name_constraints_t nc)
686 {
687- _gnutls_name_constraints_node_free(nc->permitted);
688- _gnutls_name_constraints_node_free(nc->excluded);
689-
690+ _gnutls_x509_name_constraints_clear(nc);
691 gnutls_free(nc);
692 }
693
694@@ -552,12 +653,15 @@ void gnutls_x509_name_constraints_deinit(gnutls_x509_name_constraints_t nc)
695 **/
696 int gnutls_x509_name_constraints_init(gnutls_x509_name_constraints_t *nc)
697 {
698- *nc = gnutls_calloc(1, sizeof(struct gnutls_name_constraints_st));
699- if (*nc == NULL) {
700+ struct gnutls_name_constraints_st *tmp;
701+
702+ tmp = gnutls_calloc(1, sizeof(struct gnutls_name_constraints_st));
703+ if (tmp == NULL) {
704 gnutls_assert();
705 return GNUTLS_E_MEMORY_ERROR;
706 }
707
708+ *nc = tmp;
709 return 0;
710 }
711
712@@ -565,36 +669,25 @@ static int name_constraints_add(gnutls_x509_name_constraints_t nc,
713 gnutls_x509_subject_alt_name_t type,
714 const gnutls_datum_t *name, unsigned permitted)
715 {
716- struct name_constraints_node_st *tmp, *prev = NULL;
717+ struct name_constraints_node_st *tmp;
718+ struct name_constraints_node_list_st *nodes;
719 int ret;
720
721 ret = validate_name_constraints_node(type, name);
722 if (ret < 0)
723 return gnutls_assert_val(ret);
724
725- if (permitted != 0)
726- prev = tmp = nc->permitted;
727- else
728- prev = tmp = nc->excluded;
729+ nodes = permitted ? &nc->permitted : &nc->excluded;
730
731- while (tmp != NULL) {
732- tmp = tmp->next;
733- if (tmp != NULL)
734- prev = tmp;
735- }
736-
737- tmp = name_constraints_node_new(type, name->data, name->size);
738+ tmp = name_constraints_node_new(nc, type, name->data, name->size);
739 if (tmp == NULL)
740 return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
741- tmp->next = NULL;
742
743- if (prev == NULL) {
744- if (permitted != 0)
745- nc->permitted = tmp;
746- else
747- nc->excluded = tmp;
748- } else
749- prev->next = tmp;
750+ ret = name_constraints_node_list_add(nodes, tmp);
751+ if (ret < 0) {
752+ name_constraints_node_free(tmp);
753+ return gnutls_assert_val(ret);
754+ }
755
756 return 0;
757 }
758@@ -620,14 +713,15 @@ int _gnutls_x509_name_constraints_merge(gnutls_x509_name_constraints_t nc,
759 {
760 int ret;
761
762- ret = _gnutls_name_constraints_intersect(&nc->permitted, nc2->permitted,
763- &nc->excluded);
764+ ret = name_constraints_node_list_intersect(
765+ nc, &nc->permitted, &nc2->permitted, &nc->excluded);
766 if (ret < 0) {
767 gnutls_assert();
768 return ret;
769 }
770
771- ret = _gnutls_name_constraints_append(&nc->excluded, nc2->excluded);
772+ ret = name_constraints_node_list_concat(nc, &nc->excluded,
773+ &nc2->excluded);
774 if (ret < 0) {
775 gnutls_assert();
776 return ret;
777@@ -804,50 +898,51 @@ static unsigned email_matches(const gnutls_datum_t *name,
778 *
779 * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a negative error value.
780 -*/
781-static int
782-name_constraints_intersect_nodes(name_constraints_node_st *nc1,
783- name_constraints_node_st *nc2,
784- name_constraints_node_st **_intersection)
785+static int name_constraints_intersect_nodes(
786+ gnutls_x509_name_constraints_t nc,
787+ const struct name_constraints_node_st *node1,
788+ const struct name_constraints_node_st *node2,
789+ struct name_constraints_node_st **_intersection)
790 {
791 // presume empty intersection
792- name_constraints_node_st *intersection = NULL;
793- name_constraints_node_st *to_copy = NULL;
794+ struct name_constraints_node_st *intersection = NULL;
795+ const struct name_constraints_node_st *to_copy = NULL;
796 unsigned iplength = 0;
797 unsigned byte;
798
799 *_intersection = NULL;
800
801- if (nc1->type != nc2->type) {
802+ if (node1->type != node2->type) {
803 return GNUTLS_E_SUCCESS;
804 }
805- switch (nc1->type) {
806+ switch (node1->type) {
807 case GNUTLS_SAN_DNSNAME:
808- if (!dnsname_matches(&nc2->name, &nc1->name))
809+ if (!dnsname_matches(&node2->name, &node1->name))
810 return GNUTLS_E_SUCCESS;
811- to_copy = nc2;
812+ to_copy = node2;
813 break;
814 case GNUTLS_SAN_RFC822NAME:
815- if (!email_matches(&nc2->name, &nc1->name))
816+ if (!email_matches(&node2->name, &node1->name))
817 return GNUTLS_E_SUCCESS;
818- to_copy = nc2;
819+ to_copy = node2;
820 break;
821 case GNUTLS_SAN_IPADDRESS:
822- if (nc1->name.size != nc2->name.size)
823+ if (node1->name.size != node2->name.size)
824 return GNUTLS_E_SUCCESS;
825- iplength = nc1->name.size / 2;
826+ iplength = node1->name.size / 2;
827 for (byte = 0; byte < iplength; byte++) {
828- if (((nc1->name.data[byte] ^
829- nc2->name.data[byte]) // XOR of addresses
830- &
831- nc1->name.data[byte + iplength] // AND mask from nc1
832- &
833- nc2->name.data[byte + iplength]) // AND mask from nc2
834+ if (((node1->name.data[byte] ^
835+ node2->name.data[byte]) // XOR of addresses
836+ & node1->name.data[byte +
837+ iplength] // AND mask from nc1
838+ & node2->name.data[byte +
839+ iplength]) // AND mask from nc2
840 != 0) {
841 // CIDRS do not intersect
842 return GNUTLS_E_SUCCESS;
843 }
844 }
845- to_copy = nc2;
846+ to_copy = node2;
847 break;
848 default:
849 // for other types, we don't know how to do the intersection, assume empty
850@@ -856,8 +951,9 @@ name_constraints_intersect_nodes(name_constraints_node_st *nc1,
851
852 // copy existing node if applicable
853 if (to_copy != NULL) {
854- *_intersection = name_constraints_node_new(
855- to_copy->type, to_copy->name.data, to_copy->name.size);
856+ *_intersection = name_constraints_node_new(nc, to_copy->type,
857+ to_copy->name.data,
858+ to_copy->name.size);
859 if (*_intersection == NULL)
860 return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
861 intersection = *_intersection;
862@@ -869,12 +965,12 @@ name_constraints_intersect_nodes(name_constraints_node_st *nc1,
863 _gnutls_mask_ip(intersection->name.data,
864 intersection->name.data + iplength,
865 iplength);
866- _gnutls_mask_ip(nc1->name.data,
867- nc1->name.data + iplength, iplength);
868+ _gnutls_mask_ip(node1->name.data,
869+ node1->name.data + iplength, iplength);
870 // update intersection, if necessary (we already know one is subset of other)
871 for (byte = 0; byte < 2 * iplength; byte++) {
872 intersection->name.data[byte] |=
873- nc1->name.data[byte];
874+ node1->name.data[byte];
875 }
876 }
877 }
878@@ -1177,10 +1273,17 @@ gnutls_x509_name_constraints_check_crt(gnutls_x509_name_constraints_t nc,
879 unsigned idx, t, san_type;
880 gnutls_datum_t n;
881 unsigned found_one;
882+ size_t checks;
883
884- if (is_nc_empty(nc, type) != 0)
885+ if (_gnutls_x509_name_constraints_is_empty(nc, type) != 0)
886 return 1; /* shortcut; no constraints to check */
887
888+ if (!INT_ADD_OK(nc->permitted.size, nc->excluded.size, &checks) ||
889+ !INT_MULTIPLY_OK(checks, cert->san->size, &checks) ||
890+ checks > MAX_NC_CHECKS) {
891+ return gnutls_assert_val(0);
892+ }
893+
894 if (type == GNUTLS_SAN_RFC822NAME) {
895 found_one = 0;
896 for (idx = 0;; idx++) {
897@@ -1378,20 +1481,13 @@ int gnutls_x509_name_constraints_get_permitted(gnutls_x509_name_constraints_t nc
898 unsigned idx, unsigned *type,
899 gnutls_datum_t *name)
900 {
901- unsigned int i;
902- struct name_constraints_node_st *tmp = nc->permitted;
903+ const struct name_constraints_node_st *tmp;
904
905- for (i = 0; i < idx; i++) {
906- if (tmp == NULL)
907- return gnutls_assert_val(
908- GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE);
909-
910- tmp = tmp->next;
911- }
912-
913- if (tmp == NULL)
914+ if (idx >= nc->permitted.size)
915 return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE);
916
917+ tmp = nc->permitted.data[idx];
918+
919 *type = tmp->type;
920 *name = tmp->name;
921
922@@ -1421,20 +1517,13 @@ int gnutls_x509_name_constraints_get_excluded(gnutls_x509_name_constraints_t nc,
923 unsigned idx, unsigned *type,
924 gnutls_datum_t *name)
925 {
926- unsigned int i;
927- struct name_constraints_node_st *tmp = nc->excluded;
928+ const struct name_constraints_node_st *tmp;
929
930- for (i = 0; i < idx; i++) {
931- if (tmp == NULL)
932- return gnutls_assert_val(
933- GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE);
934-
935- tmp = tmp->next;
936- }
937-
938- if (tmp == NULL)
939+ if (idx >= nc->excluded.size)
940 return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE);
941
942+ tmp = nc->excluded.data[idx];
943+
944 *type = tmp->type;
945 *name = tmp->name;
946
947diff --git a/lib/x509/x509_ext.c b/lib/x509/x509_ext.c
948index ad3af1430..064ca8357 100644
949--- a/lib/x509/x509_ext.c
950+++ b/lib/x509/x509_ext.c
951@@ -34,10 +34,6 @@
952 #include "intprops.h"
953
954 #define MAX_ENTRIES 64
955-struct gnutls_subject_alt_names_st {
956- struct name_st *names;
957- unsigned int size;
958-};
959
960 /**
961 * gnutls_subject_alt_names_init:
962@@ -389,22 +385,15 @@ int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t *ext,
963 }
964
965 if (flags & GNUTLS_NAME_CONSTRAINTS_FLAG_APPEND &&
966- (nc->permitted != NULL || nc->excluded != NULL)) {
967+ !_gnutls_x509_name_constraints_is_empty(nc, 0)) {
968 ret = gnutls_x509_name_constraints_init(&nc2);
969 if (ret < 0) {
970 gnutls_assert();
971 goto cleanup;
972 }
973
974- ret = _gnutls_extract_name_constraints(c2, "permittedSubtrees",
975- &nc2->permitted);
976- if (ret < 0) {
977- gnutls_assert();
978- goto cleanup;
979- }
980-
981- ret = _gnutls_extract_name_constraints(c2, "excludedSubtrees",
982- &nc2->excluded);
983+ ret = _gnutls_x509_name_constraints_extract(
984+ c2, "permittedSubtrees", "excludedSubtrees", nc2);
985 if (ret < 0) {
986 gnutls_assert();
987 goto cleanup;
988@@ -416,18 +405,10 @@ int gnutls_x509_ext_import_name_constraints(const gnutls_datum_t *ext,
989 goto cleanup;
990 }
991 } else {
992- _gnutls_name_constraints_node_free(nc->permitted);
993- _gnutls_name_constraints_node_free(nc->excluded);
994+ _gnutls_x509_name_constraints_clear(nc);
995
996- ret = _gnutls_extract_name_constraints(c2, "permittedSubtrees",
997- &nc->permitted);
998- if (ret < 0) {
999- gnutls_assert();
1000- goto cleanup;
1001- }
1002-
1003- ret = _gnutls_extract_name_constraints(c2, "excludedSubtrees",
1004- &nc->excluded);
1005+ ret = _gnutls_x509_name_constraints_extract(
1006+ c2, "permittedSubtrees", "excludedSubtrees", nc);
1007 if (ret < 0) {
1008 gnutls_assert();
1009 goto cleanup;
1010@@ -463,9 +444,10 @@ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc,
1011 int ret, result;
1012 uint8_t null = 0;
1013 asn1_node c2 = NULL;
1014- struct name_constraints_node_st *tmp;
1015+ unsigned rtype;
1016+ gnutls_datum_t rname;
1017
1018- if (nc->permitted == NULL && nc->excluded == NULL)
1019+ if (_gnutls_x509_name_constraints_is_empty(nc, 0))
1020 return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
1021
1022 result = asn1_create_element(_gnutls_get_pkix(),
1023@@ -475,11 +457,20 @@ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc,
1024 return _gnutls_asn2err(result);
1025 }
1026
1027- if (nc->permitted == NULL) {
1028+ ret = gnutls_x509_name_constraints_get_permitted(nc, 0, &rtype, &rname);
1029+ if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) {
1030 (void)asn1_write_value(c2, "permittedSubtrees", NULL, 0);
1031 } else {
1032- tmp = nc->permitted;
1033- do {
1034+ for (unsigned i = 0;; i++) {
1035+ ret = gnutls_x509_name_constraints_get_permitted(
1036+ nc, i, &rtype, &rname);
1037+ if (ret < 0) {
1038+ if (ret ==
1039+ GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE)
1040+ break;
1041+ gnutls_assert();
1042+ goto cleanup;
1043+ }
1044 result = asn1_write_value(c2, "permittedSubtrees",
1045 "NEW", 1);
1046 if (result != ASN1_SUCCESS) {
1047@@ -506,21 +497,29 @@ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc,
1048 }
1049
1050 ret = _gnutls_write_general_name(
1051- c2, "permittedSubtrees.?LAST.base", tmp->type,
1052- tmp->name.data, tmp->name.size);
1053+ c2, "permittedSubtrees.?LAST.base", rtype,
1054+ rname.data, rname.size);
1055 if (ret < 0) {
1056 gnutls_assert();
1057 goto cleanup;
1058 }
1059- tmp = tmp->next;
1060- } while (tmp != NULL);
1061+ }
1062 }
1063
1064- if (nc->excluded == NULL) {
1065+ ret = gnutls_x509_name_constraints_get_excluded(nc, 0, &rtype, &rname);
1066+ if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) {
1067 (void)asn1_write_value(c2, "excludedSubtrees", NULL, 0);
1068 } else {
1069- tmp = nc->excluded;
1070- do {
1071+ for (unsigned i = 0;; i++) {
1072+ ret = gnutls_x509_name_constraints_get_excluded(
1073+ nc, i, &rtype, &rname);
1074+ if (ret < 0) {
1075+ if (ret ==
1076+ GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE)
1077+ break;
1078+ gnutls_assert();
1079+ goto cleanup;
1080+ }
1081 result = asn1_write_value(c2, "excludedSubtrees", "NEW",
1082 1);
1083 if (result != ASN1_SUCCESS) {
1084@@ -546,14 +545,13 @@ int gnutls_x509_ext_export_name_constraints(gnutls_x509_name_constraints_t nc,
1085 }
1086
1087 ret = _gnutls_write_general_name(
1088- c2, "excludedSubtrees.?LAST.base", tmp->type,
1089- tmp->name.data, tmp->name.size);
1090+ c2, "excludedSubtrees.?LAST.base", rtype,
1091+ rname.data, rname.size);
1092 if (ret < 0) {
1093 gnutls_assert();
1094 goto cleanup;
1095 }
1096- tmp = tmp->next;
1097- } while (tmp != NULL);
1098+ }
1099 }
1100
1101 ret = _gnutls_x509_der_encode(c2, "", ext, 0);
1102diff --git a/lib/x509/x509_ext_int.h b/lib/x509/x509_ext_int.h
1103index 558d61956..b37d74997 100644
1104--- a/lib/x509/x509_ext_int.h
1105+++ b/lib/x509/x509_ext_int.h
1106@@ -29,6 +29,11 @@ struct name_st {
1107 gnutls_datum_t othername_oid;
1108 };
1109
1110+struct gnutls_subject_alt_names_st {
1111+ struct name_st *names;
1112+ unsigned int size;
1113+};
1114+
1115 int _gnutls_alt_name_process(gnutls_datum_t *out, unsigned type,
1116 const gnutls_datum_t *san, unsigned raw);
1117
1118diff --git a/lib/x509/x509_int.h b/lib/x509/x509_int.h
1119index 4ec55bd75..211743ced 100644
1120--- a/lib/x509/x509_int.h
1121+++ b/lib/x509/x509_int.h
1122@@ -485,20 +485,13 @@ int _gnutls_x509_crt_check_revocation(gnutls_x509_crt_t cert,
1123 int crl_list_length,
1124 gnutls_verify_output_function func);
1125
1126-typedef struct gnutls_name_constraints_st {
1127- struct name_constraints_node_st *permitted;
1128- struct name_constraints_node_st *excluded;
1129-} gnutls_name_constraints_st;
1130-
1131-typedef struct name_constraints_node_st {
1132- unsigned type;
1133- gnutls_datum_t name;
1134- struct name_constraints_node_st *next;
1135-} name_constraints_node_st;
1136-
1137-int _gnutls_extract_name_constraints(asn1_node c2, const char *vstr,
1138- name_constraints_node_st **_nc);
1139-void _gnutls_name_constraints_node_free(name_constraints_node_st *node);
1140+bool _gnutls_x509_name_constraints_is_empty(gnutls_x509_name_constraints_t nc,
1141+ unsigned type);
1142+int _gnutls_x509_name_constraints_extract(asn1_node c2,
1143+ const char *permitted_name,
1144+ const char *excluded_name,
1145+ gnutls_x509_name_constraints_t nc);
1146+void _gnutls_x509_name_constraints_clear(gnutls_x509_name_constraints_t nc);
1147 int _gnutls_x509_name_constraints_merge(gnutls_x509_name_constraints_t nc,
1148 gnutls_x509_name_constraints_t nc2);
1149
diff --git a/meta/recipes-support/gnutls/gnutls_3.8.4.bb b/meta/recipes-support/gnutls/gnutls_3.8.4.bb
index 20139b4dd4..e77960724b 100644
--- a/meta/recipes-support/gnutls/gnutls_3.8.4.bb
+++ b/meta/recipes-support/gnutls/gnutls_3.8.4.bb
@@ -23,6 +23,7 @@ SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar
23 file://0001-Creating-.hmac-file-should-be-excuted-in-target-envi.patch \ 23 file://0001-Creating-.hmac-file-should-be-excuted-in-target-envi.patch \
24 file://run-ptest \ 24 file://run-ptest \
25 file://Add-ptest-support.patch \ 25 file://Add-ptest-support.patch \
26 file://CVE-2024-12243.patch \
26 " 27 "
27 28
28SRC_URI[sha256sum] = "2bea4e154794f3f00180fa2a5c51fe8b005ac7a31cd58bd44cdfa7f36ebc3a9b" 29SRC_URI[sha256sum] = "2bea4e154794f3f00180fa2a5c51fe8b005ac7a31cd58bd44cdfa7f36ebc3a9b"
diff --git a/meta/recipes-support/gnutls/libtasn1_4.19.0.bb b/meta/recipes-support/gnutls/libtasn1_4.20.0.bb
index 5fb8b54c06..8127ba5b1d 100644
--- a/meta/recipes-support/gnutls/libtasn1_4.19.0.bb
+++ b/meta/recipes-support/gnutls/libtasn1_4.20.0.bb
@@ -6,9 +6,8 @@ HOMEPAGE = "http://www.gnu.org/software/libtasn1/"
6LICENSE = "GPL-3.0-or-later & LGPL-2.1-or-later" 6LICENSE = "GPL-3.0-or-later & LGPL-2.1-or-later"
7LICENSE:${PN}-bin = "GPL-3.0-or-later" 7LICENSE:${PN}-bin = "GPL-3.0-or-later"
8LICENSE:${PN} = "LGPL-2.1-or-later" 8LICENSE:${PN} = "LGPL-2.1-or-later"
9LIC_FILES_CHKSUM = "file://doc/COPYING;md5=d32239bcb673463ab874e80d47fae504 \ 9LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
10 file://doc/COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c \ 10 file://COPYING.LESSERv2;md5=4bf661c1e3793e55c8d1051bc5e0ae21"
11 file://COPYING;md5=75ac100ec923f959898182307970c360"
12 11
13SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \ 12SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \
14 file://dont-depend-on-help2man.patch \ 13 file://dont-depend-on-help2man.patch \
@@ -16,7 +15,7 @@ SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \
16 15
17DEPENDS = "bison-native" 16DEPENDS = "bison-native"
18 17
19SRC_URI[sha256sum] = "1613f0ac1cf484d6ec0ce3b8c06d56263cc7242f1c23b30d82d23de345a63f7a" 18SRC_URI[sha256sum] = "92e0e3bd4c02d4aeee76036b2ddd83f0c732ba4cda5cb71d583272b23587a76c"
20 19
21inherit autotools texinfo lib_package gtk-doc 20inherit autotools texinfo lib_package gtk-doc
22 21
diff --git a/meta/recipes-support/icu/icu/fix-install-manx.patch b/meta/recipes-support/icu/icu/fix-install-manx.patch
index 16cabc8264..7b1ca81451 100644
--- a/meta/recipes-support/icu/icu/fix-install-manx.patch
+++ b/meta/recipes-support/icu/icu/fix-install-manx.patch
@@ -11,9 +11,7 @@ and one process tries to chown a file that the other process has just deleted.
11Also install-manx should be a phony target, and for clarity use $^ instead of $? 11Also install-manx should be a phony target, and for clarity use $^ instead of $?
12in the install command. 12in the install command.
13 13
14Upstream ticket: https://unicode-org.atlassian.net/jira/software/c/projects/ICU/issues/ICU-21172 14Upstream-Status: Backport [0f022dca90cfe6bbf6a74f605dcaf1b489d58a9b]
15
16Upstream-Status: Submitted [https://github.com/unicode-org/icu/pull/2966]
17Signed-off-by: Ross Burton <ross.burton@intel.com> 15Signed-off-by: Ross Burton <ross.burton@intel.com>
18--- 16---
19 Makefile.in | 8 ++++---- 17 Makefile.in | 8 ++++----
diff --git a/meta/recipes-support/icu/icu_74-2.bb b/meta/recipes-support/icu/icu_74-2.bb
index 8352bf2a5b..3a4e197308 100644
--- a/meta/recipes-support/icu/icu_74-2.bb
+++ b/meta/recipes-support/icu/icu_74-2.bb
@@ -26,11 +26,11 @@ EXTRA_OECONF:class-native = "--disable-icu-config"
26EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config" 26EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} --disable-icu-config"
27 27
28EXTRA_OECONF:append:class-target = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' --with-data-packaging=archive', '', d)}" 28EXTRA_OECONF:append:class-target = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' --with-data-packaging=archive', '', d)}"
29TARGET_CXXFLAGS:append = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' -DICU_DATA_DIR=\\""${datadir}/${BPN}/${PV}\\""', '', d)}" 29TARGET_CXXFLAGS:append = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' -DICU_DATA_DIR=\\""${datadir}/${BPN}/${@icu_install_folder(d)}\\""', '', d)}"
30 30
31ASNEEDED = "" 31ASNEEDED = ""
32 32
33do_compile:prepend:class-target () { 33remove_build_host_references_from_libicutu () {
34 # Make sure certain build host references do not end up being compiled 34 # Make sure certain build host references do not end up being compiled
35 # in the image. This only affects libicutu and icu-dbg 35 # in the image. This only affects libicutu and icu-dbg
36 sed \ 36 sed \
@@ -39,6 +39,14 @@ do_compile:prepend:class-target () {
39 -i ${B}/tools/toolutil/Makefile 39 -i ${B}/tools/toolutil/Makefile
40} 40}
41 41
42do_compile:prepend:class-target () {
43 remove_build_host_references_from_libicutu
44}
45
46do_compile:prepend:class-nativesdk () {
47 remove_build_host_references_from_libicutu
48}
49
42PREPROCESS_RELOCATE_DIRS = "${datadir}/${BPN}/${PV}" 50PREPROCESS_RELOCATE_DIRS = "${datadir}/${BPN}/${PV}"
43do_install:append:class-native() { 51do_install:append:class-native() {
44 mkdir -p ${D}/${STAGING_ICU_DIR_NATIVE}/config 52 mkdir -p ${D}/${STAGING_ICU_DIR_NATIVE}/config
@@ -49,6 +57,15 @@ do_install:append:class-native() {
49 cp -r ${B}/tools ${D}/${STAGING_ICU_DIR_NATIVE} 57 cp -r ${B}/tools ${D}/${STAGING_ICU_DIR_NATIVE}
50} 58}
51 59
60remove_build_host_references() {
61 sed -i \
62 -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
63 -e 's|${DEBUG_PREFIX_MAP}||g' \
64 -e 's:${HOSTTOOLS_DIR}/::g' \
65 ${D}/${libdir}/${BPN}/${@icu_install_folder(d)}/Makefile.inc \
66 ${D}/${libdir}/${BPN}/${@icu_install_folder(d)}/pkgdata.inc
67}
68
52do_install:append:class-target() { 69do_install:append:class-target() {
53 # The native pkgdata can not generate the correct data file. 70 # The native pkgdata can not generate the correct data file.
54 # Use icupkg to re-generate it. 71 # Use icupkg to re-generate it.
@@ -56,14 +73,12 @@ do_install:append:class-target() {
56 rm -f ${D}/${datadir}/${BPN}/${@icu_install_folder(d)}/icudt${ICU_MAJOR_VER}b.dat 73 rm -f ${D}/${datadir}/${BPN}/${@icu_install_folder(d)}/icudt${ICU_MAJOR_VER}b.dat
57 icupkg -tb ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ${D}/${datadir}/${BPN}/${@icu_install_folder(d)}/icudt${ICU_MAJOR_VER}b.dat 74 icupkg -tb ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ${D}/${datadir}/${BPN}/${@icu_install_folder(d)}/icudt${ICU_MAJOR_VER}b.dat
58 fi 75 fi
59 76
60 # Remove build host references... 77 remove_build_host_references
61 sed -i \ 78}
62 -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \ 79
63 -e 's|${DEBUG_PREFIX_MAP}||g' \ 80do_install:append:class-nativesdk() {
64 -e 's:${HOSTTOOLS_DIR}/::g' \ 81 remove_build_host_references
65 ${D}/${libdir}/${BPN}/${@icu_install_folder(d)}/Makefile.inc \
66 ${D}/${libdir}/${BPN}/${@icu_install_folder(d)}/pkgdata.inc
67} 82}
68 83
69PACKAGES =+ "libicudata libicuuc libicui18n libicutu libicuio" 84PACKAGES =+ "libicudata libicuuc libicui18n libicutu libicuio"
diff --git a/meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb b/meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb
index 824400e743..6269133408 100644
--- a/meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb
+++ b/meta/recipes-support/libatomic-ops/libatomic-ops_7.8.2.bb
@@ -1,6 +1,6 @@
1SUMMARY = "A library for atomic integer operations" 1SUMMARY = "A library for atomic integer operations"
2DESCRIPTION = "Package provides semi-portable access to hardware-provided atomic memory update operations on a number of architectures." 2DESCRIPTION = "Package provides semi-portable access to hardware-provided atomic memory update operations on a number of architectures."
3HOMEPAGE = "https://github.com/ivmai/libatomic_ops/" 3HOMEPAGE = "https://github.com/bdwgc/libatomic_ops/"
4SECTION = "optional" 4SECTION = "optional"
5PROVIDES += "libatomics-ops" 5PROVIDES += "libatomics-ops"
6LICENSE = "GPL-2.0-only & MIT" 6LICENSE = "GPL-2.0-only & MIT"
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
9 " 9 "
10 10
11SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libatomic_ops-${PV}.tar.gz" 11SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libatomic_ops-${PV}.tar.gz"
12GITHUB_BASE_URI = "https://github.com/ivmai/libatomic_ops/releases" 12GITHUB_BASE_URI = "https://github.com/bdwgc/libatomic_ops/releases"
13 13
14SRC_URI[sha256sum] = "d305207fe207f2b3fb5cb4c019da12b44ce3fcbc593dfd5080d867b1a2419b51" 14SRC_URI[sha256sum] = "d305207fe207f2b3fb5cb4c019da12b44ce3fcbc593dfd5080d867b1a2419b51"
15 15
diff --git a/meta/recipes-support/libcap/files/CVE-2025-1390.patch b/meta/recipes-support/libcap/files/CVE-2025-1390.patch
new file mode 100644
index 0000000000..a0f7dda503
--- /dev/null
+++ b/meta/recipes-support/libcap/files/CVE-2025-1390.patch
@@ -0,0 +1,36 @@
1From 1ad42b66c3567481cc5fa22fc1ba1556a316d878 Mon Sep 17 00:00:00 2001
2From: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
3Date: Mon, 17 Feb 2025 10:31:55 +0800
4Subject: pam_cap: Fix potential configuration parsing error
5
6The current configuration parsing does not actually skip user names
7that do not start with @, but instead treats the name as a group
8name for further parsing, which can result in matching unexpected
9capability sets and may trigger potential security issues. Only
10names starting with @ should be parsed as group names.
11
12Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
13Signed-off-by: Andrew G. Morgan <morgan@kernel.org>
14
15Upstream-Status: Backport [https://git.kernel.org/pub/scm/libs/libcap/libcap.git/commit/?id=1ad42b66c3567481cc5fa22fc1ba1556a316d878]
16CVE: CVE-2025-1390
17Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
18---
19 pam_cap/pam_cap.c | 1 +
20 1 file changed, 1 insertion(+)
21
22diff --git a/pam_cap/pam_cap.c b/pam_cap/pam_cap.c
23index b9419cb..18647a1 100644
24--- a/pam_cap/pam_cap.c
25+++ b/pam_cap/pam_cap.c
26@@ -166,6 +166,7 @@ static char *read_capabilities_for_user(const char *user, const char *source)
27
28 if (line[0] != '@') {
29 D(("user [%s] is not [%s] - skipping", user, line));
30+ continue;
31 }
32
33 int i;
34--
352.25.1
36
diff --git a/meta/recipes-support/libcap/libcap_2.69.bb b/meta/recipes-support/libcap/libcap_2.69.bb
index 92fa766d37..03975b44a0 100644
--- a/meta/recipes-support/libcap/libcap_2.69.bb
+++ b/meta/recipes-support/libcap/libcap_2.69.bb
@@ -15,6 +15,7 @@ DEPENDS = "hostperl-runtime-native gperf-native"
15SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${PV}.tar.xz \ 15SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${PV}.tar.xz \
16 file://0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch \ 16 file://0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch \
17 file://0002-tests-do-not-run-target-executables.patch \ 17 file://0002-tests-do-not-run-target-executables.patch \
18 file://CVE-2025-1390.patch \
18 " 19 "
19SRC_URI:append:class-nativesdk = " \ 20SRC_URI:append:class-nativesdk = " \
20 file://0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch \ 21 file://0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch \
diff --git a/meta/recipes-support/libgcrypt/files/0001-Fix-building-error-with-O2-in-sysroot-path.patch b/meta/recipes-support/libgcrypt/files/0001-Fix-building-error-with-O2-in-sysroot-path.patch
new file mode 100644
index 0000000000..dee4969f35
--- /dev/null
+++ b/meta/recipes-support/libgcrypt/files/0001-Fix-building-error-with-O2-in-sysroot-path.patch
@@ -0,0 +1,64 @@
1From b99952adc6ee611641709610d2e4dc90ba9acf37 Mon Sep 17 00:00:00 2001
2From: "simit.ghane" <simit.ghane@lge.com>
3Date: Tue, 7 May 2024 14:09:03 +0530
4Subject: [PATCH] Fix building error with '-O2' in sysroot path
5
6* cipher/Makefile.am (o_flag_munging): Tweak the sed script.
7* random/Makefile.am (o_flag_munging): Ditto.
8--
9
10Characters like '-O2' or '-Ofast' will be replaced by '-O1' and '-O0'
11respectively when compiling cipher and random in the filesystem
12paths as well if they happen to contain '-O2' or '-Ofast
13
14If we are cross compiling libgcrypt and sysroot contains such
15characters, we would
16get compile errors because the sysroot path has been modified.
17
18Fix this by adding blank spaces and tabs before the original matching
19pattern in the sed command.
20
21Signed-off-by: simit.ghane <simit.ghane@lge.com>
22
23ChangeLog entries added by wk
24
25Note that there is also the configure option --disable-O-flag-munging;
26see the README.
27
28Upstream-Status: Backport [https://dev.gnupg.org/rCb99952adc6ee611641709610d2e4dc90ba9acf37 https://dev.gnupg.org/rC5afadba008918d651afefb842ae123cc18454c74]
29
30Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
31---
32 cipher/Makefile.am | 2 +-
33 random/Makefile.am | 2 +-
34 2 files changed, 2 insertions(+), 2 deletions(-)
35
36diff --git a/cipher/Makefile.am b/cipher/Makefile.am
37index 2c39586e..a914ed2b 100644
38--- a/cipher/Makefile.am
39+++ b/cipher/Makefile.am
40@@ -168,7 +168,7 @@ gost-s-box$(EXEEXT_FOR_BUILD): gost-s-box.c
41
42
43 if ENABLE_O_FLAG_MUNGING
44-o_flag_munging = sed -e 's/-O\([2-9sgz][2-9sgz]*\)/-O1/' -e 's/-Ofast/-O1/g'
45+o_flag_munging = sed -e 's/[[:blank:]]-O\([2-9sgz][2-9sgz]*\)/ -O1 /g' -e 's/[[:blank:]]-Ofast/ -O1 /g'
46 else
47 o_flag_munging = cat
48 endif
49diff --git a/random/Makefile.am b/random/Makefile.am
50index 0c935a05..340df38a 100644
51--- a/random/Makefile.am
52+++ b/random/Makefile.am
53@@ -56,7 +56,7 @@ jitterentropy-base.c jitterentropy.h jitterentropy-base-user.h
54
55 # The rndjent module needs to be compiled without optimization. */
56 if ENABLE_O_FLAG_MUNGING
57-o_flag_munging = sed -e 's/-O\([1-9sgz][1-9sgz]*\)/-O0/g' -e 's/-Ofast/-O0/g'
58+o_flag_munging = sed -e 's/[[:blank:]]-O\([1-9sgz][1-9sgz]*\)/ -O0 /g' -e 's/[[:blank:]]-Ofast/ -O0 /g'
59 else
60 o_flag_munging = cat
61 endif
62--
632.44.1
64
diff --git a/meta/recipes-support/libgcrypt/files/0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch b/meta/recipes-support/libgcrypt/files/0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch
deleted file mode 100644
index cf9ebfb3e6..0000000000
--- a/meta/recipes-support/libgcrypt/files/0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch
+++ /dev/null
@@ -1,39 +0,0 @@
1From 0f66e796a8522e1043dda03b88d5f6feae839d16 Mon Sep 17 00:00:00 2001
2From: Chen Qi <Qi.Chen@windriver.com>
3Date: Wed, 16 Aug 2017 10:44:41 +0800
4Subject: [PATCH] libgcrypt: fix building error with '-O2' in sysroot path
5
6Upstream-Status: Pending
7
8Characters like '-O2' or '-Ofast' will be replaced by '-O1' when
9compiling cipher.
10If we are cross compiling libgcrypt and sysroot contains such
11characters, we would
12get compile errors because the sysroot path has been modified.
13
14Fix this by adding blank spaces before and after the original matching
15pattern in the
16sed command.
17
18Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
19
20Rebase to 1.8.0
21Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
22
23---
24 cipher/Makefile.am | 2 +-
25 1 file changed, 1 insertion(+), 1 deletion(-)
26
27diff --git a/cipher/Makefile.am b/cipher/Makefile.am
28index c3d642b..88c883a 100644
29--- a/cipher/Makefile.am
30+++ b/cipher/Makefile.am
31@@ -153,7 +153,7 @@ gost-s-box: gost-s-box.c
32
33
34 if ENABLE_O_FLAG_MUNGING
35-o_flag_munging = sed -e 's/-O\([2-9sgz][2-9sgz]*\)/-O1/' -e 's/-Ofast/-O1/g'
36+o_flag_munging = sed -e 's/ -O\([2-9sgz][2-9sgz]*\) / -O1 /' -e 's/ -Ofast / -O1 /g'
37 else
38 o_flag_munging = cat
39 endif
diff --git a/meta/recipes-support/libgcrypt/libgcrypt_1.10.3.bb b/meta/recipes-support/libgcrypt/libgcrypt_1.10.3.bb
index 5a76201ab5..3d49d586bb 100644
--- a/meta/recipes-support/libgcrypt/libgcrypt_1.10.3.bb
+++ b/meta/recipes-support/libgcrypt/libgcrypt_1.10.3.bb
@@ -21,11 +21,11 @@ DEPENDS = "libgpg-error"
21UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html" 21UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
22SRC_URI = "${GNUPG_MIRROR}/libgcrypt/libgcrypt-${PV}.tar.bz2 \ 22SRC_URI = "${GNUPG_MIRROR}/libgcrypt/libgcrypt-${PV}.tar.bz2 \
23 file://0001-libgcrypt-fix-m4-file-for-oe-core.patch \ 23 file://0001-libgcrypt-fix-m4-file-for-oe-core.patch \
24 file://0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch \
25 file://0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch \ 24 file://0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch \
26 file://no-native-gpg-error.patch \ 25 file://no-native-gpg-error.patch \
27 file://no-bench-slope.patch \ 26 file://no-bench-slope.patch \
28 file://run-ptest \ 27 file://run-ptest \
28 file://0001-Fix-building-error-with-O2-in-sysroot-path.patch \
29 " 29 "
30SRC_URI[sha256sum] = "8b0870897ac5ac67ded568dcfadf45969cfa8a6beb0fd60af2a9eadc2a3272aa" 30SRC_URI[sha256sum] = "8b0870897ac5ac67ded568dcfadf45969cfa8a6beb0fd60af2a9eadc2a3272aa"
31 31
diff --git a/meta/recipes-support/libpcre/libpcre2_10.43.bb b/meta/recipes-support/libpcre/libpcre2_10.43.bb
index fd0bd79212..f744df88fa 100644
--- a/meta/recipes-support/libpcre/libpcre2_10.43.bb
+++ b/meta/recipes-support/libpcre/libpcre2_10.43.bb
@@ -12,7 +12,7 @@ LIC_FILES_CHKSUM = "file://LICENCE;md5=321a5eb46acae6b6c1ff2c7a866d836a"
12 12
13SRC_URI = "${GITHUB_BASE_URI}/download/pcre2-${PV}/pcre2-${PV}.tar.bz2" 13SRC_URI = "${GITHUB_BASE_URI}/download/pcre2-${PV}/pcre2-${PV}.tar.bz2"
14 14
15GITHUB_BASE_URI = "https://github.com/PhilipHazel/pcre2/releases" 15GITHUB_BASE_URI = "https://github.com/PCRE2Project/pcre2/releases"
16UPSTREAM_CHECK_REGEX = "releases/tag/pcre2-(?P<pver>\d+(\.\d+)+)$" 16UPSTREAM_CHECK_REGEX = "releases/tag/pcre2-(?P<pver>\d+(\.\d+)+)$"
17 17
18SRC_URI[sha256sum] = "e2a53984ff0b07dfdb5ae4486bbb9b21cca8e7df2434096cc9bf1b728c350bcb" 18SRC_URI[sha256sum] = "e2a53984ff0b07dfdb5ae4486bbb9b21cca8e7df2434096cc9bf1b728c350bcb"
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52530.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52530.patch
new file mode 100644
index 0000000000..bd62a748eb
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52530.patch
@@ -0,0 +1,149 @@
1From 04df03bc092ac20607f3e150936624d4f536e68b Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Mon, 8 Jul 2024 12:33:15 -0500
4Subject: [PATCH] headers: Strictly don't allow NUL bytes
5
6In the past (2015) this was allowed for some problematic sites. However Chromium also does not allow NUL bytes in either header names or values these days. So this should no longer be a problem.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/04df03bc092ac20607f3e150936624d4f536e68b]
9CVE: CVE-2024-52530
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/soup-headers.c | 15 +++------
13 tests/header-parsing-test.c | 62 +++++++++++++++++--------------------
14 2 files changed, 32 insertions(+), 45 deletions(-)
15
16diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
17index a0cf351ac..f30ee467a 100644
18--- a/libsoup/soup-headers.c
19+++ b/libsoup/soup-headers.c
20@@ -51,13 +51,14 @@ soup_headers_parse (const char *str, int len, SoupMessageHeaders *dest)
21 * ignorable trailing whitespace.
22 */
23
24+ /* No '\0's are allowed */
25+ if (memchr (str, '\0', len))
26+ return FALSE;
27+
28 /* Skip over the Request-Line / Status-Line */
29 headers_start = memchr (str, '\n', len);
30 if (!headers_start)
31 return FALSE;
32- /* No '\0's in the Request-Line / Status-Line */
33- if (memchr (str, '\0', headers_start - str))
34- return FALSE;
35
36 /* We work on a copy of the headers, which we can write '\0's
37 * into, so that we don't have to individually g_strndup and
38@@ -69,14 +70,6 @@ soup_headers_parse (const char *str, int len, SoupMessageHeaders *dest)
39 headers_copy[copy_len] = '\0';
40 value_end = headers_copy;
41
42- /* There shouldn't be any '\0's in the headers already, but
43- * this is the web we're talking about.
44- */
45- while ((p = memchr (headers_copy, '\0', copy_len))) {
46- memmove (p, p + 1, copy_len - (p - headers_copy));
47- copy_len--;
48- }
49-
50 while (*(value_end + 1)) {
51 name = value_end + 1;
52 name_end = strchr (name, ':');
53diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
54index edf8eebb3..715c2c6f2 100644
55--- a/tests/header-parsing-test.c
56+++ b/tests/header-parsing-test.c
57@@ -358,24 +358,6 @@ static struct RequestTest {
58 }
59 },
60
61- { "NUL in header name", "760832",
62- "GET / HTTP/1.1\r\nHost\x00: example.com\r\n", 36,
63- SOUP_STATUS_OK,
64- "GET", "/", SOUP_HTTP_1_1,
65- { { "Host", "example.com" },
66- { NULL }
67- }
68- },
69-
70- { "NUL in header value", "760832",
71- "GET / HTTP/1.1\r\nHost: example\x00" "com\r\n", 35,
72- SOUP_STATUS_OK,
73- "GET", "/", SOUP_HTTP_1_1,
74- { { "Host", "examplecom" },
75- { NULL }
76- }
77- },
78-
79 /************************/
80 /*** INVALID REQUESTS ***/
81 /************************/
82@@ -448,6 +430,21 @@ static struct RequestTest {
83 SOUP_STATUS_EXPECTATION_FAILED,
84 NULL, NULL, -1,
85 { { NULL } }
86+ },
87+
88+ // https://gitlab.gnome.org/GNOME/libsoup/-/issues/377
89+ { "NUL in header name", NULL,
90+ "GET / HTTP/1.1\r\nHost\x00: example.com\r\n", 36,
91+ SOUP_STATUS_BAD_REQUEST,
92+ NULL, NULL, -1,
93+ { { NULL } }
94+ },
95+
96+ { "NUL in header value", NULL,
97+ "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
98+ SOUP_STATUS_BAD_REQUEST,
99+ NULL, NULL, -1,
100+ { { NULL } }
101 }
102 };
103 static const int num_reqtests = G_N_ELEMENTS (reqtests);
104@@ -620,22 +617,6 @@ static struct ResponseTest {
105 { NULL } }
106 },
107
108- { "NUL in header name", "760832",
109- "HTTP/1.1 200 OK\r\nF\x00oo: bar\r\n", 28,
110- SOUP_HTTP_1_1, SOUP_STATUS_OK, "OK",
111- { { "Foo", "bar" },
112- { NULL }
113- }
114- },
115-
116- { "NUL in header value", "760832",
117- "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
118- SOUP_HTTP_1_1, SOUP_STATUS_OK, "OK",
119- { { "Foo", "bar" },
120- { NULL }
121- }
122- },
123-
124 /********************************/
125 /*** VALID CONTINUE RESPONSES ***/
126 /********************************/
127@@ -768,6 +749,19 @@ static struct ResponseTest {
128 { { NULL }
129 }
130 },
131+
132+ // https://gitlab.gnome.org/GNOME/libsoup/-/issues/377
133+ { "NUL in header name", NULL,
134+ "HTTP/1.1 200 OK\r\nF\x00oo: bar\r\n", 28,
135+ -1, 0, NULL,
136+ { { NULL } }
137+ },
138+
139+ { "NUL in header value", "760832",
140+ "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
141+ -1, 0, NULL,
142+ { { NULL } }
143+ },
144 };
145 static const int num_resptests = G_N_ELEMENTS (resptests);
146
147--
148GitLab
149
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-1.patch
new file mode 100644
index 0000000000..d56ad0ff5e
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-1.patch
@@ -0,0 +1,131 @@
1From a35222dd0bfab2ac97c10e86b95f762456628283 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 27 Aug 2024 13:53:26 -0500
4Subject: [PATCH 1/2] headers: Be more robust against invalid input when
5 parsing params
6
7If you pass invalid input to a function such as soup_header_parse_param_list_strict()
8it can cause an overflow if it decodes the input to UTF-8.
9
10This should never happen with valid UTF-8 input which libsoup's client API
11ensures, however it's server API does not currently.
12
13Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/libsoup2.4/tree/debian/patches/CVE-2024-52531-1.patch?h=ubuntu/jammy-security
14Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/a35222dd0bfab2ac97c10e86b95f762456628283]
15CVE: CVE-2024-52531
16Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
17---
18 libsoup/soup-headers.c | 46 ++++++++++++++++++++++--------------------
19 1 file changed, 24 insertions(+), 22 deletions(-)
20
21Index: libsoup2.4-2.74.2/libsoup/soup-headers.c
22===================================================================
23--- libsoup2.4-2.74.2.orig/libsoup/soup-headers.c
24+++ libsoup2.4-2.74.2/libsoup/soup-headers.c
25@@ -643,8 +643,9 @@ soup_header_contains (const char *header
26 }
27
28 static void
29-decode_quoted_string (char *quoted_string)
30+decode_quoted_string_inplace (GString *quoted_gstring)
31 {
32+ char *quoted_string = quoted_gstring->str;
33 char *src, *dst;
34
35 src = quoted_string + 1;
36@@ -658,10 +659,11 @@ decode_quoted_string (char *quoted_strin
37 }
38
39 static gboolean
40-decode_rfc5987 (char *encoded_string)
41+decode_rfc5987_inplace (GString *encoded_gstring)
42 {
43 char *q, *decoded;
44 gboolean iso_8859_1 = FALSE;
45+ const char *encoded_string = encoded_gstring->str;
46
47 q = strchr (encoded_string, '\'');
48 if (!q)
49@@ -690,14 +692,7 @@ decode_rfc5987 (char *encoded_string)
50 decoded = utf8;
51 }
52
53- /* If encoded_string was UTF-8, then each 3-character %-escape
54- * will be converted to a single byte, and so decoded is
55- * shorter than encoded_string. If encoded_string was
56- * iso-8859-1, then each 3-character %-escape will be
57- * converted into at most 2 bytes in UTF-8, and so it's still
58- * shorter.
59- */
60- strcpy (encoded_string, decoded);
61+ g_string_assign (encoded_gstring, decoded);
62 g_free (decoded);
63 return TRUE;
64 }
65@@ -707,15 +702,17 @@ parse_param_list (const char *header, ch
66 {
67 GHashTable *params;
68 GSList *list, *iter;
69- char *item, *eq, *name_end, *value;
70- gboolean override, duplicated;
71
72 params = g_hash_table_new_full (soup_str_case_hash,
73 soup_str_case_equal,
74- g_free, NULL);
75+ g_free, g_free);
76
77 list = parse_list (header, delim);
78 for (iter = list; iter; iter = iter->next) {
79+ char *item, *eq, *name_end;
80+ gboolean override, duplicated;
81+ GString *parsed_value = NULL;
82+
83 item = iter->data;
84 override = FALSE;
85
86@@ -730,19 +727,19 @@ parse_param_list (const char *header, ch
87
88 *name_end = '\0';
89
90- value = (char *)skip_lws (eq + 1);
91+ parsed_value = g_string_new ((char *)skip_lws (eq + 1));
92
93 if (name_end[-1] == '*' && name_end > item + 1) {
94 name_end[-1] = '\0';
95- if (!decode_rfc5987 (value)) {
96+ if (!decode_rfc5987_inplace (parsed_value)) {
97+ g_string_free (parsed_value, TRUE);
98 g_free (item);
99 continue;
100 }
101 override = TRUE;
102- } else if (*value == '"')
103- decode_quoted_string (value);
104- } else
105- value = NULL;
106+ } else if (parsed_value->str[0] == '"')
107+ decode_quoted_string_inplace (parsed_value);
108+ }
109
110 duplicated = g_hash_table_lookup_extended (params, item, NULL, NULL);
111
112@@ -750,11 +747,16 @@ parse_param_list (const char *header, ch
113 soup_header_free_param_list (params);
114 params = NULL;
115 g_slist_foreach (iter, (GFunc)g_free, NULL);
116+ if (parsed_value)
117+ g_string_free (parsed_value, TRUE);
118 break;
119- } else if (override || !duplicated)
120- g_hash_table_replace (params, item, value);
121- else
122+ } else if (override || !duplicated) {
123+ g_hash_table_replace (params, item, parsed_value ? g_string_free (parsed_value, FALSE) : NULL);
124+ } else {
125+ if (parsed_value)
126+ g_string_free (parsed_value, TRUE);
127 g_free (item);
128+ }
129 }
130
131 g_slist_free (list);
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-2.patch
new file mode 100644
index 0000000000..19b1872866
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52531-2.patch
@@ -0,0 +1,36 @@
1From 825fda3425546847b42ad5270544e9388ff349fe Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 27 Aug 2024 13:52:08 -0500
4Subject: [PATCH 2/2] tests: Add test for passing invalid UTF-8 to
5 soup_header_parse_semi_param_list()
6
7Upstream-Status: Backport [import from ubuntu https://git.launchpad.net/ubuntu/+source/libsoup2.4/tree/debian/patches/CVE-2024-52531-2.patch?h=ubuntu/jammy-security
8Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/825fda3425546847b42ad5270544e9388ff349fe]
9CVE: CVE-2024-52531
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 tests/header-parsing-test.c | 11 +++++++++++
13 1 file changed, 11 insertions(+)
14
15Index: libsoup2.4-2.74.2/tests/header-parsing-test.c
16===================================================================
17--- libsoup2.4-2.74.2.orig/tests/header-parsing-test.c
18+++ libsoup2.4-2.74.2/tests/header-parsing-test.c
19@@ -825,6 +825,17 @@ static struct ParamListTest {
20 { "filename", "t\xC3\xA9st.txt" },
21 },
22 },
23+
24+ /* This tests invalid UTF-8 data which *should* never be passed here but it was designed to be robust against it. */
25+ { TRUE,
26+ "invalid*=\x69\x27\x27\x93\x93\x93\x93\xff\x61\x61\x61\x61\x61\x61\x61\x62\x63\x64\x65\x0a; filename*=iso-8859-1''\x69\x27\x27\x93\x93\x93\x93\xff\x61\x61\x61\x61\x61\x61\x61\x62\x63\x64\x65\x0a; foo",
27+ {
28+ { "filename", "i''\302\223\302\223\302\223\302\223\303\277aaaaaaabcde" },
29+ { "invalid", "\302\223\302\223\302\223\302\223\303\277aaaaaaabcde" },
30+ { "foo", NULL },
31+
32+ },
33+ }
34 };
35 static const int num_paramlisttests = G_N_ELEMENTS (paramlisttests);
36
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-1.patch
new file mode 100644
index 0000000000..68eb942762
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-1.patch
@@ -0,0 +1,36 @@
1From 6adc0e3eb74c257ed4e2a23eb4b2774fdb0d67be Mon Sep 17 00:00:00 2001
2From: Ignacio Casal Quinteiro <qignacio@amazon.com>
3Date: Wed, 11 Sep 2024 11:52:11 +0200
4Subject: [PATCH] websocket: process the frame as soon as we read data
5
6Otherwise we can enter in a read loop because we were not
7validating the data until the all the data was read.
8
9Fixes #391
10
11Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/6adc0e3eb74c257ed4e2a23eb4b2774fdb0d67be]
12CVE: CVE-2024-52532
13Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
14---
15 libsoup/soup-websocket-connection.c | 4 ++--
16 1 file changed, 2 insertions(+), 2 deletions(-)
17
18diff --git a/libsoup/soup-websocket-connection.c b/libsoup/soup-websocket-connection.c
19index a4095e1..9d5f4f8 100644
20--- a/libsoup/soup-websocket-connection.c
21+++ b/libsoup/soup-websocket-connection.c
22@@ -1140,9 +1140,9 @@ soup_websocket_connection_read (SoupWebsocketConnection *self)
23 }
24
25 pv->incoming->len = len + count;
26- } while (count > 0);
27
28- process_incoming (self);
29+ process_incoming (self);
30+ } while (count > 0 && !pv->close_sent && !pv->io_closing);
31
32 if (end) {
33 if (!pv->close_sent || !pv->close_received) {
34--
352.25.1
36
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-2.patch
new file mode 100644
index 0000000000..e4e2d03d58
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-2.patch
@@ -0,0 +1,42 @@
1From 29b96fab2512666d7241e46c98cc45b60b795c0c Mon Sep 17 00:00:00 2001
2From: Ignacio Casal Quinteiro <qignacio@amazon.com>
3Date: Wed, 2 Oct 2024 11:17:19 +0200
4Subject: [PATCH] websocket-test: disconnect error copy after the test ends
5
6Otherwise the server will have already sent a few more wrong
7bytes and the client will continue getting errors to copy
8but the error is already != NULL and it will assert
9
10Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/29b96fab2512666d7241e46c98cc45b60b795c0c]
11CVE: CVE-2024-52532
12Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
13---
14 tests/websocket-test.c | 4 +++-
15 1 file changed, 3 insertions(+), 1 deletion(-)
16
17diff --git a/tests/websocket-test.c b/tests/websocket-test.c
18index 06c443bb5..6a48c1f9b 100644
19--- a/tests/websocket-test.c
20+++ b/tests/websocket-test.c
21@@ -1539,8 +1539,9 @@ test_receive_invalid_encode_length_64 (Test *test,
22 GError *error = NULL;
23 InvalidEncodeLengthTest context = { test, NULL };
24 guint i;
25+ guint error_id;
26
27- g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
28+ error_id = g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
29 g_signal_connect (test->client, "message", G_CALLBACK (on_binary_message), &received);
30
31 /* We use 127(\x7f) as payload length with 65535 extended length */
32@@ -1553,6 +1554,7 @@ test_receive_invalid_encode_length_64 (Test *test,
33 WAIT_UNTIL (error != NULL || received != NULL);
34 g_assert_error (error, SOUP_WEBSOCKET_ERROR, SOUP_WEBSOCKET_CLOSE_PROTOCOL_ERROR);
35 g_clear_error (&error);
36+ g_signal_handler_disconnect (test->client, error_id);
37 g_assert_null (received);
38
39 g_thread_join (thread);
40--
41GitLab
42
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-3.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-3.patch
new file mode 100644
index 0000000000..edcca86e8c
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2024-52532-3.patch
@@ -0,0 +1,46 @@
1From 4c9e75c6676a37b6485620c332e568e1a3f530ff Mon Sep 17 00:00:00 2001
2From: Simon McVittie <smcv@debian.org>
3Date: Wed, 13 Nov 2024 14:14:23 +0000
4Subject: [PATCH] websocket-test: Disconnect error signal in another place
5
6This is the same change as commit 29b96fab "websocket-test: disconnect
7error copy after the test ends", and is done for the same reason, but
8replicating it into a different function.
9
10Fixes: 6adc0e3e "websocket: process the frame as soon as we read data"
11Resolves: https://gitlab.gnome.org/GNOME/libsoup/-/issues/399
12Signed-off-by: Simon McVittie <smcv@debian.org>
13
14Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/4c9e75c6676a37b6485620c332e568e1a3f530ff]
15CVE: CVE-2024-52532
16Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
17---
18 tests/websocket-test.c | 4 +++-
19 1 file changed, 3 insertions(+), 1 deletion(-)
20
21diff --git a/tests/websocket-test.c b/tests/websocket-test.c
22index 6a48c1f9..723f2857 100644
23--- a/tests/websocket-test.c
24+++ b/tests/websocket-test.c
25@@ -1508,8 +1508,9 @@ test_receive_invalid_encode_length_16 (Test *test,
26 GError *error = NULL;
27 InvalidEncodeLengthTest context = { test, NULL };
28 guint i;
29+ guint error_id;
30
31- g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
32+ error_id = g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
33 g_signal_connect (test->client, "message", G_CALLBACK (on_binary_message), &received);
34
35 /* We use 126(~) as payload length with 125 extended length */
36@@ -1522,6 +1523,7 @@ test_receive_invalid_encode_length_16 (Test *test,
37 WAIT_UNTIL (error != NULL || received != NULL);
38 g_assert_error (error, SOUP_WEBSOCKET_ERROR, SOUP_WEBSOCKET_CLOSE_PROTOCOL_ERROR);
39 g_clear_error (&error);
40+ g_signal_handler_disconnect (test->client, error_id);
41 g_assert_null (received);
42
43 g_thread_join (thread);
44--
45GitLab
46
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-2784.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-2784.patch
new file mode 100644
index 0000000000..106f907168
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-2784.patch
@@ -0,0 +1,56 @@
1From 2eacbd762332795e00692ddab2515c6da23198d3 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Mon, 12 May 2025 14:06:41 +0800
4Subject: [PATCH] sniffer: Add better coverage of skip_insignificant_space()
5
6CVE: CVE-2025-2784
7Upstream-Status: Backport
8[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/435/diffs?commit_id=242a10fbb12dbdc12d254bd8fc8669a0ac055304;
9 https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/442/diffs?commit_id=c415ad0b6771992e66c70edf373566c6e247089d]
10
11Test code is not added since it uses some functions not defined in
12version 2.74. These tests are not used now, so just ignore them.
13
14Signed-off-by: Changqing Li <changqing.li@windriver.com>
15---
16 libsoup/soup-content-sniffer.c | 9 +++----
17 1 files changed, 3 insertions(+), 4 deletions(-)
18
19diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
20index 5f2896e..9554636 100644
21--- a/libsoup/soup-content-sniffer.c
22+++ b/libsoup/soup-content-sniffer.c
23@@ -612,8 +612,10 @@ sniff_text_or_binary (SoupContentSniffer *sniffer, SoupBuffer *buffer)
24 }
25
26 static gboolean
27-skip_insignificant_space (const char *resource, int *pos, int resource_length)
28+skip_insignificant_space (const char *resource, gsize *pos, gsize resource_length)
29 {
30+ if (*pos >= resource_length)
31+ return TRUE;
32 while ((resource[*pos] == '\x09') ||
33 (resource[*pos] == '\x20') ||
34 (resource[*pos] == '\x0A') ||
35@@ -632,7 +634,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
36 {
37 const char *resource = (const char *)buffer->data;
38 int resource_length = MIN (512, buffer->length);
39- int pos = 0;
40+ gsize pos = 0;
41
42 if (resource_length < 3)
43 goto text_html;
44@@ -642,9 +644,6 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
45 pos = 3;
46
47 look_for_tag:
48- if (pos > resource_length)
49- goto text_html;
50-
51 if (skip_insignificant_space (resource, &pos, resource_length))
52 goto text_html;
53
54--
552.34.1
56
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32050.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32050.patch
new file mode 100644
index 0000000000..c032846ef0
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32050.patch
@@ -0,0 +1,29 @@
1From 5709dfffb6fdc5b66ce001bf82a755ad8ad1d992 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Mon, 28 Oct 2024 12:29:48 -0500
4Subject: [PATCH] Fix using int instead of size_t for strcspn return
5
6CVE: CVE-2025-32050
7Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/9bb0a55de55c6940ced811a64fbca82fe93a9323]
8
9Signed-off-by: Changqing Li <changqing.li@windriver.com>
10---
11 libsoup/soup-headers.c | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
15index 9707ca0..67905b2 100644
16--- a/libsoup/soup-headers.c
17+++ b/libsoup/soup-headers.c
18@@ -902,7 +902,7 @@ append_param_quoted (GString *string,
19 const char *name,
20 const char *value)
21 {
22- int len;
23+ gsize len;
24
25 g_string_append (string, name);
26 g_string_append (string, "=\"");
27--
282.34.1
29
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32052.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32052.patch
new file mode 100644
index 0000000000..34bc8113a4
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32052.patch
@@ -0,0 +1,32 @@
1From f4a67a9a3033586edaee715d40d5992e02d32893 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Sat, 16 Nov 2024 12:07:30 -0600
4Subject: [PATCH] Fix heap buffer overflow in soup_content_sniffer_sniff
5
6Co-Author: Ar Jun <pkillarjun@protonmail.com>
7
8CVE: CVE-2025-32052
9Upstream-Status: Backport
10[https://gitlab.gnome.org/GNOME/libsoup/-/commit/f182429e5b1fc034050510da20c93256c4fa9652#500da7cfde649872c49169be34b03a1c42a53ddb]
11
12Signed-off-by: Changqing Li <changqing.li@windriver.com>
13---
14 libsoup/soup-content-sniffer.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
18index 9554636..eac9e7b 100644
19--- a/libsoup/soup-content-sniffer.c
20+++ b/libsoup/soup-content-sniffer.c
21@@ -504,7 +504,7 @@ sniff_unknown (SoupContentSniffer *sniffer, SoupBuffer *buffer,
22 guint index_pattern = 0;
23 gboolean skip_row = FALSE;
24
25- while ((index_stream < resource_length) &&
26+ while ((index_stream < resource_length - 1) &&
27 (index_pattern <= type_row->pattern_length)) {
28 /* Skip insignificant white space ("WS" in the spec) */
29 if (type_row->pattern[index_pattern] == ' ') {
30--
312.34.1
32
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32053.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32053.patch
new file mode 100644
index 0000000000..0d829d6200
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32053.patch
@@ -0,0 +1,39 @@
1From d9bcffd6cd5e8ec32889a594f7348d67a5101b3a Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Mon, 12 May 2025 13:58:42 +0800
4Subject: [PATCH] Fix heap buffer overflow in
5 soup-content-sniffer.c:sniff_feed_or_html()
6
7CVE: CVE-2025-32053
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/eaed42ca8d40cd9ab63764e3d63641180505f40a]
9
10Signed-off-by: Changqing Li <changqing.li@windriver.com>
11---
12 libsoup/soup-content-sniffer.c | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
16index 967ec61..5f2896e 100644
17--- a/libsoup/soup-content-sniffer.c
18+++ b/libsoup/soup-content-sniffer.c
19@@ -620,7 +620,7 @@ skip_insignificant_space (const char *resource, int *pos, int resource_length)
20 (resource[*pos] == '\x0D')) {
21 *pos = *pos + 1;
22
23- if (*pos > resource_length)
24+ if (*pos >= resource_length)
25 return TRUE;
26 }
27
28@@ -682,7 +682,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
29 do {
30 pos++;
31
32- if (pos > resource_length)
33+ if ((pos + 1) > resource_length)
34 goto text_html;
35 } while (resource[pos] != '>');
36
37--
382.34.1
39
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-1.patch
new file mode 100644
index 0000000000..916a41a71f
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-1.patch
@@ -0,0 +1,61 @@
1From 1f509f31b6f8420a3661c3f990424ab7b9164931 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 11 Feb 2025 14:36:26 -0600
4Subject: [PATCH] headers: Handle parsing edge case
5
6This version number is specifically crafted to pass sanity checks allowing it to go one byte out of bounds.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/1f509f31b6f8420a3661c3f990424ab7b9164931]
9CVE: CVE-2025-32906 #Dependency Patch
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/soup-headers.c | 2 +-
13 tests/header-parsing-test.c | 12 ++++++++++++
14 2 files changed, 13 insertions(+), 1 deletion(-)
15
16diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
17index 85385cea..9d6d00a3 100644
18--- a/libsoup/soup-headers.c
19+++ b/libsoup/soup-headers.c
20@@ -225,7 +225,7 @@ soup_headers_parse_request (const char *str,
21 !g_ascii_isdigit (version[5]))
22 return SOUP_STATUS_BAD_REQUEST;
23 major_version = strtoul (version + 5, &p, 10);
24- if (*p != '.' || !g_ascii_isdigit (p[1]))
25+ if (p + 1 >= str + len || *p != '.' || !g_ascii_isdigit (p[1]))
26 return SOUP_STATUS_BAD_REQUEST;
27 minor_version = strtoul (p + 1, &p, 10);
28 version_end = p;
29diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
30index 07ea2866..10ddb684 100644
31--- a/tests/header-parsing-test.c
32+++ b/tests/header-parsing-test.c
33@@ -6,6 +6,10 @@ typedef struct {
34 const char *name, *value;
35 } Header;
36
37+static char unterminated_http_version[] = {
38+ 'G','E','T',' ','/',' ','H','T','T','P','/','1', '0', '0', '.'
39+};
40+
41 static struct RequestTest {
42 const char *description;
43 const char *bugref;
44@@ -383,6 +387,14 @@ static struct RequestTest {
45 { { NULL } }
46 },
47
48+ /* This couldn't be a C string as going one byte over would have been safe. */
49+ { "Long HTTP version terminating at missing minor version", "https://gitlab.gnome.org/GNOME/libsoup/-/issues/404",
50+ unterminated_http_version, sizeof (unterminated_http_version),
51+ SOUP_STATUS_BAD_REQUEST,
52+ NULL, NULL, -1,
53+ { { NULL } }
54+ },
55+
56 { "Non-HTTP request", NULL,
57 "GET / SOUP/1.1\r\nHost: example.com\r\n", -1,
58 SOUP_STATUS_BAD_REQUEST,
59--
60GitLab
61
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-2.patch
new file mode 100644
index 0000000000..5baad15648
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32906-2.patch
@@ -0,0 +1,83 @@
1From af5b9a4a3945c52b940d5ac181ef51bb12011f1f Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 12 Feb 2025 11:30:02 -0600
4Subject: [PATCH] headers: Handle parsing only newlines
5
6Closes #404
7Closes #407
8
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/af5b9a4a3945c52b940d5ac181ef51bb12011f1f]
10CVE: CVE-2025-32906
11Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
12---
13 libsoup/soup-headers.c | 4 ++--
14 tests/header-parsing-test.c | 13 ++++++++++++-
15 2 files changed, 14 insertions(+), 3 deletions(-)
16
17diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
18index 9d6d00a3..52ef2ece 100644
19--- a/libsoup/soup-headers.c
20+++ b/libsoup/soup-headers.c
21@@ -186,7 +186,7 @@ soup_headers_parse_request (const char *str,
22 /* RFC 2616 4.1 "servers SHOULD ignore any empty line(s)
23 * received where a Request-Line is expected."
24 */
25- while ((*str == '\r' || *str == '\n') && len > 0) {
26+ while (len > 0 && (*str == '\r' || *str == '\n')) {
27 str++;
28 len--;
29 }
30@@ -371,7 +371,7 @@ soup_headers_parse_response (const char *str,
31 * after a response, which we then see prepended to the next
32 * response on that connection.
33 */
34- while ((*str == '\r' || *str == '\n') && len > 0) {
35+ while (len > 0 && (*str == '\r' || *str == '\n')) {
36 str++;
37 len--;
38 }
39diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
40index 10ddb684..4faafbd6 100644
41--- a/tests/header-parsing-test.c
42+++ b/tests/header-parsing-test.c
43@@ -6,10 +6,15 @@ typedef struct {
44 const char *name, *value;
45 } Header;
46
47+/* These are not C strings to ensure going one byte over is not safe. */
48 static char unterminated_http_version[] = {
49 'G','E','T',' ','/',' ','H','T','T','P','/','1', '0', '0', '.'
50 };
51
52+static char only_newlines[] = {
53+ '\n', '\n', '\n', '\n'
54+};
55+
56 static struct RequestTest {
57 const char *description;
58 const char *bugref;
59@@ -387,7 +392,6 @@ static struct RequestTest {
60 { { NULL } }
61 },
62
63- /* This couldn't be a C string as going one byte over would have been safe. */
64 { "Long HTTP version terminating at missing minor version", "https://gitlab.gnome.org/GNOME/libsoup/-/issues/404",
65 unterminated_http_version, sizeof (unterminated_http_version),
66 SOUP_STATUS_BAD_REQUEST,
67@@ -457,6 +461,13 @@ static struct RequestTest {
68 SOUP_STATUS_BAD_REQUEST,
69 NULL, NULL, -1,
70 { { NULL } }
71+ },
72+
73+ { "Only newlines", NULL,
74+ only_newlines, sizeof (only_newlines),
75+ SOUP_STATUS_BAD_REQUEST,
76+ NULL, NULL, -1,
77+ { { NULL } }
78 }
79 };
80 static const int num_reqtests = G_N_ELEMENTS (reqtests);
81--
82GitLab
83
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32907.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32907.patch
new file mode 100644
index 0000000000..41dd3ff3f4
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32907.patch
@@ -0,0 +1,39 @@
1From 8158b4084dcba2a233dfcb7359c53ab2840148f7 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 15 Apr 2025 12:17:39 +0200
4Subject: [PATCH 1/2] soup-message-headers: Correct merge of ranges
5
6It had been skipping every second range, which generated an array
7of a lot of insane ranges, causing large memory usage by the server.
8
9Closes #428
10
11Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452>
12
13CVE: CVE-2025-32907
14Upstream-Status: Backport
15[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452/diffs?commit_id=9bb92f7a685e31e10e9e8221d0342280432ce836]
16
17Test part not applied since test codes use some functions not in this
18version
19
20Signed-off-by: Changqing Li <changqing.li@windriver.com>
21---
22 libsoup/soup-message-headers.c | 1 +
23 1 files changed, 1 insertions(+)
24
25diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
26index 78b2455..00b9763 100644
27--- a/libsoup/soup-message-headers.c
28+++ b/libsoup/soup-message-headers.c
29@@ -1024,6 +1024,7 @@ soup_message_headers_get_ranges_internal (SoupMessageHeaders *hdrs,
30 if (cur->start <= prev->end) {
31 prev->end = MAX (prev->end, cur->end);
32 g_array_remove_index (array, i);
33+ i--;
34 }
35 }
36 }
37--
382.34.1
39
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32909.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32909.patch
new file mode 100644
index 0000000000..046f20203f
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32909.patch
@@ -0,0 +1,36 @@
1From ba4c3a6f988beff59e45801ab36067293d24ce92 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 8 Jan 2025 16:30:17 -0600
4Subject: [PATCH] content-sniffer: Handle sniffing resource shorter than 4
5 bytes
6
7Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/ba4c3a6f988beff59e45801ab36067293d24ce92]
8CVE: CVE-2025-32909
9Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
10---
11 libsoup/soup-content-sniffer.c | 7 ++++++-
12 1 file changed, 6 insertions(+), 1 deletion(-)
13
14diff --git a/libsoup/soup-content-sniffer.c b/libsoup/soup-content-sniffer.c
15index 967ec61..a1f23c2 100644
16--- a/libsoup/soup-content-sniffer.c
17+++ b/libsoup/soup-content-sniffer.c
18@@ -227,9 +227,14 @@ sniff_mp4 (SoupContentSniffer *sniffer, SoupBuffer *buffer)
19 {
20 const char *resource = (const char *)buffer->data;
21 guint resource_length = MIN (512, buffer->length);
22- guint32 box_size = *((guint32*)resource);
23+ guint32 box_size;
24 guint i;
25
26+ if (resource_length < sizeof (guint32))
27+ return FALSE;
28+
29+ box_size = *((guint32*)resource);
30+
31 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
32 box_size = ((box_size >> 24) |
33 ((box_size << 8) & 0x00FF0000) |
34--
352.25.1
36
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch
new file mode 100644
index 0000000000..847c76c2b7
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch
@@ -0,0 +1,36 @@
1From: Patrick Griffis <pgriffis@igalia.com>
2Date: Sun, 8 Dec 2024 20:00:35 -0600
3Subject: auth-digest: Handle missing realm in authenticate header
4
5(cherry picked from commit e40df6d48a1cbab56f5d15016cc861a503423cfe)
6
7Upstream-Status: Backport [import from debian https://salsa.debian.org/gnome-team/libsoup/-/blob/debian/bullseye/debian/patches/CVE-2025-32910-1.patch?ref_type=heads
8Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/e40df6d48a1cbab56f5d15016cc861a503423cfe]
9CVE: CVE-2025-32910
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11
12Remove test code for fixing do_compile failure of libsoup-2.4, test codes include
13new type added in 3.x version
14../libsoup-2.74.3/tests/auth-test.c:1554:39: error: unknown type name 'SoupServerMessage'; did you mean 'SoupServerClass'?
15 1554 | SoupServerMessage *msg,
16 | ^~~~~~~~~~~~~~~~~
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-auth-digest.c | 3 +++
21 1 files changed, 3 insertions(+)
22
23diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
24index e8ba990..263a15a 100644
25--- a/libsoup/soup-auth-digest.c
26+++ b/libsoup/soup-auth-digest.c
27@@ -142,6 +142,9 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
28 guint qop_options;
29 gboolean ok = TRUE;
30
31+ if (!soup_auth_get_realm (auth))
32+ return FALSE;
33+
34 g_free (priv->domain);
35 g_free (priv->nonce);
36 g_free (priv->opaque);
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch
new file mode 100644
index 0000000000..a2168177a4
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch
@@ -0,0 +1,106 @@
1From: Patrick Griffis <pgriffis@igalia.com>
2Date: Thu, 26 Dec 2024 18:18:35 -0600
3Subject: auth-digest: Handle missing nonce
4
5(cherry picked from commit 405a8a34597a44bd58c4759e7d5e23f02c3b556a)
6
7Upstream-Status: Backport [import from debian https://salsa.debian.org/gnome-team/libsoup/-/blob/debian/bullseye/debian/patches/CVE-2025-32910-2.patch?ref_type=heads
8Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/405a8a34597a44bd58c4759e7d5e23f02c3b556a]
9CVE: CVE-2025-32910
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11
12Remove test code for fixing do_compile failure of libsoup-2.4, test codes include
13new type added in 3.x version
14../libsoup-2.74.3/tests/auth-test.c:1554:39: error: unknown type name 'SoupServerMessage'; did you mean 'SoupServerClass'?
15 1554 | SoupServerMessage *msg,
16 | ^~~~~~~~~~~~~~~~~
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-auth-digest.c | 45 +++++++++++++++++++++++++++++++++++----------
21 1 files changed, 35 insertions(+), 10 deletions(-)
22
23diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
24index 263a15a..393adb6 100644
25--- a/libsoup/soup-auth-digest.c
26+++ b/libsoup/soup-auth-digest.c
27@@ -132,6 +132,19 @@ soup_auth_digest_get_qop (SoupAuthDigestQop qop)
28 return g_string_free (out, FALSE);
29 }
30
31+static gboolean
32+validate_params (SoupAuthDigest *auth_digest)
33+{
34+ SoupAuthDigestPrivate *priv = soup_auth_digest_get_instance_private (auth_digest);
35+
36+ if (priv->qop || priv->algorithm == SOUP_AUTH_DIGEST_ALGORITHM_MD5_SESS) {
37+ if (!priv->nonce)
38+ return FALSE;
39+ }
40+
41+ return TRUE;
42+}
43+
44 static gboolean
45 soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
46 GHashTable *auth_params)
47@@ -169,16 +182,21 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
48 if (priv->algorithm == -1)
49 ok = FALSE;
50
51- stale = g_hash_table_lookup (auth_params, "stale");
52- if (stale && !g_ascii_strcasecmp (stale, "TRUE") && *priv->hex_urp)
53- recompute_hex_a1 (priv);
54- else {
55- g_free (priv->user);
56- priv->user = NULL;
57- g_free (priv->cnonce);
58- priv->cnonce = NULL;
59- memset (priv->hex_urp, 0, sizeof (priv->hex_urp));
60- memset (priv->hex_a1, 0, sizeof (priv->hex_a1));
61+ if (!validate_params (auth_digest))
62+ ok = FALSE;
63+
64+ if (ok) {
65+ stale = g_hash_table_lookup (auth_params, "stale");
66+ if (stale && !g_ascii_strcasecmp (stale, "TRUE") && *priv->hex_urp)
67+ recompute_hex_a1 (priv);
68+ else {
69+ g_free (priv->user);
70+ priv->user = NULL;
71+ g_free (priv->cnonce);
72+ priv->cnonce = NULL;
73+ memset (priv->hex_urp, 0, sizeof (priv->hex_urp));
74+ memset (priv->hex_a1, 0, sizeof (priv->hex_a1));
75+ }
76 }
77
78 return ok;
79@@ -269,6 +287,8 @@ soup_auth_digest_compute_hex_a1 (const char *hex_urp,
80
81 /* In MD5-sess, A1 is hex_urp:nonce:cnonce */
82
83+ g_assert (nonce && cnonce);
84+
85 checksum = g_checksum_new (G_CHECKSUM_MD5);
86 g_checksum_update (checksum, (guchar *)hex_urp, strlen (hex_urp));
87 g_checksum_update (checksum, (guchar *)":", 1);
88@@ -359,6 +379,8 @@ soup_auth_digest_compute_response (const char *method,
89 if (qop) {
90 char tmp[9];
91
92+ g_assert (cnonce);
93+
94 g_snprintf (tmp, 9, "%.8x", nc);
95 g_checksum_update (checksum, (guchar *)tmp, strlen (tmp));
96 g_checksum_update (checksum, (guchar *)":", 1);
97@@ -422,6 +444,9 @@ soup_auth_digest_get_authorization (SoupAuth *auth, SoupMessage *msg)
98 g_return_val_if_fail (uri != NULL, NULL);
99 url = soup_uri_to_string (uri, TRUE);
100
101+ g_assert (priv->nonce);
102+ g_assert (!priv->qop || priv->cnonce);
103+
104 soup_auth_digest_compute_response (msg->method, url, priv->hex_a1,
105 priv->qop, priv->nonce,
106 priv->cnonce, priv->nc,
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch
new file mode 100644
index 0000000000..ab0f650804
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch
@@ -0,0 +1,26 @@
1From: Patrick Griffis <pgriffis@igalia.com>
2Date: Fri, 27 Dec 2024 13:52:52 -0600
3Subject: auth-digest: Fix leak
4
5(cherry picked from commit ea16eeacb052e423eb5c3b0b705e5eab34b13832)
6
7Upstream-Status: Backport [import from debian https://salsa.debian.org/gnome-team/libsoup/-/blob/debian/bullseye/debian/patches/CVE-2025-32910-3.patch?ref_type=heads
8Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/ea16eeacb052e423eb5c3b0b705e5eab34b13832]
9CVE: CVE-2025-32910
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/soup-auth-digest.c | 1 +
13 1 file changed, 1 insertion(+)
14
15diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
16index 393adb6..a1db188 100644
17--- a/libsoup/soup-auth-digest.c
18+++ b/libsoup/soup-auth-digest.c
19@@ -66,6 +66,7 @@ soup_auth_digest_finalize (GObject *object)
20 g_free (priv->nonce);
21 g_free (priv->domain);
22 g_free (priv->cnonce);
23+ g_free (priv->opaque);
24
25 memset (priv->hex_urp, 0, sizeof (priv->hex_urp));
26 memset (priv->hex_a1, 0, sizeof (priv->hex_a1));
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-1.patch
new file mode 100644
index 0000000000..4652635294
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-1.patch
@@ -0,0 +1,72 @@
1From 7b4ef0e004ece3a308ccfaa714c284f4c96ade34 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Fri, 27 Dec 2024 17:53:50 -0600
4Subject: [PATCH] soup_message_headers_get_content_disposition: Fix NULL deref
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/7b4ef0e004ece3a308ccfaa714c284f4c96ade34]
7CVE: CVE-2025-32911 CVE-2025-32913 #Dependency Patch
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9---
10 libsoup/soup-message-headers.c | 13 +++++++++----
11 tests/header-parsing-test.c | 14 ++++++++++++++
12 2 files changed, 23 insertions(+), 4 deletions(-)
13
14diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
15index 56cc1e9d..04f4c302 100644
16--- a/libsoup/soup-message-headers.c
17+++ b/libsoup/soup-message-headers.c
18@@ -1660,10 +1660,15 @@ soup_message_headers_get_content_disposition (SoupMessageHeaders *hdrs,
19 */
20 if (params && g_hash_table_lookup_extended (*params, "filename",
21 &orig_key, &orig_value)) {
22- char *filename = strrchr (orig_value, '/');
23-
24- if (filename)
25- g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
26+ if (orig_value) {
27+ char *filename = strrchr (orig_value, '/');
28+
29+ if (filename)
30+ g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
31+ } else {
32+ /* filename with no value isn't valid. */
33+ g_hash_table_remove (*params, "filename");
34+ }
35 }
36 return TRUE;
37 }
38diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
39index 5e423d2b..d0b360c8 100644
40--- a/tests/header-parsing-test.c
41+++ b/tests/header-parsing-test.c
42@@ -1039,6 +1039,7 @@ do_param_list_tests (void)
43 #define RFC5987_TEST_HEADER_FALLBACK "attachment; filename*=Unknown''t%FF%FF%FFst.txt; filename=\"test.txt\""
44 #define RFC5987_TEST_HEADER_NO_TYPE "filename=\"test.txt\""
45 #define RFC5987_TEST_HEADER_NO_TYPE_2 "filename=\"test.txt\"; foo=bar"
46+#define RFC5987_TEST_HEADER_EMPTY_FILENAME ";filename"
47
48 static void
49 do_content_disposition_tests (void)
50@@ -1139,6 +1140,19 @@ do_content_disposition_tests (void)
51 g_assert_cmpstr (parameter2, ==, "bar");
52 g_hash_table_destroy (params);
53
54+ /* Empty filename */
55+ soup_message_headers_clear (hdrs);
56+ soup_message_headers_append (hdrs, "Content-Disposition",
57+ RFC5987_TEST_HEADER_EMPTY_FILENAME);
58+ if (!soup_message_headers_get_content_disposition (hdrs,
59+ &disposition,
60+ &params)) {
61+ soup_test_assert (FALSE, "empty filename decoding FAILED");
62+ return;
63+ }
64+ g_assert_false (g_hash_table_contains (params, "filename"));
65+ g_hash_table_destroy (params);
66+
67 soup_message_headers_free (hdrs);
68
69 /* Ensure that soup-multipart always quotes filename */
70--
71GitLab
72
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-2.patch
new file mode 100644
index 0000000000..5d9f33c736
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32911_CVE-2025-32913-2.patch
@@ -0,0 +1,44 @@
1From f4a761fb66512fff59798765e8ac5b9e57dceef0 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Fri, 27 Dec 2024 18:00:39 -0600
4Subject: [PATCH] soup_message_headers_get_content_disposition: strdup
5 truncated filenames
6
7This table frees the strings it contains.
8
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/f4a761fb66512fff59798765e8ac5b9e57dceef0]
10CVE: CVE-2025-32911 CVE-2025-32913
11Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
12---
13 libsoup/soup-message-headers.c | 2 +-
14 tests/header-parsing-test.c | 1 +
15 2 files changed, 2 insertions(+), 1 deletion(-)
16
17diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
18index 04f4c302..ee7a3cb1 100644
19--- a/libsoup/soup-message-headers.c
20+++ b/libsoup/soup-message-headers.c
21@@ -1664,7 +1664,7 @@ soup_message_headers_get_content_disposition (SoupMessageHeaders *hdrs,
22 char *filename = strrchr (orig_value, '/');
23
24 if (filename)
25- g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
26+ g_hash_table_insert (*params, g_strdup (orig_key), g_strdup (filename + 1));
27 } else {
28 /* filename with no value isn't valid. */
29 g_hash_table_remove (*params, "filename");
30diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
31index d0b360c8..07ea2866 100644
32--- a/tests/header-parsing-test.c
33+++ b/tests/header-parsing-test.c
34@@ -1150,6 +1150,7 @@ do_content_disposition_tests (void)
35 soup_test_assert (FALSE, "empty filename decoding FAILED");
36 return;
37 }
38+ g_free (disposition);
39 g_assert_false (g_hash_table_contains (params, "filename"));
40 g_hash_table_destroy (params);
41
42--
43GitLab
44
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-1.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-1.patch
new file mode 100644
index 0000000000..906a889c13
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-1.patch
@@ -0,0 +1,33 @@
1From cd077513f267e43ce4b659eb18a1734d8a369992 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 5 Feb 2025 14:03:05 -0600
4Subject: [PATCH 1/2] auth-digest: Handle missing nonce
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/cd077513f267e43ce4b659eb18a1734d8a369992]
7CVE: CVE-2025-32912
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9
10The test codes is based on CVE-2025-32910, test code in CVE-2025-32910
11is removed for fixing do_compile failure. So also remove this test code
12
13Signed-off-by: Changqing Li <changqing.li@windriver.com>
14---
15 libsoup/soup-auth-digest.c | 2 +-
16 1 files changed, 1 insertions(+), 1 deletion(-)
17
18diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
19index a1db188..f0edb81 100644
20--- a/libsoup/soup-auth-digest.c
21+++ b/libsoup/soup-auth-digest.c
22@@ -156,7 +156,7 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
23 guint qop_options;
24 gboolean ok = TRUE;
25
26- if (!soup_auth_get_realm (auth))
27+ if (!soup_auth_get_realm (auth) || !g_hash_table_contains (auth_params, "nonce"))
28 return FALSE;
29
30 g_free (priv->domain);
31--
322.25.1
33
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-2.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-2.patch
new file mode 100644
index 0000000000..4898068115
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32912-2.patch
@@ -0,0 +1,30 @@
1From 910ebdcd3dd82386717a201c13c834f3a63eed7f Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Sat, 8 Feb 2025 12:30:13 -0600
4Subject: [PATCH 2/2] digest-auth: Handle NULL nonce
5
6`contains` only handles a missing nonce, `lookup` handles both missing and empty.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/910ebdcd3dd82386717a201c13c834f3a63eed7f]
9CVE: CVE-2025-32912
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/soup-auth-digest.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
16index f0edb81..c49ffd9 100644
17--- a/libsoup/soup-auth-digest.c
18+++ b/libsoup/soup-auth-digest.c
19@@ -156,7 +156,7 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
20 guint qop_options;
21 gboolean ok = TRUE;
22
23- if (!soup_auth_get_realm (auth) || !g_hash_table_contains (auth_params, "nonce"))
24+ if (!soup_auth_get_realm (auth) || !g_hash_table_lookup (auth_params, "nonce"))
25 return FALSE;
26
27 g_free (priv->domain);
28--
292.25.1
30
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32914.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32914.patch
new file mode 100644
index 0000000000..e6d4607b5e
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-32914.patch
@@ -0,0 +1,137 @@
1From: Milan Crha <mcrha@redhat.com>
2Date: Tue, 15 Apr 2025 09:03:00 +0200
3Subject: multipart: Fix read out of buffer bounds under
4 soup_multipart_new_from_message()
5
6This is CVE-2025-32914, special crafted input can cause read out of buffer bounds
7of the body argument.
8
9Closes #436
10
11(cherry picked from commit 5bfcf8157597f2d327050114fb37ff600004dbcf)
12
13Upstream-Status: Backport [import from debian https://salsa.debian.org/gnome-team/libsoup/-/blob/debian/bullseye/debian/patches/CVE-2025-32914.patch?ref_type=heads
14Upstream commit https://gitlab.gnome.org/GNOME/libsoup/-/commit/5bfcf8157597f2d327050114fb37ff600004dbcf]
15CVE: CVE-2025-32914
16Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
17---
18 libsoup/soup-multipart.c | 2 +-
19 tests/multipart-test.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++
20 2 files changed, 86 insertions(+), 1 deletion(-)
21
22diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
23index a7e550f..dd93973 100644
24--- a/libsoup/soup-multipart.c
25+++ b/libsoup/soup-multipart.c
26@@ -181,7 +181,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
27 return NULL;
28 }
29
30- split = strstr (start, "\r\n\r\n");
31+ split = g_strstr_len (start, body_end - start, "\r\n\r\n");
32 if (!split || split > end) {
33 soup_multipart_free (multipart);
34 soup_buffer_free (flattened);
35diff --git a/tests/multipart-test.c b/tests/multipart-test.c
36index 64a5ebf..834b181 100644
37--- a/tests/multipart-test.c
38+++ b/tests/multipart-test.c
39@@ -479,6 +479,89 @@ test_multipart (gconstpointer data)
40 g_main_loop_unref (loop);
41 }
42
43+static void
44+test_multipart_bounds_good (void)
45+{
46+ #define TEXT "line1\r\nline2"
47+ SoupMultipart *multipart;
48+ SoupMessageHeaders *headers, *set_headers = NULL;
49+ //GBytes *bytes, *set_bytes = NULL;
50+ GBytes *bytes;
51+ const char *raw_data = "--123\r\nContent-Type: text/plain;\r\n\r\n" TEXT "\r\n--123--\r\n";
52+ gboolean success;
53+ SoupMessageBody *body = soup_message_body_new ();
54+ SoupBuffer *set_buffer = NULL;
55+ gconstpointer data;
56+ gsize size;
57+
58+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
59+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
60+
61+ bytes = g_bytes_new (raw_data, strlen (raw_data));
62+
63+ data = g_bytes_get_data(bytes, NULL);
64+ size = g_bytes_get_size(bytes);
65+
66+ soup_message_body_append(body, SOUP_MEMORY_STATIC, data, size);
67+
68+ //multipart = soup_multipart_new_from_message (headers, bytes);
69+ multipart = soup_multipart_new_from_message (headers, body);
70+
71+ soup_message_body_free (body);
72+
73+ g_assert_nonnull (multipart);
74+ g_assert_cmpint (soup_multipart_get_length (multipart), ==, 1);
75+ success = soup_multipart_get_part (multipart, 0, &set_headers, &set_buffer);
76+ g_assert_true (success);
77+ g_assert_nonnull (set_headers);
78+ //g_assert_nonnull (set_bytes);
79+ g_assert_nonnull (set_buffer);
80+ //g_assert_cmpint (strlen (TEXT), ==, g_bytes_get_size (set_bytes));
81+ g_assert_cmpint (strlen (TEXT), ==, set_buffer->length);
82+ g_assert_cmpstr ("text/plain", ==, soup_message_headers_get_content_type (set_headers, NULL));
83+ //g_assert_cmpmem (TEXT, strlen (TEXT), g_bytes_get_data (set_bytes, NULL), g_bytes_get_size (set_bytes));
84+ g_assert_cmpmem(TEXT, strlen(TEXT), set_buffer->data, set_buffer->length);
85+
86+ soup_message_headers_free (headers);
87+ g_bytes_unref (bytes);
88+
89+ soup_multipart_free (multipart);
90+
91+ #undef TEXT
92+}
93+
94+static void
95+test_multipart_bounds_bad (void)
96+{
97+ SoupMultipart *multipart;
98+ SoupMessageHeaders *headers;
99+ GBytes *bytes;
100+ const char *raw_data = "--123\r\nContent-Type: text/plain;\r\nline1\r\nline2\r\n--123--\r\n";
101+ SoupMessageBody *body = soup_message_body_new ();
102+ gconstpointer data;
103+ gsize size;
104+
105+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
106+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
107+
108+ bytes = g_bytes_new (raw_data, strlen (raw_data));
109+
110+ data = g_bytes_get_data(bytes, NULL);
111+ size = g_bytes_get_size(bytes);
112+
113+ soup_message_body_append(body, SOUP_MEMORY_STATIC, data, size);
114+
115+ /* it did read out of raw_data/bytes bounds */
116+ //multipart = soup_multipart_new_from_message (headers, bytes);
117+ multipart = soup_multipart_new_from_message (headers, body);
118+ g_assert_null (multipart);
119+
120+ soup_message_body_free (body);
121+
122+ soup_message_headers_free (headers);
123+ g_bytes_unref (bytes);
124+}
125+
126 int
127 main (int argc, char **argv)
128 {
129@@ -508,6 +591,8 @@ main (int argc, char **argv)
130 g_test_add_data_func ("/multipart/sync", GINT_TO_POINTER (SYNC_MULTIPART), test_multipart);
131 g_test_add_data_func ("/multipart/async", GINT_TO_POINTER (ASYNC_MULTIPART), test_multipart);
132 g_test_add_data_func ("/multipart/async-small-reads", GINT_TO_POINTER (ASYNC_MULTIPART_SMALL_READS), test_multipart);
133+ g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
134+ g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
135
136 ret = g_test_run ();
137
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4476.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4476.patch
new file mode 100644
index 0000000000..874f62e7ad
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4476.patch
@@ -0,0 +1,38 @@
1From 52a0f9234d384b9dab368835b22e5a5a01542168 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Fri, 16 May 2025 14:16:10 +0800
4Subject: [PATCH] auth-digest: fix crash in
5 soup_auth_digest_get_protection_space()
6
7We need to validate the Domain parameter in the WWW-Authenticate header.
8
9Unfortunately this crash only occurs when listening on default ports 80
10and 443, so there's no good way to test for this. The test would require
11running as root.
12
13Fixes #440
14
15CVE: CVE-2025-4476
16Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/e64c221f9c7d09b48b610c5626b3b8c400f0907c?merge_request_iid=457]
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-auth-digest.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c
24index f1621ec..a2dc560 100644
25--- a/libsoup/soup-auth-digest.c
26+++ b/libsoup/soup-auth-digest.c
27@@ -229,7 +229,7 @@ soup_auth_digest_get_protection_space (SoupAuth *auth, SoupURI *source_uri)
28 uri = soup_uri_new (d);
29 if (uri && uri->scheme == source_uri->scheme &&
30 uri->port == source_uri->port &&
31- !strcmp (uri->host, source_uri->host))
32+ !g_strcmp0 (uri->host, source_uri->host))
33 dir = g_strdup (uri->path);
34 else
35 dir = NULL;
36--
372.34.1
38
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46420.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46420.patch
new file mode 100644
index 0000000000..37ab16dc05
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46420.patch
@@ -0,0 +1,60 @@
1From c9083869ec2a3037e6df4bd86b45c419ba295f8e Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Thu, 26 Dec 2024 18:31:42 -0600
4Subject: [PATCH] soup_header_parse_quality_list: Fix leak
5
6When iterating over the parsed list we now steal the allocated strings that we want and then free_full the list which may contain remaining strings.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/c9083869ec2a3037e6df4bd86b45c419ba295f8e]
9CVE: CVE-2025-46420
10Signed-off-by: Ashish Sharma <asharma@mvista.com>
11
12 libsoup/soup-headers.c | 11 +++++------
13 1 file changed, 5 insertions(+), 6 deletions(-)
14
15diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
16index a5f7a7f6..85385cea 100644
17--- a/libsoup/soup-headers.c
18+++ b/libsoup/soup-headers.c
19@@ -530,7 +530,7 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
20 GSList *unsorted;
21 QualityItem *array;
22 GSList *sorted, *iter;
23- char *item, *semi;
24+ char *semi;
25 const char *param, *equal, *value;
26 double qval;
27 int n;
28@@ -543,9 +543,8 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
29 unsorted = soup_header_parse_list (header);
30 array = g_new0 (QualityItem, g_slist_length (unsorted));
31 for (iter = unsorted, n = 0; iter; iter = iter->next) {
32- item = iter->data;
33 qval = 1.0;
34- for (semi = strchr (item, ';'); semi; semi = strchr (semi + 1, ';')) {
35+ for (semi = strchr (iter->data, ';'); semi; semi = strchr (semi + 1, ';')) {
36 param = skip_lws (semi + 1);
37 if (*param != 'q')
38 continue;
39@@ -577,15 +576,15 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
40 if (qval == 0.0) {
41 if (unacceptable) {
42 *unacceptable = g_slist_prepend (*unacceptable,
43- item);
44+ g_steal_pointer (&iter->data));
45 }
46 } else {
47- array[n].item = item;
48+ array[n].item = g_steal_pointer (&iter->data);
49 array[n].qval = qval;
50 n++;
51 }
52 }
53- g_slist_free (unsorted);
54+ g_slist_free_full (unsorted, g_free);
55
56 qsort (array, n, sizeof (QualityItem), sort_by_qval);
57 sorted = NULL;
58--
59GitLab
60
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46421.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46421.patch
new file mode 100644
index 0000000000..26067c4bb8
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-46421.patch
@@ -0,0 +1,47 @@
1From 5eb225f02bb35de56cfeedd87bde716bf1cb750b Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 5 Feb 2025 16:18:10 -0600
4Subject: [PATCH] session: Strip authentication credentails on
5 cross-origin redirect
6
7This should match the behavior of Firefox and Safari but not of Chromium.
8
9CVE: CVE-2025-46421
10Upstream-Status: Backport
11[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/436/diffs?commit_id=3e5c26415811f19e7737238bb23305ffaf96f66b]
12
13Test code not added since it included some headers not in version 2.74.3
14
15Signed-off-by: Changqing Li <changqing.li@windriver.com>
16---
17 libsoup/soup-session.c | 8 +++++++-
18 1 files changed, 7 insertions(+), 1 deletion(-)
19
20diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
21index 83421ef..8d6ac61 100644
22--- a/libsoup/soup-session.c
23+++ b/libsoup/soup-session.c
24@@ -1189,12 +1189,18 @@ soup_session_redirect_message (SoupSession *session, SoupMessage *msg)
25 SOUP_ENCODING_NONE);
26 }
27
28+ /* Strip all credentials on cross-origin redirect. */
29+ if (!soup_uri_host_equal (soup_message_get_uri (msg), new_uri)) {
30+ soup_message_headers_remove (msg->request_headers, "Authorization");
31+ soup_message_set_auth (msg, NULL);
32+ }
33+
34 soup_message_set_uri (msg, new_uri);
35 soup_uri_free (new_uri);
36
37 soup_session_requeue_message (session, msg);
38 return TRUE;
39-}
40+}
41
42 static void
43 redirect_handler (SoupMessage *msg, gpointer user_data)
44
45--
462.34.1
47
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4948.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4948.patch
new file mode 100644
index 0000000000..b15b8c763d
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4948.patch
@@ -0,0 +1,38 @@
1From dfdc9b3cc73e6fe88cc12792ba00e14642572339 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Thu, 15 May 2025 17:49:11 +0200
4Subject: [PATCH] soup-multipart: Verify boundary limits for multipart body
5
6It could happen that the boundary started at a place which resulted into
7a negative number, which in an unsigned integer is a very large value.
8Check the body size is not a negative value before setting it.
9
10Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/449
11
12Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463>
13
14CVE: CVE-2025-4948
15Upstream-Status: Backport
16[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463/diffs?commit_id=f2f28afe0b3b2b3009ab67d6874457ec6bac70c0]
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-multipart.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
24index dd93973..ce2fc10 100644
25--- a/libsoup/soup-multipart.c
26+++ b/libsoup/soup-multipart.c
27@@ -214,7 +214,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
28 */
29 part_body = soup_buffer_new_subbuffer (flattened,
30 split - flattened->data,
31- end - 2 - split);
32+ end - 2 >= split ? end - 2 - split : 0);
33 g_ptr_array_add (multipart->bodies, part_body);
34
35 start = end;
36--
372.34.1
38
diff --git a/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4969.patch b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4969.patch
new file mode 100644
index 0000000000..d45b2a2cb0
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4/CVE-2025-4969.patch
@@ -0,0 +1,76 @@
1From 07b94e27afafebf31ef3cd868866a1e383750086 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Mon, 19 May 2025 17:48:27 +0200
4Subject: [PATCH] soup-multipart: Verify array bounds before accessing its
5 members
6
7The boundary could be at a place which, calculated, pointed
8before the beginning of the array. Check the bounds, to avoid
9read out of the array bounds.
10
11Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/447
12
13Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/07b94e27afafebf31ef3cd868866a1e383750086]
14CVE: CVE-2025-4969
15Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
16---
17 libsoup/soup-multipart.c | 2 +-
18 tests/multipart-test.c | 22 ++++++++++++++++++++++
19 2 files changed, 23 insertions(+), 1 deletion(-)
20
21diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
22index dd93973..b3611db 100644
23--- a/libsoup/soup-multipart.c
24+++ b/libsoup/soup-multipart.c
25@@ -108,7 +108,7 @@ find_boundary (const char *start, const char *end,
26 continue;
27
28 /* Check that it's at start of line */
29- if (!(b == start || (b[-1] == '\n' && b[-2] == '\r')))
30+ if (!(b == start || (b - start >= 2 && b[-1] == '\n' && b[-2] == '\r')))
31 continue;
32
33 /* Check for "--" or "\r\n" after boundary */
34diff --git a/tests/multipart-test.c b/tests/multipart-test.c
35index 834b181..980eb68 100644
36--- a/tests/multipart-test.c
37+++ b/tests/multipart-test.c
38@@ -562,6 +562,27 @@ test_multipart_bounds_bad (void)
39 g_bytes_unref (bytes);
40 }
41
42+static void
43+test_multipart_bounds_bad_2 (void)
44+{
45+ SoupMultipart *multipart;
46+ SoupMessageHeaders *headers;
47+ GBytes *bytes;
48+ const char *raw_data = "\n--123\r\nline\r\n--123--\r";
49+
50+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
51+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
52+
53+ bytes = g_bytes_new (raw_data, strlen (raw_data));
54+
55+ multipart = soup_multipart_new_from_message (headers, bytes);
56+ g_assert_nonnull (multipart);
57+
58+ soup_multipart_free (multipart);
59+ soup_message_headers_free (headers);
60+ g_bytes_unref (bytes);
61+}
62+
63 int
64 main (int argc, char **argv)
65 {
66@@ -593,6 +614,7 @@ main (int argc, char **argv)
67 g_test_add_data_func ("/multipart/async-small-reads", GINT_TO_POINTER (ASYNC_MULTIPART_SMALL_READS), test_multipart);
68 g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
69 g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
70+ g_test_add_func ("/multipart/bounds-bad-2", test_multipart_bounds_bad_2);
71
72 ret = g_test_run ();
73
74--
752.49.0
76
diff --git a/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb b/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb
index ee20530b64..0da309ebd8 100644
--- a/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb
+++ b/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb
@@ -12,7 +12,35 @@ DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 libpsl"
12SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}" 12SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
13 13
14SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \ 14SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \
15 file://0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch" 15 file://0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch \
16 file://CVE-2024-52530.patch \
17 file://CVE-2024-52531-1.patch \
18 file://CVE-2024-52531-2.patch \
19 file://CVE-2024-52532-1.patch \
20 file://CVE-2024-52532-2.patch \
21 file://CVE-2024-52532-3.patch \
22 file://CVE-2025-32906-1.patch \
23 file://CVE-2025-32906-2.patch \
24 file://CVE-2025-32909.patch \
25 file://CVE-2025-46420.patch \
26 file://CVE-2025-32910-1.patch \
27 file://CVE-2025-32910-2.patch \
28 file://CVE-2025-32910-3.patch \
29 file://CVE-2025-32911_CVE-2025-32913-1.patch \
30 file://CVE-2025-32911_CVE-2025-32913-2.patch \
31 file://CVE-2025-32912-1.patch \
32 file://CVE-2025-32912-2.patch \
33 file://CVE-2025-32914.patch \
34 file://CVE-2025-4969.patch \
35 file://CVE-2025-32907.patch \
36 file://CVE-2025-32053.patch \
37 file://CVE-2025-32052.patch \
38 file://CVE-2025-32050.patch \
39 file://CVE-2025-46421.patch \
40 file://CVE-2025-4948.patch \
41 file://CVE-2025-4476.patch \
42 file://CVE-2025-2784.patch \
43"
16SRC_URI[sha256sum] = "e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13" 44SRC_URI[sha256sum] = "e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13"
17 45
18CVE_PRODUCT = "libsoup" 46CVE_PRODUCT = "libsoup"
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52530.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52530.patch
new file mode 100644
index 0000000000..fb6d5c3c6f
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52530.patch
@@ -0,0 +1,150 @@
1From 04df03bc092ac20607f3e150936624d4f536e68b Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Mon, 8 Jul 2024 12:33:15 -0500
4Subject: [PATCH] headers: Strictly don't allow NUL bytes
5
6In the past (2015) this was allowed for some problematic sites. However Chromium also does not allow NUL bytes in either header names or values these days. So this should no longer be a problem.
7
8CVE: CVE-2024-52530
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/04df03bc092ac20607f3e150936624d4f536e68b]
10
11Signed-off-by: Changqing Li <changqing.li@windriver.com>
12---
13 libsoup/soup-headers.c | 15 +++------
14 tests/header-parsing-test.c | 62 +++++++++++++++++--------------------
15 2 files changed, 32 insertions(+), 45 deletions(-)
16
17diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
18index a0cf351ac..f30ee467a 100644
19--- a/libsoup/soup-headers.c
20+++ b/libsoup/soup-headers.c
21@@ -51,13 +51,14 @@ soup_headers_parse (const char *str, int len, SoupMessageHeaders *dest)
22 * ignorable trailing whitespace.
23 */
24
25+ /* No '\0's are allowed */
26+ if (memchr (str, '\0', len))
27+ return FALSE;
28+
29 /* Skip over the Request-Line / Status-Line */
30 headers_start = memchr (str, '\n', len);
31 if (!headers_start)
32 return FALSE;
33- /* No '\0's in the Request-Line / Status-Line */
34- if (memchr (str, '\0', headers_start - str))
35- return FALSE;
36
37 /* We work on a copy of the headers, which we can write '\0's
38 * into, so that we don't have to individually g_strndup and
39@@ -69,14 +70,6 @@ soup_headers_parse (const char *str, int len, SoupMessageHeaders *dest)
40 headers_copy[copy_len] = '\0';
41 value_end = headers_copy;
42
43- /* There shouldn't be any '\0's in the headers already, but
44- * this is the web we're talking about.
45- */
46- while ((p = memchr (headers_copy, '\0', copy_len))) {
47- memmove (p, p + 1, copy_len - (p - headers_copy));
48- copy_len--;
49- }
50-
51 while (*(value_end + 1)) {
52 name = value_end + 1;
53 name_end = strchr (name, ':');
54diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
55index edf8eebb3..715c2c6f2 100644
56--- a/tests/header-parsing-test.c
57+++ b/tests/header-parsing-test.c
58@@ -358,24 +358,6 @@ static struct RequestTest {
59 }
60 },
61
62- { "NUL in header name", "760832",
63- "GET / HTTP/1.1\r\nHost\x00: example.com\r\n", 36,
64- SOUP_STATUS_OK,
65- "GET", "/", SOUP_HTTP_1_1,
66- { { "Host", "example.com" },
67- { NULL }
68- }
69- },
70-
71- { "NUL in header value", "760832",
72- "GET / HTTP/1.1\r\nHost: example\x00" "com\r\n", 35,
73- SOUP_STATUS_OK,
74- "GET", "/", SOUP_HTTP_1_1,
75- { { "Host", "examplecom" },
76- { NULL }
77- }
78- },
79-
80 /************************/
81 /*** INVALID REQUESTS ***/
82 /************************/
83@@ -448,6 +430,21 @@ static struct RequestTest {
84 SOUP_STATUS_EXPECTATION_FAILED,
85 NULL, NULL, -1,
86 { { NULL } }
87+ },
88+
89+ // https://gitlab.gnome.org/GNOME/libsoup/-/issues/377
90+ { "NUL in header name", NULL,
91+ "GET / HTTP/1.1\r\nHost\x00: example.com\r\n", 36,
92+ SOUP_STATUS_BAD_REQUEST,
93+ NULL, NULL, -1,
94+ { { NULL } }
95+ },
96+
97+ { "NUL in header value", NULL,
98+ "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
99+ SOUP_STATUS_BAD_REQUEST,
100+ NULL, NULL, -1,
101+ { { NULL } }
102 }
103 };
104 static const int num_reqtests = G_N_ELEMENTS (reqtests);
105@@ -620,22 +617,6 @@ static struct ResponseTest {
106 { NULL } }
107 },
108
109- { "NUL in header name", "760832",
110- "HTTP/1.1 200 OK\r\nF\x00oo: bar\r\n", 28,
111- SOUP_HTTP_1_1, SOUP_STATUS_OK, "OK",
112- { { "Foo", "bar" },
113- { NULL }
114- }
115- },
116-
117- { "NUL in header value", "760832",
118- "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
119- SOUP_HTTP_1_1, SOUP_STATUS_OK, "OK",
120- { { "Foo", "bar" },
121- { NULL }
122- }
123- },
124-
125 /********************************/
126 /*** VALID CONTINUE RESPONSES ***/
127 /********************************/
128@@ -768,6 +749,19 @@ static struct ResponseTest {
129 { { NULL }
130 }
131 },
132+
133+ // https://gitlab.gnome.org/GNOME/libsoup/-/issues/377
134+ { "NUL in header name", NULL,
135+ "HTTP/1.1 200 OK\r\nF\x00oo: bar\r\n", 28,
136+ -1, 0, NULL,
137+ { { NULL } }
138+ },
139+
140+ { "NUL in header value", "760832",
141+ "HTTP/1.1 200 OK\r\nFoo: b\x00" "ar\r\n", 28,
142+ -1, 0, NULL,
143+ { { NULL } }
144+ },
145 };
146 static const int num_resptests = G_N_ELEMENTS (resptests);
147
148--
149GitLab
150
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-1.patch
new file mode 100644
index 0000000000..c8e855c128
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-1.patch
@@ -0,0 +1,116 @@
1From 4ec9e3d286b6d3e982cb0fc3564dee0bf8d87ede Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 27 Aug 2024 12:18:58 -0500
4Subject: [PATCH] fuzzing: Cover soup_header_parse_param_list
5
6CVE: CVE-2024-52531
7Upstream-Status: Backport
8[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/407/diffs?commit_id=4ec9e3d286b6d3e982cb0fc3564dee0bf8d87ede]
9
10Signed-off-by: Changqing Li <changqing.li@windriver.com>
11
12---
13 fuzzing/fuzz.h | 9 +++++++--
14 fuzzing/fuzz_header_parsing.c | 19 +++++++++++++++++++
15 fuzzing/fuzz_header_parsing.dict | 8 ++++++++
16 fuzzing/meson.build | 2 ++
17 4 files changed, 36 insertions(+), 2 deletions(-)
18 create mode 100644 fuzzing/fuzz_header_parsing.c
19 create mode 100644 fuzzing/fuzz_header_parsing.dict
20
21diff --git a/fuzzing/fuzz.h b/fuzzing/fuzz.h
22index 0d380285..f3bd28ee 100644
23--- a/fuzzing/fuzz.h
24+++ b/fuzzing/fuzz.h
25@@ -1,13 +1,14 @@
26 #include "libsoup/soup.h"
27
28 int LLVMFuzzerTestOneInput (const unsigned char *data, size_t size);
29+static int set_logger = 0;
30
31 #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
32 static GLogWriterOutput
33 empty_logging_func (GLogLevelFlags log_level, const GLogField *fields,
34 gsize n_fields, gpointer user_data)
35 {
36- return G_LOG_WRITER_HANDLED;
37+ return G_LOG_WRITER_HANDLED;
38 }
39 #endif
40
41@@ -16,6 +17,10 @@ static void
42 fuzz_set_logging_func (void)
43 {
44 #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
45- g_log_set_writer_func (empty_logging_func, NULL, NULL);
46+ if (!set_logger)
47+ {
48+ set_logger = 1;
49+ g_log_set_writer_func (empty_logging_func, NULL, NULL);
50+ }
51 #endif
52 }
53diff --git a/fuzzing/fuzz_header_parsing.c b/fuzzing/fuzz_header_parsing.c
54new file mode 100644
55index 00000000..a8e5c1f9
56--- /dev/null
57+++ b/fuzzing/fuzz_header_parsing.c
58@@ -0,0 +1,19 @@
59+#include "fuzz.h"
60+
61+int
62+LLVMFuzzerTestOneInput (const unsigned char *data, size_t size)
63+{
64+ GHashTable *elements;
65+
66+ // We only accept NUL terminated strings
67+ if (!size || data[size - 1] != '\0')
68+ return 0;
69+
70+ fuzz_set_logging_func ();
71+
72+ elements = soup_header_parse_param_list((char*)data);
73+
74+ g_hash_table_unref(elements);
75+
76+ return 0;
77+}
78\ No newline at end of file
79diff --git a/fuzzing/fuzz_header_parsing.dict b/fuzzing/fuzz_header_parsing.dict
80new file mode 100644
81index 00000000..1562ca3a
82--- /dev/null
83+++ b/fuzzing/fuzz_header_parsing.dict
84@@ -0,0 +1,8 @@
85+"*=UTF-8''"
86+"*=iso-8859-1''"
87+"'"
88+"''"
89+"="
90+"*="
91+"""
92+";"
93\ No newline at end of file
94diff --git a/fuzzing/meson.build b/fuzzing/meson.build
95index b14cbb50..5dd0f417 100644
96--- a/fuzzing/meson.build
97+++ b/fuzzing/meson.build
98@@ -5,6 +5,7 @@ fuzz_targets = [
99 'fuzz_cookie_parse',
100 'fuzz_content_sniffer',
101 'fuzz_date_time',
102+ 'fuzz_header_parsing',
103 ]
104
105 fuzzing_args = '-fsanitize=fuzzer,address,undefined'
106@@ -34,6 +35,7 @@ if have_fuzzing and (fuzzing_feature.enabled() or fuzzing_feature.auto())
107 '-runs=200000',
108 '-artifact_prefix=meson-logs/' + target + '-',
109 '-print_final_stats=1',
110+ '-max_len=4096',
111 ] + extra_args,
112 env: [
113 'ASAN_OPTIONS=fast_unwind_on_malloc=0',
114--
1152.25.1
116
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-2.patch
new file mode 100644
index 0000000000..7e0d81ba4c
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-2.patch
@@ -0,0 +1,40 @@
1From 825fda3425546847b42ad5270544e9388ff349fe Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 27 Aug 2024 13:52:08 -0500
4Subject: [PATCH] tests: Add test for passing invalid UTF-8 to
5 soup_header_parse_semi_param_list()
6
7CVE: CVE-2024-52531
8Upstream-Status: Backport
9[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/407/diffs?commit_id=825fda3425546847b42ad5270544e9388ff349fe]
10
11Signed-off-by: Changqing Li <changqing.li@windriver.com>
12---
13 tests/header-parsing-test.c | 11 +++++++++++
14 1 file changed, 11 insertions(+)
15
16diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
17index 715c2c6f..5e423d2b 100644
18--- a/tests/header-parsing-test.c
19+++ b/tests/header-parsing-test.c
20@@ -825,6 +825,17 @@ static struct ParamListTest {
21 { "filename", "t\xC3\xA9st.txt" },
22 },
23 },
24+
25+ /* This tests invalid UTF-8 data which *should* never be passed here but it was designed to be robust against it. */
26+ { TRUE,
27+ "invalid*=\x69\x27\x27\x93\x93\x93\x93\xff\x61\x61\x61\x61\x61\x61\x61\x62\x63\x64\x65\x0a; filename*=iso-8859-1''\x69\x27\x27\x93\x93\x93\x93\xff\x61\x61\x61\x61\x61\x61\x61\x62\x63\x64\x65\x0a; foo",
28+ {
29+ { "filename", "i''\302\223\302\223\302\223\302\223\303\277aaaaaaabcde" },
30+ { "invalid", "\302\223\302\223\302\223\302\223\303\277aaaaaaabcde" },
31+ { "foo", NULL },
32+
33+ },
34+ }
35 };
36 static const int num_paramlisttests = G_N_ELEMENTS (paramlisttests);
37
38--
392.25.1
40
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-3.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-3.patch
new file mode 100644
index 0000000000..a47c8747c5
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52531-3.patch
@@ -0,0 +1,136 @@
1From a35222dd0bfab2ac97c10e86b95f762456628283 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 27 Aug 2024 13:53:26 -0500
4Subject: [PATCH] headers: Be more robust against invalid input when parsing
5 params
6
7If you pass invalid input to a function such as soup_header_parse_param_list_strict()
8it can cause an overflow if it decodes the input to UTF-8.
9
10This should never happen with valid UTF-8 input which libsoup's client API
11ensures, however it's server API does not currently.
12
13CVE: CVE-2024-52531
14Upstream-Status: Backport
15[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/407/diffs?commit_id=a35222dd0bfab2ac97c10e86b95f762456628283]
16
17Signed-off-by: Changqing Li <changqing.li@windriver.com>
18
19---
20 libsoup/soup-headers.c | 46 ++++++++++++++++++++++--------------------
21 1 file changed, 24 insertions(+), 22 deletions(-)
22
23diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
24index f30ee467..613e1905 100644
25--- a/libsoup/soup-headers.c
26+++ b/libsoup/soup-headers.c
27@@ -646,8 +646,9 @@ soup_header_contains (const char *header, const char *token)
28 }
29
30 static void
31-decode_quoted_string (char *quoted_string)
32+decode_quoted_string_inplace (GString *quoted_gstring)
33 {
34+ char *quoted_string = quoted_gstring->str;
35 char *src, *dst;
36
37 src = quoted_string + 1;
38@@ -661,10 +662,11 @@ decode_quoted_string (char *quoted_string)
39 }
40
41 static gboolean
42-decode_rfc5987 (char *encoded_string)
43+decode_rfc5987_inplace (GString *encoded_gstring)
44 {
45 char *q, *decoded;
46 gboolean iso_8859_1 = FALSE;
47+ const char *encoded_string = encoded_gstring->str;
48
49 q = strchr (encoded_string, '\'');
50 if (!q)
51@@ -696,14 +698,7 @@ decode_rfc5987 (char *encoded_string)
52 decoded = utf8;
53 }
54
55- /* If encoded_string was UTF-8, then each 3-character %-escape
56- * will be converted to a single byte, and so decoded is
57- * shorter than encoded_string. If encoded_string was
58- * iso-8859-1, then each 3-character %-escape will be
59- * converted into at most 2 bytes in UTF-8, and so it's still
60- * shorter.
61- */
62- strcpy (encoded_string, decoded);
63+ g_string_assign (encoded_gstring, decoded);
64 g_free (decoded);
65 return TRUE;
66 }
67@@ -713,15 +708,17 @@ parse_param_list (const char *header, char delim, gboolean strict)
68 {
69 GHashTable *params;
70 GSList *list, *iter;
71- char *item, *eq, *name_end, *value;
72- gboolean override, duplicated;
73
74 params = g_hash_table_new_full (soup_str_case_hash,
75 soup_str_case_equal,
76- g_free, NULL);
77+ g_free, g_free);
78
79 list = parse_list (header, delim);
80 for (iter = list; iter; iter = iter->next) {
81+ char *item, *eq, *name_end;
82+ gboolean override, duplicated;
83+ GString *parsed_value = NULL;
84+
85 item = iter->data;
86 override = FALSE;
87
88@@ -736,19 +733,19 @@ parse_param_list (const char *header, char delim, gboolean strict)
89
90 *name_end = '\0';
91
92- value = (char *)skip_lws (eq + 1);
93+ parsed_value = g_string_new ((char *)skip_lws (eq + 1));
94
95 if (name_end[-1] == '*' && name_end > item + 1) {
96 name_end[-1] = '\0';
97- if (!decode_rfc5987 (value)) {
98+ if (!decode_rfc5987_inplace (parsed_value)) {
99+ g_string_free (parsed_value, TRUE);
100 g_free (item);
101 continue;
102 }
103 override = TRUE;
104- } else if (*value == '"')
105- decode_quoted_string (value);
106- } else
107- value = NULL;
108+ } else if (parsed_value->str[0] == '"')
109+ decode_quoted_string_inplace (parsed_value);
110+ }
111
112 duplicated = g_hash_table_lookup_extended (params, item, NULL, NULL);
113
114@@ -756,11 +753,16 @@ parse_param_list (const char *header, char delim, gboolean strict)
115 soup_header_free_param_list (params);
116 params = NULL;
117 g_slist_foreach (iter, (GFunc)g_free, NULL);
118+ if (parsed_value)
119+ g_string_free (parsed_value, TRUE);
120 break;
121- } else if (override || !duplicated)
122- g_hash_table_replace (params, item, value);
123- else
124+ } else if (override || !duplicated) {
125+ g_hash_table_replace (params, item, parsed_value ? g_string_free (parsed_value, FALSE) : NULL);
126+ } else {
127+ if (parsed_value)
128+ g_string_free (parsed_value, TRUE);
129 g_free (item);
130+ }
131 }
132
133 g_slist_free (list);
134--
1352.25.1
136
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52532-0001.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52532-0001.patch
new file mode 100644
index 0000000000..272abb3abf
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52532-0001.patch
@@ -0,0 +1,42 @@
1From 29b96fab2512666d7241e46c98cc45b60b795c0c Mon Sep 17 00:00:00 2001
2From: Ignacio Casal Quinteiro <qignacio@amazon.com>
3Date: Wed, 2 Oct 2024 11:17:19 +0200
4Subject: [PATCH] websocket-test: disconnect error copy after the test ends
5
6Otherwise the server will have already sent a few more wrong
7bytes and the client will continue getting errors to copy
8but the error is already != NULL and it will assert.
9
10Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/29b96fab2512666d7241e46c98cc45b60b795c0c]
11CVE: CVE-2024-52532
12Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
13---
14 tests/websocket-test.c | 4 +++-
15 1 file changed, 3 insertions(+), 1 deletion(-)
16
17diff --git a/tests/websocket-test.c b/tests/websocket-test.c
18index b954b01..9b37780 100644
19--- a/tests/websocket-test.c
20+++ b/tests/websocket-test.c
21@@ -1489,8 +1489,9 @@ test_receive_invalid_encode_length_64 (Test *test,
22 GError *error = NULL;
23 InvalidEncodeLengthTest context = { test, NULL };
24 guint i;
25+ guint error_id;
26
27- g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
28+ error_id = g_signal_connect (test->client, "error", G_CALLBACK (on_error_copy), &error);
29 g_signal_connect (test->client, "message", G_CALLBACK (on_binary_message), &received);
30
31 /* We use 127(\x7f) as payload length with 65535 extended length */
32@@ -1503,6 +1504,7 @@ test_receive_invalid_encode_length_64 (Test *test,
33 WAIT_UNTIL (error != NULL || received != NULL);
34 g_assert_error (error, SOUP_WEBSOCKET_ERROR, SOUP_WEBSOCKET_CLOSE_PROTOCOL_ERROR);
35 g_clear_error (&error);
36+ g_signal_handler_disconnect (test->client, error_id);
37 g_assert_null (received);
38
39 g_thread_join (thread);
40--
412.25.1
42
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52532-0002.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52532-0002.patch
new file mode 100644
index 0000000000..a1690a9980
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2024-52532-0002.patch
@@ -0,0 +1,36 @@
1From 6adc0e3eb74c257ed4e2a23eb4b2774fdb0d67be Mon Sep 17 00:00:00 2001
2From: Ignacio Casal Quinteiro <qignacio@amazon.com>
3Date: Wed, 11 Sep 2024 11:52:11 +0200
4Subject: [PATCH] websocket: process the frame as soon as we read data
5
6Otherwise we can enter in a read loop because we were not
7validating the data until the all the data was read.
8
9Fixes #391
10
11Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/6adc0e3eb74c257ed4e2a23eb4b2774fdb0d67be]
12CVE: CVE-2024-52532
13Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
14---
15 libsoup/websocket/soup-websocket-connection.c | 4 ++--
16 1 file changed, 2 insertions(+), 2 deletions(-)
17
18diff --git a/libsoup/websocket/soup-websocket-connection.c b/libsoup/websocket/soup-websocket-connection.c
19index 2f7d920..df8f67d 100644
20--- a/libsoup/websocket/soup-websocket-connection.c
21+++ b/libsoup/websocket/soup-websocket-connection.c
22@@ -1165,9 +1165,9 @@ soup_websocket_connection_read (SoupWebsocketConnection *self)
23 }
24
25 priv->incoming->len = len + count;
26- } while (count > 0);
27
28- process_incoming (self);
29+ process_incoming (self);
30+ } while (count > 0 && !priv->close_sent && !priv->io_closing);
31
32 if (end) {
33 if (!priv->close_sent || !priv->close_received) {
34--
352.25.1
36
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-2784.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-2784.patch
new file mode 100644
index 0000000000..b2e1c12d48
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-2784.patch
@@ -0,0 +1,137 @@
1From dd10ae267e33bcc35646610d7cc1841da77d05e7 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 5 Feb 2025 14:39:42 -0600
4Subject: [PATCH] Fix CVE-2025-2784
5
6CVE: CVE-2025-2784
7Upstream-Status: Backport
8[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/435/diffs?commit_id=242a10fbb12dbdc12d254bd8fc8669a0ac055304
9https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/442/diffs?commit_id=c415ad0b6771992e66c70edf373566c6e247089d]
10
11Signed-off-by: Changqing Li <changqing.li@windriver.com>
12---
13 .../content-sniffer/soup-content-sniffer.c | 10 ++--
14 tests/meson.build | 4 +-
15 tests/sniffing-test.c | 48 +++++++++++++++++++
16 3 files changed, 56 insertions(+), 6 deletions(-)
17
18diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c
19index aeee2e2..a5e18d5 100644
20--- a/libsoup/content-sniffer/soup-content-sniffer.c
21+++ b/libsoup/content-sniffer/soup-content-sniffer.c
22@@ -638,8 +638,11 @@ sniff_text_or_binary (SoupContentSniffer *sniffer, GBytes *buffer)
23 }
24
25 static gboolean
26-skip_insignificant_space (const char *resource, int *pos, int resource_length)
27+skip_insignificant_space (const char *resource, gsize *pos, gsize resource_length)
28 {
29+ if (*pos >= resource_length)
30+ return TRUE;
31+
32 while ((resource[*pos] == '\x09') ||
33 (resource[*pos] == '\x20') ||
34 (resource[*pos] == '\x0A') ||
35@@ -659,7 +662,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, GBytes *buffer)
36 gsize resource_length;
37 const char *resource = g_bytes_get_data (buffer, &resource_length);
38 resource_length = MIN (512, resource_length);
39- int pos = 0;
40+ gsize pos = 0;
41
42 if (resource_length < 3)
43 goto text_html;
44@@ -669,9 +672,6 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, GBytes *buffer)
45 pos = 3;
46
47 look_for_tag:
48- if (pos > resource_length)
49- goto text_html;
50-
51 if (skip_insignificant_space (resource, &pos, resource_length))
52 goto text_html;
53
54diff --git a/tests/meson.build b/tests/meson.build
55index 7ef7ac5..95b13b8 100644
56--- a/tests/meson.build
57+++ b/tests/meson.build
58@@ -95,7 +95,9 @@ tests = [
59 {'name': 'server-auth'},
60 {'name': 'server-mem-limit'},
61 {'name': 'server'},
62- {'name': 'sniffing'},
63+ {'name': 'sniffing',
64+ 'depends': [test_resources],
65+ },
66 {'name': 'ssl',
67 'dependencies': [gnutls_dep],
68 'depends': mock_pkcs11_module,
69diff --git a/tests/sniffing-test.c b/tests/sniffing-test.c
70index 6116719..7857732 100644
71--- a/tests/sniffing-test.c
72+++ b/tests/sniffing-test.c
73@@ -342,6 +342,52 @@ test_disabled (gconstpointer data)
74 g_uri_unref (uri);
75 }
76
77+static const gsize MARKUP_LENGTH = strlen ("<!--") + strlen ("-->");
78+
79+static void
80+do_skip_whitespace_test (void)
81+{
82+ SoupContentSniffer *sniffer = soup_content_sniffer_new ();
83+ SoupMessage *msg = soup_message_new (SOUP_METHOD_GET, "http://example.org");
84+ const char *test_cases[] = {
85+ "",
86+ "<rdf:RDF",
87+ "<rdf:RDFxmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"",
88+ "<rdf:RDFxmlns=\"http://purl.org/rss/1.0/\"",
89+ };
90+
91+ soup_message_headers_set_content_type (soup_message_get_response_headers (msg), "text/html", NULL);
92+
93+ for (guint i = 0; i < G_N_ELEMENTS (test_cases); i++) {
94+ const char *trailing_data = test_cases[i];
95+ gsize leading_zeros = 512 - MARKUP_LENGTH - strlen (trailing_data);
96+ gsize testsize = MARKUP_LENGTH + leading_zeros + strlen (trailing_data);
97+ guint8 *data = g_malloc0 (testsize);
98+ guint8 *p = data;
99+ char *content_type;
100+ GBytes *buffer;
101+
102+ // Format of <!--[0x00 * $leading_zeros]-->$trailing_data
103+ memcpy (p, "<!--", strlen ("<!--"));
104+ p += strlen ("<!--");
105+ p += leading_zeros;
106+ memcpy (p, "-->", strlen ("-->"));
107+ p += strlen ("-->");
108+ if (strlen (trailing_data))
109+ memcpy (p, trailing_data, strlen (trailing_data));
110+ // Purposefully not NUL terminated.
111+
112+ buffer = g_bytes_new_take (g_steal_pointer (&data), testsize);
113+ content_type = soup_content_sniffer_sniff (sniffer, msg, buffer, NULL);
114+
115+ g_free (content_type);
116+ g_bytes_unref (buffer);
117+ }
118+
119+ g_object_unref (msg);
120+ g_object_unref (sniffer);
121+}
122+
123 int
124 main (int argc, char **argv)
125 {
126@@ -517,6 +563,8 @@ main (int argc, char **argv)
127 "/text_or_binary/home.gif",
128 test_disabled);
129
130+ g_test_add_func ("/sniffing/whitespace", do_skip_whitespace_test);
131+
132 ret = g_test_run ();
133
134 g_uri_unref (base_uri);
135--
1362.34.1
137
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32050.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32050.patch
new file mode 100644
index 0000000000..e5a4d747a1
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32050.patch
@@ -0,0 +1,29 @@
1From 30c86c9a284cf6f366ac87df0bca3e18a5de8671 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Mon, 28 Oct 2024 12:29:48 -0500
4Subject: [PATCH] Fix using int instead of size_t for strcspn return
5
6CVE: CVE-2025-32050
7Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/9bb0a55de55c6940ced811a64fbca82fe93a9323]
8
9Signed-off-by: Changqing Li <changqing.li@windriver.com>
10---
11 libsoup/soup-headers.c | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
15index 5fb32c2..52ef2ec 100644
16--- a/libsoup/soup-headers.c
17+++ b/libsoup/soup-headers.c
18@@ -906,7 +906,7 @@ append_param_quoted (GString *string,
19 const char *name,
20 const char *value)
21 {
22- int len;
23+ gsize len;
24
25 g_string_append (string, name);
26 g_string_append (string, "=\"");
27--
282.34.1
29
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-1.patch
new file mode 100644
index 0000000000..efeda48b11
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-1.patch
@@ -0,0 +1,29 @@
1From dc5db30989f385303c79ec3188c52e33f6f5886e Mon Sep 17 00:00:00 2001
2From: Ar Jun <pkillarjun@protonmail.com>
3Date: Sat, 16 Nov 2024 11:50:09 -0600
4Subject: [PATCH 1/2] Fix possible NULL deref in soup_uri_decode_data_uri
5
6CVE: CVE-2025-32051
7Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/0713ba4a719da938dc8facc89fca99cd0aa3069f]
8
9Signed-off-by: Changqing Li <changqing.li@windriver.com>
10---
11 libsoup/soup-uri-utils.c | 2 ++
12 1 file changed, 2 insertions(+)
13
14diff --git a/libsoup/soup-uri-utils.c b/libsoup/soup-uri-utils.c
15index be2b79b..0251279 100644
16--- a/libsoup/soup-uri-utils.c
17+++ b/libsoup/soup-uri-utils.c
18@@ -303,6 +303,8 @@ soup_uri_decode_data_uri (const char *uri,
19
20 uri_string = g_uri_to_string (soup_uri);
21 g_uri_unref (soup_uri);
22+ if (!uri_string)
23+ return NULL;
24
25 start = uri_string + 5;
26 comma = strchr (start, ',');
27--
282.34.1
29
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-2.patch
new file mode 100644
index 0000000000..24c184bb86
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32051-2.patch
@@ -0,0 +1,57 @@
1From 7d1557a60145927806c88d321e8322a9d9f49bb2 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Fri, 22 Nov 2024 13:39:51 -0600
4Subject: [PATCH 2/2] soup_uri_decode_data_uri(): Handle URIs with a path
5 starting with //
6
7CVE: CVE-2025-32051
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/79cfd65c9bd8024cd45dd725c284766329873709]
9
10Signed-off-by: Changqing Li <changqing.li@windriver.com>
11---
12 libsoup/soup-uri-utils.c | 8 ++++++++
13 tests/uri-parsing-test.c | 2 ++
14 2 files changed, 10 insertions(+)
15
16diff --git a/libsoup/soup-uri-utils.c b/libsoup/soup-uri-utils.c
17index 0251279..1ff11cd 100644
18--- a/libsoup/soup-uri-utils.c
19+++ b/libsoup/soup-uri-utils.c
20@@ -286,6 +286,7 @@ soup_uri_decode_data_uri (const char *uri,
21 gboolean base64 = FALSE;
22 char *uri_string;
23 GBytes *bytes;
24+ const char *path;
25
26 g_return_val_if_fail (uri != NULL, NULL);
27
28@@ -301,6 +302,13 @@ soup_uri_decode_data_uri (const char *uri,
29 if (content_type)
30 *content_type = NULL;
31
32+ /* g_uri_to_string() is picky about paths that start with `//` and will assert. */
33+ path = g_uri_get_path (soup_uri);
34+ if (path[0] == '/' && path[1] == '/') {
35+ g_uri_unref (soup_uri);
36+ return NULL;
37+ }
38+
39 uri_string = g_uri_to_string (soup_uri);
40 g_uri_unref (soup_uri);
41 if (!uri_string)
42diff --git a/tests/uri-parsing-test.c b/tests/uri-parsing-test.c
43index 1f16273..418391e 100644
44--- a/tests/uri-parsing-test.c
45+++ b/tests/uri-parsing-test.c
46@@ -141,6 +141,8 @@ static struct {
47 { "data:text/plain;base64,aGVsbG8=", "hello", "text/plain" },
48 { "data:text/plain;base64,invalid=", "", "text/plain" },
49 { "data:,", "", CONTENT_TYPE_DEFAULT },
50+ { "data:.///", NULL, NULL },
51+ { "data:/.//", NULL, NULL },
52 };
53
54 static void
55--
562.34.1
57
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32052.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32052.patch
new file mode 100644
index 0000000000..78b712070b
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32052.patch
@@ -0,0 +1,31 @@
1From 779bcb279b1dc4eb8bcb22c5e727b1174630c3fc Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Sat, 16 Nov 2024 12:07:30 -0600
4Subject: [PATCH] Fix heap buffer overflow in soup_content_sniffer_sniff
5
6Co-Author: Ar Jun <pkillarjun@protonmail.com>
7
8CVE: CVE-2025-32052
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/f182429e5b1fc034050510da20c93256c4fa9652]
10
11Signed-off-by: Changqing Li <changqing.li@windriver.com>
12---
13 libsoup/content-sniffer/soup-content-sniffer.c | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c
17index 23d5aaa..aeee2e2 100644
18--- a/libsoup/content-sniffer/soup-content-sniffer.c
19+++ b/libsoup/content-sniffer/soup-content-sniffer.c
20@@ -529,7 +529,7 @@ sniff_unknown (SoupContentSniffer *sniffer, GBytes *buffer,
21 guint index_pattern = 0;
22 gboolean skip_row = FALSE;
23
24- while ((index_stream < resource_length) &&
25+ while ((index_stream < resource_length - 1) &&
26 (index_pattern <= type_row->pattern_length)) {
27 /* Skip insignificant white space ("WS" in the spec) */
28 if (type_row->pattern[index_pattern] == ' ') {
29--
302.34.1
31
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32053.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32053.patch
new file mode 100644
index 0000000000..93fa69e06c
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32053.patch
@@ -0,0 +1,40 @@
1From 819dbc0fcf174b8182cdb279f7be15ea1cde649f Mon Sep 17 00:00:00 2001
2From: Ar Jun <pkillarjun@protonmail.com>
3Date: Mon, 18 Nov 2024 14:59:51 -0600
4Subject: [PATCH] Fix heap buffer overflow in
5 soup-content-sniffer.c:sniff_feed_or_html()
6
7CVE: CVE-2025-32053
8Upstream-Status: Backport
9[https://gitlab.gnome.org/GNOME/libsoup/-/commit/eaed42ca8d40cd9ab63764e3d63641180505f40a]
10
11Signed-off-by: Changqing Li <changqing.li@windriver.com>
12---
13 libsoup/content-sniffer/soup-content-sniffer.c | 4 ++--
14 1 file changed, 2 insertions(+), 2 deletions(-)
15
16diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c
17index 2351c3f..23d5aaa 100644
18--- a/libsoup/content-sniffer/soup-content-sniffer.c
19+++ b/libsoup/content-sniffer/soup-content-sniffer.c
20@@ -646,7 +646,7 @@ skip_insignificant_space (const char *resource, int *pos, int resource_length)
21 (resource[*pos] == '\x0D')) {
22 *pos = *pos + 1;
23
24- if (*pos > resource_length)
25+ if (*pos >= resource_length)
26 return TRUE;
27 }
28
29@@ -709,7 +709,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, GBytes *buffer)
30 do {
31 pos++;
32
33- if (pos > resource_length)
34+ if ((pos + 1) > resource_length)
35 goto text_html;
36 } while (resource[pos] != '>');
37
38--
392.34.1
40
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32906-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32906-1.patch
new file mode 100644
index 0000000000..916a41a71f
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32906-1.patch
@@ -0,0 +1,61 @@
1From 1f509f31b6f8420a3661c3f990424ab7b9164931 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Tue, 11 Feb 2025 14:36:26 -0600
4Subject: [PATCH] headers: Handle parsing edge case
5
6This version number is specifically crafted to pass sanity checks allowing it to go one byte out of bounds.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/1f509f31b6f8420a3661c3f990424ab7b9164931]
9CVE: CVE-2025-32906 #Dependency Patch
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/soup-headers.c | 2 +-
13 tests/header-parsing-test.c | 12 ++++++++++++
14 2 files changed, 13 insertions(+), 1 deletion(-)
15
16diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
17index 85385cea..9d6d00a3 100644
18--- a/libsoup/soup-headers.c
19+++ b/libsoup/soup-headers.c
20@@ -225,7 +225,7 @@ soup_headers_parse_request (const char *str,
21 !g_ascii_isdigit (version[5]))
22 return SOUP_STATUS_BAD_REQUEST;
23 major_version = strtoul (version + 5, &p, 10);
24- if (*p != '.' || !g_ascii_isdigit (p[1]))
25+ if (p + 1 >= str + len || *p != '.' || !g_ascii_isdigit (p[1]))
26 return SOUP_STATUS_BAD_REQUEST;
27 minor_version = strtoul (p + 1, &p, 10);
28 version_end = p;
29diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
30index 07ea2866..10ddb684 100644
31--- a/tests/header-parsing-test.c
32+++ b/tests/header-parsing-test.c
33@@ -6,6 +6,10 @@ typedef struct {
34 const char *name, *value;
35 } Header;
36
37+static char unterminated_http_version[] = {
38+ 'G','E','T',' ','/',' ','H','T','T','P','/','1', '0', '0', '.'
39+};
40+
41 static struct RequestTest {
42 const char *description;
43 const char *bugref;
44@@ -383,6 +387,14 @@ static struct RequestTest {
45 { { NULL } }
46 },
47
48+ /* This couldn't be a C string as going one byte over would have been safe. */
49+ { "Long HTTP version terminating at missing minor version", "https://gitlab.gnome.org/GNOME/libsoup/-/issues/404",
50+ unterminated_http_version, sizeof (unterminated_http_version),
51+ SOUP_STATUS_BAD_REQUEST,
52+ NULL, NULL, -1,
53+ { { NULL } }
54+ },
55+
56 { "Non-HTTP request", NULL,
57 "GET / SOUP/1.1\r\nHost: example.com\r\n", -1,
58 SOUP_STATUS_BAD_REQUEST,
59--
60GitLab
61
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32906-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32906-2.patch
new file mode 100644
index 0000000000..5baad15648
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32906-2.patch
@@ -0,0 +1,83 @@
1From af5b9a4a3945c52b940d5ac181ef51bb12011f1f Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 12 Feb 2025 11:30:02 -0600
4Subject: [PATCH] headers: Handle parsing only newlines
5
6Closes #404
7Closes #407
8
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/af5b9a4a3945c52b940d5ac181ef51bb12011f1f]
10CVE: CVE-2025-32906
11Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
12---
13 libsoup/soup-headers.c | 4 ++--
14 tests/header-parsing-test.c | 13 ++++++++++++-
15 2 files changed, 14 insertions(+), 3 deletions(-)
16
17diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
18index 9d6d00a3..52ef2ece 100644
19--- a/libsoup/soup-headers.c
20+++ b/libsoup/soup-headers.c
21@@ -186,7 +186,7 @@ soup_headers_parse_request (const char *str,
22 /* RFC 2616 4.1 "servers SHOULD ignore any empty line(s)
23 * received where a Request-Line is expected."
24 */
25- while ((*str == '\r' || *str == '\n') && len > 0) {
26+ while (len > 0 && (*str == '\r' || *str == '\n')) {
27 str++;
28 len--;
29 }
30@@ -371,7 +371,7 @@ soup_headers_parse_response (const char *str,
31 * after a response, which we then see prepended to the next
32 * response on that connection.
33 */
34- while ((*str == '\r' || *str == '\n') && len > 0) {
35+ while (len > 0 && (*str == '\r' || *str == '\n')) {
36 str++;
37 len--;
38 }
39diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
40index 10ddb684..4faafbd6 100644
41--- a/tests/header-parsing-test.c
42+++ b/tests/header-parsing-test.c
43@@ -6,10 +6,15 @@ typedef struct {
44 const char *name, *value;
45 } Header;
46
47+/* These are not C strings to ensure going one byte over is not safe. */
48 static char unterminated_http_version[] = {
49 'G','E','T',' ','/',' ','H','T','T','P','/','1', '0', '0', '.'
50 };
51
52+static char only_newlines[] = {
53+ '\n', '\n', '\n', '\n'
54+};
55+
56 static struct RequestTest {
57 const char *description;
58 const char *bugref;
59@@ -387,7 +392,6 @@ static struct RequestTest {
60 { { NULL } }
61 },
62
63- /* This couldn't be a C string as going one byte over would have been safe. */
64 { "Long HTTP version terminating at missing minor version", "https://gitlab.gnome.org/GNOME/libsoup/-/issues/404",
65 unterminated_http_version, sizeof (unterminated_http_version),
66 SOUP_STATUS_BAD_REQUEST,
67@@ -457,6 +461,13 @@ static struct RequestTest {
68 SOUP_STATUS_BAD_REQUEST,
69 NULL, NULL, -1,
70 { { NULL } }
71+ },
72+
73+ { "Only newlines", NULL,
74+ only_newlines, sizeof (only_newlines),
75+ SOUP_STATUS_BAD_REQUEST,
76+ NULL, NULL, -1,
77+ { { NULL } }
78 }
79 };
80 static const int num_reqtests = G_N_ELEMENTS (reqtests);
81--
82GitLab
83
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-1.patch
new file mode 100644
index 0000000000..026a38c39a
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-1.patch
@@ -0,0 +1,200 @@
1From 4741bc288ece52f5dbaebc568e72ce14da3e2757 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 15 Apr 2025 12:17:39 +0200
4Subject: [PATCH 1/2] soup-message-headers: Correct merge of ranges
5
6It had been skipping every second range, which generated an array
7of a lot of insane ranges, causing large memory usage by the server.
8
9Closes #428
10
11Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452>
12
13CVE: CVE-2025-32907
14Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452/commits]
15
16Signed-off-by: Changqing Li <changqing.li@windriver.com>
17---
18 libsoup/soup-message-headers.c | 1 +
19 tests/meson.build | 1 +
20 tests/server-mem-limit-test.c | 144 +++++++++++++++++++++++++++++++++
21 3 files changed, 146 insertions(+)
22 create mode 100644 tests/server-mem-limit-test.c
23
24diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
25index 95e2c31..d69d6e8 100644
26--- a/libsoup/soup-message-headers.c
27+++ b/libsoup/soup-message-headers.c
28@@ -1210,6 +1210,7 @@ soup_message_headers_get_ranges_internal (SoupMessageHeaders *hdrs,
29 if (cur->start <= prev->end) {
30 prev->end = MAX (prev->end, cur->end);
31 g_array_remove_index (array, i);
32+ i--;
33 }
34 }
35 }
36diff --git a/tests/meson.build b/tests/meson.build
37index 9bf88be..7ef7ac5 100644
38--- a/tests/meson.build
39+++ b/tests/meson.build
40@@ -93,6 +93,7 @@ tests = [
41 {'name': 'samesite'},
42 {'name': 'session'},
43 {'name': 'server-auth'},
44+ {'name': 'server-mem-limit'},
45 {'name': 'server'},
46 {'name': 'sniffing'},
47 {'name': 'ssl',
48diff --git a/tests/server-mem-limit-test.c b/tests/server-mem-limit-test.c
49new file mode 100644
50index 0000000..98f1c40
51--- /dev/null
52+++ b/tests/server-mem-limit-test.c
53@@ -0,0 +1,144 @@
54+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
55+/*
56+ * Copyright (C) 2025 Red Hat <www.redhat.com>
57+ */
58+
59+#include "test-utils.h"
60+
61+#include <sys/resource.h>
62+
63+/*
64+ This test limits memory usage to trigger too large buffer allocation crash.
65+ As restoring the limits back to what it was does not always work, it's split
66+ out of the server-test.c test with copied minimal server code.
67+ */
68+
69+typedef struct {
70+ SoupServer *server;
71+ GUri *base_uri, *ssl_base_uri;
72+ GSList *handlers;
73+} ServerData;
74+
75+static void
76+server_setup_nohandler (ServerData *sd, gconstpointer test_data)
77+{
78+ sd->server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD);
79+ sd->base_uri = soup_test_server_get_uri (sd->server, "http", NULL);
80+ if (tls_available)
81+ sd->ssl_base_uri = soup_test_server_get_uri (sd->server, "https", NULL);
82+}
83+
84+static void
85+server_add_handler (ServerData *sd,
86+ const char *path,
87+ SoupServerCallback callback,
88+ gpointer user_data,
89+ GDestroyNotify destroy)
90+{
91+ soup_server_add_handler (sd->server, path, callback, user_data, destroy);
92+ sd->handlers = g_slist_prepend (sd->handlers, g_strdup (path));
93+}
94+
95+static void
96+server_setup (ServerData *sd, gconstpointer test_data)
97+{
98+ server_setup_nohandler (sd, test_data);
99+}
100+
101+static void
102+server_teardown (ServerData *sd, gconstpointer test_data)
103+{
104+ GSList *iter;
105+
106+ for (iter = sd->handlers; iter; iter = iter->next)
107+ soup_server_remove_handler (sd->server, iter->data);
108+ g_slist_free_full (sd->handlers, g_free);
109+
110+ g_clear_pointer (&sd->server, soup_test_server_quit_unref);
111+ g_clear_pointer (&sd->base_uri, g_uri_unref);
112+ g_clear_pointer (&sd->ssl_base_uri, g_uri_unref);
113+}
114+
115+static void
116+server_file_callback (SoupServer *server,
117+ SoupServerMessage *msg,
118+ const char *path,
119+ GHashTable *query,
120+ gpointer data)
121+{
122+ void *mem;
123+
124+ g_assert_cmpstr (path, ==, "/file");
125+ g_assert_cmpstr (soup_server_message_get_method (msg), ==, SOUP_METHOD_GET);
126+
127+ mem = g_malloc0 (sizeof (char) * 1024 * 1024);
128+ /* fedora-scan CI claims a warning about possibly leaked `mem` variable, thus use
129+ the copy and free it explicitly, to workaround the false positive; the g_steal_pointer()
130+ did not help for the malloc-ed memory */
131+ soup_server_message_set_response (msg, "application/octet-stream", SOUP_MEMORY_COPY, mem, sizeof (char) * 1024 *1024);
132+ soup_server_message_set_status (msg, SOUP_STATUS_OK, NULL);
133+ g_free (mem);
134+}
135+
136+static void
137+do_ranges_overlaps_test (ServerData *sd, gconstpointer test_data)
138+{
139+ SoupSession *session;
140+ SoupMessage *msg;
141+ GString *range;
142+ GUri *uri;
143+ const char *chunk = ",0,0,0,0,0,0,0,0,0,0,0";
144+
145+ g_test_bug ("428");
146+
147+ #ifdef G_OS_WIN32
148+ g_test_skip ("Cannot run under windows");
149+ return;
150+ #endif
151+
152+ range = g_string_sized_new (99 * 1024);
153+ g_string_append (range, "bytes=1024");
154+ while (range->len < 99 * 1024)
155+ g_string_append (range, chunk);
156+
157+ session = soup_test_session_new (NULL);
158+ server_add_handler (sd, "/file", server_file_callback, NULL, NULL);
159+
160+ uri = g_uri_parse_relative (sd->base_uri, "/file", SOUP_HTTP_URI_FLAGS, NULL);
161+
162+ msg = soup_message_new_from_uri ("GET", uri);
163+ soup_message_headers_append (soup_message_get_request_headers (msg), "Range", range->str);
164+
165+ soup_test_session_send_message (session, msg);
166+
167+ soup_test_assert_message_status (msg, SOUP_STATUS_PARTIAL_CONTENT);
168+
169+ g_object_unref (msg);
170+
171+ g_string_free (range, TRUE);
172+ g_uri_unref (uri);
173+
174+ soup_test_session_abort_unref (session);
175+}
176+
177+int
178+main (int argc, char **argv)
179+{
180+ int ret;
181+
182+ test_init (argc, argv, NULL);
183+
184+ #ifndef G_OS_WIN32
185+ struct rlimit new_rlimit = { 1024 * 1024 * 64, 1024 * 1024 * 64 };
186+ /* limit memory usage, to trigger too large memory allocation abort */
187+ g_assert_cmpint (setrlimit (RLIMIT_DATA, &new_rlimit), ==, 0);
188+ #endif
189+
190+ g_test_add ("/server-mem/range-overlaps", ServerData, NULL,
191+ server_setup, do_ranges_overlaps_test, server_teardown);
192+
193+ ret = g_test_run ();
194+
195+ test_cleanup ();
196+ return ret;
197+}
198--
1992.34.1
200
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-2.patch
new file mode 100644
index 0000000000..c1b6a1feba
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32907-2.patch
@@ -0,0 +1,68 @@
1From 85716d2769b3e1acda024d2c7cbfb68139c5d90b Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 13 May 2025 14:20:46 +0200
4Subject: [PATCH 2/2] server-mem-limit-test: Limit memory usage only when not
5 built witha sanitizer
6
7A build with -Db_sanitize=address crashes with failed mmap(), which is done
8inside libasan. The test requires 20.0TB of virtual memory when running with
9the sanitizer, which is beyond unsigned integer limits and may not trigger
10the bug anyway.
11
12Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452>
13
14CVE: CVE-2025-32907
15Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/452/commits]
16
17Signed-off-by: Changqing Li <changqing.li@windriver.com>
18---
19 meson.build | 4 ++++
20 tests/server-mem-limit-test.c | 13 +++++++++----
21 2 files changed, 13 insertions(+), 4 deletions(-)
22
23diff --git a/meson.build b/meson.build
24index 73a9fa0..a9531a4 100644
25--- a/meson.build
26+++ b/meson.build
27@@ -374,6 +374,10 @@ configinc = include_directories('.')
28
29 prefix = get_option('prefix')
30
31+if get_option('b_sanitize') != 'none'
32+ cdata.set_quoted('B_SANITIZE_OPTION', get_option('b_sanitize'))
33+endif
34+
35 cdata.set_quoted('PACKAGE_VERSION', soup_version)
36 cdata.set_quoted('LOCALEDIR', join_paths(prefix, get_option('localedir')))
37 cdata.set_quoted('GETTEXT_PACKAGE', libsoup_api_name)
38diff --git a/tests/server-mem-limit-test.c b/tests/server-mem-limit-test.c
39index 98f1c40..65dc875 100644
40--- a/tests/server-mem-limit-test.c
41+++ b/tests/server-mem-limit-test.c
42@@ -126,14 +126,19 @@ main (int argc, char **argv)
43 {
44 int ret;
45
46- test_init (argc, argv, NULL);
47-
48- #ifndef G_OS_WIN32
49- struct rlimit new_rlimit = { 1024 * 1024 * 64, 1024 * 1024 * 64 };
50+ /* a build with an address sanitizer may crash on mmap() with the limit,
51+ thus skip the limit set in such case, even it may not necessarily
52+ trigger the bug if it regresses */
53+ #if !defined(G_OS_WIN32) && !defined(B_SANITIZE_OPTION)
54+ struct rlimit new_rlimit = { 1024UL * 1024UL * 1024UL * 2UL, 1024UL * 1024UL * 1024UL * 2UL };
55 /* limit memory usage, to trigger too large memory allocation abort */
56 g_assert_cmpint (setrlimit (RLIMIT_DATA, &new_rlimit), ==, 0);
57+ #else
58+ g_message ("server-mem-limit-test: Running without memory limit");
59 #endif
60
61+ test_init (argc, argv, NULL);
62+
63 g_test_add ("/server-mem/range-overlaps", ServerData, NULL,
64 server_setup, do_ranges_overlaps_test, server_teardown);
65
66--
672.34.1
68
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-1.patch
new file mode 100644
index 0000000000..8ad0e16d45
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-1.patch
@@ -0,0 +1,89 @@
1From 56b8eb061a02c4e99644d6f1e62e601d0d814beb Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 15 Apr 2025 09:59:05 +0200
4Subject: [PATCH 1/2] soup-server-http2: Check validity of the constructed
5 connection URI
6
7The HTTP/2 pseudo-headers can contain invalid values, which the GUri rejects
8and returns NULL, but the soup-server did not check the validity and could
9abort the server itself later in the code.
10
11Closes #429
12
13CVE: CVE-2025-32908
14Upstream-Status: Backport
15[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/451/diffs?commit_id=a792b23ab87cacbf4dd9462bf7b675fa678efbae]
16
17Signed-off-by: Changqing Li <changqing.li@windriver.com>
18---
19 .../http2/soup-server-message-io-http2.c | 4 +++
20 tests/http2-test.c | 28 +++++++++++++++++++
21 2 files changed, 32 insertions(+)
22
23diff --git a/libsoup/server/http2/soup-server-message-io-http2.c b/libsoup/server/http2/soup-server-message-io-http2.c
24index 943ecfd..f1fe2d5 100644
25--- a/libsoup/server/http2/soup-server-message-io-http2.c
26+++ b/libsoup/server/http2/soup-server-message-io-http2.c
27@@ -771,9 +771,13 @@ on_frame_recv_callback (nghttp2_session *session,
28 char *uri_string;
29 GUri *uri;
30
31+ if (msg_io->scheme == NULL || msg_io->authority == NULL || msg_io->path == NULL)
32+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
33 uri_string = g_strdup_printf ("%s://%s%s", msg_io->scheme, msg_io->authority, msg_io->path);
34 uri = g_uri_parse (uri_string, SOUP_HTTP_URI_FLAGS, NULL);
35 g_free (uri_string);
36+ if (uri == NULL)
37+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
38 soup_server_message_set_uri (msg_io->msg, uri);
39 g_uri_unref (uri);
40
41diff --git a/tests/http2-test.c b/tests/http2-test.c
42index ef097f4..df86d9b 100644
43--- a/tests/http2-test.c
44+++ b/tests/http2-test.c
45@@ -1241,6 +1241,30 @@ do_connection_closed_test (Test *test, gconstpointer data)
46 g_uri_unref (uri);
47 }
48
49+static void
50+do_broken_pseudo_header_test (Test *test, gconstpointer data)
51+{
52+ char *path;
53+ SoupMessage *msg;
54+ GUri *uri;
55+ GBytes *body = NULL;
56+ GError *error = NULL;
57+
58+ uri = g_uri_parse_relative (base_uri, "/ag", SOUP_HTTP_URI_FLAGS, NULL);
59+
60+ /* an ugly cheat to construct a broken URI, which can be sent from other libs */
61+ path = (char *) g_uri_get_path (uri);
62+ path[1] = '%';
63+
64+ msg = soup_message_new_from_uri (SOUP_METHOD_GET, uri);
65+ body = soup_test_session_async_send (test->session, msg, NULL, &error);
66+ g_assert_error (error, G_IO_ERROR, G_IO_ERROR_PARTIAL_INPUT);
67+ g_assert_null (body);
68+ g_clear_error (&error);
69+ g_object_unref (msg);
70+ g_uri_unref (uri);
71+}
72+
73 static gboolean
74 unpause_message (SoupServerMessage *msg)
75 {
76@@ -1549,6 +1573,10 @@ main (int argc, char **argv)
77 setup_session,
78 do_connection_closed_test,
79 teardown_session);
80+ g_test_add ("/http2/broken-pseudo-header", Test, NULL,
81+ setup_session,
82+ do_broken_pseudo_header_test,
83+ teardown_session);
84
85 ret = g_test_run ();
86
87--
882.34.1
89
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-2.patch
new file mode 100644
index 0000000000..b53c7efb7b
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32908-2.patch
@@ -0,0 +1,53 @@
1From aad0dcf22ee9fdfefa6b72055268240cceccfe4c Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Mon, 28 Apr 2025 10:55:42 +0200
4Subject: [PATCH 2/2] soup-server-http2: Correct check of the validity of the
5 constructed connection URI
6
7RFC 5740: the CONNECT has unset the "scheme" and "path", thus allow them unset.
8
9The commit a792b23ab87cacbf4dd9462bf7b675fa678efbae also missed to decrement
10the `io->in_callback` in the early returns.
11
12Related to #429
13
14CVE: CVE-2025-32908
15Upstream-Status: Backport
16[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/453/diffs?commit_id=527428a033df573ef4558ce1106e080fd9ec5c71]
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 .../server/http2/soup-server-message-io-http2.c | 15 ++++++++++-----
21 1 file changed, 10 insertions(+), 5 deletions(-)
22
23diff --git a/libsoup/server/http2/soup-server-message-io-http2.c b/libsoup/server/http2/soup-server-message-io-http2.c
24index f1fe2d5..913afb4 100644
25--- a/libsoup/server/http2/soup-server-message-io-http2.c
26+++ b/libsoup/server/http2/soup-server-message-io-http2.c
27@@ -771,13 +771,18 @@ on_frame_recv_callback (nghttp2_session *session,
28 char *uri_string;
29 GUri *uri;
30
31- if (msg_io->scheme == NULL || msg_io->authority == NULL || msg_io->path == NULL)
32- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
33- uri_string = g_strdup_printf ("%s://%s%s", msg_io->scheme, msg_io->authority, msg_io->path);
34+ if (msg_io->authority == NULL) {
35+ io->in_callback--;
36+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
37+ }
38+ /* RFC 5740: the CONNECT has unset the "scheme" and "path", but the GUri requires the scheme, thus let it be "(null)" */
39+ uri_string = g_strdup_printf ("%s://%s%s", msg_io->scheme, msg_io->authority, msg_io->path == NULL ? "" : msg_io->path);
40 uri = g_uri_parse (uri_string, SOUP_HTTP_URI_FLAGS, NULL);
41 g_free (uri_string);
42- if (uri == NULL)
43- return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
44+ if (uri == NULL) {
45+ io->in_callback--;
46+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
47+ }
48 soup_server_message_set_uri (msg_io->msg, uri);
49 g_uri_unref (uri);
50
51--
522.34.1
53
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32909.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32909.patch
new file mode 100644
index 0000000000..8982da58f1
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32909.patch
@@ -0,0 +1,36 @@
1From ba4c3a6f988beff59e45801ab36067293d24ce92 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 8 Jan 2025 16:30:17 -0600
4Subject: [PATCH] content-sniffer: Handle sniffing resource shorter than 4
5 bytes
6
7Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/ba4c3a6f988beff59e45801ab36067293d24ce92]
8CVE: CVE-2025-32909
9Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
10---
11 libsoup/content-sniffer/soup-content-sniffer.c | 7 ++++++-
12 1 file changed, 6 insertions(+), 1 deletion(-)
13
14diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c
15index 5a181ff1..aeee2e25 100644
16--- a/libsoup/content-sniffer/soup-content-sniffer.c
17+++ b/libsoup/content-sniffer/soup-content-sniffer.c
18@@ -243,9 +243,14 @@ sniff_mp4 (SoupContentSniffer *sniffer, GBytes *buffer)
19 gsize resource_length;
20 const char *resource = g_bytes_get_data (buffer, &resource_length);
21 resource_length = MIN (512, resource_length);
22- guint32 box_size = *((guint32*)resource);
23+ guint32 box_size;
24 guint i;
25
26+ if (resource_length < sizeof (guint32))
27+ return FALSE;
28+
29+ box_size = *((guint32*)resource);
30+
31 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
32 box_size = ((box_size >> 24) |
33 ((box_size << 8) & 0x00FF0000) |
34--
35GitLab
36
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-1.patch
new file mode 100644
index 0000000000..27011f587f
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-1.patch
@@ -0,0 +1,98 @@
1From e40df6d48a1cbab56f5d15016cc861a503423cfe Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Sun, 8 Dec 2024 20:00:35 -0600
4Subject: [PATCH] auth-digest: Handle missing realm in authenticate header
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/e40df6d48a1cbab56f5d15016cc861a503423cfe]
7CVE: CVE-2025-32910
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9---
10 libsoup/auth/soup-auth-digest.c | 3 ++
11 tests/auth-test.c | 50 +++++++++++++++++++++++++++++++++
12 2 files changed, 53 insertions(+)
13
14diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c
15index 2e81849af..4f12e87a5 100644
16--- a/libsoup/auth/soup-auth-digest.c
17+++ b/libsoup/auth/soup-auth-digest.c
18@@ -148,6 +148,9 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
19 guint qop_options;
20 gboolean ok = TRUE;
21
22+ if (!soup_auth_get_realm (auth))
23+ return FALSE;
24+
25 g_free (priv->domain);
26 g_free (priv->nonce);
27 g_free (priv->opaque);
28diff --git a/tests/auth-test.c b/tests/auth-test.c
29index 158fdac10..3066e904a 100644
30--- a/tests/auth-test.c
31+++ b/tests/auth-test.c
32@@ -1866,6 +1866,55 @@ do_multiple_digest_algorithms (void)
33 soup_test_server_quit_unref (server);
34 }
35
36+static void
37+on_request_read_for_missing_realm (SoupServer *server,
38+ SoupServerMessage *msg,
39+ gpointer user_data)
40+{
41+ SoupMessageHeaders *response_headers = soup_server_message_get_response_headers (msg);
42+ soup_message_headers_replace (response_headers, "WWW-Authenticate", "Digest qop=\"auth\"");
43+}
44+
45+static void
46+do_missing_realm_test (void)
47+{
48+ SoupSession *session;
49+ SoupMessage *msg;
50+ SoupServer *server;
51+ SoupAuthDomain *digest_auth_domain;
52+ gint status;
53+ GUri *uri;
54+
55+ server = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD);
56+ soup_server_add_handler (server, NULL,
57+ server_callback, NULL, NULL);
58+ uri = soup_test_server_get_uri (server, "http", NULL);
59+
60+ digest_auth_domain = soup_auth_domain_digest_new (
61+ "realm", "auth-test",
62+ "auth-callback", server_digest_auth_callback,
63+ NULL);
64+ soup_auth_domain_add_path (digest_auth_domain, "/");
65+ soup_server_add_auth_domain (server, digest_auth_domain);
66+ g_object_unref (digest_auth_domain);
67+
68+ g_signal_connect (server, "request-read",
69+ G_CALLBACK (on_request_read_for_missing_realm),
70+ NULL);
71+
72+ session = soup_test_session_new (NULL);
73+ msg = soup_message_new_from_uri ("GET", uri);
74+ g_signal_connect (msg, "authenticate",
75+ G_CALLBACK (on_digest_authenticate),
76+ NULL);
77+
78+ status = soup_test_session_send_message (session, msg);
79+
80+ g_assert_cmpint (status, ==, SOUP_STATUS_UNAUTHORIZED);
81+ g_uri_unref (uri);
82+ soup_test_server_quit_unref (server);
83+}
84+
85 int
86 main (int argc, char **argv)
87 {
88@@ -1899,6 +1948,7 @@ main (int argc, char **argv)
89 g_test_add_func ("/auth/auth-uri", do_auth_uri_test);
90 g_test_add_func ("/auth/cancel-request-on-authenticate", do_cancel_request_on_authenticate);
91 g_test_add_func ("/auth/multiple-algorithms", do_multiple_digest_algorithms);
92+ g_test_add_func ("/auth/missing-realm", do_missing_realm_test);
93
94 ret = g_test_run ();
95
96--
97GitLab
98
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-2.patch
new file mode 100644
index 0000000000..b62e09cbdb
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-2.patch
@@ -0,0 +1,149 @@
1From 405a8a34597a44bd58c4759e7d5e23f02c3b556a Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Thu, 26 Dec 2024 18:18:35 -0600
4Subject: [PATCH] auth-digest: Handle missing nonce
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/405a8a34597a44bd58c4759e7d5e23f02c3b556a]
7CVE: CVE-2025-32910
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9---
10 libsoup/auth/soup-auth-digest.c | 45 +++++++++++++++++++++++++--------
11 tests/auth-test.c | 19 ++++++++------
12 2 files changed, 46 insertions(+), 18 deletions(-)
13
14diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c
15index 4f12e87a..350bfde6 100644
16--- a/libsoup/auth/soup-auth-digest.c
17+++ b/libsoup/auth/soup-auth-digest.c
18@@ -138,6 +138,19 @@ soup_auth_digest_get_qop (SoupAuthDigestQop qop)
19 return g_string_free (out, FALSE);
20 }
21
22+static gboolean
23+validate_params (SoupAuthDigest *auth_digest)
24+{
25+ SoupAuthDigestPrivate *priv = soup_auth_digest_get_instance_private (auth_digest);
26+
27+ if (priv->qop || priv->algorithm == SOUP_AUTH_DIGEST_ALGORITHM_MD5_SESS) {
28+ if (!priv->nonce)
29+ return FALSE;
30+ }
31+
32+ return TRUE;
33+}
34+
35 static gboolean
36 soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
37 GHashTable *auth_params)
38@@ -175,16 +188,21 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
39 if (priv->algorithm == -1)
40 ok = FALSE;
41
42- stale = g_hash_table_lookup (auth_params, "stale");
43- if (stale && !g_ascii_strcasecmp (stale, "TRUE") && *priv->hex_urp)
44- recompute_hex_a1 (priv);
45- else {
46- g_free (priv->user);
47- priv->user = NULL;
48- g_free (priv->cnonce);
49- priv->cnonce = NULL;
50- memset (priv->hex_urp, 0, sizeof (priv->hex_urp));
51- memset (priv->hex_a1, 0, sizeof (priv->hex_a1));
52+ if (!validate_params (auth_digest))
53+ ok = FALSE;
54+
55+ if (ok) {
56+ stale = g_hash_table_lookup (auth_params, "stale");
57+ if (stale && !g_ascii_strcasecmp (stale, "TRUE") && *priv->hex_urp)
58+ recompute_hex_a1 (priv);
59+ else {
60+ g_free (priv->user);
61+ priv->user = NULL;
62+ g_free (priv->cnonce);
63+ priv->cnonce = NULL;
64+ memset (priv->hex_urp, 0, sizeof (priv->hex_urp));
65+ memset (priv->hex_a1, 0, sizeof (priv->hex_a1));
66+ }
67 }
68
69 return ok;
70@@ -276,6 +294,8 @@ soup_auth_digest_compute_hex_a1 (const char *hex_urp,
71
72 /* In MD5-sess, A1 is hex_urp:nonce:cnonce */
73
74+ g_assert (nonce && cnonce);
75+
76 checksum = g_checksum_new (G_CHECKSUM_MD5);
77 g_checksum_update (checksum, (guchar *)hex_urp, strlen (hex_urp));
78 g_checksum_update (checksum, (guchar *)":", 1);
79@@ -366,6 +386,8 @@ soup_auth_digest_compute_response (const char *method,
80 if (qop) {
81 char tmp[9];
82
83+ g_assert (cnonce);
84+
85 g_snprintf (tmp, 9, "%.8x", nc);
86 g_checksum_update (checksum, (guchar *)tmp, strlen (tmp));
87 g_checksum_update (checksum, (guchar *)":", 1);
88@@ -429,6 +451,9 @@ soup_auth_digest_get_authorization (SoupAuth *auth, SoupMessage *msg)
89 g_return_val_if_fail (uri != NULL, NULL);
90 url = soup_uri_get_path_and_query (uri);
91
92+ g_assert (priv->nonce);
93+ g_assert (!priv->qop || priv->cnonce);
94+
95 soup_auth_digest_compute_response (soup_message_get_method (msg), url, priv->hex_a1,
96 priv->qop, priv->nonce,
97 priv->cnonce, priv->nc,
98diff --git a/tests/auth-test.c b/tests/auth-test.c
99index 3066e904..c651c7cd 100644
100--- a/tests/auth-test.c
101+++ b/tests/auth-test.c
102@@ -1867,16 +1867,17 @@ do_multiple_digest_algorithms (void)
103 }
104
105 static void
106-on_request_read_for_missing_realm (SoupServer *server,
107- SoupServerMessage *msg,
108- gpointer user_data)
109+on_request_read_for_missing_params (SoupServer *server,
110+ SoupServerMessage *msg,
111+ gpointer user_data)
112 {
113+ const char *auth_header = user_data;
114 SoupMessageHeaders *response_headers = soup_server_message_get_response_headers (msg);
115- soup_message_headers_replace (response_headers, "WWW-Authenticate", "Digest qop=\"auth\"");
116+ soup_message_headers_replace (response_headers, "WWW-Authenticate", auth_header);
117 }
118
119 static void
120-do_missing_realm_test (void)
121+do_missing_params_test (gconstpointer auth_header)
122 {
123 SoupSession *session;
124 SoupMessage *msg;
125@@ -1899,8 +1900,8 @@ do_missing_realm_test (void)
126 g_object_unref (digest_auth_domain);
127
128 g_signal_connect (server, "request-read",
129- G_CALLBACK (on_request_read_for_missing_realm),
130- NULL);
131+ G_CALLBACK (on_request_read_for_missing_params),
132+ (gpointer)auth_header);
133
134 session = soup_test_session_new (NULL);
135 msg = soup_message_new_from_uri ("GET", uri);
136@@ -1948,7 +1949,9 @@ main (int argc, char **argv)
137 g_test_add_func ("/auth/auth-uri", do_auth_uri_test);
138 g_test_add_func ("/auth/cancel-request-on-authenticate", do_cancel_request_on_authenticate);
139 g_test_add_func ("/auth/multiple-algorithms", do_multiple_digest_algorithms);
140- g_test_add_func ("/auth/missing-realm", do_missing_realm_test);
141+ g_test_add_data_func ("/auth/missing-params/realm", "Digest qop=\"auth\"", do_missing_params_test);
142+ g_test_add_data_func ("/auth/missing-params/nonce", "Digest realm=\"auth-test\", qop=\"auth,auth-int\", opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"", do_missing_params_test);
143+ g_test_add_data_func ("/auth/missing-params/nonce-md5-sess", "Digest realm=\"auth-test\", qop=\"auth,auth-int\", opaque=\"5ccc069c403ebaf9f0171e9517f40e41\" algorithm=\"MD5-sess\"", do_missing_params_test);
144
145 ret = g_test_run ();
146
147--
148GitLab
149
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-3.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-3.patch
new file mode 100644
index 0000000000..32e0c86e62
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32910-3.patch
@@ -0,0 +1,27 @@
1From ea16eeacb052e423eb5c3b0b705e5eab34b13832 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Fri, 27 Dec 2024 13:52:52 -0600
4Subject: [PATCH] auth-digest: Fix leak
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/ea16eeacb052e423eb5c3b0b705e5eab34b13832]
7CVE: CVE-2025-32910
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9---
10 libsoup/auth/soup-auth-digest.c | 1 +
11 1 file changed, 1 insertion(+)
12
13diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c
14index 350bfde6..9eb7fa0e 100644
15--- a/libsoup/auth/soup-auth-digest.c
16+++ b/libsoup/auth/soup-auth-digest.c
17@@ -72,6 +72,7 @@ soup_auth_digest_finalize (GObject *object)
18 g_free (priv->nonce);
19 g_free (priv->domain);
20 g_free (priv->cnonce);
21+ g_free (priv->opaque);
22
23 memset (priv->hex_urp, 0, sizeof (priv->hex_urp));
24 memset (priv->hex_a1, 0, sizeof (priv->hex_a1));
25--
26GitLab
27
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32911_CVE-2025-32913-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32911_CVE-2025-32913-1.patch
new file mode 100644
index 0000000000..4e1d8212f5
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32911_CVE-2025-32913-1.patch
@@ -0,0 +1,72 @@
1From 7b4ef0e004ece3a308ccfaa714c284f4c96ade34 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Fri, 27 Dec 2024 17:53:50 -0600
4Subject: [PATCH] soup_message_headers_get_content_disposition: Fix NULL deref
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/7b4ef0e004ece3a308ccfaa714c284f4c96ade34]
7CVE: CVE-2025-32911 CVE-2025-32913 #Dependency Patch
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9---
10 libsoup/soup-message-headers.c | 13 +++++++++----
11 tests/header-parsing-test.c | 14 ++++++++++++++
12 2 files changed, 23 insertions(+), 4 deletions(-)
13
14diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
15index 56cc1e9d..04f4c302 100644
16--- a/libsoup/soup-message-headers.c
17+++ b/libsoup/soup-message-headers.c
18@@ -1660,10 +1660,15 @@ soup_message_headers_get_content_disposition (SoupMessageHeaders *hdrs,
19 */
20 if (params && g_hash_table_lookup_extended (*params, "filename",
21 &orig_key, &orig_value)) {
22- char *filename = strrchr (orig_value, '/');
23-
24- if (filename)
25- g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
26+ if (orig_value) {
27+ char *filename = strrchr (orig_value, '/');
28+
29+ if (filename)
30+ g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
31+ } else {
32+ /* filename with no value isn't valid. */
33+ g_hash_table_remove (*params, "filename");
34+ }
35 }
36 return TRUE;
37 }
38diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
39index 5e423d2b..d0b360c8 100644
40--- a/tests/header-parsing-test.c
41+++ b/tests/header-parsing-test.c
42@@ -1039,6 +1039,7 @@ do_param_list_tests (void)
43 #define RFC5987_TEST_HEADER_FALLBACK "attachment; filename*=Unknown''t%FF%FF%FFst.txt; filename=\"test.txt\""
44 #define RFC5987_TEST_HEADER_NO_TYPE "filename=\"test.txt\""
45 #define RFC5987_TEST_HEADER_NO_TYPE_2 "filename=\"test.txt\"; foo=bar"
46+#define RFC5987_TEST_HEADER_EMPTY_FILENAME ";filename"
47
48 static void
49 do_content_disposition_tests (void)
50@@ -1139,6 +1140,19 @@ do_content_disposition_tests (void)
51 g_assert_cmpstr (parameter2, ==, "bar");
52 g_hash_table_destroy (params);
53
54+ /* Empty filename */
55+ soup_message_headers_clear (hdrs);
56+ soup_message_headers_append (hdrs, "Content-Disposition",
57+ RFC5987_TEST_HEADER_EMPTY_FILENAME);
58+ if (!soup_message_headers_get_content_disposition (hdrs,
59+ &disposition,
60+ &params)) {
61+ soup_test_assert (FALSE, "empty filename decoding FAILED");
62+ return;
63+ }
64+ g_assert_false (g_hash_table_contains (params, "filename"));
65+ g_hash_table_destroy (params);
66+
67 soup_message_headers_unref (hdrs);
68
69 /* Ensure that soup-multipart always quotes filename */
70--
71GitLab
72
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32911_CVE-2025-32913-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32911_CVE-2025-32913-2.patch
new file mode 100644
index 0000000000..5d9f33c736
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32911_CVE-2025-32913-2.patch
@@ -0,0 +1,44 @@
1From f4a761fb66512fff59798765e8ac5b9e57dceef0 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Fri, 27 Dec 2024 18:00:39 -0600
4Subject: [PATCH] soup_message_headers_get_content_disposition: strdup
5 truncated filenames
6
7This table frees the strings it contains.
8
9Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/f4a761fb66512fff59798765e8ac5b9e57dceef0]
10CVE: CVE-2025-32911 CVE-2025-32913
11Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
12---
13 libsoup/soup-message-headers.c | 2 +-
14 tests/header-parsing-test.c | 1 +
15 2 files changed, 2 insertions(+), 1 deletion(-)
16
17diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
18index 04f4c302..ee7a3cb1 100644
19--- a/libsoup/soup-message-headers.c
20+++ b/libsoup/soup-message-headers.c
21@@ -1664,7 +1664,7 @@ soup_message_headers_get_content_disposition (SoupMessageHeaders *hdrs,
22 char *filename = strrchr (orig_value, '/');
23
24 if (filename)
25- g_hash_table_insert (*params, g_strdup (orig_key), filename + 1);
26+ g_hash_table_insert (*params, g_strdup (orig_key), g_strdup (filename + 1));
27 } else {
28 /* filename with no value isn't valid. */
29 g_hash_table_remove (*params, "filename");
30diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
31index d0b360c8..07ea2866 100644
32--- a/tests/header-parsing-test.c
33+++ b/tests/header-parsing-test.c
34@@ -1150,6 +1150,7 @@ do_content_disposition_tests (void)
35 soup_test_assert (FALSE, "empty filename decoding FAILED");
36 return;
37 }
38+ g_free (disposition);
39 g_assert_false (g_hash_table_contains (params, "filename"));
40 g_hash_table_destroy (params);
41
42--
43GitLab
44
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32912-1.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32912-1.patch
new file mode 100644
index 0000000000..c35c599502
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32912-1.patch
@@ -0,0 +1,41 @@
1From cd077513f267e43ce4b659eb18a1734d8a369992 Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 5 Feb 2025 14:03:05 -0600
4Subject: [PATCH] auth-digest: Handle missing nonce
5
6Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/cd077513f267e43ce4b659eb18a1734d8a369992]
7CVE: CVE-2025-32912
8Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
9---
10 libsoup/auth/soup-auth-digest.c | 2 +-
11 tests/auth-test.c | 1 +
12 2 files changed, 2 insertions(+), 1 deletion(-)
13
14diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c
15index 9eb7fa0e..d69a4013 100644
16--- a/libsoup/auth/soup-auth-digest.c
17+++ b/libsoup/auth/soup-auth-digest.c
18@@ -162,7 +162,7 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
19 guint qop_options;
20 gboolean ok = TRUE;
21
22- if (!soup_auth_get_realm (auth))
23+ if (!soup_auth_get_realm (auth) || !g_hash_table_contains (auth_params, "nonce"))
24 return FALSE;
25
26 g_free (priv->domain);
27diff --git a/tests/auth-test.c b/tests/auth-test.c
28index c651c7cd..484097f1 100644
29--- a/tests/auth-test.c
30+++ b/tests/auth-test.c
31@@ -1952,6 +1952,7 @@ main (int argc, char **argv)
32 g_test_add_data_func ("/auth/missing-params/realm", "Digest qop=\"auth\"", do_missing_params_test);
33 g_test_add_data_func ("/auth/missing-params/nonce", "Digest realm=\"auth-test\", qop=\"auth,auth-int\", opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"", do_missing_params_test);
34 g_test_add_data_func ("/auth/missing-params/nonce-md5-sess", "Digest realm=\"auth-test\", qop=\"auth,auth-int\", opaque=\"5ccc069c403ebaf9f0171e9517f40e41\" algorithm=\"MD5-sess\"", do_missing_params_test);
35+ g_test_add_data_func ("/auth/missing-params/nonce-and-qop", "Digest realm=\"auth-test\"", do_missing_params_test);
36
37 ret = g_test_run ();
38
39--
40GitLab
41
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32912-2.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32912-2.patch
new file mode 100644
index 0000000000..ad6f3a8028
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32912-2.patch
@@ -0,0 +1,30 @@
1From 910ebdcd3dd82386717a201c13c834f3a63eed7f Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Sat, 8 Feb 2025 12:30:13 -0600
4Subject: [PATCH] digest-auth: Handle NULL nonce
5
6`contains` only handles a missing nonce, `lookup` handles both missing and empty.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/910ebdcd3dd82386717a201c13c834f3a63eed7f]
9CVE: CVE-2025-32912
10Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
11---
12 libsoup/auth/soup-auth-digest.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c
16index d69a4013..dc4dbfc5 100644
17--- a/libsoup/auth/soup-auth-digest.c
18+++ b/libsoup/auth/soup-auth-digest.c
19@@ -162,7 +162,7 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg,
20 guint qop_options;
21 gboolean ok = TRUE;
22
23- if (!soup_auth_get_realm (auth) || !g_hash_table_contains (auth_params, "nonce"))
24+ if (!soup_auth_get_realm (auth) || !g_hash_table_lookup (auth_params, "nonce"))
25 return FALSE;
26
27 g_free (priv->domain);
28--
29GitLab
30
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32914.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32914.patch
new file mode 100644
index 0000000000..0ada9f3134
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-32914.patch
@@ -0,0 +1,111 @@
1From 5bfcf8157597f2d327050114fb37ff600004dbcf Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Tue, 15 Apr 2025 09:03:00 +0200
4Subject: [PATCH] multipart: Fix read out of buffer bounds under
5 soup_multipart_new_from_message()
6
7This is CVE-2025-32914, special crafted input can cause read out of buffer bounds
8of the body argument.
9
10Closes #436
11
12Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/5bfcf8157597f2d327050114fb37ff600004dbcf]
13CVE: CVE-2025-32914
14Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
15---
16 libsoup/soup-multipart.c | 2 +-
17 tests/multipart-test.c | 58 ++++++++++++++++++++++++++++++++++++++++
18 2 files changed, 59 insertions(+), 1 deletion(-)
19
20diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
21index 2421c91f8..102ce3722 100644
22--- a/libsoup/soup-multipart.c
23+++ b/libsoup/soup-multipart.c
24@@ -173,7 +173,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
25 return NULL;
26 }
27
28- split = strstr (start, "\r\n\r\n");
29+ split = g_strstr_len (start, body_end - start, "\r\n\r\n");
30 if (!split || split > end) {
31 soup_multipart_free (multipart);
32 return NULL;
33diff --git a/tests/multipart-test.c b/tests/multipart-test.c
34index 2c0e7e969..f5b986889 100644
35--- a/tests/multipart-test.c
36+++ b/tests/multipart-test.c
37@@ -471,6 +471,62 @@ test_multipart (gconstpointer data)
38 loop = NULL;
39 }
40
41+static void
42+test_multipart_bounds_good (void)
43+{
44+ #define TEXT "line1\r\nline2"
45+ SoupMultipart *multipart;
46+ SoupMessageHeaders *headers, *set_headers = NULL;
47+ GBytes *bytes, *set_bytes = NULL;
48+ const char *raw_data = "--123\r\nContent-Type: text/plain;\r\n\r\n" TEXT "\r\n--123--\r\n";
49+ gboolean success;
50+
51+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
52+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
53+
54+ bytes = g_bytes_new (raw_data, strlen (raw_data));
55+
56+ multipart = soup_multipart_new_from_message (headers, bytes);
57+
58+ g_assert_nonnull (multipart);
59+ g_assert_cmpint (soup_multipart_get_length (multipart), ==, 1);
60+ success = soup_multipart_get_part (multipart, 0, &set_headers, &set_bytes);
61+ g_assert_true (success);
62+ g_assert_nonnull (set_headers);
63+ g_assert_nonnull (set_bytes);
64+ g_assert_cmpint (strlen (TEXT), ==, g_bytes_get_size (set_bytes));
65+ g_assert_cmpstr ("text/plain", ==, soup_message_headers_get_content_type (set_headers, NULL));
66+ g_assert_cmpmem (TEXT, strlen (TEXT), g_bytes_get_data (set_bytes, NULL), g_bytes_get_size (set_bytes));
67+
68+ soup_message_headers_unref (headers);
69+ g_bytes_unref (bytes);
70+
71+ soup_multipart_free (multipart);
72+
73+ #undef TEXT
74+}
75+
76+static void
77+test_multipart_bounds_bad (void)
78+{
79+ SoupMultipart *multipart;
80+ SoupMessageHeaders *headers;
81+ GBytes *bytes;
82+ const char *raw_data = "--123\r\nContent-Type: text/plain;\r\nline1\r\nline2\r\n--123--\r\n";
83+
84+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
85+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
86+
87+ bytes = g_bytes_new (raw_data, strlen (raw_data));
88+
89+ /* it did read out of raw_data/bytes bounds */
90+ multipart = soup_multipart_new_from_message (headers, bytes);
91+ g_assert_null (multipart);
92+
93+ soup_message_headers_unref (headers);
94+ g_bytes_unref (bytes);
95+}
96+
97 int
98 main (int argc, char **argv)
99 {
100@@ -498,6 +554,8 @@ main (int argc, char **argv)
101 g_test_add_data_func ("/multipart/sync", GINT_TO_POINTER (SYNC_MULTIPART), test_multipart);
102 g_test_add_data_func ("/multipart/async", GINT_TO_POINTER (ASYNC_MULTIPART), test_multipart);
103 g_test_add_data_func ("/multipart/async-small-reads", GINT_TO_POINTER (ASYNC_MULTIPART_SMALL_READS), test_multipart);
104+ g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
105+ g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
106
107 ret = g_test_run ();
108
109--
110GitLab
111
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4476.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4476.patch
new file mode 100644
index 0000000000..cd5619d620
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4476.patch
@@ -0,0 +1,38 @@
1From e64c221f9c7d09b48b610c5626b3b8c400f0907c Mon Sep 17 00:00:00 2001
2From: Michael Catanzaro <mcatanzaro@redhat.com>
3Date: Thu, 8 May 2025 09:27:01 -0500
4Subject: [PATCH] auth-digest: fix crash in
5 soup_auth_digest_get_protection_space()
6
7We need to validate the Domain parameter in the WWW-Authenticate header.
8
9Unfortunately this crash only occurs when listening on default ports 80
10and 443, so there's no good way to test for this. The test would require
11running as root.
12
13Fixes #440
14
15Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/e64c221f9c7d09b48b610c5626b3b8c400f0907c]
16CVE: CVE-2025-4476
17Signed-off-by: Ashish Sharma <asharma@mvista.com>
18
19
20 libsoup/auth/soup-auth-digest.c | 2 +-
21 1 file changed, 1 insertion(+), 1 deletion(-)
22
23diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c
24index d8bb2910..292f2045 100644
25--- a/libsoup/auth/soup-auth-digest.c
26+++ b/libsoup/auth/soup-auth-digest.c
27@@ -220,7 +220,7 @@ soup_auth_digest_get_protection_space (SoupAuth *auth, GUri *source_uri)
28 if (uri &&
29 g_strcmp0 (g_uri_get_scheme (uri), g_uri_get_scheme (source_uri)) == 0 &&
30 g_uri_get_port (uri) == g_uri_get_port (source_uri) &&
31- !strcmp (g_uri_get_host (uri), g_uri_get_host (source_uri)))
32+ !g_strcmp0 (g_uri_get_host (uri), g_uri_get_host (source_uri)))
33 dir = g_strdup (g_uri_get_path (uri));
34 else
35 dir = NULL;
36--
37GitLab
38
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46420.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46420.patch
new file mode 100644
index 0000000000..37ab16dc05
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46420.patch
@@ -0,0 +1,60 @@
1From c9083869ec2a3037e6df4bd86b45c419ba295f8e Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Thu, 26 Dec 2024 18:31:42 -0600
4Subject: [PATCH] soup_header_parse_quality_list: Fix leak
5
6When iterating over the parsed list we now steal the allocated strings that we want and then free_full the list which may contain remaining strings.
7
8Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/c9083869ec2a3037e6df4bd86b45c419ba295f8e]
9CVE: CVE-2025-46420
10Signed-off-by: Ashish Sharma <asharma@mvista.com>
11
12 libsoup/soup-headers.c | 11 +++++------
13 1 file changed, 5 insertions(+), 6 deletions(-)
14
15diff --git a/libsoup/soup-headers.c b/libsoup/soup-headers.c
16index a5f7a7f6..85385cea 100644
17--- a/libsoup/soup-headers.c
18+++ b/libsoup/soup-headers.c
19@@ -530,7 +530,7 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
20 GSList *unsorted;
21 QualityItem *array;
22 GSList *sorted, *iter;
23- char *item, *semi;
24+ char *semi;
25 const char *param, *equal, *value;
26 double qval;
27 int n;
28@@ -543,9 +543,8 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
29 unsorted = soup_header_parse_list (header);
30 array = g_new0 (QualityItem, g_slist_length (unsorted));
31 for (iter = unsorted, n = 0; iter; iter = iter->next) {
32- item = iter->data;
33 qval = 1.0;
34- for (semi = strchr (item, ';'); semi; semi = strchr (semi + 1, ';')) {
35+ for (semi = strchr (iter->data, ';'); semi; semi = strchr (semi + 1, ';')) {
36 param = skip_lws (semi + 1);
37 if (*param != 'q')
38 continue;
39@@ -577,15 +576,15 @@ soup_header_parse_quality_list (const char *header, GSList **unacceptable)
40 if (qval == 0.0) {
41 if (unacceptable) {
42 *unacceptable = g_slist_prepend (*unacceptable,
43- item);
44+ g_steal_pointer (&iter->data));
45 }
46 } else {
47- array[n].item = item;
48+ array[n].item = g_steal_pointer (&iter->data);
49 array[n].qval = qval;
50 n++;
51 }
52 }
53- g_slist_free (unsorted);
54+ g_slist_free_full (unsorted, g_free);
55
56 qsort (array, n, sizeof (QualityItem), sort_by_qval);
57 sorted = NULL;
58--
59GitLab
60
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46421.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46421.patch
new file mode 100644
index 0000000000..72683d8fce
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-46421.patch
@@ -0,0 +1,139 @@
1From 85c5227eef7370832044eb918e8a99c0bcbab86f Mon Sep 17 00:00:00 2001
2From: Patrick Griffis <pgriffis@igalia.com>
3Date: Wed, 5 Feb 2025 16:18:10 -0600
4Subject: [PATCH] session: Strip authentication credentails on cross-origin
5 redirect
6
7This should match the behavior of Firefox and Safari but not of Chromium.
8
9CVE: CVE-2025-46421
10Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/436/diffs?commit_id=3e5c26415811f19e7737238bb23305ffaf96f66b]
11
12Signed-off-by: Changqing Li <changqing.li@windriver.com>
13---
14 libsoup/soup-session.c | 6 ++++
15 tests/auth-test.c | 77 ++++++++++++++++++++++++++++++++++++++++++
16 2 files changed, 83 insertions(+)
17
18diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
19index 631bec0..9f00b05 100644
20--- a/libsoup/soup-session.c
21+++ b/libsoup/soup-session.c
22@@ -1230,6 +1230,12 @@ soup_session_redirect_message (SoupSession *session,
23 SOUP_ENCODING_NONE);
24 }
25
26+ /* Strip all credentials on cross-origin redirect. */
27+ if (!soup_uri_host_equal (soup_message_get_uri (msg), new_uri)) {
28+ soup_message_headers_remove_common (soup_message_get_request_headers (msg), SOUP_HEADER_AUTHORIZATION);
29+ soup_message_set_auth (msg, NULL);
30+ }
31+
32 soup_message_set_request_host_from_uri (msg, new_uri);
33 soup_message_set_uri (msg, new_uri);
34 g_uri_unref (new_uri);
35diff --git a/tests/auth-test.c b/tests/auth-test.c
36index 484097f..7c3b551 100644
37--- a/tests/auth-test.c
38+++ b/tests/auth-test.c
39@@ -1,6 +1,7 @@
40 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
41
42 #include "test-utils.h"
43+#include "soup-uri-utils-private.h"
44
45 static const char *base_uri;
46 static GMainLoop *loop;
47@@ -1916,6 +1917,81 @@ do_missing_params_test (gconstpointer auth_header)
48 soup_test_server_quit_unref (server);
49 }
50
51+static void
52+redirect_server_callback (SoupServer *server,
53+ SoupServerMessage *msg,
54+ const char *path,
55+ GHashTable *query,
56+ gpointer user_data)
57+{
58+ static gboolean redirected = FALSE;
59+
60+ if (!redirected) {
61+ char *redirect_uri = g_uri_to_string (user_data);
62+ soup_server_message_set_redirect (msg, SOUP_STATUS_MOVED_PERMANENTLY, redirect_uri);
63+ g_free (redirect_uri);
64+ redirected = TRUE;
65+ return;
66+ }
67+
68+ g_assert_not_reached ();
69+}
70+
71+static gboolean
72+auth_for_redirect_callback (SoupMessage *msg, SoupAuth *auth, gboolean retrying, gpointer user_data)
73+{
74+ GUri *known_server_uri = user_data;
75+
76+ if (!soup_uri_host_equal (known_server_uri, soup_message_get_uri (msg)))
77+ return FALSE;
78+
79+ soup_auth_authenticate (auth, "user", "good-basic");
80+
81+ return TRUE;
82+}
83+
84+static void
85+do_strip_on_crossorigin_redirect (void)
86+{
87+ SoupSession *session;
88+ SoupMessage *msg;
89+ SoupServer *server1, *server2;
90+ SoupAuthDomain *auth_domain;
91+ GUri *uri;
92+ gint status;
93+
94+ server1 = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD);
95+ server2 = soup_test_server_new (SOUP_TEST_SERVER_IN_THREAD);
96+
97+ /* Both servers have the same credentials. */
98+ auth_domain = soup_auth_domain_basic_new ("realm", "auth-test", "auth-callback", server_basic_auth_callback, NULL);
99+ soup_auth_domain_add_path (auth_domain, "/");
100+ soup_server_add_auth_domain (server1, auth_domain);
101+ soup_server_add_auth_domain (server2, auth_domain);
102+ g_object_unref (auth_domain);
103+
104+ /* Server 1 asks for auth, then redirects to Server 2. */
105+ soup_server_add_handler (server1, NULL,
106+ redirect_server_callback,
107+ soup_test_server_get_uri (server2, "http", NULL), (GDestroyNotify)g_uri_unref);
108+ /* Server 2 requires auth. */
109+ soup_server_add_handler (server2, NULL, server_callback, NULL, NULL);
110+
111+ session = soup_test_session_new (NULL);
112+ uri = soup_test_server_get_uri (server1, "http", NULL);
113+ msg = soup_message_new_from_uri ("GET", uri);
114+ /* The client only sends credentials for the host it knows. */
115+ g_signal_connect (msg, "authenticate", G_CALLBACK (auth_for_redirect_callback), uri);
116+
117+ status = soup_test_session_send_message (session, msg);
118+
119+ g_assert_cmpint (status, ==, SOUP_STATUS_UNAUTHORIZED);
120+
121+ g_uri_unref (uri);
122+ soup_test_server_quit_unref (server1);
123+ soup_test_server_quit_unref (server2);
124+}
125+
126 int
127 main (int argc, char **argv)
128 {
129@@ -1949,6 +2025,7 @@ main (int argc, char **argv)
130 g_test_add_func ("/auth/auth-uri", do_auth_uri_test);
131 g_test_add_func ("/auth/cancel-request-on-authenticate", do_cancel_request_on_authenticate);
132 g_test_add_func ("/auth/multiple-algorithms", do_multiple_digest_algorithms);
133+ g_test_add_func ("/auth/strip-on-crossorigin-redirect", do_strip_on_crossorigin_redirect);
134 g_test_add_data_func ("/auth/missing-params/realm", "Digest qop=\"auth\"", do_missing_params_test);
135 g_test_add_data_func ("/auth/missing-params/nonce", "Digest realm=\"auth-test\", qop=\"auth,auth-int\", opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"", do_missing_params_test);
136 g_test_add_data_func ("/auth/missing-params/nonce-md5-sess", "Digest realm=\"auth-test\", qop=\"auth,auth-int\", opaque=\"5ccc069c403ebaf9f0171e9517f40e41\" algorithm=\"MD5-sess\"", do_missing_params_test);
137--
1382.34.1
139
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4948.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4948.patch
new file mode 100644
index 0000000000..07c85f5381
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4948.patch
@@ -0,0 +1,97 @@
1From a23ce8f8e60e79990e26376c8b0d40841aed4b81 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Thu, 15 May 2025 17:49:11 +0200
4Subject: [PATCH] soup-multipart: Verify boundary limits for multipart body
5
6It could happen that the boundary started at a place which resulted into
7a negative number, which in an unsigned integer is a very large value.
8Check the body size is not a negative value before setting it.
9
10Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/449
11
12Part-of: <https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463>
13
14CVE: CVE-2025-4948
15Upstream-Status: Backport
16[https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/463/diffs?commit_id=f2f28afe0b3b2b3009ab67d6874457ec6bac70c0]
17
18Signed-off-by: Changqing Li <changqing.li@windriver.com>
19---
20 libsoup/soup-multipart.c | 2 +-
21 tests/multipart-test.c | 40 ++++++++++++++++++++++++++++++++++++++++
22 2 files changed, 41 insertions(+), 1 deletion(-)
23
24diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
25index e1c442e..27257e4 100644
26--- a/libsoup/soup-multipart.c
27+++ b/libsoup/soup-multipart.c
28@@ -204,7 +204,7 @@ soup_multipart_new_from_message (SoupMessageHeaders *headers,
29 */
30 part_body = g_bytes_new_from_bytes (body, // FIXME
31 split - body_data,
32- end - 2 - split);
33+ end - 2 >= split ? end - 2 - split : 0);
34 g_ptr_array_add (multipart->bodies, part_body);
35
36 start = end;
37diff --git a/tests/multipart-test.c b/tests/multipart-test.c
38index 84852e2..2ae888c 100644
39--- a/tests/multipart-test.c
40+++ b/tests/multipart-test.c
41@@ -548,6 +548,45 @@ test_multipart_bounds_bad_2 (void)
42 g_bytes_unref (bytes);
43 }
44
45+static void
46+test_multipart_too_large (void)
47+{
48+ const char *raw_body =
49+ "-------------------\r\n"
50+ "-\n"
51+ "Cont\"\r\n"
52+ "Content-Tynt----e:n\x8erQK\r\n"
53+ "Content-Disposition: name= form-; name=\"file\"; filename=\"ype:i/ -d; ----\xae\r\n"
54+ "Content-Typimag\x01/png--\\\n"
55+ "\r\n"
56+ "---:\n\r\n"
57+ "\r\n"
58+ "-------------------------------------\r\n"
59+ "---------\r\n"
60+ "----------------------";
61+ GBytes *body;
62+ GHashTable *params;
63+ SoupMessageHeaders *headers;
64+ SoupMultipart *multipart;
65+
66+ params = g_hash_table_new (g_str_hash, g_str_equal);
67+ g_hash_table_insert (params, (gpointer) "boundary", (gpointer) "-----------------");
68+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
69+ soup_message_headers_set_content_type (headers, "multipart/form-data", params);
70+ g_hash_table_unref (params);
71+
72+ body = g_bytes_new_static (raw_body, strlen (raw_body));
73+ multipart = soup_multipart_new_from_message (headers, body);
74+ soup_message_headers_unref (headers);
75+ g_bytes_unref (body);
76+
77+ g_assert_nonnull (multipart);
78+ g_assert_cmpint (soup_multipart_get_length (multipart), ==, 1);
79+ g_assert_true (soup_multipart_get_part (multipart, 0, &headers, &body));
80+ g_assert_cmpint (g_bytes_get_size (body), ==, 0);
81+ soup_multipart_free (multipart);
82+}
83+
84 int
85 main (int argc, char **argv)
86 {
87@@ -578,6 +617,7 @@ main (int argc, char **argv)
88 g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
89 g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
90 g_test_add_func ("/multipart/bounds-bad-2", test_multipart_bounds_bad_2);
91+ g_test_add_func ("/multipart/too-large", test_multipart_too_large);
92
93 ret = g_test_run ();
94
95--
962.34.1
97
diff --git a/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4969.patch b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4969.patch
new file mode 100644
index 0000000000..70c5fd5593
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-3.4.4/CVE-2025-4969.patch
@@ -0,0 +1,76 @@
1From 07b94e27afafebf31ef3cd868866a1e383750086 Mon Sep 17 00:00:00 2001
2From: Milan Crha <mcrha@redhat.com>
3Date: Mon, 19 May 2025 17:48:27 +0200
4Subject: [PATCH] soup-multipart: Verify array bounds before accessing its
5 members
6
7The boundary could be at a place which, calculated, pointed
8before the beginning of the array. Check the bounds, to avoid
9read out of the array bounds.
10
11Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/447
12
13Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/commit/07b94e27afafebf31ef3cd868866a1e383750086]
14CVE: CVE-2025-4969
15Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
16---
17 libsoup/soup-multipart.c | 2 +-
18 tests/multipart-test.c | 22 ++++++++++++++++++++++
19 2 files changed, 23 insertions(+), 1 deletion(-)
20
21diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
22index 102ce37..e1c442e 100644
23--- a/libsoup/soup-multipart.c
24+++ b/libsoup/soup-multipart.c
25@@ -104,7 +104,7 @@ find_boundary (const char *start, const char *end,
26 continue;
27
28 /* Check that it's at start of line */
29- if (!(b == start || (b[-1] == '\n' && b[-2] == '\r')))
30+ if (!(b == start || (b - start >= 2 && b[-1] == '\n' && b[-2] == '\r')))
31 continue;
32
33 /* Check for "--" or "\r\n" after boundary */
34diff --git a/tests/multipart-test.c b/tests/multipart-test.c
35index ab5f41c..84852e2 100644
36--- a/tests/multipart-test.c
37+++ b/tests/multipart-test.c
38@@ -527,6 +527,27 @@ test_multipart_bounds_bad (void)
39 g_bytes_unref (bytes);
40 }
41
42+static void
43+test_multipart_bounds_bad_2 (void)
44+{
45+ SoupMultipart *multipart;
46+ SoupMessageHeaders *headers;
47+ GBytes *bytes;
48+ const char *raw_data = "\n--123\r\nline\r\n--123--\r";
49+
50+ headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
51+ soup_message_headers_append (headers, "Content-Type", "multipart/mixed; boundary=\"123\"");
52+
53+ bytes = g_bytes_new (raw_data, strlen (raw_data));
54+
55+ multipart = soup_multipart_new_from_message (headers, bytes);
56+ g_assert_nonnull (multipart);
57+
58+ soup_multipart_free (multipart);
59+ soup_message_headers_unref (headers);
60+ g_bytes_unref (bytes);
61+}
62+
63 int
64 main (int argc, char **argv)
65 {
66@@ -556,6 +577,7 @@ main (int argc, char **argv)
67 g_test_add_data_func ("/multipart/async-small-reads", GINT_TO_POINTER (ASYNC_MULTIPART_SMALL_READS), test_multipart);
68 g_test_add_func ("/multipart/bounds-good", test_multipart_bounds_good);
69 g_test_add_func ("/multipart/bounds-bad", test_multipart_bounds_bad);
70+ g_test_add_func ("/multipart/bounds-bad-2", test_multipart_bounds_bad_2);
71
72 ret = g_test_run ();
73
74--
752.49.0
76
diff --git a/meta/recipes-support/libsoup/libsoup_3.4.4.bb b/meta/recipes-support/libsoup/libsoup_3.4.4.bb
index 6f7cac4cf8..37319f007f 100644
--- a/meta/recipes-support/libsoup/libsoup_3.4.4.bb
+++ b/meta/recipes-support/libsoup/libsoup_3.4.4.bb
@@ -11,7 +11,40 @@ DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 libpsl nghttp2"
11 11
12SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}" 12SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
13 13
14SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz" 14SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \
15 file://CVE-2024-52532-0001.patch \
16 file://CVE-2024-52532-0002.patch \
17 file://CVE-2024-52530.patch \
18 file://CVE-2024-52531-1.patch \
19 file://CVE-2024-52531-2.patch \
20 file://CVE-2024-52531-3.patch \
21 file://CVE-2025-32910-1.patch \
22 file://CVE-2025-32910-2.patch \
23 file://CVE-2025-32910-3.patch \
24 file://CVE-2025-32909.patch \
25 file://CVE-2025-32911_CVE-2025-32913-1.patch \
26 file://CVE-2025-32911_CVE-2025-32913-2.patch \
27 file://CVE-2025-32912-1.patch \
28 file://CVE-2025-32912-2.patch \
29 file://CVE-2025-32906-1.patch \
30 file://CVE-2025-32906-2.patch \
31 file://CVE-2025-46420.patch \
32 file://CVE-2025-32914.patch \
33 file://CVE-2025-4476.patch \
34 file://CVE-2025-4969.patch \
35 file://CVE-2025-32908-1.patch \
36 file://CVE-2025-32908-2.patch \
37 file://CVE-2025-32907-1.patch \
38 file://CVE-2025-32907-2.patch \
39 file://CVE-2025-32053.patch \
40 file://CVE-2025-32052.patch \
41 file://CVE-2025-32051-1.patch \
42 file://CVE-2025-32051-2.patch \
43 file://CVE-2025-32050.patch \
44 file://CVE-2025-46421.patch \
45 file://CVE-2025-4948.patch \
46 file://CVE-2025-2784.patch \
47"
15SRC_URI[sha256sum] = "291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa" 48SRC_URI[sha256sum] = "291c67725f36ed90ea43efff25064b69c5a2d1981488477c05c481a3b4b0c5aa"
16 49
17PROVIDES = "libsoup-3.0" 50PROVIDES = "libsoup-3.0"
diff --git a/meta/recipes-support/libxslt/libxslt_1.1.39.bb b/meta/recipes-support/libxslt/libxslt_1.1.43.bb
index 2cc0c84bec..d251fa8122 100644
--- a/meta/recipes-support/libxslt/libxslt_1.1.39.bb
+++ b/meta/recipes-support/libxslt/libxslt_1.1.43.bb
@@ -15,7 +15,7 @@ DEPENDS = "libxml2"
15 15
16SRC_URI = "https://download.gnome.org/sources/libxslt/1.1/libxslt-${PV}.tar.xz" 16SRC_URI = "https://download.gnome.org/sources/libxslt/1.1/libxslt-${PV}.tar.xz"
17 17
18SRC_URI[sha256sum] = "2a20ad621148339b0759c4d4e96719362dee64c9a096dbba625ba053846349f0" 18SRC_URI[sha256sum] = "5a3d6b383ca5afc235b171118e90f5ff6aa27e9fea3303065231a6d403f0183a"
19 19
20UPSTREAM_CHECK_REGEX = "libxslt-(?P<pver>\d+(\.\d+)+)\.tar" 20UPSTREAM_CHECK_REGEX = "libxslt-(?P<pver>\d+(\.\d+)+)\.tar"
21 21
@@ -37,7 +37,7 @@ do_configure:prepend () {
37 touch ${S}/doc/xsltproc.1 37 touch ${S}/doc/xsltproc.1
38} 38}
39 39
40EXTRA_OECONF = "--without-python --without-debug --without-mem-debug --without-crypto" 40EXTRA_OECONF = "--without-python --without-debug --without-crypto"
41# older versions of this recipe had ${PN}-utils 41# older versions of this recipe had ${PN}-utils
42RPROVIDES:${PN}-bin += "${PN}-utils" 42RPROVIDES:${PN}-bin += "${PN}-utils"
43RCONFLICTS:${PN}-bin += "${PN}-utils" 43RCONFLICTS:${PN}-bin += "${PN}-utils"
diff --git a/meta/recipes-support/ptest-runner/ptest-runner_2.4.4.bb b/meta/recipes-support/ptest-runner/ptest-runner_2.4.5.bb
index 2263e07280..d28ae7ca91 100644
--- a/meta/recipes-support/ptest-runner/ptest-runner_2.4.4.bb
+++ b/meta/recipes-support/ptest-runner/ptest-runner_2.4.5.bb
@@ -7,7 +7,7 @@ HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/ptest-runner2/about/"
7LICENSE = "GPL-2.0-or-later" 7LICENSE = "GPL-2.0-or-later"
8LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe" 8LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
9 9
10SRCREV = "95f528cff0bc52903b98c292d4a322fcffa74471" 10SRCREV = "aea9f42f87f2a78a973ae22cade8e45259f754e1"
11PV .= "+git" 11PV .= "+git"
12 12
13SRC_URI = "git://git.yoctoproject.org/ptest-runner2;branch=master;protocol=https \ 13SRC_URI = "git://git.yoctoproject.org/ptest-runner2;branch=master;protocol=https \
diff --git a/meta/recipes-support/shared-mime-info/shared-mime-info_2.4.bb b/meta/recipes-support/shared-mime-info/shared-mime-info_2.4.bb
index ef5df44ad6..b8a377e2b2 100644
--- a/meta/recipes-support/shared-mime-info/shared-mime-info_2.4.bb
+++ b/meta/recipes-support/shared-mime-info/shared-mime-info_2.4.bb
@@ -6,7 +6,7 @@ SECTION = "base"
6LICENSE = "GPL-2.0-only" 6LICENSE = "GPL-2.0-only"
7LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" 7LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
8 8
9DEPENDS = "libxml2 itstool-native glib-2.0 shared-mime-info-native xmlto-native" 9DEPENDS = "libxml2 glib-2.0 shared-mime-info-native xmlto-native"
10 10
11SRC_URI = "git://gitlab.freedesktop.org/xdg/shared-mime-info.git;protocol=https;branch=master \ 11SRC_URI = "git://gitlab.freedesktop.org/xdg/shared-mime-info.git;protocol=https;branch=master \
12 file://0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch \ 12 file://0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch \
diff --git a/meta/recipes-support/sqlite/sqlite3/CVE-2025-29088.patch b/meta/recipes-support/sqlite/sqlite3/CVE-2025-29088.patch
new file mode 100644
index 0000000000..7a5769ed07
--- /dev/null
+++ b/meta/recipes-support/sqlite/sqlite3/CVE-2025-29088.patch
@@ -0,0 +1,179 @@
1From 57d1e61dda969659f59a0b7841c7d0287d724bc6 Mon Sep 17 00:00:00 2001
2From: drh <>
3Date: Mon, 17 Feb 2025 14:16:49 +0000
4Subject: [PATCH] Harden the SQLITE_DBCONFIG_LOOKASIDE interface against
5 misuse, such as described in [forum:/forumpost/48f365daec|forum post
6 48f365daec]. Enhancements to the SQLITE_DBCONFIG_LOOKASIDE documentation.
7 Test cases in TH3.
8
9FossilOrigin-Name: 1ec4c308c76c69fba031184254fc3340f07607cfbf8342b13713ab445563d377
10
11CVE: CVE-2025-29088
12Upstream-Status: Backport [https://github.com/sqlite/sqlite/commit/56d2fd008b108109f489339f5fd55212bb50afd4]
13Signed-off-by: Peter Marko <peter.marko@siemens.com>
14---
15 sqlite3.c | 42 +++++++++++++++++++++++---------------
16 sqlite3.h | 60 +++++++++++++++++++++++++++++++++++++------------------
17 2 files changed, 67 insertions(+), 35 deletions(-)
18
19diff --git a/sqlite3.c b/sqlite3.c
20index 24d0d954d9..2574a43f3e 100644
21--- a/sqlite3.c
22+++ b/sqlite3.c
23@@ -179112,17 +179112,22 @@ SQLITE_API int sqlite3_config(int op, ...){
24 ** If lookaside is already active, return SQLITE_BUSY.
25 **
26 ** The sz parameter is the number of bytes in each lookaside slot.
27-** The cnt parameter is the number of slots. If pStart is NULL the
28-** space for the lookaside memory is obtained from sqlite3_malloc().
29-** If pStart is not NULL then it is sz*cnt bytes of memory to use for
30-** the lookaside memory.
31+** The cnt parameter is the number of slots. If pBuf is NULL the
32+** space for the lookaside memory is obtained from sqlite3_malloc()
33+** or similar. If pBuf is not NULL then it is sz*cnt bytes of memory
34+** to use for the lookaside memory.
35 */
36-static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){
37+static int setupLookaside(
38+ sqlite3 *db, /* Database connection being configured */
39+ void *pBuf, /* Memory to use for lookaside. May be NULL */
40+ int sz, /* Desired size of each lookaside memory slot */
41+ int cnt /* Number of slots to allocate */
42+){
43 #ifndef SQLITE_OMIT_LOOKASIDE
44- void *pStart;
45- sqlite3_int64 szAlloc = sz*(sqlite3_int64)cnt;
46- int nBig; /* Number of full-size slots */
47- int nSm; /* Number smaller LOOKASIDE_SMALL-byte slots */
48+ void *pStart; /* Start of the lookaside buffer */
49+ sqlite3_int64 szAlloc; /* Total space set aside for lookaside memory */
50+ int nBig; /* Number of full-size slots */
51+ int nSm; /* Number smaller LOOKASIDE_SMALL-byte slots */
52
53 if( sqlite3LookasideUsed(db,0)>0 ){
54 return SQLITE_BUSY;
55@@ -179135,17 +179140,22 @@ static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){
56 sqlite3_free(db->lookaside.pStart);
57 }
58 /* The size of a lookaside slot after ROUNDDOWN8 needs to be larger
59- ** than a pointer to be useful.
60+ ** than a pointer and small enough to fit in a u16.
61 */
62- sz = ROUNDDOWN8(sz); /* IMP: R-33038-09382 */
63+ sz = ROUNDDOWN8(sz);
64 if( sz<=(int)sizeof(LookasideSlot*) ) sz = 0;
65- if( cnt<0 ) cnt = 0;
66- if( sz==0 || cnt==0 ){
67+ if( sz>65528 ) sz = 65528;
68+ /* Count must be at least 1 to be useful, but not so large as to use
69+ ** more than 0x7fff0000 total bytes for lookaside. */
70+ if( cnt<1 ) cnt = 0;
71+ if( sz>0 && cnt>(0x7fff0000/sz) ) cnt = 0x7fff0000/sz;
72+ szAlloc = (i64)sz*(i64)cnt;
73+ if( szAlloc==0 ){
74 sz = 0;
75 pStart = 0;
76 }else if( pBuf==0 ){
77 sqlite3BeginBenignMalloc();
78- pStart = sqlite3Malloc( szAlloc ); /* IMP: R-61949-35727 */
79+ pStart = sqlite3Malloc( szAlloc );
80 sqlite3EndBenignMalloc();
81 if( pStart ) szAlloc = sqlite3MallocSize(pStart);
82 }else{
83@@ -179154,10 +179164,10 @@ static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){
84 #ifndef SQLITE_OMIT_TWOSIZE_LOOKASIDE
85 if( sz>=LOOKASIDE_SMALL*3 ){
86 nBig = szAlloc/(3*LOOKASIDE_SMALL+sz);
87- nSm = (szAlloc - sz*nBig)/LOOKASIDE_SMALL;
88+ nSm = (szAlloc - (i64)sz*(i64)nBig)/LOOKASIDE_SMALL;
89 }else if( sz>=LOOKASIDE_SMALL*2 ){
90 nBig = szAlloc/(LOOKASIDE_SMALL+sz);
91- nSm = (szAlloc - sz*nBig)/LOOKASIDE_SMALL;
92+ nSm = (szAlloc - (i64)sz*(i64)nBig)/LOOKASIDE_SMALL;
93 }else
94 #endif /* SQLITE_OMIT_TWOSIZE_LOOKASIDE */
95 if( sz>0 ){
96diff --git a/sqlite3.h b/sqlite3.h
97index 2618b37a7b..056511f577 100644
98--- a/sqlite3.h
99+++ b/sqlite3.h
100@@ -1974,13 +1974,16 @@ struct sqlite3_mem_methods {
101 **
102 ** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
103 ** <dd> ^(The SQLITE_CONFIG_LOOKASIDE option takes two arguments that determine
104-** the default size of lookaside memory on each [database connection].
105+** the default size of [lookaside memory] on each [database connection].
106 ** The first argument is the
107-** size of each lookaside buffer slot and the second is the number of
108-** slots allocated to each database connection.)^ ^(SQLITE_CONFIG_LOOKASIDE
109-** sets the <i>default</i> lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE]
110-** option to [sqlite3_db_config()] can be used to change the lookaside
111-** configuration on individual connections.)^ </dd>
112+** size of each lookaside buffer slot ("sz") and the second is the number of
113+** slots allocated to each database connection ("cnt").)^
114+** ^(SQLITE_CONFIG_LOOKASIDE sets the <i>default</i> lookaside size.
115+** The [SQLITE_DBCONFIG_LOOKASIDE] option to [sqlite3_db_config()] can
116+** be used to change the lookaside configuration on individual connections.)^
117+** The [-DSQLITE_DEFAULT_LOOKASIDE] option can be used to change the
118+** default lookaside configuration at compile-time.
119+** </dd>
120 **
121 ** [[SQLITE_CONFIG_PCACHE2]] <dt>SQLITE_CONFIG_PCACHE2</dt>
122 ** <dd> ^(The SQLITE_CONFIG_PCACHE2 option takes a single argument which is
123@@ -2210,24 +2213,43 @@ struct sqlite3_mem_methods {
124 ** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
125 ** <dd> ^This option takes three additional arguments that determine the
126 ** [lookaside memory allocator] configuration for the [database connection].
127-** ^The first argument (the third parameter to [sqlite3_db_config()] is a
128+** <ol>
129+** <li><p>The first argument ("buf") is a
130 ** pointer to a memory buffer to use for lookaside memory.
131-** ^The first argument after the SQLITE_DBCONFIG_LOOKASIDE verb
132-** may be NULL in which case SQLite will allocate the
133-** lookaside buffer itself using [sqlite3_malloc()]. ^The second argument is the
134-** size of each lookaside buffer slot. ^The third argument is the number of
135-** slots. The size of the buffer in the first argument must be greater than
136-** or equal to the product of the second and third arguments. The buffer
137-** must be aligned to an 8-byte boundary. ^If the second argument to
138-** SQLITE_DBCONFIG_LOOKASIDE is not a multiple of 8, it is internally
139-** rounded down to the next smaller multiple of 8. ^(The lookaside memory
140+** The first argument may be NULL in which case SQLite will allocate the
141+** lookaside buffer itself using [sqlite3_malloc()].
142+** <li><P>The second argument ("sz") is the
143+** size of each lookaside buffer slot. Lookaside is disabled if "sz"
144+** is less than 8. The "sz" argument should be a multiple of 8 less than
145+** 65536. If "sz" does not meet this constraint, it is reduced in size until
146+** it does.
147+** <li><p>The third argument ("cnt") is the number of slots. Lookaside is disabled
148+** if "cnt"is less than 1. The "cnt" value will be reduced, if necessary, so
149+** that the product of "sz" and "cnt" does not exceed 2,147,418,112. The "cnt"
150+** parameter is usually chosen so that the product of "sz" and "cnt" is less
151+** than 1,000,000.
152+** </ol>
153+** <p>If the "buf" argument is not NULL, then it must
154+** point to a memory buffer with a size that is greater than
155+** or equal to the product of "sz" and "cnt".
156+** The buffer must be aligned to an 8-byte boundary.
157+** The lookaside memory
158 ** configuration for a database connection can only be changed when that
159 ** connection is not currently using lookaside memory, or in other words
160-** when the "current value" returned by
161-** [sqlite3_db_status](D,[SQLITE_DBSTATUS_LOOKASIDE_USED],...) is zero.
162+** when the value returned by [SQLITE_DBSTATUS_LOOKASIDE_USED] is zero.
163 ** Any attempt to change the lookaside memory configuration when lookaside
164 ** memory is in use leaves the configuration unchanged and returns
165-** [SQLITE_BUSY].)^</dd>
166+** [SQLITE_BUSY].
167+** If the "buf" argument is NULL and an attempt
168+** to allocate memory based on "sz" and "cnt" fails, then
169+** lookaside is silently disabled.
170+** <p>
171+** The [SQLITE_CONFIG_LOOKASIDE] configuration option can be used to set the
172+** default lookaside configuration at initialization. The
173+** [-DSQLITE_DEFAULT_LOOKASIDE] option can be used to set the default lookaside
174+** configuration at compile-time. Typical values for lookaside are 1200 for
175+** "sz" and 40 to 100 for "cnt".
176+** </dd>
177 **
178 ** [[SQLITE_DBCONFIG_ENABLE_FKEY]]
179 ** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
diff --git a/meta/recipes-support/sqlite/sqlite3/CVE-2025-3277.patch b/meta/recipes-support/sqlite/sqlite3/CVE-2025-3277.patch
new file mode 100644
index 0000000000..b8225b5069
--- /dev/null
+++ b/meta/recipes-support/sqlite/sqlite3/CVE-2025-3277.patch
@@ -0,0 +1,29 @@
1From d7f45414935e4ef6e3361f02a22876f1ee7a04aa Mon Sep 17 00:00:00 2001
2From: drh <>
3Date: Sun, 16 Feb 2025 10:57:25 +0000
4Subject: [PATCH] Add a typecast to avoid 32-bit integer overflow in the
5 concat_ws() function with an enormous separator values and many arguments.
6
7FossilOrigin-Name: 498e3f1cf57f164fbd8380e92bf91b9f26d6aa05d092fcd135d754abf1e5b1b5
8
9CVE: CVE-2025-3277
10CVE: CVE-2025-29087
11Upstream-Status: Backport [https://sqlite.org/src/info/498e3f1cf57f164f]
12Signed-off-by: Peter Marko <peter.marko@siemens.com>
13---
14 sqlite3.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/sqlite3.c b/sqlite3.c
18index 08c593e55c..24d0d954d9 100644
19--- a/sqlite3.c
20+++ b/sqlite3.c
21@@ -129594,7 +129594,7 @@ static void concatFuncCore(
22 for(i=0; i<argc; i++){
23 n += sqlite3_value_bytes(argv[i]);
24 }
25- n += (argc-1)*nSep;
26+ n += (argc-1)*(i64)nSep;
27 z = sqlite3_malloc64(n+1);
28 if( z==0 ){
29 sqlite3_result_error_nomem(context);
diff --git a/meta/recipes-support/sqlite/sqlite3_3.45.1.bb b/meta/recipes-support/sqlite/sqlite3_3.45.1.bb
deleted file mode 100644
index 50612feb25..0000000000
--- a/meta/recipes-support/sqlite/sqlite3_3.45.1.bb
+++ /dev/null
@@ -1,8 +0,0 @@
1require sqlite3.inc
2
3LICENSE = "PD"
4LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66"
5
6SRC_URI = "http://www.sqlite.org/2024/sqlite-autoconf-${SQLITE_PV}.tar.gz"
7SRC_URI[sha256sum] = "cd9c27841b7a5932c9897651e20b86c701dd740556989b01ca596fcfa3d49a0a"
8
diff --git a/meta/recipes-support/sqlite/sqlite3_3.45.3.bb b/meta/recipes-support/sqlite/sqlite3_3.45.3.bb
new file mode 100644
index 0000000000..d39cb3805b
--- /dev/null
+++ b/meta/recipes-support/sqlite/sqlite3_3.45.3.bb
@@ -0,0 +1,11 @@
1require sqlite3.inc
2
3LICENSE = "PD"
4LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66"
5
6SRC_URI = "http://www.sqlite.org/2024/sqlite-autoconf-${SQLITE_PV}.tar.gz \
7 file://CVE-2025-3277.patch \
8 file://CVE-2025-29088.patch \
9 "
10SRC_URI[sha256sum] = "b2809ca53124c19c60f42bf627736eae011afdcc205bb48270a5ee9a38191531"
11
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 11daa900d2..c7f3987134 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -18,8 +18,8 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
18 file://no-path-adjust.patch \ 18 file://no-path-adjust.patch \
19 " 19 "
20 20
21PV .= ".0698" 21PV .= ".1198"
22SRCREV = "d56c451e1c05310562c5282352d7bb287c16323c" 22SRCREV = "f209dcd3defb95bae21b2740910e6aa7bb940531"
23 23
24# Do not consider .z in x.y.z, as that is updated with every commit 24# Do not consider .z in x.y.z, as that is updated with every commit
25UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+)\.0" 25UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+)\.0"
diff --git a/scripts/install-buildtools b/scripts/install-buildtools
index 92a4c9dfb1..b699b34270 100755
--- a/scripts/install-buildtools
+++ b/scripts/install-buildtools
@@ -57,8 +57,8 @@ logger = scriptutils.logger_create(PROGNAME, stream=sys.stdout)
57 57
58DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools') 58DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools')
59DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto' 59DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto'
60DEFAULT_RELEASE = 'yocto-5.0.3' 60DEFAULT_RELEASE = 'yocto-5.0.10'
61DEFAULT_INSTALLER_VERSION = '5.0.3' 61DEFAULT_INSTALLER_VERSION = '5.0.10'
62DEFAULT_BUILDDATE = '202110XX' 62DEFAULT_BUILDDATE = '202110XX'
63 63
64# Python version sanity check 64# Python version sanity check
diff --git a/scripts/lib/devtool/ide_sdk.py b/scripts/lib/devtool/ide_sdk.py
index 65873b088d..0b50165a12 100755
--- a/scripts/lib/devtool/ide_sdk.py
+++ b/scripts/lib/devtool/ide_sdk.py
@@ -288,6 +288,7 @@ class RecipeModified:
288 self.bblayers = None 288 self.bblayers = None
289 self.bpn = None 289 self.bpn = None
290 self.d = None 290 self.d = None
291 self.debug_build = None
291 self.fakerootcmd = None 292 self.fakerootcmd = None
292 self.fakerootenv = None 293 self.fakerootenv = None
293 self.libdir = None 294 self.libdir = None
@@ -348,6 +349,7 @@ class RecipeModified:
348 self.bpn = recipe_d.getVar('BPN') 349 self.bpn = recipe_d.getVar('BPN')
349 self.cxx = recipe_d.getVar('CXX') 350 self.cxx = recipe_d.getVar('CXX')
350 self.d = recipe_d.getVar('D') 351 self.d = recipe_d.getVar('D')
352 self.debug_build = recipe_d.getVar('DEBUG_BUILD')
351 self.fakerootcmd = recipe_d.getVar('FAKEROOTCMD') 353 self.fakerootcmd = recipe_d.getVar('FAKEROOTCMD')
352 self.fakerootenv = recipe_d.getVar('FAKEROOTENV') 354 self.fakerootenv = recipe_d.getVar('FAKEROOTENV')
353 self.libdir = recipe_d.getVar('libdir') 355 self.libdir = recipe_d.getVar('libdir')
@@ -389,17 +391,6 @@ class RecipeModified:
389 self.recipe_id = self.bpn + "-" + self.package_arch 391 self.recipe_id = self.bpn + "-" + self.package_arch
390 self.recipe_id_pretty = self.bpn + ": " + self.package_arch 392 self.recipe_id_pretty = self.bpn + ": " + self.package_arch
391 393
392 def append_to_bbappend(self, append_text):
393 with open(self.bbappend, 'a') as bbap:
394 bbap.write(append_text)
395
396 def remove_from_bbappend(self, append_text):
397 with open(self.bbappend, 'r') as bbap:
398 text = bbap.read()
399 new_text = text.replace(append_text, '')
400 with open(self.bbappend, 'w') as bbap:
401 bbap.write(new_text)
402
403 @staticmethod 394 @staticmethod
404 def is_valid_shell_variable(var): 395 def is_valid_shell_variable(var):
405 """Skip strange shell variables like systemd 396 """Skip strange shell variables like systemd
@@ -412,34 +403,6 @@ class RecipeModified:
412 return True 403 return True
413 return False 404 return False
414 405
415 def debug_build_config(self, args):
416 """Explicitely set for example CMAKE_BUILD_TYPE to Debug if not defined otherwise"""
417 if self.build_tool is BuildTool.CMAKE:
418 append_text = os.linesep + \
419 'OECMAKE_ARGS:append = " -DCMAKE_BUILD_TYPE:STRING=Debug"' + os.linesep
420 if args.debug_build_config and not 'CMAKE_BUILD_TYPE' in self.cmake_cache_vars:
421 self.cmake_cache_vars['CMAKE_BUILD_TYPE'] = {
422 "type": "STRING",
423 "value": "Debug",
424 }
425 self.append_to_bbappend(append_text)
426 elif 'CMAKE_BUILD_TYPE' in self.cmake_cache_vars:
427 del self.cmake_cache_vars['CMAKE_BUILD_TYPE']
428 self.remove_from_bbappend(append_text)
429 elif self.build_tool is BuildTool.MESON:
430 append_text = os.linesep + 'MESON_BUILDTYPE = "debug"' + os.linesep
431 if args.debug_build_config and self.meson_buildtype != "debug":
432 self.mesonopts.replace(
433 '--buildtype ' + self.meson_buildtype, '--buildtype debug')
434 self.append_to_bbappend(append_text)
435 elif self.meson_buildtype == "debug":
436 self.mesonopts.replace(
437 '--buildtype debug', '--buildtype plain')
438 self.remove_from_bbappend(append_text)
439 elif args.debug_build_config:
440 logger.warn(
441 "--debug-build-config is not implemented for this build tool yet.")
442
443 def solib_search_path(self, image): 406 def solib_search_path(self, image):
444 """Search for debug symbols in the rootfs and rootfs-dbg 407 """Search for debug symbols in the rootfs and rootfs-dbg
445 408
@@ -493,7 +456,7 @@ class RecipeModified:
493 456
494 vars = (key for key in d.keys() if not key.startswith( 457 vars = (key for key in d.keys() if not key.startswith(
495 "__") and not d.getVarFlag(key, "func", False)) 458 "__") and not d.getVarFlag(key, "func", False))
496 for var in vars: 459 for var in sorted(vars):
497 func = d.getVarFlag(var, "func", False) 460 func = d.getVarFlag(var, "func", False)
498 if d.getVarFlag(var, 'python', False) and func: 461 if d.getVarFlag(var, 'python', False) and func:
499 continue 462 continue
@@ -545,7 +508,7 @@ class RecipeModified:
545 cache_vars = {} 508 cache_vars = {}
546 oecmake_args = d.getVar('OECMAKE_ARGS').split() 509 oecmake_args = d.getVar('OECMAKE_ARGS').split()
547 extra_oecmake = d.getVar('EXTRA_OECMAKE').split() 510 extra_oecmake = d.getVar('EXTRA_OECMAKE').split()
548 for param in oecmake_args + extra_oecmake: 511 for param in sorted(oecmake_args + extra_oecmake):
549 d_pref = "-D" 512 d_pref = "-D"
550 if param.startswith(d_pref): 513 if param.startswith(d_pref):
551 param = param[len(d_pref):] 514 param = param[len(d_pref):]
@@ -988,6 +951,13 @@ def ide_setup(args, config, basepath, workspace):
988 recipe_modified.gen_meson_wrapper() 951 recipe_modified.gen_meson_wrapper()
989 ide.setup_modified_recipe( 952 ide.setup_modified_recipe(
990 args, recipe_image, recipe_modified) 953 args, recipe_image, recipe_modified)
954
955 if recipe_modified.debug_build != '1':
956 logger.warn(
957 'Recipe %s is compiled with release build configuration. '
958 'You might want to add DEBUG_BUILD = "1" to %s. '
959 'Note that devtool modify --debug-build can do this automatically.',
960 recipe_modified.name, recipe_modified.bbappend)
991 else: 961 else:
992 raise DevtoolError("Must not end up here.") 962 raise DevtoolError("Must not end up here.")
993 963
@@ -995,6 +965,15 @@ def ide_setup(args, config, basepath, workspace):
995def register_commands(subparsers, context): 965def register_commands(subparsers, context):
996 """Register devtool subcommands from this plugin""" 966 """Register devtool subcommands from this plugin"""
997 967
968 # The ide-sdk command bootstraps the SDK from the bitbake environment before the IDE
969 # configuration is generated. In the case of the eSDK, the bootstrapping is performed
970 # during the installation of the eSDK installer. Running the ide-sdk plugin from an
971 # eSDK installer-based setup would require skipping the bootstrapping and probably
972 # taking some other differences into account when generating the IDE configurations.
973 # This would be possible. But it is not implemented.
974 if context.fixed_setup:
975 return
976
998 global ide_plugins 977 global ide_plugins
999 978
1000 # Search for IDE plugins in all sub-folders named ide_plugins where devtool seraches for plugins. 979 # Search for IDE plugins in all sub-folders named ide_plugins where devtool seraches for plugins.
@@ -1065,6 +1044,4 @@ def register_commands(subparsers, context):
1065 '-p', '--no-preserve', help='Do not preserve existing files', action='store_true') 1044 '-p', '--no-preserve', help='Do not preserve existing files', action='store_true')
1066 parser_ide_sdk.add_argument( 1045 parser_ide_sdk.add_argument(
1067 '--no-check-space', help='Do not check for available space before deploying', action='store_true') 1046 '--no-check-space', help='Do not check for available space before deploying', action='store_true')
1068 parser_ide_sdk.add_argument(
1069 '--debug-build-config', help='Use debug build flags, for example set CMAKE_BUILD_TYPE=Debug', action='store_true')
1070 parser_ide_sdk.set_defaults(func=ide_setup) 1047 parser_ide_sdk.set_defaults(func=ide_setup)
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 05161942b7..908869cc4f 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -1031,6 +1031,8 @@ def modify(args, config, basepath, workspace):
1031 if branch == args.branch: 1031 if branch == args.branch:
1032 continue 1032 continue
1033 f.write('# patches_%s: %s\n' % (branch, ','.join(branch_patches[branch]))) 1033 f.write('# patches_%s: %s\n' % (branch, ','.join(branch_patches[branch])))
1034 if args.debug_build:
1035 f.write('\nDEBUG_BUILD = "1"\n')
1034 1036
1035 update_unlockedsigs(basepath, workspace, args.fixed_setup, [pn]) 1037 update_unlockedsigs(basepath, workspace, args.fixed_setup, [pn])
1036 1038
@@ -2396,6 +2398,7 @@ def register_commands(subparsers, context):
2396 parser_modify.add_argument('--branch', '-b', default="devtool", help='Name for development branch to checkout (when not using -n/--no-extract) (default "%(default)s")') 2398 parser_modify.add_argument('--branch', '-b', default="devtool", help='Name for development branch to checkout (when not using -n/--no-extract) (default "%(default)s")')
2397 parser_modify.add_argument('--no-overrides', '-O', action="store_true", help='Do not create branches for other override configurations') 2399 parser_modify.add_argument('--no-overrides', '-O', action="store_true", help='Do not create branches for other override configurations')
2398 parser_modify.add_argument('--keep-temp', help='Keep temporary directory (for debugging)', action="store_true") 2400 parser_modify.add_argument('--keep-temp', help='Keep temporary directory (for debugging)', action="store_true")
2401 parser_modify.add_argument('--debug-build', action="store_true", help='Add DEBUG_BUILD = "1" to the modified recipe')
2399 parser_modify.set_defaults(func=modify, fixed_setup=context.fixed_setup) 2402 parser_modify.set_defaults(func=modify, fixed_setup=context.fixed_setup)
2400 2403
2401 parser_extract = subparsers.add_parser('extract', help='Extract the source for an existing recipe', 2404 parser_extract = subparsers.add_parser('extract', help='Extract the source for an existing recipe',
diff --git a/scripts/lib/resulttool/manualexecution.py b/scripts/lib/resulttool/manualexecution.py
index ecb27c5933..ae0861ac6b 100755
--- a/scripts/lib/resulttool/manualexecution.py
+++ b/scripts/lib/resulttool/manualexecution.py
@@ -22,7 +22,7 @@ def load_json_file(f):
22def write_json_file(f, json_data): 22def write_json_file(f, json_data):
23 os.makedirs(os.path.dirname(f), exist_ok=True) 23 os.makedirs(os.path.dirname(f), exist_ok=True)
24 with open(f, 'w') as filedata: 24 with open(f, 'w') as filedata:
25 filedata.write(json.dumps(json_data, sort_keys=True, indent=4)) 25 filedata.write(json.dumps(json_data, sort_keys=True, indent=1))
26 26
27class ManualTestRunner(object): 27class ManualTestRunner(object):
28 28
diff --git a/scripts/lib/resulttool/report.py b/scripts/lib/resulttool/report.py
index a349510ab8..1c100b00ab 100644
--- a/scripts/lib/resulttool/report.py
+++ b/scripts/lib/resulttool/report.py
@@ -256,7 +256,7 @@ class ResultsTextReport(object):
256 if selected_test_case_only: 256 if selected_test_case_only:
257 print_selected_testcase_result(raw_results, selected_test_case_only) 257 print_selected_testcase_result(raw_results, selected_test_case_only)
258 else: 258 else:
259 print(json.dumps(raw_results, sort_keys=True, indent=4)) 259 print(json.dumps(raw_results, sort_keys=True, indent=1))
260 else: 260 else:
261 print('Could not find raw test result for %s' % raw_test) 261 print('Could not find raw test result for %s' % raw_test)
262 return 0 262 return 0
diff --git a/scripts/lib/resulttool/resultutils.py b/scripts/lib/resulttool/resultutils.py
index c5521d81bd..b8fc79a6ac 100644
--- a/scripts/lib/resulttool/resultutils.py
+++ b/scripts/lib/resulttool/resultutils.py
@@ -14,8 +14,11 @@ import scriptpath
14import copy 14import copy
15import urllib.request 15import urllib.request
16import posixpath 16import posixpath
17import logging
17scriptpath.add_oe_lib_path() 18scriptpath.add_oe_lib_path()
18 19
20logger = logging.getLogger('resulttool')
21
19flatten_map = { 22flatten_map = {
20 "oeselftest": [], 23 "oeselftest": [],
21 "runtime": [], 24 "runtime": [],
@@ -31,13 +34,19 @@ regression_map = {
31 "manual": ['TEST_TYPE', 'TEST_MODULE', 'IMAGE_BASENAME', 'MACHINE'] 34 "manual": ['TEST_TYPE', 'TEST_MODULE', 'IMAGE_BASENAME', 'MACHINE']
32} 35}
33store_map = { 36store_map = {
34 "oeselftest": ['TEST_TYPE'], 37 "oeselftest": ['TEST_TYPE', 'TESTSERIES', 'MACHINE'],
35 "runtime": ['TEST_TYPE', 'DISTRO', 'MACHINE', 'IMAGE_BASENAME'], 38 "runtime": ['TEST_TYPE', 'DISTRO', 'MACHINE', 'IMAGE_BASENAME'],
36 "sdk": ['TEST_TYPE', 'MACHINE', 'SDKMACHINE', 'IMAGE_BASENAME'], 39 "sdk": ['TEST_TYPE', 'MACHINE', 'SDKMACHINE', 'IMAGE_BASENAME'],
37 "sdkext": ['TEST_TYPE', 'MACHINE', 'SDKMACHINE', 'IMAGE_BASENAME'], 40 "sdkext": ['TEST_TYPE', 'MACHINE', 'SDKMACHINE', 'IMAGE_BASENAME'],
38 "manual": ['TEST_TYPE', 'TEST_MODULE', 'MACHINE', 'IMAGE_BASENAME'] 41 "manual": ['TEST_TYPE', 'TEST_MODULE', 'MACHINE', 'IMAGE_BASENAME']
39} 42}
40 43
44rawlog_sections = {
45 "ptestresult.rawlogs": "ptest",
46 "ltpresult.rawlogs": "ltp",
47 "ltpposixresult.rawlogs": "ltpposix"
48}
49
41def is_url(p): 50def is_url(p):
42 """ 51 """
43 Helper for determining if the given path is a URL 52 Helper for determining if the given path is a URL
@@ -108,21 +117,57 @@ def filter_resultsdata(results, resultid):
108 newresults[r][i] = results[r][i] 117 newresults[r][i] = results[r][i]
109 return newresults 118 return newresults
110 119
111def strip_ptestresults(results): 120def strip_logs(results):
112 newresults = copy.deepcopy(results) 121 newresults = copy.deepcopy(results)
113 #for a in newresults2:
114 # newresults = newresults2[a]
115 for res in newresults: 122 for res in newresults:
116 if 'result' not in newresults[res]: 123 if 'result' not in newresults[res]:
117 continue 124 continue
118 if 'ptestresult.rawlogs' in newresults[res]['result']: 125 for logtype in rawlog_sections:
119 del newresults[res]['result']['ptestresult.rawlogs'] 126 if logtype in newresults[res]['result']:
127 del newresults[res]['result'][logtype]
120 if 'ptestresult.sections' in newresults[res]['result']: 128 if 'ptestresult.sections' in newresults[res]['result']:
121 for i in newresults[res]['result']['ptestresult.sections']: 129 for i in newresults[res]['result']['ptestresult.sections']:
122 if 'log' in newresults[res]['result']['ptestresult.sections'][i]: 130 if 'log' in newresults[res]['result']['ptestresult.sections'][i]:
123 del newresults[res]['result']['ptestresult.sections'][i]['log'] 131 del newresults[res]['result']['ptestresult.sections'][i]['log']
124 return newresults 132 return newresults
125 133
134# For timing numbers, crazy amounts of precision don't make sense and just confuse
135# the logs. For numbers over 1, trim to 3 decimal places, for numbers less than 1,
136# trim to 4 significant digits
137def trim_durations(results):
138 for res in results:
139 if 'result' not in results[res]:
140 continue
141 for entry in results[res]['result']:
142 if 'duration' in results[res]['result'][entry]:
143 duration = results[res]['result'][entry]['duration']
144 if duration > 1:
145 results[res]['result'][entry]['duration'] = float("%.3f" % duration)
146 elif duration < 1:
147 results[res]['result'][entry]['duration'] = float("%.4g" % duration)
148 return results
149
150def handle_cleanups(results):
151 # Remove pointless path duplication from old format reproducibility results
152 for res2 in results:
153 try:
154 section = results[res2]['result']['reproducible']['files']
155 for pkgtype in section:
156 for filelist in section[pkgtype].copy():
157 if section[pkgtype][filelist] and type(section[pkgtype][filelist][0]) == dict:
158 newlist = []
159 for entry in section[pkgtype][filelist]:
160 newlist.append(entry["reference"].split("/./")[1])
161 section[pkgtype][filelist] = newlist
162
163 except KeyError:
164 pass
165 # Remove pointless duplicate rawlogs data
166 try:
167 del results[res2]['result']['reproducible.rawlogs']
168 except KeyError:
169 pass
170
126def decode_log(logdata): 171def decode_log(logdata):
127 if isinstance(logdata, str): 172 if isinstance(logdata, str):
128 return logdata 173 return logdata
@@ -155,9 +200,6 @@ def generic_get_rawlogs(sectname, results):
155 return None 200 return None
156 return decode_log(results[sectname]['log']) 201 return decode_log(results[sectname]['log'])
157 202
158def ptestresult_get_rawlogs(results):
159 return generic_get_rawlogs('ptestresult.rawlogs', results)
160
161def save_resultsdata(results, destdir, fn="testresults.json", ptestjson=False, ptestlogs=False): 203def save_resultsdata(results, destdir, fn="testresults.json", ptestjson=False, ptestlogs=False):
162 for res in results: 204 for res in results:
163 if res: 205 if res:
@@ -167,16 +209,20 @@ def save_resultsdata(results, destdir, fn="testresults.json", ptestjson=False, p
167 os.makedirs(os.path.dirname(dst), exist_ok=True) 209 os.makedirs(os.path.dirname(dst), exist_ok=True)
168 resultsout = results[res] 210 resultsout = results[res]
169 if not ptestjson: 211 if not ptestjson:
170 resultsout = strip_ptestresults(results[res]) 212 resultsout = strip_logs(results[res])
213 trim_durations(resultsout)
214 handle_cleanups(resultsout)
171 with open(dst, 'w') as f: 215 with open(dst, 'w') as f:
172 f.write(json.dumps(resultsout, sort_keys=True, indent=4)) 216 f.write(json.dumps(resultsout, sort_keys=True, indent=1))
173 for res2 in results[res]: 217 for res2 in results[res]:
174 if ptestlogs and 'result' in results[res][res2]: 218 if ptestlogs and 'result' in results[res][res2]:
175 seriesresults = results[res][res2]['result'] 219 seriesresults = results[res][res2]['result']
176 rawlogs = ptestresult_get_rawlogs(seriesresults) 220 for logtype in rawlog_sections:
177 if rawlogs is not None: 221 logdata = generic_get_rawlogs(logtype, seriesresults)
178 with open(dst.replace(fn, "ptest-raw.log"), "w+") as f: 222 if logdata is not None:
179 f.write(rawlogs) 223 logger.info("Extracting " + rawlog_sections[logtype] + "-raw.log")
224 with open(dst.replace(fn, rawlog_sections[logtype] + "-raw.log"), "w+") as f:
225 f.write(logdata)
180 if 'ptestresult.sections' in seriesresults: 226 if 'ptestresult.sections' in seriesresults:
181 for i in seriesresults['ptestresult.sections']: 227 for i in seriesresults['ptestresult.sections']:
182 sectionlog = ptestresult_get_log(seriesresults, i) 228 sectionlog = ptestresult_get_log(seriesresults, i)
diff --git a/scripts/lib/resulttool/store.py b/scripts/lib/resulttool/store.py
index e0951f0a8f..578910d234 100644
--- a/scripts/lib/resulttool/store.py
+++ b/scripts/lib/resulttool/store.py
@@ -65,18 +65,34 @@ def store(args, logger):
65 65
66 for r in revisions: 66 for r in revisions:
67 results = revisions[r] 67 results = revisions[r]
68 if args.revision and r[0] != args.revision:
69 logger.info('skipping %s as non-matching' % r[0])
70 continue
68 keywords = {'commit': r[0], 'branch': r[1], "commit_count": r[2]} 71 keywords = {'commit': r[0], 'branch': r[1], "commit_count": r[2]}
69 subprocess.check_call(["find", tempdir, "!", "-path", "./.git/*", "-delete"]) 72 subprocess.check_call(["find", tempdir, "-name", "testresults.json", "!", "-path", "./.git/*", "-delete"])
70 resultutils.save_resultsdata(results, tempdir, ptestlogs=True) 73 resultutils.save_resultsdata(results, tempdir, ptestlogs=True)
71 74
72 logger.info('Storing test result into git repository %s' % args.git_dir) 75 logger.info('Storing test result into git repository %s' % args.git_dir)
73 76
74 gitarchive.gitarchive(tempdir, args.git_dir, False, False, 77 excludes = []
78 if args.logfile_archive:
79 excludes = ['*.log', "*.log.zst"]
80
81 tagname = gitarchive.gitarchive(tempdir, args.git_dir, False, False,
75 "Results of {branch}:{commit}", "branch: {branch}\ncommit: {commit}", "{branch}", 82 "Results of {branch}:{commit}", "branch: {branch}\ncommit: {commit}", "{branch}",
76 False, "{branch}/{commit_count}-g{commit}/{tag_number}", 83 False, "{branch}/{commit_count}-g{commit}/{tag_number}",
77 'Test run #{tag_number} of {branch}:{commit}', '', 84 'Test run #{tag_number} of {branch}:{commit}', '',
78 [], [], False, keywords, logger) 85 excludes, [], False, keywords, logger)
79 86
87 if args.logfile_archive:
88 logdir = args.logfile_archive + "/" + tagname
89 shutil.copytree(tempdir, logdir)
90 for root, dirs, files in os.walk(logdir):
91 for name in files:
92 if not name.endswith(".log"):
93 continue
94 f = os.path.join(root, name)
95 subprocess.run(["zstd", f, "--rm"], check=True, capture_output=True)
80 finally: 96 finally:
81 subprocess.check_call(["rm", "-rf", tempdir]) 97 subprocess.check_call(["rm", "-rf", tempdir])
82 98
@@ -102,3 +118,7 @@ def register_commands(subparsers):
102 help='add executed-by configuration to each result file') 118 help='add executed-by configuration to each result file')
103 parser_build.add_argument('-t', '--extra-test-env', default='', 119 parser_build.add_argument('-t', '--extra-test-env', default='',
104 help='add extra test environment data to each result file configuration') 120 help='add extra test environment data to each result file configuration')
121 parser_build.add_argument('-r', '--revision', default='',
122 help='only store data for the specified revision')
123 parser_build.add_argument('-l', '--logfile-archive', default='',
124 help='directory to separately archive log files along with a copy of the results')
diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py b/scripts/lib/wic/plugins/source/bootimg-efi.py
index 7cc5131541..37d07093f5 100644
--- a/scripts/lib/wic/plugins/source/bootimg-efi.py
+++ b/scripts/lib/wic/plugins/source/bootimg-efi.py
@@ -245,7 +245,7 @@ class BootimgEFIPlugin(SourcePlugin):
245 245
246 # list of tuples (src_name, dst_name) 246 # list of tuples (src_name, dst_name)
247 deploy_files = [] 247 deploy_files = []
248 for src_entry in re.findall(r'[\w;\-\./\*]+', boot_files): 248 for src_entry in re.findall(r'[\w;\-\.\+/\*]+', boot_files):
249 if ';' in src_entry: 249 if ';' in src_entry:
250 dst_entry = tuple(src_entry.split(';')) 250 dst_entry = tuple(src_entry.split(';'))
251 if not dst_entry[0] or not dst_entry[1]: 251 if not dst_entry[0] or not dst_entry[1]:
diff --git a/scripts/runqemu b/scripts/runqemu
index fe395d1bc6..2ab36fd03d 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -1487,7 +1487,7 @@ to your build configuration.
1487 # If no serial or serialtcp options were specified, only ttyS0 is created 1487 # If no serial or serialtcp options were specified, only ttyS0 is created
1488 # and sysvinit shows an error trying to enable ttyS1: 1488 # and sysvinit shows an error trying to enable ttyS1:
1489 # INIT: Id "S1" respawning too fast: disabled for 5 minutes 1489 # INIT: Id "S1" respawning too fast: disabled for 5 minutes
1490 serial_num = len(re.findall("-serial", self.qemu_opt)) 1490 serial_num = len(re.findall("(^| )-serial ", self.qemu_opt))
1491 1491
1492 # Assume if the user passed serial options, they know what they want 1492 # Assume if the user passed serial options, they know what they want
1493 # and pad to two devices 1493 # and pad to two devices
@@ -1507,7 +1507,7 @@ to your build configuration.
1507 1507
1508 self.qemu_opt += " %s" % self.get("QB_SERIAL_OPT") 1508 self.qemu_opt += " %s" % self.get("QB_SERIAL_OPT")
1509 1509
1510 serial_num = len(re.findall("-serial", self.qemu_opt)) 1510 serial_num = len(re.findall("(^| )-serial ", self.qemu_opt))
1511 if serial_num < 2: 1511 if serial_num < 2:
1512 self.qemu_opt += " -serial null" 1512 self.qemu_opt += " -serial null"
1513 1513