From 9828aade971a152fe8cfb43d8bfeab311de03845 Mon Sep 17 00:00:00 2001 From: Craig Tiller <ctiller@google.com> Date: Mon, 1 Feb 2016 14:07:34 -0800 Subject: [PATCH] Support falling back on older secure_getenv/getenv versions on older glibc --- include/grpc/impl/codegen/port_platform.h | 7 +------ src/core/support/env_linux.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h index 30edbc7251..d5294b2efa 100644 --- a/include/grpc/impl/codegen/port_platform.h +++ b/include/grpc/impl/codegen/port_platform.h @@ -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 diff --git a/src/core/support/env_linux.c b/src/core/support/env_linux.c index 2e03365e33..183bcd2bd0 100644 --- a/src/core/support/env_linux.c +++ b/src/core/support/env_linux.c @@ -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); } -- GitLab