secure_getenv: port better to FreeBSD and Solaris
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 7 Feb 2013 23:34:23 +0000 (15:34 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 7 Feb 2013 23:34:50 +0000 (15:34 -0800)
* 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.

ChangeLog
lib/secure_getenv.c
m4/secure_getenv.m4

index e3fb3bd..4dc8f2c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2013-02-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       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  <eggert@cs.ucla.edu>
 
        extensions: port better to MINUX 3, HP-UX, autoheader 2.62
index 0b91a99..2859522 100644 (file)
 
 #include <stdlib.h>
 
+#if !HAVE___SECURE_GETENV
+# if HAVE_ISSETUGID
+#  include <unistd.h>
+# 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
 }
index 1ab5b2d..5da5298 100644 (file)
@@ -19,4 +19,7 @@ AC_DEFUN([gl_FUNC_SECURE_GETENV],
 # 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
 ])