diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-02-27 08:12:33 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2013-02-27 08:12:33 (GMT) |
commit | 99a464dbfc99a425d7f7bb571d575e43b0e63539 (patch) | |
tree | 30a48979b46f147313fb84c66a8a86b619308354 /generic/regcomp.c | |
parent | 12dc5d93bc70918987c5ef619c42544ba0019c7a (diff) | |
parent | be449c196746dca12d429e2dfd39fb7af33a121c (diff) | |
download | tcl-99a464dbfc99a425d7f7bb571d575e43b0e63539.zip tcl-99a464dbfc99a425d7f7bb571d575e43b0e63539.tar.gz tcl-99a464dbfc99a425d7f7bb571d575e43b0e63539.tar.bz2 |
[Bug 3606139]: missing error check allows regexp to crash Tcl. Thanks to Tom Lane for providing the test-case and the patch.
Diffstat (limited to 'generic/regcomp.c')
-rw-r--r-- | generic/regcomp.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/generic/regcomp.c b/generic/regcomp.c index 6dea04b..ca4fc01 100644 --- a/generic/regcomp.c +++ b/generic/regcomp.c @@ -738,6 +738,7 @@ parsebranch( /* NB, recursion in parseqatom() may swallow rest of branch */ parseqatom(v, stopper, type, lp, right, t); + NOERRN(); } if (!seencontent) { /* empty branch */ @@ -1234,6 +1235,7 @@ parseqatom( EMPTYARC(atom->end, rp); t->right = subre(v, '=', 0, atom->end, rp); } + NOERR(); assert(SEE('|') || SEE(stopper) || SEE(EOS)); t->flags |= COMBINE(t->flags, t->right->flags); top->flags |= COMBINE(top->flags, t->flags); |