From c07f66d14e9b77db9ecc17fb77a3077511a0aa46 Mon Sep 17 00:00:00 2001 From: Larry Doolittle Date: Fri, 7 Mar 2008 20:22:17 +0800 Subject: [JOBS] Fix cmdtxt crash on if statements (Herbert: for context, see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=467065 ) This is a real bug in upstream dash, which has existed since at least dash-0.5.1 (July 2004). It is a latent bug in cmdtxt() (which I think applies only to pipes) as it handles "if" commands. The attached patch fixes it for me. It's possible this patch will fix one or more of #462414, #462977, and #463649. I'll send messages there to see if the submitters can test. Signed-off-by: Herbert Xu --- src/jobs.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/jobs.c') diff --git a/src/jobs.c b/src/jobs.c index 529d615..40dc8f6 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -1235,11 +1235,12 @@ donode: cmdputs("if "); cmdtxt(n->nif.test); cmdputs("; then "); - n = n->nif.ifpart; if (n->nif.elsepart) { - cmdtxt(n); + cmdtxt(n->nif.ifpart); cmdputs("; else "); n = n->nif.elsepart; + } else { + n = n->nif.ifpart; } p = "; fi"; goto dotail; -- cgit 1.4.1