Support falling back on older secure_getenv/getenv versions on older glibc

pull/4996/head
Craig Tiller 9 years ago
parent 6d7ae08a33
commit 9828aade97
  1. 7
      include/grpc/impl/codegen/port_platform.h
  2. 14
      src/core/support/env_linux.c

@ -153,19 +153,14 @@
#if __GLIBC_PREREQ(2, 10)
#define GPR_LINUX_SOCKETUTILS 1
#endif
#if __GLIBC_PREREQ(2, 17)
#define GPR_LINUX_ENV 1
#endif
#endif
#define GPR_LINUX_ENV 1
#ifndef GPR_LINUX_EVENTFD
#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
#endif
#ifndef GPR_LINUX_SOCKETUTILS
#define GPR_POSIX_SOCKETUTILS
#endif
#ifndef GPR_LINUX_ENV
#define GPR_POSIX_ENV 1
#endif
#define GPR_POSIX_FILE 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_SUBPROCESS 1

@ -49,8 +49,20 @@
#include "src/core/support/string.h"
char *__attribute__((weak)) secure_getenv(const char *name);
char *__attribute__((weak)) __secure_getenv(const char *name);
char *gpr_getenv(const char *name) {
char *result = secure_getenv(name);
static char *(*getenv_func)(const char *) = secure_getenv;
if (getenv_func == NULL) {
getenv_func = __secure_getenv;
if (getenv_func == NULL) {
gpr_log(GPR_DEBUG,
"No secure_getenv. Please consider upgrading your libc.");
getenv_func = getenv;
}
}
char *result = getenv_func(name);
return result == NULL ? result : gpr_strdup(result);
}

Loading…
Cancel
Save