# HG changeset patch # User Paul Eggert # Date 1360280063 28800 # Node ID d77c98cd7cfd16e1d71558764496ade9559aba25 # Parent 896204e6fbfcbac104c7f0047b2df071812038f7 secure_getenv: port better to FreeBSD and Solaris * lib/secure_getenv.c [!HAVE___SECURE_GETENV]: Include unistd.h if HAVE_ISSETUGID, otherwise define a dummy issetugid. (secure_getenv) [!HAVE___SECURE_GETENV]: Use getenv if not issetugid. This works better on BSDish platforms. * m4/secure_getenv.m4 (gl_PREREQ_SECURE_GETENV): Test for issetugid if __secure_getenv is missing. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2013-02-07 Paul Eggert + + secure_getenv: port better to FreeBSD and Solaris + * lib/secure_getenv.c [!HAVE___SECURE_GETENV]: + Include unistd.h if HAVE_ISSETUGID, otherwise define a dummy issetugid. + (secure_getenv) [!HAVE___SECURE_GETENV]: Use getenv if not issetugid. + This works better on BSDish platforms. + * m4/secure_getenv.m4 (gl_PREREQ_SECURE_GETENV): + Test for issetugid if __secure_getenv is missing. + 2013-02-06 Paul Eggert extensions: port better to MINUX 3, HP-UX, autoheader 2.62 diff --git a/lib/secure_getenv.c b/lib/secure_getenv.c --- a/lib/secure_getenv.c +++ b/lib/secure_getenv.c @@ -17,12 +17,23 @@ #include +#if !HAVE___SECURE_GETENV +# if HAVE_ISSETUGID +# include +# else +# undef issetugid +# define issetugid() 1 +# endif +#endif + char * secure_getenv (char const *name) { #if HAVE___SECURE_GETENV return __secure_getenv (name); #else - return 0; + if (issetugid ()) + return 0; + return getenv (name); #endif } diff --git a/m4/secure_getenv.m4 b/m4/secure_getenv.m4 --- a/m4/secure_getenv.m4 +++ b/m4/secure_getenv.m4 @@ -19,4 +19,7 @@ # Prerequisites of lib/secure_getenv.c. AC_DEFUN([gl_PREREQ_SECURE_GETENV], [ AC_CHECK_FUNCS([__secure_getenv]) + if test $ac_cv_func___secure_getenv = no; then + AC_CHECK_FUNCS([issetugid]) + fi ])