diff options
Diffstat (limited to 'include/wchar.h')
| -rw-r--r-- | include/wchar.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/wchar.h b/include/wchar.h index ac4441b..20630ac 100644 --- a/include/wchar.h +++ b/include/wchar.h | |||
| @@ -41,6 +41,17 @@ __fortify_mbsrtowcs(wchar_t *d, const char **s, | |||
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | static inline __attribute__ ((always_inline)) | 43 | static inline __attribute__ ((always_inline)) |
| 44 | size_t | ||
| 45 | __fortify_mbstowcs(wchar_t *d, const char *s, size_t wn) | ||
| 46 | { | ||
| 47 | size_t bos = __builtin_object_size(d, 0); | ||
| 48 | |||
| 49 | if (wn > bos / sizeof(wchar_t)) | ||
| 50 | __builtin_trap(); | ||
| 51 | return mbstowcs(d, s, wn); | ||
| 52 | } | ||
| 53 | |||
| 54 | static inline __attribute__ ((always_inline)) | ||
| 44 | wchar_t * | 55 | wchar_t * |
| 45 | __fortify_wmemcpy(wchar_t *d, const wchar_t *s, size_t n) | 56 | __fortify_wmemcpy(wchar_t *d, const wchar_t *s, size_t n) |
| 46 | { | 57 | { |
| @@ -79,6 +90,8 @@ __fortify_wmemset(wchar_t *s, wchar_t c, size_t n) | |||
| 79 | #define mbsnrtowcs(d, s, n, wn, st) __fortify_mbsnrtowcs(d, s, n, wn, st) | 90 | #define mbsnrtowcs(d, s, n, wn, st) __fortify_mbsnrtowcs(d, s, n, wn, st) |
| 80 | #undef mbsrtowcs | 91 | #undef mbsrtowcs |
| 81 | #define mbsrtowcs(d, s, wn, st) __fortify_mbsrtowcs(d, s, wn, st) | 92 | #define mbsrtowcs(d, s, wn, st) __fortify_mbsrtowcs(d, s, wn, st) |
| 93 | #undef mbstowcs | ||
| 94 | #define mbstowcs(d, s, wn) __fortify_mbstowcs(d, s, wn) | ||
| 82 | #undef wmemcpy | 95 | #undef wmemcpy |
| 83 | #define wmemcpy(d, s, n) __fortify_wmemcpy(d, s, n) | 96 | #define wmemcpy(d, s, n) __fortify_wmemcpy(d, s, n) |
| 84 | #undef wmemmove | 97 | #undef wmemmove |
