diff options
| author | sin | 2015-03-04 12:59:41 +0000 |
|---|---|---|
| committer | sin | 2015-03-04 12:59:41 +0000 |
| commit | 3532ee2caade20142491a0e06a3ccd569a99131b (patch) | |
| tree | 7046c47abd278b694bb19319cf48f25dba9d48a8 | |
| parent | ce3377dbb20b5ff41349b195d2a3c21317012c98 (diff) | |
Add wcsnrtombs() and wcsrtombs() checks
| -rw-r--r-- | include/wchar.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/wchar.h b/include/wchar.h index 2f405b9..a482371 100644 --- a/include/wchar.h +++ b/include/wchar.h | |||
| @@ -115,6 +115,30 @@ __fortify_wcsncpy(wchar_t *d, const wchar_t *s, size_t n) | |||
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | static inline __attribute__ ((always_inline)) | 117 | static inline __attribute__ ((always_inline)) |
| 118 | size_t | ||
| 119 | __fortify_wcsnrtombs(char *d, const wchar_t **s, size_t wn, | ||
| 120 | size_t n, mbstate_t *st) | ||
| 121 | { | ||
| 122 | size_t bos = __builtin_object_size(d, 0); | ||
| 123 | |||
| 124 | if (n > bos) | ||
| 125 | __builtin_trap(); | ||
| 126 | return wcsnrtombs(d, s, wn, n, st); | ||
| 127 | } | ||
| 128 | |||
| 129 | static inline __attribute__ ((always_inline)) | ||
| 130 | size_t | ||
| 131 | __fortify_wcsrtombs(char *d, const wchar_t **s, size_t n, | ||
| 132 | mbstate_t *st) | ||
| 133 | { | ||
| 134 | size_t bos = __builtin_object_size(d, 0); | ||
| 135 | |||
| 136 | if (n > bos) | ||
| 137 | __builtin_trap(); | ||
| 138 | return wcsrtombs(d, s, n, st); | ||
| 139 | } | ||
| 140 | |||
| 141 | static inline __attribute__ ((always_inline)) | ||
| 118 | wchar_t * | 142 | wchar_t * |
| 119 | __fortify_wmemcpy(wchar_t *d, const wchar_t *s, size_t n) | 143 | __fortify_wmemcpy(wchar_t *d, const wchar_t *s, size_t n) |
| 120 | { | 144 | { |
| @@ -165,6 +189,10 @@ __fortify_wmemset(wchar_t *s, wchar_t c, size_t n) | |||
| 165 | #define wcsncat(d, s, n) __fortify_wcsncat(d, s, n) | 189 | #define wcsncat(d, s, n) __fortify_wcsncat(d, s, n) |
| 166 | #undef wcsncpy | 190 | #undef wcsncpy |
| 167 | #define wcsncpy(d, s, n) __fortify_wcsncpy(d, s, n) | 191 | #define wcsncpy(d, s, n) __fortify_wcsncpy(d, s, n) |
| 192 | #undef wcsnrtombs | ||
| 193 | #define wcsnrtombs(d, s, wn, n, st) __fortify_wcsnrtombs(d, s, wn, n, st) | ||
| 194 | #undef wcsrtombs | ||
| 195 | #define wcsrtombs(d, s, n, st) __fortify_wcsrtombs(d, s, n, st) | ||
| 168 | #undef wmemcpy | 196 | #undef wmemcpy |
| 169 | #define wmemcpy(d, s, n) __fortify_wmemcpy(d, s, n) | 197 | #define wmemcpy(d, s, n) __fortify_wmemcpy(d, s, n) |
| 170 | #undef wmemmove | 198 | #undef wmemmove |
