diff options
author | Ulrich Drepper <drepper@redhat.com> | 2005-07-15 10:32:45 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2005-07-15 10:32:45 +0000 |
commit | 8215c9ecf27714c7ec607aba0085383ef923777a (patch) | |
tree | ff0127a461256dba9379940e5d33f08928aa4dcf /string | |
parent | f45729d8cd80b082c7724883aa9c6c858d0082f9 (diff) | |
download | glibc-8215c9ecf27714c7ec607aba0085383ef923777a.tar.gz glibc-8215c9ecf27714c7ec607aba0085383ef923777a.tar.xz glibc-8215c9ecf27714c7ec607aba0085383ef923777a.zip |
* wcsmbs/bits/wchar2.h: New file.
* include/bits/wchar2.h: New file. * wcsmbs/wchar.h: Include <bits/wchar2.h> if fortification is requested. * wcsmbs/wcsncpy.c: Add __wcsncpy alias. * string/bits/string3.h: Add fortified stpncpy definitions. * sysdeps/generic/stpncpy_chk.c: New file. * libio/vswprintf.c: Move _IO_wstrnfile definition to strfile.h. Export _IO_wstrn_jumps. * libio/strfile.h: Define _IO_wstrnfile and declare _IO_wstrn_jumps. * include/wchar.h: Declare __wcsncpy and __vswprintf_chk. * debug/fgetws_chk.c: New file. * debug/fgetws_u_chk.c: New file. * debug/fwprintf_chk.c: New file. * debug/swprintf_chk.c: New file. * debug/vfwprintf_chk.c: New file. * debug/vswprintf_chk.c: New file. * debug/vwprintf_chk.c: New file. * debug/wcpcpy_chk.c: New file. * debug/wcpncpy_chk.c: New file. * debug/wcscat_chk.c: New file. * debug/wcscpy_chk.c: New file. * debug/wcsncat_chk.c: New file. * debug/wcsncpy_chk.c: New file. * debug/wmemcpy_chk.c: New file. * debug/wmemmove_chk.c: New file. * debug/wmempcpy_chk.c: New file. * debug/wmemset_chk.c: New file. * debug/wprintf_chk.c: New file. * debug/tst-chk1.c: Add tests for new functions. * debug/Versions: Export new functions. * debug/Makefile (routines): Add new functions.
Diffstat (limited to 'string')
-rw-r--r-- | string/bits/string3.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/string/bits/string3.h b/string/bits/string3.h index bcda42a232..4271e5f148 100644 --- a/string/bits/string3.h +++ b/string/bits/string3.h @@ -144,6 +144,22 @@ __strncpy_ichk (char *__restrict __dest, const char *__restrict __src, } +// XXX We have no corresponding builtin yet. +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 __always_inline char * +stpncpy (char *__dest, const char *__src, size_t __n) +{ + if (__bos (__dest) != (size_t) -1 + && (!__builtin_constant_p (__n) || __n <= __bos (__dest))) + return __stpncpy_chk (__dest, __src, __n, __bos (__dest)); + return __stpncpy_alias (__dest, __src, __n); +} + + #define strcat(dest, src) \ ((__bos (dest) != (size_t) -1) \ ? __builtin___strcat_chk (dest, src, __bos (dest)) \ |