Tcl Source Code

Check-in [859928772a]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:[Bug 3606139]: missing error check allows regexp to crash Tcl. Thanks to Tom Lane for providing the test-case and the patch.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-5-branch
Files: files | file ages | folders
SHA1: 859928772a0eef4554755acbe9cb912b816004e9
User & Date: jan.nijtmans 2013-02-27 08:12:33
Context
2013-02-27
13:23
Wrap test-case over multiple lines check-in: 61a68a853a user: jan.nijtmans tags: core-8-5-branch
08:19
[Bug 3606139]: missing error check allows regexp to crash Tcl. Thanks to Tom Lane for providing the ... check-in: 3cb628fa5e user: jan.nijtmans tags: trunk
08:12
[Bug 3606139]: missing error check allows regexp to crash Tcl. Thanks to Tom Lane for providing the ... check-in: 859928772a user: jan.nijtmans tags: core-8-5-branch
08:02
[Bug 3606139]: missing error check allows regexp to crash Tcl. Thanks to Tom Lane for providing the ... check-in: bb1ca6484d user: jan.nijtmans tags: core-8-4-branch
2013-02-26
17:37
structs *ChannelHandler* GetsState CopyState used only locally. Remove from tclIO.h. check-in: cee6202b4c user: dgp tags: core-8-5-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.







1
2
3
4
5
6
7






2013-02-26  Jan Nijtmans  <[email protected]>

	* generic/tclObj.c: Don't panic if Tcl_ConvertToType is called for a
	type that doesn't have a setFromAnyProc, create a proper error message.

2013-02-25  Don Porter  <[email protected]>

>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2013-02-27  Jan Nijtmans  <[email protected]>

	* generic/regcomp.c:	[Bug 3606139]: missing error check allows
	* tests/regexp.test:    regexp to crash Tcl. Thanks to Tom Lane
	for providing the test-case and the patch.

2013-02-26  Jan Nijtmans  <[email protected]>

	* generic/tclObj.c: Don't panic if Tcl_ConvertToType is called for a
	type that doesn't have a setFromAnyProc, create a proper error message.

2013-02-25  Don Porter  <[email protected]>

Changes to generic/regcomp.c.

734
735
736
737
738
739
740

741
742
743
744
745
746
747
	    NOERRN();
	    moveins(v->nfa, right, lp);
	}
	seencontent = 1;

	/* NB, recursion in parseqatom() may swallow rest of branch */
	parseqatom(v, stopper, type, lp, right, t);

    }

    if (!seencontent) {		/* empty branch */
	if (!partial) {
	    NOTE(REG_UUNSPEC);
	}
	assert(lp == left);







>







734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
	    NOERRN();
	    moveins(v->nfa, right, lp);
	}
	seencontent = 1;

	/* NB, recursion in parseqatom() may swallow rest of branch */
	parseqatom(v, stopper, type, lp, right, t);
	NOERRN();
    }

    if (!seencontent) {		/* empty branch */
	if (!partial) {
	    NOTE(REG_UUNSPEC);
	}
	assert(lp == left);
1230
1231
1232
1233
1234
1235
1236

1237
1238
1239
1240
1241
1242
1243
    t = top->right;
    if (!(SEE('|') || SEE(stopper) || SEE(EOS))) {
	t->right = parsebranch(v, stopper, type, atom->end, rp, 1);
    } else {
	EMPTYARC(atom->end, rp);
	t->right = subre(v, '=', 0, atom->end, rp);
    }

    assert(SEE('|') || SEE(stopper) || SEE(EOS));
    t->flags |= COMBINE(t->flags, t->right->flags);
    top->flags |= COMBINE(top->flags, t->flags);
}

/*
 - nonword - generate arcs for non-word-character ahead or behind







>







1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
    t = top->right;
    if (!(SEE('|') || SEE(stopper) || SEE(EOS))) {
	t->right = parsebranch(v, stopper, type, atom->end, rp, 1);
    } else {
	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);
}

/*
 - nonword - generate arcs for non-word-character ahead or behind

Changes to tests/regexp.test.

cannot compute difference between binary files