diff options
author | Siddhesh Poyarekar <siddhesh@sourceware.org> | 2022-01-12 23:34:48 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@sourceware.org> | 2022-01-12 23:34:48 +0530 |
commit | fcfc9086815bf0d277ad47a90ee3fda4c37acca8 (patch) | |
tree | 0b00baceb19165a006457ad9a65c7e6478dc3f47 /string | |
parent | db27f1251b008280a29d540b4f8ab2a38a0d80af (diff) | |
download | glibc-fcfc9086815bf0d277ad47a90ee3fda4c37acca8.tar.gz glibc-fcfc9086815bf0d277ad47a90ee3fda4c37acca8.tar.xz glibc-fcfc9086815bf0d277ad47a90ee3fda4c37acca8.zip |
debug: Synchronize feature guards in fortified functions [BZ #28746]
Some functions (e.g. stpcpy, pread64, etc.) had moved to POSIX in the main headers as they got incorporated into the standard, but their fortified variants remained under __USE_GNU. As a result, these functions did not get fortified when _GNU_SOURCE was not defined. Add test wrappers that check all functions tested in tst-chk0 at all levels with _GNU_SOURCE undefined and then use the failures to (1) exclude checks for _GNU_SOURCE functions in these tests and (2) Fix feature macro guards in the fortified function headers so that they're the same as the ones in the main headers. This fixes BZ #28746. Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'string')
-rw-r--r-- | string/bits/string_fortified.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/string/bits/string_fortified.h b/string/bits/string_fortified.h index 51ad480401..f4a5dfc2e5 100644 --- a/string/bits/string_fortified.h +++ b/string/bits/string_fortified.h @@ -79,7 +79,7 @@ __NTH (strcpy (char *__restrict __dest, const char *__restrict __src)) return __builtin___strcpy_chk (__dest, __src, __glibc_objsize (__dest)); } -#ifdef __USE_GNU +#ifdef __USE_XOPEN2K8 __fortify_function char * __NTH (stpcpy (char *__restrict __dest, const char *__restrict __src)) { @@ -96,14 +96,15 @@ __NTH (strncpy (char *__restrict __dest, const char *__restrict __src, __glibc_objsize (__dest)); } -#if __GNUC_PREREQ (4, 7) || __glibc_clang_prereq (2, 6) +#ifdef __USE_XOPEN2K8 +# if __GNUC_PREREQ (4, 7) || __glibc_clang_prereq (2, 6) __fortify_function char * __NTH (stpncpy (char *__dest, const char *__src, size_t __n)) { return __builtin___stpncpy_chk (__dest, __src, __n, __glibc_objsize (__dest)); } -#else +# else extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n, size_t __destlen) __THROW __fortified_attr_access ((__write_only__, 1, 3)) @@ -119,6 +120,7 @@ __NTH (stpncpy (char *__dest, const char *__src, size_t __n)) return __stpncpy_chk (__dest, __src, __n, __bos (__dest)); return __stpncpy_alias (__dest, __src, __n); } +# endif #endif |