diff options
author | 2016-02-01 14:07:34 -0800 | |
---|---|---|
committer | 2016-02-01 14:07:34 -0800 | |
commit | 9828aade971a152fe8cfb43d8bfeab311de03845 (patch) | |
tree | e6936aa5aca82fe5f1563494aa48e2ad3d4685fc /src/core/support | |
parent | 6d7ae08a3376377e11f8e3fe043e0b45dbde48aa (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.c | 14 |
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); } |