From 2cbf9d7e65b2f5aeb51c165cdf9033938cba50e6 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 19 Feb 2015 12:01:16 +0000 Subject: 34573: Safer failure to handle command substitution --- ChangeLog | 3 +++ Src/subst.c | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7610357dd..a621044f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2015-02-19 Peter Stephenson + * 34573: Src/subst.c: safer handling of failure to perform + command substitution. + * 34570: Config/version.mk, Src/lex.c, Src/subst.c, Src/zsh.h, Test/C01arith.ztst: mark arithmetic substitutions with tokens so the substitution code knows what to do. diff --git a/Src/subst.c b/Src/subst.c index 056b12b27..176a004ac 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -264,7 +264,7 @@ stringsubst(LinkList list, LinkNode node, int pf_flags, int asssub) while (*str != Outparmath && *str) str++; if (*str != Outparmath) { - zerr("Failed to find end of math substitution"); + zerr("failed to find end of math substitution"); return NULL; } str[-1] = '\0'; @@ -278,8 +278,12 @@ stringsubst(LinkList list, LinkNode node, int pf_flags, int asssub) endchar = c; *str = '\0'; - while (*++str != endchar) - DPUTS(!*str, "BUG: parse error in command substitution"); + while (*++str != endchar) { + if (!*str) { + zerr("failed to find end of command substitution"); + return NULL; + } + } } *str++ = '\0'; -- cgit 1.4.1