diff options
Diffstat (limited to 'include/wchar.h')
| -rw-r--r-- | include/wchar.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/include/wchar.h b/include/wchar.h index 0842115..9e32720 100644 --- a/include/wchar.h +++ b/include/wchar.h | |||
| @@ -221,21 +221,25 @@ _FORTIFY_FN(wcstombs) size_t wcstombs(char * _FORTIFY_POS0 __s, | |||
| 221 | } | 221 | } |
| 222 | 222 | ||
| 223 | _FORTIFY_FN(wmemcpy) wchar_t *wmemcpy(wchar_t * _FORTIFY_POS0 __d, | 223 | _FORTIFY_FN(wmemcpy) wchar_t *wmemcpy(wchar_t * _FORTIFY_POS0 __d, |
| 224 | const wchar_t *__s, size_t __n) | 224 | const wchar_t * _FORTIFY_POS0 __s, |
| 225 | size_t __n) | ||
| 225 | { | 226 | { |
| 226 | size_t __b = __bos(__d, 0); | 227 | size_t __bd = __bos(__d, 0); |
| 228 | size_t __bs = __bos(__s, 0); | ||
| 227 | 229 | ||
| 228 | if (__n > __b / sizeof(wchar_t)) | 230 | if (__n > __bd / sizeof(wchar_t) || __n > __bs / sizeof(wchar_t)) |
| 229 | __builtin_trap(); | 231 | __builtin_trap(); |
| 230 | return __orig_wmemcpy(__d, __s, __n); | 232 | return __orig_wmemcpy(__d, __s, __n); |
| 231 | } | 233 | } |
| 232 | 234 | ||
| 233 | _FORTIFY_FN(wmemmove) wchar_t *wmemmove(wchar_t * _FORTIFY_POS0 __d, | 235 | _FORTIFY_FN(wmemmove) wchar_t *wmemmove(wchar_t * _FORTIFY_POS0 __d, |
| 234 | const wchar_t *__s, size_t __n) | 236 | const wchar_t * _FORTIFY_POS0 __s, |
| 237 | size_t __n) | ||
| 235 | { | 238 | { |
| 236 | size_t __b = __bos(__d, 0); | 239 | size_t __bd = __bos(__d, 0); |
| 240 | size_t __bs = __bos(__s, 0); | ||
| 237 | 241 | ||
| 238 | if (__n > __b / sizeof(wchar_t)) | 242 | if (__n > __bd / sizeof(wchar_t) || __n > __bs / sizeof(wchar_t)) |
| 239 | __builtin_trap(); | 243 | __builtin_trap(); |
| 240 | return __orig_wmemmove(__d, __s, __n); | 244 | return __orig_wmemmove(__d, __s, __n); |
| 241 | } | 245 | } |
