about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2013-12-30 23:31:35 -0800
committerBarton E. Schaefer <schaefer@zsh.org>2013-12-30 23:31:35 -0800
commit120145561f94fdd4738ef493928772739fbae28a (patch)
tree2a9e993570bbad043d3dfe739be4847e9b7b800c
parentea55ea039d6637436896c415073699aa0b39b6e6 (diff)
downloadzsh-120145561f94fdd4738ef493928772739fbae28a.tar.gz
zsh-120145561f94fdd4738ef493928772739fbae28a.tar.xz
zsh-120145561f94fdd4738ef493928772739fbae28a.zip
32208: always reset pathchecked when the path array is modified
-rw-r--r--ChangeLog3
-rw-r--r--Src/params.c8
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index d1bd64b3f..950d44d9a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2013-12-30  Barton E. Schaefer  <schaefer@zsh.org>
 
+	* 32208: Src/params.c: always reset pathchecked when the path
+	array is modified in arrvarsetfn(), to avoid bad dereference
+
 	* 32205: Completion/Zsh/Command/_cd: skip cdpath search when
 	the prefix begins with "../" (bug introduced by 31714)
 
diff --git a/Src/params.c b/Src/params.c
index 26ad6b221..ad9e3470b 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -3380,8 +3380,12 @@ arrvarsetfn(Param pm, char **x)
 	*dptr = mkarray(NULL);
     else
 	*dptr = x;
-    if (pm->ename && x)
-	arrfixenv(pm->ename, x);
+    if (pm->ename) {
+	if (x)
+	    arrfixenv(pm->ename, x);
+	else if (*dptr == path)
+	    pathchecked = path;
+    }
 }
 
 /**/