public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Siddhesh Poyarekar <siddhesh@gotplt.org>
To: "Frédéric Bérat" <fberat@redhat.com>, libc-alpha@sourceware.org
Subject: Re: [PATCH v3 02/16] Exclude routines from fortification
Date: Fri, 30 Jun 2023 10:55:19 -0400	[thread overview]
Message-ID: <1b46ffc4-5d65-faeb-96f0-c0828dc89cfb@gotplt.org> (raw)
In-Reply-To: <20230628084246.778302-3-fberat@redhat.com>

On 2023-06-28 04:42, Frédéric Bérat wrote:
> Since the _FORTIFY_SOURCE feature uses some routines of Glibc, they need to
> be excluded from the fortification.
> 
> On top of that:
>   - some tests explicitly verify that some level of fortification works
>     appropriately, we therefore shouldn't modify the level set for them.
>   - some objects need to be build with optimization disabled, which
>     prevents _FORTIFY_SOURCE to be used for them.
> 
> Assembler files that implement architecture specific versions of the
> fortified routines were not excluded from _FORTIFY_SOURCE as there is no
> C header included that would impact their behavior.
> ---
>   debug/Makefile                              | 12 +--
>   io/Makefile                                 | 16 ++++
>   libio/Makefile                              | 21 +++++-
>   login/Makefile                              |  6 ++
>   misc/Makefile                               |  7 ++
>   posix/Makefile                              | 11 +++
>   rt/Makefile                                 |  5 ++
>   setjmp/Makefile                             |  9 +++
>   socket/Makefile                             |  6 ++
>   stdio-common/Makefile                       | 15 +++-
>   stdlib/Makefile                             |  7 ++
>   string/Makefile                             | 17 +++++
>   sysdeps/ieee754/ldbl-128ibm-compat/Makefile | 81 +++++++++++++++++----
>   sysdeps/ieee754/ldbl-opt/Makefile           | 29 ++++++++
>   sysdeps/pthread/Makefile                    |  4 +
>   sysdeps/unix/sysv/linux/Makefile            |  3 +
>   wcsmbs/Makefile                             | 23 +++++-
>   17 files changed, 247 insertions(+), 25 deletions(-)
> 
> diff --git a/debug/Makefile b/debug/Makefile
> index 9d658e3002..434e52f780 100644
> --- a/debug/Makefile
> +++ b/debug/Makefile
> @@ -171,13 +171,13 @@ CFLAGS-recvfrom_chk.c += -fexceptions -fasynchronous-unwind-tables
>   # set up for us, so keep the CFLAGS/CPPFLAGS split logical as the order is:
>   # <user CFLAGS> <test CFLAGS> <user CPPFLAGS> <test CPPFLAGS>
>   CFLAGS-tst-longjmp_chk.c += -fexceptions -fasynchronous-unwind-tables
> -CPPFLAGS-tst-longjmp_chk.c += -D_FORTIFY_SOURCE=1
> +CPPFLAGS-tst-longjmp_chk.c += $(no-fortify-source),-D_FORTIFY_SOURCE=1
>   CFLAGS-tst-longjmp_chk2.c += -fexceptions -fasynchronous-unwind-tables
> -CPPFLAGS-tst-longjmp_chk2.c += -D_FORTIFY_SOURCE=1
> +CPPFLAGS-tst-longjmp_chk2.c += $(no-fortify-source),-D_FORTIFY_SOURCE=1
>   CFLAGS-tst-longjmp_chk3.c += -fexceptions -fasynchronous-unwind-tables
> -CPPFLAGS-tst-longjmp_chk3.c += -D_FORTIFY_SOURCE=1
> -CPPFLAGS-tst-realpath-chk.c += -D_FORTIFY_SOURCE=2
> -CPPFLAGS-tst-chk-cancel.c += -D_FORTIFY_SOURCE=2
> +CPPFLAGS-tst-longjmp_chk3.c += $(no-fortify-source),-D_FORTIFY_SOURCE=1
> +CPPFLAGS-tst-realpath-chk.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
> +CPPFLAGS-tst-chk-cancel.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
>   
>   # _FORTIFY_SOURCE tests.
>   # Auto-generate tests for _FORTIFY_SOURCE for different levels, compilers and
> @@ -215,7 +215,7 @@ src-chk-nongnu = \#undef _GNU_SOURCE
>   # cannot be disabled via pragmas, so require -Wno-error to be used.
>   define gen-chk-test
>   tests-$(1)-$(4)-chk += tst-fortify-$(1)-$(2)-$(3)-$(4)
> -CFLAGS-tst-fortify-$(1)-$(2)-$(3)-$(4).$(1) += -D_FORTIFY_SOURCE=$(3) -Wno-format \
> +CFLAGS-tst-fortify-$(1)-$(2)-$(3)-$(4).$(1) += $(no-fortify-source),-D_FORTIFY_SOURCE=$(3) -Wno-format \
>   					  -Wno-deprecated-declarations \
>   					  -Wno-error
>   $(eval $(call cflags-$(2),$(1),$(3),$(4)))
> diff --git a/io/Makefile b/io/Makefile
> index d573064ecc..6ccc0e8691 100644
> --- a/io/Makefile
> +++ b/io/Makefile
> @@ -149,6 +149,22 @@ routines := \
>     write \
>     # routines
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  getcwd \
> +  getwd \
> +  open \
> +  open64 \
> +  openat \
> +  openat64 \
> +  poll \
> +  ppoll \
> +  read \
> +  readlink \
> +  readlinkat \
> +  ttyname_r \
> +  # routines_no_fortify
> +
>   others := \
>    pwd \
>    # others
> diff --git a/libio/Makefile b/libio/Makefile
> index 2877fec484..f5c487d9f5 100644
> --- a/libio/Makefile
> +++ b/libio/Makefile
> @@ -53,6 +53,21 @@ routines	:=							      \
>   
>   gen-as-const-headers += libio-macros.sym
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  fwprintf \
> +  iofgets \
> +  iofgets_u \
> +  iofgetws \
> +  iofgetws_u \
> +  swprintf \
> +  vasprintf \
> +  vsnprintf \
> +  vswprintf \
> +  vwprintf \
> +  wprintf \
> +  # routines_no_fortify
> +
>   tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc   \
>   	tst_wprintf2 tst-widetext test-fmemopen tst-ext tst-ext2 \
>   	tst-fgetws tst-ungetwc1 tst-ungetwc2 tst-swscanf tst-sscanf	      \
> @@ -165,11 +180,15 @@ CFLAGS-iofgets_u.c += $(config-cflags-wno-ignored-attributes)
>   CFLAGS-iofputs_u.c += $(config-cflags-wno-ignored-attributes)
>   # XXX Do we need filedoalloc and wfiledoalloc?  Others?
>   
> +# Prevent fortification as these are built with -O0
> +CFLAGS-tst-bz24051.c += $(no-fortify-source)
> +CFLAGS-tst-bz24153.c += $(no-fortify-source)
> +
>   CFLAGS-tst_putwc.c += -DOBJPFX=\"$(objpfx)\"
>   
>   # These test cases intentionally use overlapping arguments
>   CFLAGS-tst-sprintf-ub.c += -Wno-restrict

