distro: Change the module name space to (gnu ...).
[jackhill/guix/guix.git] / gnu / packages / patches / shishi-gets-undeclared.patch
1 This patch is needed to allow builds with newer versions of
2 the GNU libc (2.16+).
3
4
5 commit 66712c23388e93e5c518ebc8515140fa0c807348
6 Author: Eric Blake <eblake@redhat.com>
7 Date: 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
28 diff --git a/gl/stdio.in.h b/gl/stdio.in.h
29 index aa7b599..c377b6e 100644
30 --- a/gl/stdio.in.h
31 +++ b/gl/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