Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gcc15 for openSUSE:Factory checked in at 2026-10-08 11:55:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gcc15 (Old) and /work/SRC/openSUSE:Factory/.gcc15.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gcc15" Thu Oct 8 11:55:06 2026 rev:24 rq:1382728 version:15.3.0+git11272 Changes: -------- --- /work/SRC/openSUSE:Factory/gcc15/gcc15.changes 2026-06-13 18:44:50.103191152 +0200 +++ /work/SRC/openSUSE:Factory/.gcc15.new.3698736/gcc15.changes 2026-10-08 11:55:31.298271878 +0200 @@ -1,0 +2,16 @@ +Tue Oct 6 08:06:04 UTC 2026 - Richard Biener <[email protected]> + +- Add gcc15-pr127656.patch to fix use-after-free in + __gnu_pbds::priority_queue. [bsc#1283123] (CVE-2026-102010) + +------------------------------------------------------------------- +Tue Jun 30 10:44:21 UTC 2026 - Richard Biener <[email protected]> + +- Update gcc15-Wtime_t-conversion.patch + +------------------------------------------------------------------- +Sat Jun 20 15:11:37 UTC 2026 - Jan Engelhardt <[email protected]> + +- Make build recipe compatible with POSIX sh + +------------------------------------------------------------------- New: ---- gcc15-pr127656.patch ----------(New B)---------- New: - Add gcc15-pr127656.patch to fix use-after-free in __gnu_pbds::priority_queue. [bsc#1283123] (CVE-2026-102010) ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cross-aarch64-gcc15-bootstrap.spec ++++++ --- /var/tmp/diff_new_pack.nZwh3t/_old 2026-10-08 11:55:33.090346918 +0200 +++ /var/tmp/diff_new_pack.nZwh3t/_new 2026-10-08 11:55:33.092347002 +0200 @@ -127,6 +127,7 @@ Patch20: gcc15-bsc1253043.patch Patch21: gcc15-pr120424.patch Patch22: gcc15-Wtime_t-conversion.patch +Patch23: gcc15-pr127656.patch # A set of patches from the RH srpm Patch51: gcc41-ppc32-retaddr.patch # Some patches taken from Debian @@ -340,7 +341,7 @@ %patch -p1 -P 19 %patch -p1 -P 20 %endif -%patch -p1 -P 21 -P 22 +%patch -p1 -P 21 -P 22 -P 23 %patch -P 51 %patch -p1 -P 60 -P 61 @@ -385,13 +386,13 @@ *) add_flag=$flag ;; esac if test -n "$add_flag"; then - optflags+=" $add_flag" + optflags="$optflags $add_flag" case $add_flag in # Filter out -Werror=return-type for D (only valid for C and C++) -Werror=return-type) ;; # Likewise -Wtime_t-conversion -Wtime_t-conversion) ;; - *) optflags_d+=" $add_flag" ;; + *) optflags_d="$optflags_d $add_flag" ;; esac fi done cross-aarch64-gcc15.spec: same change cross-amdgcn-gcc15.spec: same change cross-arm-gcc15.spec: same change cross-arm-none-gcc15-bootstrap.spec: same change cross-arm-none-gcc15.spec: same change cross-avr-gcc15-bootstrap.spec: same change cross-avr-gcc15.spec: same change cross-bpf-gcc15.spec: same change cross-hppa-gcc15-bootstrap.spec: same change cross-hppa-gcc15.spec: same change cross-loongarch64-gcc15-bootstrap.spec: same change cross-loongarch64-gcc15.spec: same change cross-nvptx-gcc15.spec: same change cross-ppc64-gcc15.spec: same change cross-ppc64le-gcc15-bootstrap.spec: same change cross-ppc64le-gcc15.spec: same change cross-pru-gcc15-bootstrap.spec: same change cross-pru-gcc15.spec: same change cross-riscv64-elf-gcc15-bootstrap.spec: same change cross-riscv64-elf-gcc15.spec: same change cross-riscv64-gcc15-bootstrap.spec: same change cross-riscv64-gcc15.spec: same change cross-rx-gcc15-bootstrap.spec: same change cross-rx-gcc15.spec: same change cross-s390x-gcc15-bootstrap.spec: same change cross-s390x-gcc15.spec: same change cross-x86_64-gcc15.spec: same change gcc15-testresults.spec: same change ++++++ gcc15.spec ++++++ --- /var/tmp/diff_new_pack.nZwh3t/_old 2026-10-08 11:55:34.080388374 +0200 +++ /var/tmp/diff_new_pack.nZwh3t/_new 2026-10-08 11:55:34.083388500 +0200 @@ -388,6 +388,7 @@ Patch20: gcc15-bsc1253043.patch Patch21: gcc15-pr120424.patch Patch22: gcc15-Wtime_t-conversion.patch +Patch23: gcc15-pr127656.patch # A set of patches from the RH srpm Patch51: gcc41-ppc32-retaddr.patch # Some patches taken from Debian @@ -2481,7 +2482,7 @@ %patch -p1 -P 19 %patch -p1 -P 20 %endif -%patch -p1 -P 21 -P 22 +%patch -p1 -P 21 -P 22 -P 23 %patch -P 51 %patch -p1 -P 60 -P 61 @@ -2526,13 +2527,13 @@ *) add_flag=$flag ;; esac if test -n "$add_flag"; then - optflags+=" $add_flag" + optflags="$optflags $add_flag" case $add_flag in # Filter out -Werror=return-type for D (only valid for C and C++) -Werror=return-type) ;; # Likewise -Wtime_t-conversion -Wtime_t-conversion) ;; - *) optflags_d+=" $add_flag" ;; + *) optflags_d="$optflags_d $add_flag" ;; esac fi done ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.nZwh3t/_old 2026-10-08 11:55:34.221394279 +0200 +++ /var/tmp/diff_new_pack.nZwh3t/_new 2026-10-08 11:55:34.227394530 +0200 @@ -1,5 +1,5 @@ -mtime: 1781244909 -commit: 9c6fed29d08dcef55f8aa0f5e4559e22f15682af5c3646184f8e42c12e5f9c5d +mtime: 1791274201 +commit: 7b0e7d8742662820fe8d77fd3e420b871712075cf2d5d9016b115aeaface33e1 url: https://src.opensuse.org/gcc/gcc15.git revision: main ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-10-06 10:10:01.000000000 +0200 @@ -0,0 +1 @@ +.osc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pre_checkin.sh new/pre_checkin.sh --- old/pre_checkin.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/pre_checkin.sh 2026-10-06 10:10:01.000000000 +0200 @@ -0,0 +1,31 @@ +#!/bin/bash +# This script is called automatically during autobuild checkin. + +case $0 in + \./*) + here=$PWD + ;; + */*) + here=${0%/*} + ;; + *) + here=$PWD + ;; +esac +case ${here##*/} in + gcc*.*) + # Handle maintainance projects with .$REPO suffix + suffix=${here##*/} + suffix=${suffix%%\.*} + set ${suffix#gcc} + ;; + gcc-*) + suffix=${here##*/} + set ${suffix#*-}- + ;; + gcc[0-9]*) + suffix=${here##*/} + set ${suffix#gcc} + ;; +esac +. ${here}/change_spec ++++++ gcc.spec.in ++++++ --- /var/tmp/diff_new_pack.nZwh3t/_old 2026-10-08 11:55:34.620410987 +0200 +++ /var/tmp/diff_new_pack.nZwh3t/_new 2026-10-08 11:55:34.624411154 +0200 @@ -393,6 +393,7 @@ Patch20: gcc15-bsc1253043.patch Patch21: gcc15-pr120424.patch Patch22: gcc15-Wtime_t-conversion.patch +Patch23: gcc15-pr127656.patch # A set of patches from the RH srpm Patch51: gcc41-ppc32-retaddr.patch # Some patches taken from Debian @@ -1400,7 +1401,7 @@ %patch -p1 -P 19 %patch -p1 -P 20 %endif -%patch -p1 -P 21 -P 22 +%patch -p1 -P 21 -P 22 -P 23 %patch -P 51 %patch -p1 -P 60 -P 61 @@ -1445,13 +1446,13 @@ *) add_flag=$flag ;; esac if test -n "$add_flag"; then - optflags+=" $add_flag" + optflags="$optflags $add_flag" case $add_flag in # Filter out -Werror=return-type for D (only valid for C and C++) -Werror=return-type) ;; # Likewise -Wtime_t-conversion -Wtime_t-conversion) ;; - *) optflags_d+=" $add_flag" ;; + *) optflags_d="$optflags_d $add_flag" ;; esac fi done ++++++ gcc15-Wtime_t-conversion.patch ++++++ --- /var/tmp/diff_new_pack.nZwh3t/_old 2026-10-08 11:55:34.643411950 +0200 +++ /var/tmp/diff_new_pack.nZwh3t/_new 2026-10-08 11:55:34.646412075 +0200 @@ -1,4 +1,4 @@ -From 35344d5a9209c58b4c28589d0f43b95c6d5f7c0d Mon Sep 17 00:00:00 2001 +From 818aaaee3e8cda0fa751e0e1e8347285151230aa Mon Sep 17 00:00:00 2001 From: Richard Biener <[email protected]> Date: Thu, 26 Jun 2025 10:14:54 +0200 Subject: [PATCH] c/96570 - diagnostics for conversions to/from time_t @@ -39,15 +39,15 @@ * c-c++-common/Wtime_t-1.c: New testcase. --- - gcc/c-family/c-warn.cc | 36 ++++++++++- + gcc/c-family/c-warn.cc | 37 ++++++++++- gcc/c-family/c.opt | 4 ++ gcc/doc/invoke.texi | 6 ++ - gcc/testsuite/c-c++-common/Wtime_t-1.c | 83 ++++++++++++++++++++++++++ - 4 files changed, 128 insertions(+), 1 deletion(-) + gcc/testsuite/c-c++-common/Wtime_t-1.c | 85 ++++++++++++++++++++++++++ + 4 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/c-c++-common/Wtime_t-1.c diff --git a/gcc/c-family/c-warn.cc b/gcc/c-family/c-warn.cc -index d547b08f55d..956807ac707 100644 +index d547b08f55d..a685aaed936 100644 --- a/gcc/c-family/c-warn.cc +++ b/gcc/c-family/c-warn.cc @@ -1394,6 +1394,17 @@ conversion_warning (location_t loc, tree type, tree expr, tree result) @@ -68,7 +68,7 @@ /* Produce warnings after a conversion. RESULT is the result of converting EXPR to TYPE. This is a helper function for convert_and_check and cp_convert_and_check. */ -@@ -1506,7 +1517,30 @@ warnings_for_convert_and_check (location_t loc, tree type, tree expr, +@@ -1506,7 +1517,31 @@ warnings_for_convert_and_check (location_t loc, tree type, tree expr, exprtype, type, expr); } else @@ -80,6 +80,7 @@ + if (TREE_CODE (result) == INTEGER_CST) + ; + else if (is_time_t (TREE_TYPE (expr)) ++ && !COMPARISON_CLASS_P (result) + && INTEGRAL_TYPE_P (type) + && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (expr)) + /* A conversion to uint32_t or larger is OK. */ @@ -116,7 +117,7 @@ C ObjC C++ ObjC++ CppReason(CPP_W_WARNING_DIRECTIVE) ; Documented in common.opt diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi -index e7af79e09ae..a40b47c870d 100644 +index b560ed41ca3..f14adecaa76 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -9725,6 +9725,12 @@ unsigned integers are disabled by default in C++ unless @@ -134,15 +135,15 @@ @item -Wdangling-else diff --git a/gcc/testsuite/c-c++-common/Wtime_t-1.c b/gcc/testsuite/c-c++-common/Wtime_t-1.c new file mode 100644 -index 00000000000..dc9471ae366 +index 00000000000..e2c091f8005 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wtime_t-1.c -@@ -0,0 +1,83 @@ +@@ -0,0 +1,85 @@ +/* Test for diagnostics for conversions between time_t and integer types + These tests are based on gcc.dg/Wconversion-integer.c */ + +/* { dg-do compile { target ilp32 } } */ -+/* { dg-options "-std=c99 -fsigned-char -Wtime_t-conversion" } */ ++/* { dg-options "-fsigned-char -Wtime_t-conversion" } */ + +#define __USE_TIME_BITS64 +#include <time.h> @@ -220,6 +221,8 @@ + t = (time_t)sl; + t = (time_t)ul; + t = (time_t)ull; ++ if (t) /* { dg-bogus "conversion" } */ ++ fsc (0); +} -- 2.51.0 ++++++ gcc15-pr127656.patch ++++++ >From 29e51a820d76c766ae417fcba912714337b0eb17 Mon Sep 17 00:00:00 2001 From: Richard Biener <[email protected]> Date: Fri, 25 Sep 2026 18:14:34 +0100 Subject: [PATCH] libstdc++: Fix use-after-free in pbds binary heap (CVE-2026-102010) [PR127656] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To: [email protected] From: Jonathan Wakely <[email protected]> After reallocating the storage the m_a_entries pointer is left dangling and the new storage is leaked. libstdc++-v3/ChangeLog: PR libstdc++/127656 * include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp (erase_if): Update m_a_entries after reallocation. * testsuite/ext/pb_ds/regression/priority_queues_erase_if.cc: New test. Reviewed-by: Tomasz KamiĆski <[email protected]> (cherry picked from commit aaa8351f4d2e636f9680a1f0a8ebc2f0a60611e6) --- .../detail/binary_heap_/erase_fn_imps.hpp | 1 + .../regression/priority_queues_erase_if.cc | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues_erase_if.cc diff --git a/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp index 752688bb8e9..1eec3c9fb33 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp @@ -121,6 +121,7 @@ erase_if(Pred pred) entry_pointer new_entries = s_entry_allocator.allocate(new_size); std::copy(m_a_entries, m_a_entries + left, new_entries); s_entry_allocator.deallocate(m_a_entries, m_actual_size); + m_a_entries = new_entries; m_actual_size = new_size; resize_policy::notify_arbitrary(m_actual_size); } diff --git a/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues_erase_if.cc b/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues_erase_if.cc new file mode 100644 index 00000000000..30b8452eff9 --- /dev/null +++ b/libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues_erase_if.cc @@ -0,0 +1,19 @@ +// { dg-do run } + +// CVE-2026-201020 use-after-free in binary heap erase_if + +#include <ext/pb_ds/priority_queue.hpp> + +bool is_odd(int v) { return v & 1; } + +int main() +{ + using __gnu_pbds::priority_queue; + using __gnu_pbds::binary_heap_tag; + priority_queue<int, std::less<int>, binary_heap_tag> q; + q.push(1); + q.push(2); + q.push(3); + q.erase_if(&is_odd); + q.clear(); +} -- 2.51.0