This should also be built without fortification because the test 
specifically tries to validate the sprintf entry point; the 
__sprintf_chk entry point ought to get checked by the 
tst-sprintf-chk-ub.c test.

In fact, I wonder if *all* tests should be built without fortification 
by default regardless of whether glibc is built with fortification.  We 
have specific tests in debug/ to test the _chk entry points and it seems 
like the tests should stick to validating only the regular entry points 
unless otherwise specified.

Sid

> -CFLAGS-tst-sprintf-chk-ub.c += -Wno-restrict
> +CFLAGS-tst-sprintf-chk-ub.c += -Wno-restrict $(no-fortify-source)
>   
>   LDFLAGS-tst-bz24228 = -Wl,--version-script=tst-bz24228.map
>   
> diff --git a/login/Makefile b/login/Makefile
> index 13b155d344..74216cbcb2 100644
> --- a/login/Makefile
> +++ b/login/Makefile
> @@ -66,6 +66,12 @@ include ../Rules
>   CFLAGS-getpt.c += -fexceptions
>   CFLAGS-getlogin_r.c += $(config-cflags-wno-ignored-attributes)
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  getlogin_r \
> +  ptsname_r \
> +  # routines_no_fortify
> +
>   ifeq (yesyes,$(have-fpie)$(build-shared))
>   pt_chown-cflags += $(pie-ccflag)
>   endif
> diff --git a/misc/Makefile b/misc/Makefile
> index 84aa4cb0ad..36ba7a0bad 100644
> --- a/misc/Makefile
> +++ b/misc/Makefile
> @@ -205,6 +205,13 @@ routines := \
>     writev \
>     # routines
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  getdomain \
> +  gethostname \
> +  syslog \
> +  # routines_no_fortify
> +
>   generated += \
>     tst-allocate_once-mem.out \
>     tst-allocate_once.mtrace \
> diff --git a/posix/Makefile b/posix/Makefile
> index ad43cbdec6..5113ee3b74 100644
> --- a/posix/Makefile
> +++ b/posix/Makefile
> @@ -183,6 +183,14 @@ routines := \
>     wordexp \
>     # routines
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  confstr \
> +  getgroups \
> +  pread \
> +  pread64 \
> +  # routines_no_fortify
> +
>   aux := \
>     environ \
>     init-posix \
> @@ -604,6 +612,9 @@ bug-glob1-ARGS = "$(objpfx)"
>   tst-execvp3-ARGS = --test-dir=$(objpfx)
>   CFLAGS-tst-spawn3.c += -DOBJPFX=\"$(objpfx)\"
>   
> +# Test voluntarily overflows struct dirent
> +CFLAGS-bug-glob2.c += $(no-fortify-source)
> +
>   $(objpfx)testcases.h: TESTS TESTS2C.sed
>   	LC_ALL=C sed -f TESTS2C.sed < $< > $@T
>   	mv $@T $@
> diff --git a/rt/Makefile b/rt/Makefile
> index a97333dc02..3d4a3f0eec 100644
> --- a/rt/Makefile
> +++ b/rt/Makefile
> @@ -100,6 +100,11 @@ CFLAGS-aio_suspend.c += -fexceptions
>   CFLAGS-mq_timedreceive.c += -fexceptions -fasynchronous-unwind-tables
>   CFLAGS-mq_timedsend.c += -fexceptions -fasynchronous-unwind-tables
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  mq_open \
> +  # routines_no_fortify
> +
>   LDFLAGS-rt.so = -Wl,--enable-new-dtags,-z,nodelete
>   
>   $(objpfx)librt.so: $(shared-thread-library)
> diff --git a/setjmp/Makefile b/setjmp/Makefile
> index e5733a8c52..363fb6673c 100644
> --- a/setjmp/Makefile
> +++ b/setjmp/Makefile
> @@ -38,4 +38,13 @@ gen-as-const-headers += jmp_buf-macros.sym
>   
>   include ../Rules
>   
> +# This test messes the stack on purpose, which triggers longjump fortify
> +# failure
> +CFLAGS-bug269-setjmp.c += $(no-fortify-source)
> +
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  longjmp \
> +  # routines_no_fortify
> +
>   $(objpfx)tst-setjmp-fp: $(libm)
> diff --git a/socket/Makefile b/socket/Makefile
> index d9b0b4af64..08f20118cd 100644
> --- a/socket/Makefile
> +++ b/socket/Makefile
> @@ -60,6 +60,12 @@ routines := \
>     socketpair \
>     # routines
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  recv \
> +  recvfrom \
> +  # routines_no_fortify
> +
>   tests := \
>     tst-accept4 \
>     tst-cmsg_cloexec \
> diff --git a/stdio-common/Makefile b/stdio-common/Makefile
> index 8871ec7668..fe304b8373 100644
> --- a/stdio-common/Makefile
> +++ b/stdio-common/Makefile
> @@ -117,6 +117,19 @@ routines := \
>     wprintf_function_invoke \
>     # routines
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  asprintf \
> +  dprintf \
> +  fprintf \
> +  printf \
> +  snprintf \
> +  sprintf \
> +  vfprintf \
> +  vfwprintf \
> +  vprintf \
> +  # routines_no_fortify
> +
>   aux := \
>     errlist \
>     errlist-data \
> @@ -461,7 +474,7 @@ CFLAGS-tst-gets.c += -Wno-deprecated-declarations
>   
>   # BZ #11319 was first fixed for regular vdprintf, then reopened because
>   # the fortified version had the same bug.
> -CFLAGS-tst-bz11319-fortify2.c += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
> +CFLAGS-tst-bz11319-fortify2.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
>   
>   CFLAGS-tst-memstream-string.c += -fno-builtin-fprintf
>   
> diff --git a/stdlib/Makefile b/stdlib/Makefile
> index 0975f55ee6..25e42a77e7 100644
> --- a/stdlib/Makefile
> +++ b/stdlib/Makefile
> @@ -145,6 +145,13 @@ routines := \
>     xpg_basename \
>     # routines
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  mbstowcs \
> +  wcstombs \
> +  wctomb \
> +  # routines_no_fortify
> +
>   aux = \
>     grouping \
>     groupingwc \
> diff --git a/string/Makefile b/string/Makefile
> index d3106d10a9..8cdfd5b000 100644
> --- a/string/Makefile
> +++ b/string/Makefile
> @@ -118,6 +118,23 @@ routines := \
>     xpg-strerror \
>   # routines
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  explicit_bzero \
> +  memcpy \
> +  memmove \
> +  mempcpy \
> +  memset \
> +  stpcpy \
> +  stpncpy \
> +  strcat \
> +  strcpy \
> +  strlcat \
> +  strlcpy \
> +  strncat \
> +  strncpy \
> +  # routines_no_fortify
> +
>   tests := \
>     bug-envz1 \
>     bug-strcoll1 \
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
> index 42cca25a09..34273a5f58 100644
> --- a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
> @@ -88,13 +88,19 @@ tests-internal += test-wprintf-ieee128 test-wprintf-ibm128
>   CFLAGS-test-wprintf-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
>   CFLAGS-test-wprintf-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
>   
> +# The following tests are setting _FORTIFY_SOURCE internally
>   tests-internal += test-obstack-ieee128 test-obstack-ibm128
> -CFLAGS-test-obstack-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
> -CFLAGS-test-obstack-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
> +CFLAGS-test-obstack-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi \
> +				 $(no-fortify-source)
> +CFLAGS-test-obstack-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
> +				$(no-fortify-source)
>   
> +# The following tests are setting _FORTIFY_SOURCE internally
>   tests-internal += test-obstack-chk-ieee128 test-obstack-chk-ibm128
> -CFLAGS-test-obstack-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
> -CFLAGS-test-obstack-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
> +CFLAGS-test-obstack-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi \
> +				     $(no-fortify-source)
> +CFLAGS-test-obstack-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
> +				    $(no-fortify-source)
>   
>   tests-internal += test-scanf-ieee128 test-scanf-ibm128
>   CFLAGS-test-scanf-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi -std=c89 -D_GNU_SOURCE
> @@ -216,25 +222,37 @@ ldbl-extra-routines += asprintf_chk \
>   		       obstack_chk \
>   		       vobstack_chk
>   
> +# The following tests are setting _FORTIFY_SOURCE internally
>   tests-internal += test-printf-chk-ieee128 test-printf-chk-ibm128
> -CFLAGS-test-printf-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
> -CFLAGS-test-printf-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
> +CFLAGS-test-printf-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi \
> +				    $(no-fortify-source)
> +CFLAGS-test-printf-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
> +				   $(no-fortify-source)
>   
> +# The following tests are setting _FORTIFY_SOURCE internally
>   tests-internal += test-printf-chk-redir-ieee128 test-printf-chk-redir-ibm128
>   CFLAGS-test-printf-chk-redir-ieee128.c += -mfloat128 -mabi=ieeelongdouble \
> -					  -Wno-psabi -Wno-unused-result
> +					  -Wno-psabi -Wno-unused-result \
> +					  $(no-fortify-source)
>   CFLAGS-test-printf-chk-redir-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
> -					 -Wno-unused-result
> +					 -Wno-unused-result \
> +					 $(no-fortify-source)
>   
> +# The following tests are setting _FORTIFY_SOURCE internally
>   tests-internal += test-wprintf-chk-ieee128 test-wprintf-chk-ibm128
> -CFLAGS-test-wprintf-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
> -CFLAGS-test-wprintf-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
> +CFLAGS-test-wprintf-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi \
> +				     $(no-fortify-source)
> +CFLAGS-test-wprintf-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
> +				    $(no-fortify-source)
>   
> +# The following tests are setting _FORTIFY_SOURCE internally
>   tests-internal += test-wprintf-chk-redir-ieee128 test-wprintf-chk-redir-ibm128
>   CFLAGS-test-wprintf-chk-redir-ieee128.c += -mfloat128 -mabi=ieeelongdouble \
> -					   -Wno-psabi -Wno-unused-result
> +					   -Wno-psabi -Wno-unused-result \
> +					   $(no-fortify-source)
>   CFLAGS-test-wprintf-chk-redir-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
> -					  -Wno-unused-result
> +					  -Wno-unused-result \
> +					  $(no-fortify-source)
>   endif
>   
>   ifeq ($(subdir),argp)
> @@ -281,13 +299,19 @@ CFLAGS-tst-ieee128-error.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
>   CFLAGS-tst-ieee128-efgcvt.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
>   CFLAGS-tst-ieee128-errorfptr.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
>   
> +# The following tests are setting _FORTIFY_SOURCE internally
>   tests-container += test-syslog-ieee128 test-syslog-ibm128
> -CFLAGS-test-syslog-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
> -CFLAGS-test-syslog-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
> +CFLAGS-test-syslog-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi \
> +				$(no-fortify-source)
> +CFLAGS-test-syslog-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
> +			       $(no-fortify-source)
>   
> +# The following tests are setting _FORTIFY_SOURCE internally
>   tests-container += test-syslog-chk-ieee128 test-syslog-chk-ibm128
> -CFLAGS-test-syslog-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
> -CFLAGS-test-syslog-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
> +CFLAGS-test-syslog-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi \
> +				    $(no-fortify-source)
> +CFLAGS-test-syslog-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \
> +				   $(no-fortify-source)
>   endif
>   
>   ifeq ($(subdir),stdlib)
> @@ -395,6 +419,31 @@ endif
>   # Add IEEE binary128 files as make targets.
>   routines += $(foreach r,$(ldbl-extra-routines),ieee128-$(r))
>   
> +routines_no_fortify += \
> +  ieee128-asprintf \
> +  ieee128-dprintf \
> +  ieee128-fprintf \
> +  ieee128-fwprintf \
> +  ieee128-obstack \
> +  ieee128-printf \
> +  ieee128-snprintf \
> +  ieee128-sprintf \
> +  ieee128-swprintf \
> +  ieee128-syslog \
> +  ieee128-vasprintf \
> +  ieee128-vdprintf \
> +  ieee128-vfprintf \
> +  ieee128-vfwprintf \
> +  ieee128-vobstack \
> +  ieee128-vprintf \
> +  ieee128-vsnprintf \
> +  ieee128-vsprintf \
> +  ieee128-vswprintf \
> +  ieee128-vsyslog \
> +  ieee128-vwprintf \
> +  ieee128-wprintf \
> +  # routines_no_fortify
> +
>   # On powerpc64le, the routines responsible for converting between long
>   # double and string (e.g.: printf, scanf, strtold, strfroml) default to
>   # IBM long double mode.  When support for TS 18661-3 was added, several
> diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
> index 22e778ad0e..0ed1cd2cae 100644
> --- a/sysdeps/ieee754/ldbl-opt/Makefile
> +++ b/sysdeps/ieee754/ldbl-opt/Makefile
> @@ -269,3 +269,32 @@ CFLAGS-tst-nldbl-wscanf-binary-gnu89.c += -mlong-double-64 -std=gnu89 \
>   					  -DOBJPFX=\"$(objpfx)\"
>   
>   endif
> +
> +routines_no_fortify += \
> +  nldbl-asprintf \
> +  nldbl-dprintf \
> +  nldbl-fprintf \
> +  nldbl-fwprintf \
> +  nldbl-obstack_printf \
> +  nldbl-obstack_vprintf \
> +  nldbl-printf \
> +  nldbl-snprintf \
> +  nldbl-sprintf \
> +  nldbl-swprintf \
> +  nldbl-syslog \
> +  nldbl-vasprintf \
> +  nldbl-vdprintf \
> +  nldbl-vfprintf \
> +  nldbl-vfwprintf \
> +  nldbl-vprintf \
> +  nldbl-vsnprintf \
> +  nldbl-vsprintf \
> +  nldbl-vswprintf \
> +  nldbl-vsyslog \
> +  nldbl-vwprintf \
> +  nldbl-wprintf \
> +  # routines_no_fortify
> +
> +# We can't rely on Makeconfig here for whatever reason
> +CFLAGS-.oS += $(call elide-fortify-source,.oS,$(routines_no_fortify))
> +CFLAGS-.oS += $(call elide-fortify-source,_chk.oS,$(routines_no_fortify))
> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index 32cf4eb119..31028406d5 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -304,6 +304,10 @@ tests-nolibpthread += \
>   CFLAGS-tst-cleanup2.c += -fno-builtin
>   CFLAGS-tst-cleanupx2.c += -fno-builtin
>   
> +# Disable fortification due to sprintf(NULL,...)
> +CFLAGS-tst-cleanup2.c += $(no-fortify-source)
> +CFLAGS-tst-cleanupx2.c += $(no-fortify-source)
> +
>   tests += \
>     tst-cancelx2 \
>     tst-cancelx3 \
> diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
> index 594a5dc53e..9108b7d2ed 100644
> --- a/sysdeps/unix/sysv/linux/Makefile
> +++ b/sysdeps/unix/sysv/linux/Makefile
> @@ -120,6 +120,9 @@ CFLAGS-sync_file_range.c = -fexceptions -fasynchronous-unwind-tables
>   CFLAGS-pselect32.c = -fexceptions -fasynchronous-unwind-tables
>   CFLAGS-tst-writev.c += "-DARTIFICIAL_LIMIT=(0x80000000-sysconf(_SC_PAGESIZE))"
>   
> +# The test triggers FORTIFY abortion due to purposely wrong parameters
> +CFLAGS-test-errno-linux.c += $(no-fortify-source)
> +
>   sysdep_headers += \
>     bits/a.out.h \
>     bits/epoll.h \
> diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
> index 22192985e1..d25a2214f8 100644
> --- a/wcsmbs/Makefile
> +++ b/wcsmbs/Makefile
> @@ -121,6 +121,27 @@ routines := \
>     wmemset \
>     # routines
>   
> +# Exclude fortified routines from being built with _FORTIFY_SOURCE
> +routines_no_fortify += \
> +  mbsnrtowcs \
> +  mbsrtowcs \
> +  wcpcpy \
> +  wcpncpy \
> +  wcrtomb \
> +  wcscat \
> +  wcscpy \
> +  wcslcat \
> +  wcslcpy \
> +  wcsncat \
> +  wcsncpy \
> +  wcsnrtombs \
> +  wcsrtombs \
> +  wmemcpy \
> +  wmemmove \
> +  wmempcpy \
> +  wmemset \
> +  # routines_no_fortify
> +
>   tests := \
>     test-c8rtomb \
>     test-char-types \
> @@ -231,7 +252,7 @@ CFLAGS-wcstod_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
>   CFLAGS-wcstold_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
>   CFLAGS-wcstof128_l.c += $(strtox-CFLAGS)
>   CFLAGS-wcstof_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
> -CPPFLAGS-tst-wchar-h.c += -D_FORTIFY_SOURCE=2
> +CPPFLAGS-tst-wchar-h.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
>   
>   CFLAGS-wcschr.c += $(config-cflags-wno-ignored-attributes)
>   CFLAGS-wmemchr.c += $(config-cflags-wno-ignored-attributes)

  reply	other threads:[~2023-06-30 14:55 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-28  8:42 [PATCH v3 00/16] Allow glibc to be built with _FORTIFY_SOURCE Frédéric Bérat
2023-06-28  8:42 ` [PATCH v3 01/16] " Frédéric Bérat
2023-06-28 14:48   ` Joseph Myers
2023-06-28  8:42 ` [PATCH v3 02/16] Exclude routines from fortification Frédéric Bérat
2023-06-30 14:55   ` Siddhesh Poyarekar [this message]
2023-07-03 15:16     ` Frederic Berat
2023-07-04 16:04       ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 03/16] sysdeps: Ensure ieee128*_chk routines to be properly named Frédéric Bérat
2023-06-30 14:58   ` Siddhesh Poyarekar
2023-06-30 15:55     ` Paul E Murphy
2023-06-30 15:57       ` Frederic Berat
2023-06-28  8:42 ` [PATCH v3 04/16] string: Ensure *_chk routines have their hidden builtin definition available Frédéric Bérat
2023-06-30 15:06   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 05/16] stdio: " Frédéric Bérat
2023-06-30 15:09   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 06/16] asprintf_chk: Ensure compatibility for both s390x and ppc64le Frédéric Bérat
2023-06-30 15:11   ` Siddhesh Poyarekar
2023-06-30 16:08     ` Rajalakshmi Srinivasaraghavan
2023-06-30 17:51   ` Paul E Murphy
2023-07-03  5:35     ` Frederic Berat
2023-06-28  8:42 ` [PATCH v3 07/16] misc/sys/cdefs.h: Create FORTIFY redirects for internal calls Frédéric Bérat
2023-06-30 15:13   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 08/16] wchar: Avoid PLT entries with _FORTIFY_SOURCE Frédéric Bérat
2023-06-30 15:17   ` Siddhesh Poyarekar
2023-06-30 15:26     ` Frederic Berat
2023-06-28  8:42 ` [PATCH v3 09/16] posix/bits/unistd.h: Clearly separate declaration from definitions Frédéric Bérat
2023-06-30 15:19   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 10/16] unistd: Avoid PLT entries with _FORTIFY_SOURCE Frédéric Bérat
2023-06-30 15:25   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 11/16] misc/bits/select2.h: Clearly separate declaration from definitions Frédéric Bérat
2023-06-30 15:26   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 12/16] misc/bits/syslog.h: Clearly separate declaration from definition Frédéric Bérat
2023-06-30 15:28   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 13/16] libio/bits/stdio2.h: Clearly separate declaration from definitions Frédéric Bérat
2023-06-30 15:29   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 14/16] libio/bits/stdio2-decl.h: Avoid PLT entries with _FORTIFY_SOURCE Frédéric Bérat
2023-06-30 15:30   ` Siddhesh Poyarekar
2023-06-30 15:38     ` Frederic Berat
2023-06-30 15:48       ` Siddhesh Poyarekar
2023-06-30 17:08         ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 15/16] sysdeps/ieee754/ldbl-128ibm-compat: Fix warn unused result Frédéric Bérat
2023-06-30 15:33   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 16/16] Add --enable-fortify-source option Frédéric Bérat
2023-06-30 13:51   ` Siddhesh Poyarekar
2023-07-03  8:50     ` Andreas Schwab
2023-07-03 12:51       ` Adhemerval Zanella Netto
2023-07-04 12:40         ` Frederic Berat
2023-07-04 15:59           ` Siddhesh Poyarekar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1b46ffc4-5d65-faeb-96f0-c0828dc89cfb@gotplt.org \
    --to=siddhesh@gotplt.org \
    --cc=fberat@redhat.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).