aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2015-10-30 19:07:37 +0000
committerDenys Vlasenko <vda.linux@googlemail.com>2015-10-30 22:23:13 +0100
commit95650a86d176ee83a264fd9e7047c414b71ee7cb (patch)
treeb19e6bf3825cd00040df90826249a3c490a51e0a
parent8c55dc79a79d6a16c364e6b1f849bf426f21fcbb (diff)
downloadbusybox-w32-95650a86d176ee83a264fd9e7047c414b71ee7cb.tar.gz
busybox-w32-95650a86d176ee83a264fd9e7047c414b71ee7cb.tar.bz2
busybox-w32-95650a86d176ee83a264fd9e7047c414b71ee7cb.zip
ash: allow popredir to be called if the stack is empty
If /tmp/test.sh is a script that tries to run a second script which happens to be non-executable this: command . /tmp/test.sh causes a seg fault. This is because clearredir is called in the error path to clear the stack of redirections. The normal path then calls popredir, but popredir fails when the stack is empty. Reported-by: Bastian Bittorf <bittorf@bluebottle.com> Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--shell/ash.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/shell/ash.c b/shell/ash.c
index c333b235b..84502636a 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -5409,7 +5409,7 @@ popredir(int drop, int restore)
5409 struct redirtab *rp; 5409 struct redirtab *rp;
5410 int i; 5410 int i;
5411 5411
5412 if (--g_nullredirs >= 0) 5412 if (--g_nullredirs >= 0 || redirlist == NULL)
5413 return; 5413 return;
5414 INT_OFF; 5414 INT_OFF;
5415 rp = redirlist; 5415 rp = redirlist;