summaryrefslogtreecommitdiff
path: root/lib/sanitizer_common/sanitizer_linux.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sanitizer_common/sanitizer_linux.cc')
-rw-r--r--lib/sanitizer_common/sanitizer_linux.cc14
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" {