summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorjvoisin2023-09-27 23:28:50 +0200
committerjvoisin2023-09-28 15:05:57 +0200
commit3067c28ceb744b2bafe9202023084f762871e844 (patch)
tree9337559b6230fc4620e47d9229c13489ac1c3913 /include
parent81ef1fd8c55aae65d321b2730ff5da6b73d1e707 (diff)
Add `printf` hardening
Diffstat (limited to 'include')
-rw-r--r--include/stdio.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/include/stdio.h b/include/stdio.h
index b407d0f..c363edc 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -38,6 +38,7 @@ extern "C" {
38#undef popen 38#undef popen
39#undef vsnprintf 39#undef vsnprintf
40#undef vsprintf 40#undef vsprintf
41#undef printf
41 42
42__access(read_only, 2) 43__access(read_only, 2)
43#if __has_builtin(__builtin_fdopen) 44#if __has_builtin(__builtin_fdopen)
@@ -241,6 +242,17 @@ _FORTIFY_FN(sprintf) int sprintf(char *__s, const char *__f, ...)
241#endif 242#endif
242} 243}
243 244
245__format(printf, 1, 2)
246__access(read_only, 1)
247_FORTIFY_FN(printf) int printf(const char *__f, ...)
248{
249#if __has_builtin(__builtin___printf_chk) && USE_NATIVE_CHK
250 return __builtin___printf_chk(_FORTIFY_SOURCE, __f, __builtin_va_arg_pack());
251#else
252 return __orig_printf(__f, __builtin_va_arg_pack());
253#endif
254}
255
244#endif /* __has_builtin(__builtin_va_arg_pack) */ 256#endif /* __has_builtin(__builtin_va_arg_pack) */
245 257
246#ifdef __cplusplus 258#ifdef __cplusplus