From 8215c9ecf27714c7ec607aba0085383ef923777a Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 15 Jul 2005 10:32:45 +0000 Subject: * wcsmbs/bits/wchar2.h: New file. * include/bits/wchar2.h: New file. * wcsmbs/wchar.h: Include 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. --- string/bits/string3.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'string/bits') 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)) \ -- cgit 1.4.1