expand: Fix trailing newlines processing in backquote expanding
diff mbox series

Message ID 20190429141337.6804-1-n.merinov@inango-systems.com
State Under Review
Delegated to: Herbert Xu
Headers show
Series
  • expand: Fix trailing newlines processing in backquote expanding
Related show

Commit Message

Nikolai Merinov April 29, 2019, 2:13 p.m. UTC
According to POSIX.1-2008 we should remove newlines only at the end of
the substitution. Newlines-only substitions causes dash to remove
newlines before beggining of the substitution. The following code:

    cat <<END
    1
    $(echo "")
    2
    END

prints "1<newline>2" instead of expected "1<newline><newline>2".

This patch fixes trailing newlines processing in backquote expanding.

Signed-off-by: Nikolai Merinov <n.merinov@inango-systems.com>
---
 src/expand.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/src/expand.c b/src/expand.c
index af9cac9..1b1f95e 100644
--- a/src/expand.c
+++ b/src/expand.c
@@ -525,7 +525,7 @@  read:
 
 	/* Eat all trailing newlines */
 	dest = expdest;
-	for (; dest > (char *)stackblock() && dest[-1] == '\n';)
+	for (; dest > ((char *)stackblock() + startloc) && dest[-1] == '\n';)
 		STUNPUTC(dest);
 	expdest = dest;