diff options
Diffstat (limited to 'lib/sanitizer_common/sanitizer_linux.cc')
-rw-r--r-- | lib/sanitizer_common/sanitizer_linux.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/sanitizer_common/sanitizer_linux.cc b/lib/sanitizer_common/sanitizer_linux.cc index ef185571a..1c9cbf83a 100644 --- a/lib/sanitizer_common/sanitizer_linux.cc +++ b/lib/sanitizer_common/sanitizer_linux.cc @@ -278,6 +278,20 @@ bool SetEnv(const char *name, const char *value) { } #endif +void UnsetEnv(const char *name) { + uptr name_length = internal_strlen(name); + uptr last = 0; + while (environ[last]) last++; + for (uptr i = 0; environ[i]; i++) + if (internal_strlen(environ[i]) >= name_length + 1 && + internal_strncmp(environ[i], name, name_length) == 0 && + environ[i][name_length] == '=') { + last--; + environ[i] = environ[last]; + environ[last] = 0; + } +} + #ifdef __GLIBC__ extern "C" { |