summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/wchar.h16
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}