[Bug,libc/29141] _FORTIFY_SOURCE=3 fail for gcc 12/glibc 2.35
Commit Message
https://sourceware.org/bugzilla/show_bug.cgi?id=29141
Siddhesh Poyarekar <siddhesh at sourceware dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Version|unspecified |2.36
Product|elfutils |glibc
Assignee|unassigned at sourceware dot org |siddhesh at sourceware dot org
Last reconfirmed| |2022-05-12
Ever confirmed|0 |1
Status|UNCONFIRMED |ASSIGNED
CC| |drepper.fsp at gmail dot com
Component|general |libc
--- Comment #3 from Siddhesh Poyarekar <siddhesh at sourceware dot org> ---
OK my __glibc_fortify macro isn't explicit enough; it must check if __osz is
constant while checking for -1 so that the condition collapses correctly.
The following single line change in glibc fixes it and I was able to build
elfutils to completion on my Fedora rawhide box.
However, could you tell me what system you're doing this build on? The glibc
should need this fix for it to stumble on this issue. I had backported it to
the 2.35 branch a while back, but I haven't tracked which distros synced up
with this. Fedora seems to have got it only yesterday.
commit c8ee1c85c07b3c9eaef46355cb1095300855e8fa
Author: Joan Bruguera <joanbrugueram@gmail.com>
Date: Mon Apr 11 19:49:56 2022 +0200
misc: Fix rare fortify crash on wchar funcs. [BZ 29030]
(__s), (__osz))) \
@@ -164,7 +164,7 @@
/* Length is known to be safe at compile time if the __L * __S <= __OBJSZ
condition can be folded to a constant and if it is true, or unknown (-1) */
#define __glibc_safe_or_unknown_len(__l, __s, __osz) \
- ((__osz) == (__SIZE_TYPE__) -1 \
+ ((__builtin_constant_p (__osz) && (__osz) == (__SIZE_TYPE__) -1) \
|| (__glibc_unsigned_or_positive (__l) \
&& __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l),
\