Merge pull request #19691 from veblush/getenv

Remove warning for old linux without secure_getenv
pull/19699/head
Esun Kim 6 years ago committed by GitHub
commit e1ed4df052
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 31
      src/core/lib/gpr/env_linux.cc
  2. 5
      src/core/lib/gpr/env_posix.cc

@ -38,19 +38,20 @@
#include "src/core/lib/gpr/string.h" #include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h" #include "src/core/lib/gpr/useful.h"
static const char* gpr_getenv_silent(const char* name, char** dst) { char* gpr_getenv(const char* name) {
const char* insecure_func_used = nullptr;
char* result = nullptr; char* result = nullptr;
#if defined(GPR_BACKWARDS_COMPATIBILITY_MODE) #if defined(GPR_BACKWARDS_COMPATIBILITY_MODE)
typedef char* (*getenv_type)(const char*); typedef char* (*getenv_type)(const char*);
static getenv_type getenv_func = NULL; static getenv_type getenv_func = nullptr;
/* Check to see which getenv variant is supported (go from most /* Check to see which getenv variant is supported (go from most
* to least secure) */ * to least secure) */
const char* names[] = {"secure_getenv", "__secure_getenv", "getenv"}; if (getenv_func == nullptr) {
for (size_t i = 0; getenv_func == NULL && i < GPR_ARRAY_SIZE(names); i++) { const char* names[] = {"secure_getenv", "__secure_getenv", "getenv"};
getenv_func = (getenv_type)dlsym(RTLD_DEFAULT, names[i]); for (size_t i = 0; i < GPR_ARRAY_SIZE(names); i++) {
if (getenv_func != NULL && strstr(names[i], "secure") == NULL) { getenv_func = (getenv_type)dlsym(RTLD_DEFAULT, names[i]);
insecure_func_used = names[i]; if (getenv_func != nullptr) {
break;
}
} }
} }
result = getenv_func(name); result = getenv_func(name);
@ -58,20 +59,8 @@ static const char* gpr_getenv_silent(const char* name, char** dst) {
result = secure_getenv(name); result = secure_getenv(name);
#else #else
result = getenv(name); result = getenv(name);
insecure_func_used = "getenv";
#endif #endif
*dst = result == nullptr ? result : gpr_strdup(result); return result == nullptr ? result : gpr_strdup(result);
return insecure_func_used;
}
char* gpr_getenv(const char* name) {
char* result = nullptr;
const char* insecure_func_used = gpr_getenv_silent(name, &result);
if (insecure_func_used != nullptr) {
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) { void gpr_setenv(const char* name, const char* value) {

@ -29,11 +29,6 @@
#include <grpc/support/string_util.h> #include <grpc/support/string_util.h>
#include "src/core/lib/gpr/string.h" #include "src/core/lib/gpr/string.h"
const char* gpr_getenv_silent(const char* name, char** dst) {
*dst = gpr_getenv(name);
return nullptr;
}
char* gpr_getenv(const char* name) { char* gpr_getenv(const char* name) {
char* result = getenv(name); char* result = getenv(name);
return result == nullptr ? result : gpr_strdup(result); return result == nullptr ? result : gpr_strdup(result);

Loading…
Cancel
Save