Merged revisions 77499 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r77499 | antoine.pitrou | 2010-01-14 18:25:24 +0100 (jeu., 14 janv. 2010) | 4 lines Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. ........
This commit is contained in:
parent
959f318af3
commit
47c8ede0b8
|
@ -685,6 +685,12 @@ class ReTests(unittest.TestCase):
|
||||||
self.assertEqual(pattern.sub('#', 'a\nb\nc'), 'a#\nb#\nc#')
|
self.assertEqual(pattern.sub('#', 'a\nb\nc'), 'a#\nb#\nc#')
|
||||||
self.assertEqual(pattern.sub('#', '\n'), '#\n#')
|
self.assertEqual(pattern.sub('#', '\n'), '#\n#')
|
||||||
|
|
||||||
|
def test_dealloc(self):
|
||||||
|
# issue 3299: check for segfault in debug build
|
||||||
|
import _sre
|
||||||
|
long_overflow = sys.maxsize + 2
|
||||||
|
self.assertRaises(TypeError, re.finditer, "a", {})
|
||||||
|
self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow])
|
||||||
|
|
||||||
def run_re_tests():
|
def run_re_tests():
|
||||||
from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR
|
from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR
|
||||||
|
|
|
@ -48,6 +48,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #3299: Fix possible crash in the _sre module when given bad
|
||||||
|
argument values in debug mode. Patch by Victor Stinner.
|
||||||
|
|
||||||
- Issue #5827: Make sure that normpath preserves unicode. Initial patch
|
- Issue #5827: Make sure that normpath preserves unicode. Initial patch
|
||||||
by Matt Giuca.
|
by Matt Giuca.
|
||||||
|
|
||||||
|
|
|
@ -2684,6 +2684,10 @@ _compile(PyObject* self_, PyObject* args)
|
||||||
self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n);
|
self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n);
|
||||||
if (!self)
|
if (!self)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
self->weakreflist = NULL;
|
||||||
|
self->pattern = NULL;
|
||||||
|
self->groupindex = NULL;
|
||||||
|
self->indexgroup = NULL;
|
||||||
|
|
||||||
self->codesize = n;
|
self->codesize = n;
|
||||||
|
|
||||||
|
@ -2700,7 +2704,7 @@ _compile(PyObject* self_, PyObject* args)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PyErr_Occurred()) {
|
if (PyErr_Occurred()) {
|
||||||
PyObject_DEL(self);
|
Py_DECREF(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3718,7 +3722,7 @@ static void
|
||||||
scanner_dealloc(ScannerObject* self)
|
scanner_dealloc(ScannerObject* self)
|
||||||
{
|
{
|
||||||
state_fini(&self->state);
|
state_fini(&self->state);
|
||||||
Py_DECREF(self->pattern);
|
Py_XDECREF(self->pattern);
|
||||||
PyObject_DEL(self);
|
PyObject_DEL(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3840,10 +3844,11 @@ pattern_scanner(PatternObject* pattern, PyObject* args)
|
||||||
self = PyObject_NEW(ScannerObject, &Scanner_Type);
|
self = PyObject_NEW(ScannerObject, &Scanner_Type);
|
||||||
if (!self)
|
if (!self)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
self->pattern = NULL;
|
||||||
|
|
||||||
string = state_init(&self->state, pattern, string, start, end);
|
string = state_init(&self->state, pattern, string, start, end);
|
||||||
if (!string) {
|
if (!string) {
|
||||||
PyObject_DEL(self);
|
Py_DECREF(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue