From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18838 invoked by alias); 8 Aug 2005 17:54:57 -0000 Mailing-List: contact libc-hacker-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sources.redhat.com Received: (qmail 18819 invoked by uid 22791); 8 Aug 2005 17:54:57 -0000 Received: from sunsite.ms.mff.cuni.cz (HELO sunsite.mff.cuni.cz) (195.113.15.26) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Mon, 08 Aug 2005 17:54:57 +0000 Received: from sunsite.mff.cuni.cz (sunsite.mff.cuni.cz [127.0.0.1]) by sunsite.mff.cuni.cz (8.13.1/8.13.1) with ESMTP id j78Hsjwk026969; Mon, 8 Aug 2005 19:54:45 +0200 Received: (from jakub@localhost) by sunsite.mff.cuni.cz (8.13.1/8.13.1/Submit) id j78Hsi9O026968; Mon, 8 Aug 2005 19:54:44 +0200 Date: Mon, 08 Aug 2005 17:54:00 -0000 From: Jakub Jelinek To: Ulrich Drepper , Roland McGrath Cc: Glibc hackers Subject: [PATCH] _FORTIFY_SOURCE */bits/*.h headers cleanups Message-ID: <20050808175444.GM15708@sunsite.mff.cuni.cz> Reply-To: Jakub Jelinek Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.1i X-SW-Source: 2005-08/txt/msg00002.txt.bz2 Hi! https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=165000 is about realpath prototype mismatch when portmap is built with -Dconst= option (don't ask my why, I don't want to know). No matter what, it is good to be consistent with the original prototypes. I went over the _FORTIFY_SOURCE headers and checked const vs. __const mismatches, __REDIRECT/__REDIRECT_NTH mismatches, missing __NTH and missing __restrict. 2005-08-08 Jakub Jelinek * posix/bits/unistd.h (confstr, getgroups, ttyname_r, gethostname, getdomainname): Add __NTH. * stdlib/bits/stdlib.h (ptsname_r, wctomb, mbstowcs, wcstombs): Likewise. (realpath): Likewise. Use __const instead of const. Add __restrict keywords. * socket/bits/socket2.h (recvfrom): Add __restrict keyword to __buf. * wcsmbs/bits/wchar2.h (wmemcpy, wmemmove, wmempcpy, wmemset, wcscpy, wcpcpy, wcsncpy, wcpncpy, wcscat, wcsncat, vswprintf, wcrtomb, mbsrtowcs, wcsrtombs, mbsnrtowcs, wcsnrtombs): Add __NTH. * string/bits/string3.h (__memset_ichk): Likewise. (__memcpy_ichk, __memmove_ichk, __mempcpy_ichk, __strcpy_ichk, __stpcpy_ichk, __strncpy_ichk, stpncpy, __strcat_ichk, __strncat_ichk): Likewise. Use __const instead of const. (__stpncpy_chk): Use __const instead of const. (__stpncpy_alias): Use __REDIRECT_NTH instead of __REDIRECT. --- libc/posix/bits/unistd.h.jj 2005-08-08 19:22:27.000000000 +0200 +++ libc/posix/bits/unistd.h 2005-08-08 19:22:27.000000000 +0200 @@ -135,7 +135,7 @@ extern size_t __REDIRECT_NTH (__confstr_ size_t __len), confstr); extern __always_inline size_t -confstr (int __name, char *__buf, size_t __len) +__NTH (confstr (int __name, char *__buf, size_t __len)) { if (__bos (__buf) != (size_t) -1 && (!__builtin_constant_p (__len) || __bos (__buf) < __len)) @@ -150,7 +150,7 @@ extern int __REDIRECT_NTH (__getgroups_a getgroups) __wur; extern __always_inline int -getgroups (int __size, __gid_t __list[]) +__NTH (getgroups (int __size, __gid_t __list[])) { if (__bos (__list) != (size_t) -1 && (!__builtin_constant_p (__size) @@ -167,7 +167,7 @@ extern int __REDIRECT_NTH (__ttyname_r_a __nonnull ((2)); extern __always_inline int -ttyname_r (int __fd, char *__buf, size_t __buflen) +__NTH (ttyname_r (int __fd, char *__buf, size_t __buflen)) { if (__bos (__buf) != (size_t) -1 && (!__builtin_constant_p (__buflen) || __buflen > __bos (__buf))) @@ -200,7 +200,7 @@ extern int __REDIRECT_NTH (__gethostname gethostname) __nonnull ((1)); extern __always_inline int -gethostname (char *__buf, size_t __buflen) +__NTH (gethostname (char *__buf, size_t __buflen)) { if (__bos (__buf) != (size_t) -1 && (!__builtin_constant_p (__buflen) || __buflen > __bos (__buf))) @@ -218,7 +218,7 @@ extern int __REDIRECT_NTH (__getdomainna getdomainname) __nonnull ((1)) __wur; extern __always_inline int -getdomainname (char *__buf, size_t __buflen) +__NTH (getdomainname (char *__buf, size_t __buflen)) { if (__bos (__buf) != (size_t) -1 && (!__builtin_constant_p (__buflen) || __buflen > __bos (__buf))) --- libc/stdlib/bits/stdlib.h.jj 2005-07-28 15:57:16.000000000 +0200 +++ libc/stdlib/bits/stdlib.h 2005-08-08 19:20:12.000000000 +0200 @@ -29,7 +29,7 @@ extern char *__REDIRECT_NTH (__realpath_ char *__restrict __resolved), realpath) __wur; extern __always_inline __wur char * -realpath (const char *__name, char *__resolved) +__NTH (realpath (__const char *__restrict __name, char *__restrict __resolved)) { if (__bos (__resolved) != (size_t) -1) return __realpath_chk (__name, __resolved, __bos (__resolved)); @@ -45,7 +45,7 @@ extern int __REDIRECT_NTH (__ptsname_r_a __nonnull ((2)); extern __always_inline int -ptsname_r (int __fd, char *__buf, size_t __buflen) +__NTH (ptsname_r (int __fd, char *__buf, size_t __buflen)) { if (__bos (__buf) != (size_t) -1 && (!__builtin_constant_p (__buflen) || __buflen > __bos (__buf))) @@ -60,7 +60,7 @@ extern int __REDIRECT_NTH (__wctomb_alia wctomb) __wur; extern __always_inline __wur int -wctomb (char *__s, wchar_t __wchar) +__NTH (wctomb (char *__s, wchar_t __wchar)) { /* We would have to include to get a definition of MB_LEN_MAX. But this would only disturb the namespace. So we define our own @@ -84,8 +84,8 @@ extern size_t __REDIRECT_NTH (__mbstowcs size_t __len), mbstowcs); extern __always_inline size_t -mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src, - size_t __len) +__NTH (mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src, + size_t __len)) { if (__bos (__dst) != (size_t) -1 && (!__builtin_constant_p (__len) @@ -104,8 +104,8 @@ extern size_t __REDIRECT_NTH (__wcstombs size_t __len), wcstombs); extern __always_inline size_t -wcstombs (char *__restrict __dst, __const wchar_t *__restrict __src, - size_t __len) +__NTH (wcstombs (char *__restrict __dst, __const wchar_t *__restrict __src, + size_t __len)) { if (__bos (__dst) != (size_t) -1 && (!__builtin_constant_p (__len) || __len > __bos (__dst))) --- libc/socket/bits/socket2.h.jj 2005-04-13 21:29:21.000000000 +0200 +++ libc/socket/bits/socket2.h 2005-08-08 19:23:14.000000000 +0200 @@ -45,7 +45,7 @@ extern ssize_t __REDIRECT (__recvfrom_al socklen_t *__restrict __addr_len), recvfrom); extern __always_inline ssize_t -recvfrom (int __fd, void *__buf, size_t __n, int __flags, +recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) { if (__bos0 (__buf) != (size_t) -1 --- libc/wcsmbs/bits/wchar2.h.jj 2005-07-28 15:59:27.000000000 +0200 +++ libc/wcsmbs/bits/wchar2.h 2005-08-08 19:30:37.000000000 +0200 @@ -31,8 +31,8 @@ extern wchar_t *__REDIRECT_NTH (__wmemcp wmemcpy); extern __always_inline wchar_t * -wmemcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, - size_t __n) +__NTH (wmemcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, + size_t __n)) { if (__bos0 (__s1) != (size_t) -1) return __wmemcpy_chk (__s1, __s2, __n, __bos0 (__s1) / sizeof (wchar_t)); @@ -47,8 +47,8 @@ extern wchar_t *__REDIRECT_NTH (__wmemmo size_t __n), wmemmove); extern __always_inline wchar_t * -wmemmove (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, - size_t __n) +__NTH (wmemmove (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, + size_t __n)) { if (__bos0 (__s1) != (size_t) -1) return __wmemmove_chk (__s1, __s2, __n, __bos0 (__s1) / sizeof (wchar_t)); @@ -66,8 +66,8 @@ extern wchar_t *__REDIRECT_NTH (__wmempc size_t __n), wmempcpy); extern __always_inline wchar_t * -wmempcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, - size_t __n) +__NTH (wmempcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, + size_t __n)) { if (__bos0 (__s1) != (size_t) -1) return __wmempcpy_chk (__s1, __s2, __n, __bos0 (__s1) / sizeof (wchar_t)); @@ -82,7 +82,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemse size_t __n), wmemset); extern __always_inline wchar_t * -wmemset (wchar_t *__restrict __s, wchar_t __c, size_t __n) +__NTH (wmemset (wchar_t *__restrict __s, wchar_t __c, size_t __n)) { if (__bos0 (__s) != (size_t) -1) return __wmemset_chk (__s, __c, __n, __bos0 (__s) / sizeof (wchar_t)); @@ -98,7 +98,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy __const wchar_t *__restrict __src), wcscpy); extern __always_inline wchar_t * -wcscpy (wchar_t *__dest, __const wchar_t *__src) +__NTH (wcscpy (wchar_t *__dest, __const wchar_t *__src)) { if (__bos (__dest) != (size_t) -1) return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); @@ -113,7 +113,7 @@ extern wchar_t *__REDIRECT_NTH (__wcpcpy wcpcpy); extern __always_inline wchar_t * -wcpcpy (wchar_t *__dest, __const wchar_t *__src) +__NTH (wcpcpy (wchar_t *__dest, __const wchar_t *__src)) { if (__bos (__dest) != (size_t) -1) return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); @@ -130,7 +130,7 @@ extern wchar_t *__REDIRECT_NTH (__wcsncp size_t __n), wcsncpy); extern __always_inline wchar_t * -wcsncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) +__NTH (wcsncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) { if (__bos (__dest) != (size_t) -1 && (!__builtin_constant_p (__n) || __bos (__dest) >= __n)) @@ -149,7 +149,7 @@ extern wchar_t *__REDIRECT_NTH (__wcpncp size_t __n), wcpncpy); extern __always_inline wchar_t * -wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) +__NTH (wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) { if (__bos (__dest) != (size_t) -1 && (!__builtin_constant_p (__n) || __bos (__dest) >= __n)) @@ -167,7 +167,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscat __const wchar_t *__restrict __src), wcscat); extern __always_inline wchar_t * -wcscat (wchar_t *__dest, __const wchar_t *__src) +__NTH (wcscat (wchar_t *__dest, __const wchar_t *__src)) { if (__bos (__dest) != (size_t) -1) return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); @@ -184,7 +184,7 @@ extern wchar_t *__REDIRECT_NTH (__wcsnca size_t __n), wcsncat); extern __always_inline wchar_t * -wcsncat (wchar_t *__dest, __const wchar_t *__src, size_t __n) +__NTH (wcsncat (wchar_t *__dest, __const wchar_t *__src, size_t __n)) { if (__bos (__dest) != (size_t) -1) return __wcsncat_chk (__dest, __src, __n, @@ -218,8 +218,8 @@ extern int __REDIRECT_NTH (__vswprintf_a extern __always_inline int -vswprintf (wchar_t *__s, size_t __n, __const wchar_t *__format, - __gnuc_va_list __arg) +__NTH (vswprintf (wchar_t *__s, size_t __n, __const wchar_t *__format, + __gnuc_va_list __arg)) { if (__bos (__s) != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) return __vswprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, __bos (__s), @@ -293,7 +293,7 @@ extern size_t __REDIRECT_NTH (__wcrtomb_ mbstate_t *__restrict __ps), wcrtomb) __wur; extern __always_inline __wur size_t -wcrtomb (char *__s, wchar_t __wchar, mbstate_t *__ps) +__NTH (wcrtomb (char *__s, wchar_t __wchar, mbstate_t *__ps)) { /* We would have to include to get a definition of MB_LEN_MAX. But this would only disturb the namespace. So we define our own @@ -319,8 +319,8 @@ extern size_t __REDIRECT_NTH (__mbsrtowc mbsrtowcs); extern __always_inline size_t -mbsrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, - size_t __len, mbstate_t *__restrict __ps) +__NTH (mbsrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, + size_t __len, mbstate_t *__restrict __ps)) { if (__bos (__dst) != (size_t) -1 && (!__builtin_constant_p (__len) @@ -341,8 +341,8 @@ extern size_t __REDIRECT_NTH (__wcsrtomb wcsrtombs); extern __always_inline size_t -wcsrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, - size_t __len, mbstate_t *__restrict __ps) +__NTH (wcsrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, + size_t __len, mbstate_t *__restrict __ps)) { if (__bos (__dst) != (size_t) -1 && (!__builtin_constant_p (__len) || __len > __bos (__dst))) @@ -363,8 +363,8 @@ extern size_t __REDIRECT_NTH (__mbsnrtow mbsnrtowcs); extern __always_inline size_t -mbsnrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, - size_t __nmc, size_t __len, mbstate_t *__restrict __ps) +__NTH (mbsnrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, + size_t __nmc, size_t __len, mbstate_t *__restrict __ps)) { if (__bos (__dst) != (size_t) -1 && (!__builtin_constant_p (__len) @@ -386,8 +386,8 @@ extern size_t __REDIRECT_NTH (__wcsnrtom mbstate_t *__restrict __ps), wcsnrtombs); extern __always_inline size_t -wcsnrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, - size_t __nwc, size_t __len, mbstate_t *__restrict __ps) +__NTH (wcsnrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, + size_t __nwc, size_t __len, mbstate_t *__restrict __ps)) { if (__bos (__dst) != (size_t) -1 && (!__builtin_constant_p (__len) || __len > __bos (__dst))) --- libc/string/bits/string3.h.jj 2005-07-20 10:32:49.000000000 +0200 +++ libc/string/bits/string3.h 2005-08-08 19:27:50.000000000 +0200 @@ -45,8 +45,8 @@ ? __builtin___memcpy_chk (dest, src, len, __bos0 (dest)) \ : __memcpy_ichk (dest, src, len)) static __always_inline void * -__memcpy_ichk (void *__restrict __dest, const void *__restrict __src, - size_t __len) +__NTH (__memcpy_ichk (void *__restrict __dest, __const void *__restrict __src, + size_t __len)) { return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest)); } @@ -57,7 +57,7 @@ __memcpy_ichk (void *__restrict __dest, ? __builtin___memmove_chk (dest, src, len, __bos0 (dest)) \ : __memmove_ichk (dest, src, len)) static __always_inline void * -__memmove_ichk (void *__dest, const void *__src, size_t __len) +__NTH (__memmove_ichk (void *__dest, __const void *__src, size_t __len)) { return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest)); } @@ -69,8 +69,8 @@ __memmove_ichk (void *__dest, const void ? __builtin___mempcpy_chk (dest, src, len, __bos0 (dest)) \ : __mempcpy_ichk (dest, src, len)) static __always_inline void * -__mempcpy_ichk (void *__restrict __dest, const void *__restrict __src, - size_t __len) +__NTH (__mempcpy_ichk (void *__restrict __dest, + __const void *__restrict __src, size_t __len)) { return __builtin___mempcpy_chk (__dest, __src, __len, __bos0 (__dest)); } @@ -91,7 +91,7 @@ __warndecl (__warn_memset_zero_len, ? __builtin___memset_chk (dest, ch, len, __bos0 (dest)) \ : __memset_ichk (dest, ch, len))) static __always_inline void * -__memset_ichk (void *__dest, int __ch, size_t __len) +__NTH (__memset_ichk (void *__dest, int __ch, size_t __len)) { return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest)); } @@ -113,7 +113,7 @@ __memset_ichk (void *__dest, int __ch, s ? __builtin___strcpy_chk (dest, src, __bos (dest)) \ : __strcpy_ichk (dest, src)) static __always_inline char * -__strcpy_ichk (char *__restrict __dest, const char *__restrict __src) +__NTH (__strcpy_ichk (char *__restrict __dest, __const char *__restrict __src)) { return __builtin___strcpy_chk (__dest, __src, __bos (__dest)); } @@ -125,7 +125,7 @@ __strcpy_ichk (char *__restrict __dest, ? __builtin___stpcpy_chk (dest, src, __bos (dest)) \ : __stpcpy_ichk (dest, src)) static __always_inline char * -__stpcpy_ichk (char *__restrict __dest, const char *__restrict __src) +__NTH (__stpcpy_ichk (char *__restrict __dest, __const char *__restrict __src)) { return __builtin___stpcpy_chk (__dest, __src, __bos (__dest)); } @@ -137,21 +137,22 @@ __stpcpy_ichk (char *__restrict __dest, ? __builtin___strncpy_chk (dest, src, len, __bos (dest)) \ : __strncpy_ichk (dest, src, len)) static __always_inline char * -__strncpy_ichk (char *__restrict __dest, const char *__restrict __src, - size_t __len) +__NTH (__strncpy_ichk (char *__restrict __dest, __const char *__restrict __src, + size_t __len)) { return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); } // XXX We have no corresponding builtin yet. -extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n, +extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n, size_t __destlen) __THROW; -extern char *__REDIRECT (__stpncpy_alias, (char *__dest, const char *__src, - size_t __n), stpncpy) __THROW; +extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, + __const char *__src, + size_t __n), stpncpy); extern __always_inline char * -stpncpy (char *__dest, const char *__src, size_t __n) +__NTH (stpncpy (char *__dest, __const char *__src, size_t __n)) { if (__bos (__dest) != (size_t) -1 && (!__builtin_constant_p (__n) || __n <= __bos (__dest))) @@ -165,7 +166,7 @@ stpncpy (char *__dest, const char *__src ? __builtin___strcat_chk (dest, src, __bos (dest)) \ : __strcat_ichk (dest, src)) static __always_inline char * -__strcat_ichk (char *__restrict __dest, const char *__restrict __src) +__NTH (__strcat_ichk (char *__restrict __dest, __const char *__restrict __src)) { return __builtin___strcat_chk (__dest, __src, __bos (__dest)); } @@ -176,8 +177,8 @@ __strcat_ichk (char *__restrict __dest, ? __builtin___strncat_chk (dest, src, len, __bos (dest)) \ : __strncat_ichk (dest, src, len)) static __always_inline char * -__strncat_ichk (char *__restrict __dest, const char *__restrict __src, - size_t __len) +__NTH (__strncat_ichk (char *__restrict __dest, __const char *__restrict __src, + size_t __len)) { return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest)); } Jakub