mirror of
https://github.com/python/cpython.git
synced 2024-11-26 11:24:40 +08:00
Merged revisions 77501 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r77501 | antoine.pitrou | 2010-01-14 18:34:48 +0100 (jeu., 14 janv. 2010) | 10 lines 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
9000c1614d
commit
0560e8a8f8
@ -696,6 +696,12 @@ class ReTests(unittest.TestCase):
|
||||
self.assertRaises(ValueError, re.compile, '(?a)\w', re.UNICODE)
|
||||
self.assertRaises(ValueError, re.compile, '(?au)\w')
|
||||
|
||||
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():
|
||||
from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR
|
||||
|
@ -65,6 +65,9 @@ Core and Builtins
|
||||
Library
|
||||
-------
|
||||
|
||||
- Issue #3299: Fix possible crash in the _sre module when given bad
|
||||
argument values in debug mode. Patch by Victor Stinner.
|
||||
|
||||
- Issue #7681: Use floor division in appropiate places in the wave module.
|
||||
|
||||
- Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since
|
||||
|
@ -2674,6 +2674,10 @@ _compile(PyObject* self_, PyObject* args)
|
||||
self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n);
|
||||
if (!self)
|
||||
return NULL;
|
||||
self->weakreflist = NULL;
|
||||
self->pattern = NULL;
|
||||
self->groupindex = NULL;
|
||||
self->indexgroup = NULL;
|
||||
|
||||
self->codesize = n;
|
||||
|
||||
@ -2689,7 +2693,7 @@ _compile(PyObject* self_, PyObject* args)
|
||||
}
|
||||
|
||||
if (PyErr_Occurred()) {
|
||||
PyObject_DEL(self);
|
||||
Py_DECREF(self);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -3730,7 +3734,7 @@ static void
|
||||
scanner_dealloc(ScannerObject* self)
|
||||
{
|
||||
state_fini(&self->state);
|
||||
Py_DECREF(self->pattern);
|
||||
Py_XDECREF(self->pattern);
|
||||
PyObject_DEL(self);
|
||||
}
|
||||
|
||||
@ -3860,10 +3864,11 @@ pattern_scanner(PatternObject* pattern, PyObject* args)
|
||||
self = PyObject_NEW(ScannerObject, &Scanner_Type);
|
||||
if (!self)
|
||||
return NULL;
|
||||
self->pattern = NULL;
|
||||
|
||||
string = state_init(&self->state, pattern, string, start, end);
|
||||
if (!string) {
|
||||
PyObject_DEL(self);
|
||||
Py_DECREF(self);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user