From: Siddhesh Poyarekar <siddhesh@sourceware.org>
To: libc-alpha@sourceware.org
Cc: carlos@redhat.com, fweimer@redhat.com, jakub@redhat.com,
eggert@cs.ucla.edu
Subject: [PATCH v6 0/2] _FORTIFY_SOURCE=3
Date: Sat, 19 Dec 2020 12:03:12 +0530 [thread overview]
Message-ID: <20201219063314.1409576-1-siddhesh@sourceware.org> (raw)
This patchset implements a new fortification level, _FORTIFY_SOURCE=3.
This level allows size information to be dynamic, which may potentially
have a noticeable performance impact. It uses the
__builtin_dynamic_object_size builtin available in clang to expand
coverage of fortifications at the expense of some performance.
Patch 1/2 implements the base support and support for functions that
have builtins of string functions. Additionally, the patch also
describes the use case and tradeoffs.
Patch 2/2 adds support for non-string functions that are
fortification-ready for levels 1 and 2.
Testing:
The glibc testsuite doesn't directly support clang at the moment, so
having tests in the glibc source tree is pointless as long as gcc does
not have support for __builtin_dynamic_object_size. There is a separate
project on GitHub called fortify-test-suite[1] that houses fortification
tests and is capable of testing multiple levels of fortification with
multiple compilers. I have proposed a PR[2] to add support for
_FORTIFY_SOURCE=3 and have verified my changes with those tests.
Those tests run clean for clang when run with these changes and PR[2]
and they fail at level 3 for gcc, as expected.
[1] https://github.com/serge-sans-paille/fortify-test-suite
[2] https://github.com/serge-sans-paille/fortify-test-suite/pull/9
Changes from previous series:
- Adopted Paul Eggert's macro soup because it has better texture while
retaining the flavour.
Siddhesh Poyarekar (2):
string: _FORTIFY_SOURCE=3 using __builtin_dynamic_object_size
nonstring: _FORTIFY_SOURCE=3 using __builtin_dynamic_object_size
NEWS | 6 ++
include/features.h | 8 ++
include/string.h | 5 +-
io/bits/poll2.h | 16 ++--
libio/bits/stdio.h | 2 +-
libio/bits/stdio2.h | 53 ++++++-------
manual/creature.texi | 3 +-
misc/sys/cdefs.h | 9 +++
posix/bits/unistd.h | 112 ++++++++++++++-------------
socket/bits/socket2.h | 18 ++---
stdlib/bits/stdlib.h | 37 ++++-----
string/bits/string_fortified.h | 22 +++---
string/bits/strings_fortified.h | 4 +-
wcsmbs/bits/wchar2.h | 131 ++++++++++++++++----------------
14 files changed, 230 insertions(+), 196 deletions(-)
--
2.29.2
next reply other threads:[~2020-12-19 6:34 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-19 6:33 Siddhesh Poyarekar [this message]
2020-12-19 6:33 ` [PATCH 1/2] string: _FORTIFY_SOURCE=3 using __builtin_dynamic_object_size Siddhesh Poyarekar
2020-12-28 16:44 ` Adhemerval Zanella
2020-12-29 15:14 ` Siddhesh Poyarekar
2020-12-19 6:33 ` [PATCH 2/2] nonstring: " Siddhesh Poyarekar
2020-12-28 17:36 ` Adhemerval Zanella
2020-12-29 14:04 ` Siddhesh Poyarekar
2020-12-29 14:26 ` Jakub Jelinek
2020-12-22 13:00 ` [PATCH v6 0/2] _FORTIFY_SOURCE=3 Siddhesh Poyarekar
2020-12-22 21:49 ` Adhemerval Zanella
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=20201219063314.1409576-1-siddhesh@sourceware.org \
--to=siddhesh@sourceware.org \
--cc=carlos@redhat.com \
--cc=eggert@cs.ucla.edu \
--cc=fweimer@redhat.com \
--cc=jakub@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).