>From f446b5811a8abc08bcc8202aa241dce82d4c917d Mon Sep 17 00:00:00 2001 From: Alexander Cherepanov Date: Mon, 4 Jan 2016 01:40:03 +0300 Subject: [PATCH] fix use of pointer after free in unsetenv the value of a pointer becomes indeterminate after free() so delay free() until the pointer is not needed anymore. --- src/env/unsetenv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/env/unsetenv.c b/src/env/unsetenv.c index 3569335..b5d8b19 100644 --- a/src/env/unsetenv.c +++ b/src/env/unsetenv.c @@ -19,9 +19,10 @@ again: if (__environ[i]) { if (__env_map) { for (j=0; __env_map[j] && __env_map[j] != __environ[i]; j++); - free (__env_map[j]); + char *t =__env_map[j]; for (; __env_map[j]; j++) __env_map[j] = __env_map[j+1]; + free (t); } for (; __environ[i]; i++) __environ[i] = __environ[i+1]; -- 1.7.10.4