summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdio/printf.3
diff options
context:
space:
mode:
authoreric <eric@FreeBSD.org>2001-05-25 20:42:40 +0000
committereric <eric@FreeBSD.org>2001-05-25 20:42:40 +0000
commit851fceab51b8b97544af74fe8f395076099eff89 (patch)
tree144fe45e743943fd302233c906b124fcab0fb022 /lib/libc/stdio/printf.3
parentff64d076a6eb3ccc08915d957aa900350c6111c6 (diff)
downloadFreeBSD-src-851fceab51b8b97544af74fe8f395076099eff89.zip
FreeBSD-src-851fceab51b8b97544af74fe8f395076099eff89.tar.gz
Add warnings about trusting user-supplied data.
Reviewed by: ru Approved by: murray Obtained from: OpenBSD
Diffstat (limited to 'lib/libc/stdio/printf.3')
-rw-r--r--lib/libc/stdio/printf.314
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/libc/stdio/printf.3 b/lib/libc/stdio/printf.3
index 30b02a6..590c1c0 100644
--- a/lib/libc/stdio/printf.3
+++ b/lib/libc/stdio/printf.3
@@ -664,3 +664,17 @@ For safety, programmers should use the
.Fn snprintf
interface instead.
Unfortunately, this interface is not portable.
+.Pp
+Never pass a string with user-supplied data as a format without using
+.Ql %s .
+An attacker can put format specifiers in the string to mangle your stack,
+leading to a possible security hole.
+This holds true even if the string was built using a function like
+.Fn snprintf ,
+as the resulting string may still contain user-supplied conversion specifiers
+for later interpolation by
+.Fn printf .
+.Pp
+Always use the proper secure idiom:
+.Pp
+.Dl snprintf(buffer, sizeof(buffer), "%s", string);
OpenPOWER on IntegriCloud