Try to use secure_getenv() in preference to __secure_getenv()

If secure_getenv() use it in preference to __secure_getenv().
Starting with (e)glibc version 2.17, secure_getenv() exists, while
__secure_getenv() only works with shared library links (where it is a
weak symbol), but not for static links with /lib/libc.a

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
debian-1.42.9
Theodore Ts'o 2013-06-16 14:34:59 -04:00
parent dc9cc7006a
commit 1ad3174af5
7 changed files with 32 additions and 5 deletions

2
configure vendored
View File

@ -11010,7 +11010,7 @@ if test "$ac_res" != no; then :
fi
fi
for ac_func in __secure_getenv backtrace blkid_probe_get_topology chflags fallocate fallocate64 fchown fdatasync fstat64 ftruncate64 getdtablesize getmntinfo getpwuid_r getrlimit getrusage jrand48 llseek lseek64 mallinfo mbstowcs memalign mmap msync nanosleep open64 pathconf posix_fadvise posix_memalign prctl setmntent setresgid setresuid srandom strcasecmp strdup strnlen strptime strtoull sync_file_range sysconf usleep utime valloc
for ac_func in __secure_getenv backtrace blkid_probe_get_topology chflags fallocate fallocate64 fchown fdatasync fstat64 ftruncate64 getdtablesize getmntinfo getpwuid_r getrlimit getrusage jrand48 llseek lseek64 mallinfo mbstowcs memalign mmap msync nanosleep open64 pathconf posix_fadvise posix_memalign prctl secure_getenv setmntent setresgid setresuid srandom strcasecmp strdup strnlen strptime strtoull sync_file_range sysconf usleep utime valloc
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"

View File

@ -1025,6 +1025,7 @@ AC_CHECK_FUNCS(m4_flatten([
posix_fadvise
posix_memalign
prctl
secure_getenv
setmntent
setresgid
setresuid

View File

@ -11,6 +11,9 @@
*/
#include "config.h"
#if HAVE_SECURE_GETENV
#define _GNU_SOURCE
#endif
#if HAVE_UNISTD_H
#include <unistd.h>
#endif
@ -49,7 +52,9 @@ static char *safe_getenv(const char *arg)
#endif
#endif
#ifdef HAVE___SECURE_GETENV
#if defined(HAVE_SECURE_GETENV)
return secure_getenv(arg);
#elif defined(HAVE___SECURE_GETENV)
return __secure_getenv(arg);
#else
return getenv(arg);

View File

@ -296,6 +296,9 @@
/* Define to 1 if if struct sockaddr contains sa_len */
#undef HAVE_SA_LEN
/* Define to 1 if you have the `secure_getenv' function. */
#undef HAVE_SECURE_GETENV
/* Define to 1 if you have the <semaphore.h> header file. */
#undef HAVE_SEMAPHORE_H

View File

@ -17,6 +17,9 @@
*/
#include "config.h"
#if HAVE_SECURE_GETENV
#define _GNU_SOURCE
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -209,7 +212,9 @@ static char *safe_getenv(const char *arg)
#endif
#endif
#ifdef HAVE___SECURE_GETENV
#if defined(HAVE_SECURE_GETENV)
return secure_getenv(arg);
#elif defined(HAVE___SECURE_GETENV)
return __secure_getenv(arg);
#else
return getenv(arg);

View File

@ -10,6 +10,12 @@
*/
#include "config.h"
#if HAVE_SECURE_GETENV
#define _GNU_SOURCE
#endif
#if HAVE_SECURE_GETENV
#define _GNU_SOURCE
#endif
#include <stdio.h>
#include <string.h>
#if HAVE_UNISTD_H
@ -173,7 +179,9 @@ static char *safe_getenv(const char *arg)
#endif
#endif
#ifdef HAVE___SECURE_GETENV
#if defined(HAVE_SECURE_GETENV)
return secure_getenv(arg);
#elif defined(HAVE___SECURE_GETENV)
return __secure_getenv(arg);
#else
return getenv(arg);

View File

@ -15,6 +15,9 @@
*/
#include "config.h"
#if HAVE_SECURE_GETENV
#define _GNU_SOURCE
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@ -56,7 +59,9 @@ char *ss_safe_getenv(const char *arg)
#endif
#endif
#ifdef HAVE___SECURE_GETENV
#if defined(HAVE_SECURE_GETENV)
return secure_getenv(arg);
#elif defined(HAVE___SECURE_GETENV)
return __secure_getenv(arg);
#else
return getenv(arg);