svn commit: r208656 - in head: bin/sh tools/regression/bin/sh/parser
Jilles Tjoelker
jilles at FreeBSD.org
Sun May 30 14:20:32 UTC 2010
Author: jilles
Date: Sun May 30 14:20:32 2010
New Revision: 208656
URL: http://svn.freebsd.org/changeset/base/208656
Log:
sh: Fix a crash if a heredoc was not properly ended and parsing continued.
Example (in interactive mode):
cat <<EOF && )
The next command typed caused sh to segfault, because the state for the here
document was not reset.
Like parser_temp, this uses the fact that the parser is not re-entered.
Added:
head/tools/regression/bin/sh/parser/heredoc6.0 (contents, props changed)
Modified:
head/bin/sh/parser.c
Modified: head/bin/sh/parser.c
==============================================================================
--- head/bin/sh/parser.c Sun May 30 14:11:27 2010 (r208655)
+++ head/bin/sh/parser.c Sun May 30 14:20:32 2010 (r208656)
@@ -203,6 +203,7 @@ parsecmd(int interact)
* which could happen if we add command substitution on PS1/PS2.
*/
parser_temp_free_all();
+ heredoclist = NULL;
tokpushback = 0;
doprompt = interact;
Added: head/tools/regression/bin/sh/parser/heredoc6.0
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tools/regression/bin/sh/parser/heredoc6.0 Sun May 30 14:20:32 2010 (r208656)
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+r=
+! command eval ": <<EOF; )" 2>/dev/null; command eval : hi \${r:=0}
+exit ${r:-3}
More information about the svn-src-all
mailing list