summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/stdio.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/include/stdio.h b/include/stdio.h
index 1217a0f..41b09e1 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -41,7 +41,21 @@ __fortify_vsnprintf(char *s, size_t n, const char *fmt, __builtin_va_list ap)
41 size_t bos = __builtin_object_size(s, 0); \ 41 size_t bos = __builtin_object_size(s, 0); \
42 if (_n > bos) \ 42 if (_n > bos) \
43 __builtin_trap(); \ 43 __builtin_trap(); \
44 snprintf(s, _n, fmt, ## __VA_ARGS__); \ 44 (snprintf)(s, _n, fmt, ## __VA_ARGS__); \
45})
46
47#undef sprintf
48#define sprintf(s, fmt, ...) ({ \
49 size_t bos = __builtin_object_size(s, 0); \
50 int r; \
51 if (bos != -1) { \
52 r = (snprintf)(s, bos, fmt, ## __VA_ARGS__); \
53 if (r == -1 || r >= bos) \
54 __builtin_trap(); \
55 } else { \
56 r = (sprintf)(s, fmt, ## __VA_ARGS__); \
57 } \
58 r; \
45}) 59})
46 60
47#endif 61#endif