summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsin2015-03-01 11:09:13 +0000
committersin2015-03-01 11:09:13 +0000
commit0826c593bee3c68261318decc5475e45c4b030ec (patch)
tree125899083389f2d6c664b1df830bbf6ef721396c
parente71d1fd257717987239380f52c25026e634c6a81 (diff)
Add sprintf() check
-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