summaryrefslogtreecommitdiff
path: root/include/wchar.h
diff options
context:
space:
mode:
authorsin2015-03-06 12:39:11 +0000
committersin2015-03-06 12:39:11 +0000
commitead32d63209133fa83dbb43debd4db33b363d887 (patch)
tree24ea0085298b8b30366820b4f74ca64702ac5c15 /include/wchar.h
parent9b128ed5384b9b474dee5a23d37047cd59e8646f (diff)
Fix some checks in wchar.h
Some of these functions allow the destination pointer to be NULL. Do not trap in that case as nothing will be written to the destination buffer.
Diffstat (limited to 'include/wchar.h')
-rw-r--r--include/wchar.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/include/wchar.h b/include/wchar.h
index 16895e5..ca9840a 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -59,7 +59,7 @@ __fortify_mbstowcs(wchar_t *ws, const char *s, size_t wn)
59{ 59{
60 size_t bos = __builtin_object_size(ws, 0); 60 size_t bos = __builtin_object_size(ws, 0);
61 61
62 if (wn > bos / sizeof(wchar_t)) 62 if (ws && wn > bos / sizeof(wchar_t))
63 __builtin_trap(); 63 __builtin_trap();
64 return mbstowcs(ws, s, wn); 64 return mbstowcs(ws, s, wn);
65} 65}
@@ -70,7 +70,7 @@ __fortify_wcrtomb(char *s, wchar_t wc, mbstate_t *st)
70{ 70{
71 size_t bos = __builtin_object_size(s, 0); 71 size_t bos = __builtin_object_size(s, 0);
72 72
73 if (MB_CUR_MAX > bos) 73 if (s && MB_CUR_MAX > bos)
74 __builtin_trap(); 74 __builtin_trap();
75 return wcrtomb(s, wc, st); 75 return wcrtomb(s, wc, st);
76} 76}
@@ -167,7 +167,7 @@ __fortify_wcstombs(char *s, const wchar_t *ws, size_t n)
167{ 167{
168 size_t bos = __builtin_object_size(s, 0); 168 size_t bos = __builtin_object_size(s, 0);
169 169
170 if (n > bos) 170 if (s && n > bos)
171 __builtin_trap(); 171 __builtin_trap();
172 return wcstombs(s, ws, n); 172 return wcstombs(s, ws, n);
173} 173}
@@ -178,7 +178,7 @@ __fortify_wctomb(char *s, wchar_t wc)
178{ 178{
179 size_t bos = __builtin_object_size(s, 0); 179 size_t bos = __builtin_object_size(s, 0);
180 180
181 if (MB_CUR_MAX > bos) 181 if (s && MB_CUR_MAX > bos)
182 __builtin_trap(); 182 __builtin_trap();
183 return wctomb(s, wc); 183 return wctomb(s, wc);
184} 184}