aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/support/env_linux.c
diff options
context:
space:
mode:
authorGravatar ncteisen <ncteisen@gmail.com>2017-07-12 07:50:09 -0700
committerGravatar ncteisen <ncteisen@gmail.com>2017-07-18 17:05:28 -0700
commit79764a3bfbdec89b93b2f4a52b73e4b2ec275226 (patch)
tree12cfe4cb67995d11ab3f28f4ac58add974e49e92 /src/core/lib/support/env_linux.c
parent85fac6df5711b418fabc87680d304e25171515f8 (diff)
Quiet down getenv
Diffstat (limited to 'src/core/lib/support/env_linux.c')
-rw-r--r--src/core/lib/support/env_linux.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/core/lib/support/env_linux.c b/src/core/lib/support/env_linux.c
index 0c79a2c401..bc488e1b06 100644
--- a/src/core/lib/support/env_linux.c
+++ b/src/core/lib/support/env_linux.c
@@ -38,8 +38,10 @@
#include "src/core/lib/support/string.h"
-char *gpr_getenv(const char *name) {
-#if defined(GPR_BACKWARDS_COMPATIBILITY_MODE)
+char *gpr_getenv_silent(const char *name, char** dst) {
+ char* insecure_func_used = NULL;
+ char* result = NULL;
+ #if defined(GPR_BACKWARDS_COMPATIBILITY_MODE)
typedef char *(*getenv_type)(const char *);
static getenv_type getenv_func = NULL;
/* Check to see which getenv variant is supported (go from most
@@ -48,22 +50,29 @@ char *gpr_getenv(const char *name) {
for (size_t i = 0; getenv_func == NULL && i < GPR_ARRAY_SIZE(names); i++) {
getenv_func = (getenv_type)dlsym(RTLD_DEFAULT, names[i]);
if (getenv_func != NULL && strstr(names[i], "secure") == NULL) {
- gpr_log(GPR_DEBUG,
- "Warning: insecure environment read function '%s' used",
- names[i]);
+ insecure_func_used = names[i];
}
}
- char *result = getenv_func(name);
- return result == NULL ? result : gpr_strdup(result);
+ result = getenv_func(name);
#elif __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 17)
- char *result = secure_getenv(name);
- return result == NULL ? result : gpr_strdup(result);
+ result = secure_getenv(name);
#else
- gpr_log(GPR_DEBUG, "Warning: insecure environment read function '%s' used",
- "getenv");
- char *result = getenv(name);
- return result == NULL ? result : gpr_strdup(result);
+ result = getenv(name);
+ insecure_func_used = "getenv";
#endif
+ *dst = result == NULL ? result : gpr_strdup(result);
+ return insecure_func_used;
+}
+
+char *gpr_getenv(const char *name) {
+ char* result = NULL;
+ char* insecure_func_used = gpr_getenv_silent(name, &result);
+ if (insecure_func_used != NULL) {
+ gpr_log(GPR_DEBUG,
+ "Warning: insecure environment read function '%s' used",
+ insecure_func_used);
+ }
+ return result;
}
void gpr_setenv(const char *name, const char *value) {