summary refs log tree commit diff
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2018-11-19 18:41:20 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2018-12-14 13:48:03 +0800
commit878514712c5d21f675c45d99d2f8a04098ea4a19 (patch)
tree3dfac919984b546e9d305ec4795644d62a27b41a
parenteval: Use the correct expansion mode for fd redirection (diff)
downloaddash-878514712c5d21f675c45d99d2f8a04098ea4a19.tar.gz
dash-878514712c5d21f675c45d99d2f8a04098ea4a19.zip
expand: Eat closing brace for length parameter expansion
When we are doing VSLENGTH expansion, the closing brace is currently
not removed in evalvar.  This causes the caller argstr to terminate
prematurely as it would interpret the closing brace as one that
belongs to a parameter expansion at the outer level.

This patch fixes it.

Reported-by: Martijn Dekker <martijn@inlv.org>
Fixes: 3cd538634f71 ("expand: Do not reprocess data when...")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--src/expand.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/expand.c b/src/expand.c
index 856b7a9..af9cac9 100644
--- a/src/expand.c
+++ b/src/expand.c
@@ -745,6 +745,7 @@ again:
 		varunset(p, var, 0, 0);
 
 	if (subtype == VSLENGTH) {
+		p++;
 		if (flag & EXP_DISCARD)
 			return p;
 		cvtnum(varlen > 0 ? varlen : 0, flag);