summaryrefslogtreecommitdiff
path: root/include/wchar.h
diff options
context:
space:
mode:
authorsin2015-03-03 20:36:35 +0000
committersin2015-03-03 20:36:35 +0000
commit95f63b308458f6459bf9b04142a68a8b01cdd902 (patch)
treed592f6062c12ad4274e6aaeed4d2594d55a02259 /include/wchar.h
parentd548f4a37de5858bcdb9ac3e9c9c02b506827509 (diff)
Add mbstowcs() check
Diffstat (limited to 'include/wchar.h')
-rw-r--r--include/wchar.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/wchar.h b/include/wchar.h
index ac4441b..20630ac 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -41,6 +41,17 @@ __fortify_mbsrtowcs(wchar_t *d, const char **s,
41} 41}
42 42
43static inline __attribute__ ((always_inline)) 43static inline __attribute__ ((always_inline))
44size_t
45__fortify_mbstowcs(wchar_t *d, const char *s, size_t wn)
46{
47 size_t bos = __builtin_object_size(d, 0);
48
49 if (wn > bos / sizeof(wchar_t))
50 __builtin_trap();
51 return mbstowcs(d, s, wn);
52}
53
54static inline __attribute__ ((always_inline))
44wchar_t * 55wchar_t *
45__fortify_wmemcpy(wchar_t *d, const wchar_t *s, size_t n) 56__fortify_wmemcpy(wchar_t *d, const wchar_t *s, size_t n)
46{ 57{
@@ -79,6 +90,8 @@ __fortify_wmemset(wchar_t *s, wchar_t c, size_t n)
79#define mbsnrtowcs(d, s, n, wn, st) __fortify_mbsnrtowcs(d, s, n, wn, st) 90#define mbsnrtowcs(d, s, n, wn, st) __fortify_mbsnrtowcs(d, s, n, wn, st)
80#undef mbsrtowcs 91#undef mbsrtowcs
81#define mbsrtowcs(d, s, wn, st) __fortify_mbsrtowcs(d, s, wn, st) 92#define mbsrtowcs(d, s, wn, st) __fortify_mbsrtowcs(d, s, wn, st)
93#undef mbstowcs
94#define mbstowcs(d, s, wn) __fortify_mbstowcs(d, s, wn)
82#undef wmemcpy 95#undef wmemcpy
83#define wmemcpy(d, s, n) __fortify_wmemcpy(d, s, n) 96#define wmemcpy(d, s, n) __fortify_wmemcpy(d, s, n)
84#undef wmemmove 97#undef wmemmove