[git commit] ash: consider "local -" case while iterating over local variables in mklocal.

Denys Vlasenko vda.linux at googlemail.com
Wed May 13 00:09:53 UTC 2015


commit: http://git.busybox.net/busybox/commit/?id=1285aa62f914ba894b82880e57bd81cfbc41f180
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

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 at gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index c51fb80..3e9997b 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -8979,7 +8979,7 @@ mklocal(char *name)
 	 */
 	lvp = localvars;
 	while (lvp) {
-		if (varcmp(lvp->vp->var_text, name) == 0) {
+		if (lvp->vp && varcmp(lvp->vp->var_text, name) == 0) {
 			if (eq)
 				setvareq(name, 0);
 			/* else:


More information about the busybox-cvs mailing list