summaryrefslogtreecommitdiff
path: root/include/stdio.h
diff options
context:
space:
mode:
authorjvoisin2023-03-18 14:01:02 +0100
committerjvoisin2025-10-31 22:16:21 +0100
commit249492e08adbf034976770ab3b021ba093a2ab18 (patch)
treecd04ae414fa7ef646a31f767b9295946fd2c9987 /include/stdio.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/stdio.h')
-rw-r--r--include/stdio.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/include/stdio.h b/include/stdio.h
index a965184..1eb20be 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -38,7 +38,7 @@ extern "C" {
38 38
39_FORTIFY_FN(fgets) char *fgets(char *__s, int __n, FILE *__f) 39_FORTIFY_FN(fgets) char *fgets(char *__s, int __n, FILE *__f)
40{ 40{
41 size_t __b = __builtin_object_size(__s, 0); 41 size_t __b = __bos(__s, 0);
42 42
43 if ((size_t)__n > __b) 43 if ((size_t)__n > __b)
44 __builtin_trap(); 44 __builtin_trap();
@@ -47,7 +47,7 @@ _FORTIFY_FN(fgets) char *fgets(char *__s, int __n, FILE *__f)
47 47
48_FORTIFY_FN(fread) size_t fread(void *__d, size_t __n, size_t __m, FILE *__f) 48_FORTIFY_FN(fread) size_t fread(void *__d, size_t __n, size_t __m, FILE *__f)
49{ 49{
50 size_t __b = __builtin_object_size(__d, 0); 50 size_t __b = __bos(__d, 0);
51 51
52 if (__n != 0 && (__n * __m) / __n != __m) 52 if (__n != 0 && (__n * __m) / __n != __m)
53 __builtin_trap(); 53 __builtin_trap();
@@ -58,7 +58,7 @@ _FORTIFY_FN(fread) size_t fread(void *__d, size_t __n, size_t __m, FILE *__f)
58 58
59_FORTIFY_FN(fwrite) size_t fwrite(const void *__d, size_t __n, size_t __m, FILE *__f) 59_FORTIFY_FN(fwrite) size_t fwrite(const void *__d, size_t __n, size_t __m, FILE *__f)
60{ 60{
61 size_t __b = __builtin_object_size(__d, 0); 61 size_t __b = __bos(__d, 0);
62 62
63 if (__n != 0 && (__n * __m) / __n != __m) 63 if (__n != 0 && (__n * __m) / __n != __m)
64 __builtin_trap(); 64 __builtin_trap();
@@ -70,7 +70,7 @@ _FORTIFY_FN(fwrite) size_t fwrite(const void *__d, size_t __n, size_t __m, FILE
70_FORTIFY_FN(vsnprintf) int vsnprintf(char *__s, size_t __n, const char *__f, 70_FORTIFY_FN(vsnprintf) int vsnprintf(char *__s, size_t __n, const char *__f,
71 __builtin_va_list __v) 71 __builtin_va_list __v)
72{ 72{
73 size_t __b = __builtin_object_size(__s, 0); 73 size_t __b = __bos(__s, 0);
74 74
75 if (__n > __b) 75 if (__n > __b)
76 __builtin_trap(); 76 __builtin_trap();
@@ -79,7 +79,7 @@ _FORTIFY_FN(vsnprintf) int vsnprintf(char *__s, size_t __n, const char *__f,
79 79
80_FORTIFY_FN(vsprintf) int vsprintf(char *__s, const char *__f, __builtin_va_list __v) 80_FORTIFY_FN(vsprintf) int vsprintf(char *__s, const char *__f, __builtin_va_list __v)
81{ 81{
82 size_t __b = __builtin_object_size(__s, 0); 82 size_t __b = __bos(__s, 0);
83 int __r; 83 int __r;
84 84
85 if (__b != (size_t)-1) { 85 if (__b != (size_t)-1) {
@@ -94,7 +94,7 @@ _FORTIFY_FN(vsprintf) int vsprintf(char *__s, const char *__f, __builtin_va_list
94 94
95_FORTIFY_FN(snprintf) int snprintf(char *__s, size_t __n, const char *__f, ...) 95_FORTIFY_FN(snprintf) int snprintf(char *__s, size_t __n, const char *__f, ...)
96{ 96{
97 size_t __b = __builtin_object_size(__s, 0); 97 size_t __b = __bos(__s, 0);
98 98
99 if (__n > __b) 99 if (__n > __b)
100 __builtin_trap(); 100 __builtin_trap();
@@ -103,7 +103,7 @@ _FORTIFY_FN(snprintf) int snprintf(char *__s, size_t __n, const char *__f, ...)
103 103
104_FORTIFY_FN(sprintf) int sprintf(char *__s, const char *__f, ...) 104_FORTIFY_FN(sprintf) int sprintf(char *__s, const char *__f, ...)
105{ 105{
106 size_t __b = __builtin_object_size(__s, 0); 106 size_t __b = __bos(__s, 0);
107 int __r; 107 int __r;
108 108
109 if (__b != (size_t)-1) { 109 if (__b != (size_t)-1) {