Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1This patch is needed to allow builds with newer versions of 2the GNU libc (2.16+). 3 4 5commit 66712c23388e93e5c518ebc8515140fa0c807348 6Author: Eric Blake <eblake@redhat.com> 7Date: Thu Mar 29 13:30:41 2012 -0600 8 9 stdio: don't assume gets any more 10 11 Gnulib intentionally does not have a gets module, and now that C11 12 and glibc have dropped it, we should be more proactive about warning 13 any user on a platform that still has a declaration of this dangerous 14 interface. 15 16 * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets 17 support. 18 * modules/stdio (Makefile.am): Likewise. 19 * lib/stdio-read.c (gets): Likewise. 20 * tests/test-stdio-c++.cc: Likewise. 21 * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment. 22 * lib/stdio.in.h (gets): Make warning occur in more places. 23 * doc/posix-functions/gets.texi (gets): Update documentation. 24 Reported by Christer Solskogen. 25 26 Signed-off-by: Eric Blake <eblake@redhat.com> 27 28diff --git a/lib/stdio.in.h b/lib/stdio.in.h 29index aa7b599..c377b6e 100644 30--- a/lib/stdio.in.h 31+++ b/lib/stdio.in.h 32@@ -698,22 +698,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - " 33 # endif 34 #endif 35 36-#if @GNULIB_GETS@ 37-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ 38-# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 39-# undef gets 40-# define gets rpl_gets 41-# endif 42-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1))); 43-_GL_CXXALIAS_RPL (gets, char *, (char *s)); 44-# else 45-_GL_CXXALIAS_SYS (gets, char *, (char *s)); 46-# undef gets 47-# endif 48-_GL_CXXALIASWARN (gets); 49 /* It is very rare that the developer ever has full control of stdin, 50- so any use of gets warrants an unconditional warning. Assume it is 51- always declared, since it is required by C89. */ 52+ so any use of gets warrants an unconditional warning; besides, C11 53+ removed it. */ 54+#undef gets 55+#if HAVE_RAW_DECL_GETS 56 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); 57 #endif 58 59@@ -1053,9 +1042,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " 60 # endif 61 #endif 62 63-/* Some people would argue that sprintf should be handled like gets 64- (for example, OpenBSD issues a link warning for both functions), 65- since both can cause security holes due to buffer overruns. 66+/* Some people would argue that all sprintf uses should be warned about 67+ (for example, OpenBSD issues a link warning for it), 68+ since it can cause security holes due to buffer overruns. 69 However, we believe that sprintf can be used safely, and is more 70 efficient than snprintf in those safe cases; and as proof of our 71 belief, we use sprintf in several gnulib modules. So this header