aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/support
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-02-01 14:07:34 -0800
committerGravatar Craig Tiller <ctiller@google.com>2016-02-01 14:07:34 -0800
commit9828aade971a152fe8cfb43d8bfeab311de03845 (patch)
treee6936aa5aca82fe5f1563494aa48e2ad3d4685fc /src/core/support
parent6d7ae08a3376377e11f8e3fe043e0b45dbde48aa (diff)
Support falling back on older secure_getenv/getenv versions on older glibc
Diffstat (limited to 'src/core/support')
-rw-r--r--src/core/support/env_linux.c14
1 files changed, 13 insertions, 1 deletions
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);
}