summaryrefslogtreecommitdiff
path: root/include/wchar.h
diff options
context:
space:
mode:
authorjvoisin2023-03-18 14:01:02 +0100
committerjvoisin2023-04-13 23:48:57 +0200
commit3e6704d0be707487d7a9dccfdc75203c7261e11b (patch)
treecd04ae414fa7ef646a31f767b9295946fd2c9987 /include/wchar.h
parente3fee64643279c144efd3d6856ed4e818c0d5ca2 (diff)
Make use of __builtin_dynamic_object_size
GCC and Clang provide __builtin_dynamic_object_size (see documentation: https://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html), so we should make use of it when its available.
Diffstat (limited to 'include/wchar.h')
-rw-r--r--include/wchar.h34
1 files changed, 17 insertions, 17 deletions
diff --git a/include/wchar.h b/include/wchar.h
index c5d0e5d..0fba370 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -57,7 +57,7 @@ extern "C" {
57 57
58_FORTIFY_FN(fgetws) wchar_t *fgetws(wchar_t *__s, int __n, FILE *__f) 58_FORTIFY_FN(fgetws) wchar_t *fgetws(wchar_t *__s, int __n, FILE *__f)
59{ 59{
60 size_t __b = __builtin_object_size(__s, 0); 60 size_t __b = __bos(__s, 0);
61 61
62 if ((size_t)__n > __b / sizeof(wchar_t)) 62 if ((size_t)__n > __b / sizeof(wchar_t))
63 __builtin_trap(); 63 __builtin_trap();
@@ -70,7 +70,7 @@ _FORTIFY_FN(fgetws) wchar_t *fgetws(wchar_t *__s, int __n, FILE *__f)
70_FORTIFY_FN(mbsnrtowcs) size_t mbsnrtowcs(wchar_t *__d, const char **__s, size_t __n, 70_FORTIFY_FN(mbsnrtowcs) size_t mbsnrtowcs(wchar_t *__d, const char **__s, size_t __n,
71 size_t __wn, mbstate_t *__st) 71 size_t __wn, mbstate_t *__st)
72{ 72{
73 size_t __b = __builtin_object_size(__d, 0); 73 size_t __b = __bos(__d, 0);
74 size_t __r; 74 size_t __r;
75 75
76 if (__wn > __n / sizeof(wchar_t)) { 76 if (__wn > __n / sizeof(wchar_t)) {
@@ -90,7 +90,7 @@ _FORTIFY_FN(mbsnrtowcs) size_t mbsnrtowcs(wchar_t *__d, const char **__s, size_t
90_FORTIFY_FN(mbsrtowcs) size_t mbsrtowcs(wchar_t *__d, const char **__s, size_t __wn, 90_FORTIFY_FN(mbsrtowcs) size_t mbsrtowcs(wchar_t *__d, const char **__s, size_t __wn,
91 mbstate_t *__st) 91 mbstate_t *__st)
92{ 92{
93 size_t __b = __builtin_object_size(__d, 0); 93 size_t __b = __bos(__d, 0);
94 size_t __r; 94 size_t __r;
95 95
96 __b /= sizeof(wchar_t); 96 __b /= sizeof(wchar_t);
@@ -102,7 +102,7 @@ _FORTIFY_FN(mbsrtowcs) size_t mbsrtowcs(wchar_t *__d, const char **__s, size_t _
102 102
103_FORTIFY_FN(mbstowcs) size_t mbstowcs(wchar_t *__ws, const char *__s, size_t __wn) 103_FORTIFY_FN(mbstowcs) size_t mbstowcs(wchar_t *__ws, const char *__s, size_t __wn)
104{ 104{
105 size_t __b = __builtin_object_size(__ws, 0); 105 size_t __b = __bos(__ws, 0);
106 106
107 if (__ws && __wn > __b / sizeof(wchar_t)) 107 if (__ws && __wn > __b / sizeof(wchar_t))
108 __builtin_trap(); 108 __builtin_trap();
@@ -111,14 +111,14 @@ _FORTIFY_FN(mbstowcs) size_t mbstowcs(wchar_t *__ws, const char *__s, size_t __w
111 111
112_FORTIFY_FN(wcrtomb) size_t wcrtomb(char *__s, wchar_t __w, mbstate_t *__st) 112_FORTIFY_FN(wcrtomb) size_t wcrtomb(char *__s, wchar_t __w, mbstate_t *__st)
113{ 113{
114 if (__s && MB_LEN_MAX > __builtin_object_size(__s, 2)) { 114 if (__s && MB_LEN_MAX > __bos(__s, 2)) {
115 char __buf[MB_LEN_MAX]; 115 char __buf[MB_LEN_MAX];
116 size_t __r; 116 size_t __r;
117 117
118 __r = __orig_wcrtomb(__buf, __w, __st); 118 __r = __orig_wcrtomb(__buf, __w, __st);
119 if (__r == (size_t)-1) 119 if (__r == (size_t)-1)
120 return __r; 120 return __r;
121 if (__r > __builtin_object_size(__s, 0)) 121 if (__r > __bos(__s, 0))
122 __builtin_trap(); 122 __builtin_trap();
123 __builtin_memcpy(__s, __buf, __r); 123 __builtin_memcpy(__s, __buf, __r);
124 return __r; 124 return __r;
@@ -128,7 +128,7 @@ _FORTIFY_FN(wcrtomb) size_t wcrtomb(char *__s, wchar_t __w, mbstate_t *__st)
128 128
129_FORTIFY_FN(wcscat) wchar_t *wcscat(wchar_t *__d, const wchar_t *__s) 129_FORTIFY_FN(wcscat) wchar_t *wcscat(wchar_t *__d, const wchar_t *__s)
130{ 130{
131 size_t __b = __builtin_object_size(__d, 0); 131 size_t __b = __bos(__d, 0);
132 132
133 if (wcslen(__s) + wcslen(__d) + 1 > __b / sizeof(wchar_t)) 133 if (wcslen(__s) + wcslen(__d) + 1 > __b / sizeof(wchar_t))
134 __builtin_trap(); 134 __builtin_trap();
@@ -137,7 +137,7 @@ _FORTIFY_FN(wcscat) wchar_t *wcscat(wchar_t *__d, const wchar_t *__s)
137 137
138_FORTIFY_FN(wcscpy) wchar_t *wcscpy(wchar_t *__d, const wchar_t *__s) 138_FORTIFY_FN(wcscpy) wchar_t *wcscpy(wchar_t *__d, const wchar_t *__s)
139{ 139{
140 size_t __b = __builtin_object_size(__d, 0); 140 size_t __b = __bos(__d, 0);
141 141
142 if (wcslen(__s) + 1 > __b / sizeof(wchar_t)) 142 if (wcslen(__s) + 1 > __b / sizeof(wchar_t))
143 __builtin_trap(); 143 __builtin_trap();
@@ -146,7 +146,7 @@ _FORTIFY_FN(wcscpy) wchar_t *wcscpy(wchar_t *__d, const wchar_t *__s)
146 146
147_FORTIFY_FN(wcsncat) wchar_t *wcsncat(wchar_t *__d, const wchar_t *__s, size_t __n) 147_FORTIFY_FN(wcsncat) wchar_t *wcsncat(wchar_t *__d, const wchar_t *__s, size_t __n)
148{ 148{
149 size_t __b = __builtin_object_size(__d, 0); 149 size_t __b = __bos(__d, 0);
150 size_t __sl, __dl; 150 size_t __sl, __dl;
151 151
152 if (__n > __b / sizeof(wchar_t)) { 152 if (__n > __b / sizeof(wchar_t)) {
@@ -162,7 +162,7 @@ _FORTIFY_FN(wcsncat) wchar_t *wcsncat(wchar_t *__d, const wchar_t *__s, size_t _
162 162
163_FORTIFY_FN(wcsncpy) wchar_t *wcsncpy(wchar_t *__d, const wchar_t *__s, size_t __n) 163_FORTIFY_FN(wcsncpy) wchar_t *wcsncpy(wchar_t *__d, const wchar_t *__s, size_t __n)
164{ 164{
165 size_t __b = __builtin_object_size(__d, 0); 165 size_t __b = __bos(__d, 0);
166 166
167 if (__n > __b / sizeof(wchar_t)) 167 if (__n > __b / sizeof(wchar_t))
168 __builtin_trap(); 168 __builtin_trap();
@@ -175,7 +175,7 @@ _FORTIFY_FN(wcsncpy) wchar_t *wcsncpy(wchar_t *__d, const wchar_t *__s, size_t _
175_FORTIFY_FN(wcsnrtombs) size_t wcsnrtombs(char *__d, const wchar_t **__s, size_t __wn, 175_FORTIFY_FN(wcsnrtombs) size_t wcsnrtombs(char *__d, const wchar_t **__s, size_t __wn,
176 size_t __n, mbstate_t *__st) 176 size_t __n, mbstate_t *__st)
177{ 177{
178 size_t __b = __builtin_object_size(__d, 0); 178 size_t __b = __bos(__d, 0);
179 size_t __r; 179 size_t __r;
180 180
181 if (__wn > __n / sizeof(wchar_t)) { 181 if (__wn > __n / sizeof(wchar_t)) {
@@ -195,7 +195,7 @@ _FORTIFY_FN(wcsnrtombs) size_t wcsnrtombs(char *__d, const wchar_t **__s, size_t
195_FORTIFY_FN(wcsrtombs) size_t wcsrtombs(char *__d, const wchar_t **__s, size_t __n, 195_FORTIFY_FN(wcsrtombs) size_t wcsrtombs(char *__d, const wchar_t **__s, size_t __n,
196 mbstate_t *__st) 196 mbstate_t *__st)
197{ 197{
198 size_t __b = __builtin_object_size(__d, 0); 198 size_t __b = __bos(__d, 0);
199 size_t __r; 199 size_t __r;
200 200
201 __r = __orig_wcsrtombs(__d, __s, __n > __b ? __b : __n, __st); 201 __r = __orig_wcsrtombs(__d, __s, __n > __b ? __b : __n, __st);
@@ -206,7 +206,7 @@ _FORTIFY_FN(wcsrtombs) size_t wcsrtombs(char *__d, const wchar_t **__s, size_t _
206 206
207_FORTIFY_FN(wcstombs) size_t wcstombs(char *__s, const wchar_t *__ws, size_t __n) 207_FORTIFY_FN(wcstombs) size_t wcstombs(char *__s, const wchar_t *__ws, size_t __n)
208{ 208{
209 size_t __b = __builtin_object_size(__s, 0); 209 size_t __b = __bos(__s, 0);
210 210
211 if (__s && __n > __b) 211 if (__s && __n > __b)
212 __builtin_trap(); 212 __builtin_trap();
@@ -215,7 +215,7 @@ _FORTIFY_FN(wcstombs) size_t wcstombs(char *__s, const wchar_t *__ws, size_t __n
215 215
216_FORTIFY_FN(wctomb) int wctomb(char *__s, wchar_t __w) 216_FORTIFY_FN(wctomb) int wctomb(char *__s, wchar_t __w)
217{ 217{
218 size_t __b = __builtin_object_size(__s, 0); 218 size_t __b = __bos(__s, 0);
219 219
220 if (__s && MB_LEN_MAX > __b && MB_CUR_MAX > __b) 220 if (__s && MB_LEN_MAX > __b && MB_CUR_MAX > __b)
221 __builtin_trap(); 221 __builtin_trap();
@@ -224,7 +224,7 @@ _FORTIFY_FN(wctomb) int wctomb(char *__s, wchar_t __w)
224 224
225_FORTIFY_FN(wmemcpy) wchar_t *wmemcpy(wchar_t *__d, const wchar_t *__s, size_t __n) 225_FORTIFY_FN(wmemcpy) wchar_t *wmemcpy(wchar_t *__d, const wchar_t *__s, size_t __n)
226{ 226{
227 size_t __b = __builtin_object_size(__d, 0); 227 size_t __b = __bos(__d, 0);
228 228
229 if (__n > __b / sizeof(wchar_t)) 229 if (__n > __b / sizeof(wchar_t))
230 __builtin_trap(); 230 __builtin_trap();
@@ -233,7 +233,7 @@ _FORTIFY_FN(wmemcpy) wchar_t *wmemcpy(wchar_t *__d, const wchar_t *__s, size_t _
233 233
234_FORTIFY_FN(wmemmove) wchar_t *wmemmove(wchar_t *__d, const wchar_t *__s, size_t __n) 234_FORTIFY_FN(wmemmove) wchar_t *wmemmove(wchar_t *__d, const wchar_t *__s, size_t __n)
235{ 235{
236 size_t __b = __builtin_object_size(__d, 0); 236 size_t __b = __bos(__d, 0);
237 237
238 if (__n > __b / sizeof(wchar_t)) 238 if (__n > __b / sizeof(wchar_t))
239 __builtin_trap(); 239 __builtin_trap();
@@ -242,7 +242,7 @@ _FORTIFY_FN(wmemmove) wchar_t *wmemmove(wchar_t *__d, const wchar_t *__s, size_t
242 242
243_FORTIFY_FN(wmemset) wchar_t *wmemset(wchar_t *__s, wchar_t __c, size_t __n) 243_FORTIFY_FN(wmemset) wchar_t *wmemset(wchar_t *__s, wchar_t __c, size_t __n)
244{ 244{
245 size_t __b = __builtin_object_size(__s, 0); 245 size_t __b = __bos(__s, 0);
246 246
247 if (__n > __b / sizeof(wchar_t)) 247 if (__n > __b / sizeof(wchar_t))
248 __builtin_trap(); 248 __builtin_trap();