diff options
| author | sin | 2015-03-06 12:39:11 +0000 |
|---|---|---|
| committer | sin | 2015-03-06 12:39:11 +0000 |
| commit | ead32d63209133fa83dbb43debd4db33b363d887 (patch) | |
| tree | 24ea0085298b8b30366820b4f74ca64702ac5c15 /include/wchar.h | |
| parent | 9b128ed5384b9b474dee5a23d37047cd59e8646f (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.h | 8 |
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 | } |
