1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-02-03 20:24:29 +00:00

Update from gnulib

This incorporates:
2016-05-30 Use GCC_LINT, not lint
2016-05-29 secure_getenv: Port to many more platforms.
* doc/misc/texinfo.tex, lib/secure_getenv.c, lib/verify.h:
* m4/secure_getenv.m4: Copy from gnulib.
This commit is contained in:
Paul Eggert 2016-05-30 16:09:25 -07:00
parent 13411853b2
commit e7b01df5cf
4 changed files with 136 additions and 99 deletions

View File

@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
\def\texinfoversion{2016-05-26.20}
\def\texinfoversion{2016-05-28.16}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@ -4609,11 +4609,23 @@ end
% Like \expandablevalue, but completely expandable (the \message in the
% definition above operates at the execution level of TeX). Used when
% writing to auxiliary files, due to the expansion that \write does.
% If flag is undefined, pass through an unexpanded @value command: maybe it
% will be set by the time it is read back in.
%
% NB flag names containing - or _ may not work here.
\def\dummyvalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
[No value for ``#1'']%
\noexpand\value{#1}%
\else
\csname SET#1\endcsname
\fi
}
% Used for @value's in index entries to form the sort key: expand the @value
% if possible, otherwise sort late.
\def\indexnofontsvalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
ZZZZZZZ
\else
\csname SET#1\endcsname
\fi
@ -4760,7 +4772,7 @@ end
% Define \doindex, the driver for all index macros.
% Argument #1 is generated by the calling \fooindex macro,
% and it the two-letter name of the index.
% and it is the two-letter name of the index.
\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx}
\def\doindexxxx #1{\doind{\indexname}{#1}}
@ -4769,6 +4781,7 @@ end
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
% Used when writing an index entry out to an index file to prevent
% expansion of Texinfo commands that can appear in an index entry.
%
@ -4787,9 +4800,11 @@ end
\def\}{{\tt\char125}}%
%
% Do the redefinitions.
\commondummies
\definedummies
}
% Used for the aux and toc files, where @ is the escape character.
%
% For the aux and toc files, @ is the escape character. So we want to
% redefine everything using @ as the escape character (instead of
% \realbackslash, still used for index files). When everything uses @,
@ -4802,30 +4817,35 @@ end
\let\} = \rbraceatcmd
%
% Do the redefinitions.
\commondummies
\definedummies
\otherbackslash
}
% Called from \indexdummies and \atdummies.
% \definedummyword defines \#1 as \string\#1\space, thus effectively
% preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
% control characters, but is needed to separate the control word
% from whatever follows.
%
\def\commondummies{%
% \definedummyword defines \#1 as \string\#1\space, thus effectively
% preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
% control characters, but is needed to separate the control word
% from whatever follows.
%
% For control letters, we have \definedummyletter, which omits the
% space.
%
% These can be used both for control words that take an argument and
% those that do not. If it is followed by {arg} in the input, then
% that will dutifully get written to the index (or wherever).
%
\def\definedummyword ##1{\def##1{\string##1\space}}%
\def\definedummyletter##1{\def##1{\string##1}}%
\let\definedummyaccent\definedummyletter
% These can be used both for control words that take an argument and
% those that do not. If it is followed by {arg} in the input, then
% that will dutifully get written to the index (or wherever).
%
% For control letters, we have \definedummyletter, which omits the
% space.
%
\def\definedummyword #1{\def#1{\string#1\space}}%
\def\definedummyletter#1{\def#1{\string#1}}%
\let\definedummyaccent\definedummyletter
% Called from \indexdummies and \atdummies, to effectively prevent
% the expansion of commands.
%
\def\definedummies{%
%
\let\commondummyword\definedummyword
\let\commondummyletter\definedummyletter
\let\commondummyaccent\definedummyaccent
\commondummiesnofonts
%
\definedummyletter\_%
@ -4910,77 +4930,77 @@ end
\normalturnoffactive
}
% \commondummiesnofonts: common to \commondummies and \indexnofonts.
% Define \definedumyletter, \definedummyaccent and \definedummyword before
% using.
% \commondummiesnofonts: common to \definedummies and \indexnofonts.
% Define \commondummyletter, \commondummyaccent and \commondummyword before
% using. Used for accents, font commands, and various control letters.
%
\def\commondummiesnofonts{%
% Control letters and accents.
\definedummyletter\!%
\definedummyaccent\"%
\definedummyaccent\'%
\definedummyletter\*%
\definedummyaccent\,%
\definedummyletter\.%
\definedummyletter\/%
\definedummyletter\:%
\definedummyaccent\=%
\definedummyletter\?%
\definedummyaccent\^%
\definedummyaccent\`%
\definedummyaccent\~%
\definedummyword\u
\definedummyword\v
\definedummyword\H
\definedummyword\dotaccent
\definedummyword\ogonek
\definedummyword\ringaccent
\definedummyword\tieaccent
\definedummyword\ubaraccent
\definedummyword\udotaccent
\definedummyword\dotless
\commondummyletter\!%
\commondummyaccent\"%
\commondummyaccent\'%
\commondummyletter\*%
\commondummyaccent\,%
\commondummyletter\.%
\commondummyletter\/%
\commondummyletter\:%
\commondummyaccent\=%
\commondummyletter\?%
\commondummyaccent\^%
\commondummyaccent\`%
\commondummyaccent\~%
\commondummyword\u
\commondummyword\v
\commondummyword\H
\commondummyword\dotaccent
\commondummyword\ogonek
\commondummyword\ringaccent
\commondummyword\tieaccent
\commondummyword\ubaraccent
\commondummyword\udotaccent
\commondummyword\dotless
%
% Texinfo font commands.
\definedummyword\b
\definedummyword\i
\definedummyword\r
\definedummyword\sansserif
\definedummyword\sc
\definedummyword\slanted
\definedummyword\t
\commondummyword\b
\commondummyword\i
\commondummyword\r
\commondummyword\sansserif
\commondummyword\sc
\commondummyword\slanted
\commondummyword\t
%
% Commands that take arguments.
\definedummyword\abbr
\definedummyword\acronym
\definedummyword\anchor
\definedummyword\cite
\definedummyword\code
\definedummyword\command
\definedummyword\dfn
\definedummyword\dmn
\definedummyword\email
\definedummyword\emph
\definedummyword\env
\definedummyword\file
\definedummyword\image
\definedummyword\indicateurl
\definedummyword\inforef
\definedummyword\kbd
\definedummyword\key
\definedummyword\math
\definedummyword\option
\definedummyword\pxref
\definedummyword\ref
\definedummyword\samp
\definedummyword\strong
\definedummyword\tie
\definedummyword\U
\definedummyword\uref
\definedummyword\url
\definedummyword\var
\definedummyword\verb
\definedummyword\w
\definedummyword\xref
\commondummyword\abbr
\commondummyword\acronym
\commondummyword\anchor
\commondummyword\cite
\commondummyword\code
\commondummyword\command
\commondummyword\dfn
\commondummyword\dmn
\commondummyword\email
\commondummyword\emph
\commondummyword\env
\commondummyword\file
\commondummyword\image
\commondummyword\indicateurl
\commondummyword\inforef
\commondummyword\kbd
\commondummyword\key
\commondummyword\math
\commondummyword\option
\commondummyword\pxref
\commondummyword\ref
\commondummyword\samp
\commondummyword\strong
\commondummyword\tie
\commondummyword\U
\commondummyword\uref
\commondummyword\url
\commondummyword\var
\commondummyword\verb
\commondummyword\w
\commondummyword\xref
}
% For testing: output @{ and @} in index sort strings as \{ and \}.
@ -5036,11 +5056,11 @@ end
%
\def\indexnofonts{%
% Accent commands should become @asis.
\def\definedummyaccent##1{\let##1\asis}%
\def\commondummyaccent##1{\let##1\asis}%
% We can just ignore other control letters.
\def\definedummyletter##1{\let##1\empty}%
\def\commondummyletter##1{\let##1\empty}%
% All control words become @asis by default; overrides below.
\let\definedummyword\definedummyaccent
\let\commondummyword\commondummyaccent
\commondummiesnofonts
%
% Don't no-op \tt, since it isn't a user-level command
@ -5125,8 +5145,11 @@ end
% goes to end-of-line is not handled.
%
\macrolist
\let\value\indexnofontsvalue
}
\let\SETmarginindex=\relax % put index entries in margin (undocumented)?

View File

@ -1,4 +1,4 @@
/* Look up an environment variable more securely.
/* Look up an environment variable, returning NULL in insecure situations.
Copyright 2013-2016 Free Software Foundation, Inc.
@ -20,22 +20,35 @@
#include <stdlib.h>
#if !HAVE___SECURE_GETENV
# if HAVE_ISSETUGID
# if HAVE_ISSETUGID || (HAVE_GETUID && HAVE_GETEUID && HAVE_GETGID && HAVE_GETEGID)
# include <unistd.h>
# else
# undef issetugid
# define issetugid() 1
# endif
#endif
char *
secure_getenv (char const *name)
{
#if HAVE___SECURE_GETENV
#if HAVE___SECURE_GETENV /* glibc */
return __secure_getenv (name);
#else
#elif HAVE_ISSETUGID /* OS X, FreeBSD, NetBSD, OpenBSD */
if (issetugid ())
return 0;
return NULL;
return getenv (name);
#elif HAVE_GETUID && HAVE_GETEUID && HAVE_GETGID && HAVE_GETEGID /* other Unix */
if (geteuid () != getuid () || getegid () != getgid ())
return NULL;
return getenv (name);
#elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* native Windows */
/* On native Windows, there is no such concept as setuid or setgid binaries.
- Programs launched as system services have high privileges, but they don't
inherit environment variables from a user.
- Programs launched by a user with "Run as Administrator" have high
privileges and use the environment variables, but the user has been asked
whether he agrees.
- Programs launched by a user without "Run as Administrator" cannot gain
high privileges, therefore there is no risk. */
return getenv (name);
#else
return NULL;
#endif
}

View File

@ -263,7 +263,7 @@ template <int w>
# define assume(R) ((R) ? (void) 0 : __builtin_unreachable ())
#elif 1200 <= _MSC_VER
# define assume(R) __assume (R)
#elif (defined lint \
#elif ((defined GCC_LINT || defined lint) \
&& (__has_builtin (__builtin_trap) \
|| 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))))
/* Doing it this way helps various packages when configured with

View File

@ -22,4 +22,5 @@ AC_DEFUN([gl_PREREQ_SECURE_GETENV], [
if test $ac_cv_func___secure_getenv = no; then
AC_CHECK_FUNCS([issetugid])
fi
AC_CHECK_FUNCS_ONCE([getuid geteuid getgid getegid])
])