aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorEugene Rudoy <gene.devel@gmail.com>2015-04-26 23:32:00 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2015-05-13 02:09:53 +0200
commit1285aa62f914ba894b82880e57bd81cfbc41f180 (patch)
tree17b1b5ea5ac4e277fc9b4555da8de6ca424fd314 /shell
parenta818777d4249e934ef7c9e6e7df8475d6692f315 (diff)
downloadbusybox-w32-1285aa62f914ba894b82880e57bd81cfbc41f180.tar.gz
busybox-w32-1285aa62f914ba894b82880e57bd81cfbc41f180.tar.bz2
busybox-w32-1285aa62f914ba894b82880e57bd81cfbc41f180.zip
ash: consider "local -" case while iterating over local variables in mklocal.
fixes segfault introduced in 0a0acb55db8d7c4dec445573f1b0528d126b9e1f with functions using "local -". test-case: f() { local -; local x; }; f note: with this change applied multiple 'local -'s still cause multiple entries to be added to the localvars list. this problem will be addressed in a separate commit. Signed-off-by: Eugene Rudoy <gene.devel@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r--shell/ash.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/shell/ash.c b/shell/ash.c
index c51fb804d..3e9997b53 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -8979,7 +8979,7 @@ mklocal(char *name)
8979 */ 8979 */
8980 lvp = localvars; 8980 lvp = localvars;
8981 while (lvp) { 8981 while (lvp) {
8982 if (varcmp(lvp->vp->var_text, name) == 0) { 8982 if (lvp->vp && varcmp(lvp->vp->var_text, name) == 0) {
8983 if (eq) 8983 if (eq)
8984 setvareq(name, 0); 8984 setvareq(name, 0);
8985 /* else: 8985 /* else: