diff options
author | Ron Yorston | 2015-10-30 19:07:37 +0000 |
---|---|---|
committer | Denys Vlasenko | 2015-10-30 22:23:13 +0100 |
commit | 95650a86d176ee83a264fd9e7047c414b71ee7cb (patch) | |
tree | b19e6bf3825cd00040df90826249a3c490a51e0a /shell | |
parent | 8c55dc79a79d6a16c364e6b1f849bf426f21fcbb (diff) | |
download | busybox-95650a86d176ee83a264fd9e7047c414b71ee7cb.zip busybox-95650a86d176ee83a264fd9e7047c414b71ee7cb.tar.gz |
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>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/shell/ash.c b/shell/ash.c index c333b23..8450263 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -5409,7 +5409,7 @@ popredir(int drop, int restore) struct redirtab *rp; int i; - if (--g_nullredirs >= 0) + if (--g_nullredirs >= 0 || redirlist == NULL) return; INT_OFF; rp = redirlist; |