diff options
| author | sin | 2015-03-03 20:30:47 +0000 |
|---|---|---|
| committer | sin | 2015-03-03 20:30:47 +0000 |
| commit | d548f4a37de5858bcdb9ac3e9c9c02b506827509 (patch) | |
| tree | 5dbb5196b2b3be29aec3f913410ac3c7481ec970 /include | |
| parent | f0efb87f8f5a0cc64b386ed6be4f9c2db328c37b (diff) | |
Add mbsnrtowcs() and mbsrtowcs() checks
Diffstat (limited to 'include')
| -rw-r--r-- | include/wchar.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/wchar.h b/include/wchar.h index 9360eb5..ac4441b 100644 --- a/include/wchar.h +++ b/include/wchar.h | |||
| @@ -17,6 +17,30 @@ __fortify_fgetws(wchar_t *s, int n, FILE *fp) | |||
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | static inline __attribute__ ((always_inline)) | 19 | static inline __attribute__ ((always_inline)) |
| 20 | size_t | ||
| 21 | __fortify_mbsnrtowcs(wchar_t *d, const char **s, size_t n, | ||
| 22 | size_t wn, mbstate_t *st) | ||
| 23 | { | ||
| 24 | size_t bos = __builtin_object_size(d, 0); | ||
| 25 | |||
| 26 | if (wn > bos / sizeof(wchar_t)) | ||
| 27 | __builtin_trap(); | ||
| 28 | return mbsnrtowcs(d, s, n, wn, st); | ||
| 29 | } | ||
| 30 | |||
| 31 | static inline __attribute__ ((always_inline)) | ||
| 32 | size_t | ||
| 33 | __fortify_mbsrtowcs(wchar_t *d, const char **s, | ||
| 34 | size_t wn, mbstate_t *st) | ||
| 35 | { | ||
| 36 | size_t bos = __builtin_object_size(d, 0); | ||
| 37 | |||
| 38 | if (wn > bos / sizeof(wchar_t)) | ||
| 39 | __builtin_trap(); | ||
| 40 | return mbsrtowcs(d, s, wn, st); | ||
| 41 | } | ||
| 42 | |||
| 43 | static inline __attribute__ ((always_inline)) | ||
| 20 | wchar_t * | 44 | wchar_t * |
| 21 | __fortify_wmemcpy(wchar_t *d, const wchar_t *s, size_t n) | 45 | __fortify_wmemcpy(wchar_t *d, const wchar_t *s, size_t n) |
| 22 | { | 46 | { |
| @@ -51,6 +75,10 @@ __fortify_wmemset(wchar_t *s, wchar_t c, size_t n) | |||
| 51 | 75 | ||
| 52 | #undef fgetws | 76 | #undef fgetws |
| 53 | #define fgetws(s, n, fp) __fortify_fgetws(s, n, fp) | 77 | #define fgetws(s, n, fp) __fortify_fgetws(s, n, fp) |
| 78 | #undef mbsnrtowcs | ||
| 79 | #define mbsnrtowcs(d, s, n, wn, st) __fortify_mbsnrtowcs(d, s, n, wn, st) | ||
| 80 | #undef mbsrtowcs | ||
| 81 | #define mbsrtowcs(d, s, wn, st) __fortify_mbsrtowcs(d, s, wn, st) | ||
| 54 | #undef wmemcpy | 82 | #undef wmemcpy |
| 55 | #define wmemcpy(d, s, n) __fortify_wmemcpy(d, s, n) | 83 | #define wmemcpy(d, s, n) __fortify_wmemcpy(d, s, n) |
| 56 | #undef wmemmove | 84 | #undef wmemmove |
