mirror of
git://git.code.sf.net/p/zsh/code
synced 2026-01-06 09:41:07 +01:00
29703: crash when failing to parse process substitutions
This commit is contained in:
parent
815e52cdbf
commit
85b00bb0f7
4 changed files with 18 additions and 2 deletions
|
|
@ -1,5 +1,7 @@
|
|||
2011-08-17 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* 29703: Src/exec.c, Src/subst.c, Test/D03procsubst.ztst:
|
||||
|
||||
* users/16253, users/16255: Src/utils.c, Test/D04parameter.ztst:
|
||||
A nulstring should be split like an empty string.
|
||||
|
||||
|
|
@ -15297,5 +15299,5 @@
|
|||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.5438 $
|
||||
* $Revision: 1.5439 $
|
||||
*****************************************************
|
||||
|
|
|
|||
10
Src/exec.c
10
Src/exec.c
|
|
@ -3755,7 +3755,15 @@ parsecmd(char *cmd, char **eptr)
|
|||
|
||||
for (str = cmd + 2; *str && *str != Outpar; str++);
|
||||
if (!*str || cmd[1] != Inpar) {
|
||||
zerr("oops.");
|
||||
/*
|
||||
* This can happen if the expression is being parsed
|
||||
* inside another construct, e.g. as a value within ${..:..} etc.
|
||||
* So print a proper error message instead of the not very
|
||||
* useful but traditional "oops".
|
||||
*/
|
||||
char *errstr = dupstrpfx(cmd, 2);
|
||||
untokenize(errstr);
|
||||
zerr("unterminated `%s...)'", errstr);
|
||||
return NULL;
|
||||
}
|
||||
*str = '\0';
|
||||
|
|
|
|||
|
|
@ -162,6 +162,8 @@ stringsubst(LinkList list, LinkNode node, int ssub, int asssub)
|
|||
subst = getproc(str, &rest); /* <(...) or >(...) */
|
||||
else
|
||||
subst = getoutputfile(str, &rest); /* =(...) */
|
||||
if (errflag)
|
||||
return NULL;
|
||||
if (!subst)
|
||||
subst = "";
|
||||
|
||||
|
|
|
|||
|
|
@ -84,3 +84,7 @@
|
|||
)
|
||||
0:=(...) preceded by other stuff has no special effect
|
||||
>everything,=(here is left),alone
|
||||
|
||||
print something=${:-=(echo 'C,D),(F,G)'}
|
||||
1: Graceful handling of bad substitution in enclosed context
|
||||
?(eval):1: unterminated `=(...)'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue