diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2013-12-19 15:39:00 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2013-12-19 15:39:00 (GMT) |
commit | 08263f10f8b9374cccf47591c3ccc64fb888d269 (patch) | |
tree | 282f80787b548ed341b77dfe1fb4c536dfe036fb | |
parent | cf58fb5e2947ebe6ac1e06b7f8fbe9a417b7430f (diff) | |
parent | cb1f74ec405b81dd1319b616829dd576a48603f8 (diff) | |
download | cpython-08263f10f8b9374cccf47591c3ccc64fb888d269.zip cpython-08263f10f8b9374cccf47591c3ccc64fb888d269.tar.gz cpython-08263f10f8b9374cccf47591c3ccc64fb888d269.tar.bz2 |
(Merge 3.3) Issue #20026: Fix the sqlite module to handle correctly invalid
isolation level (wrong type).
-rw-r--r-- | Lib/sqlite3/test/regression.py | 5 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/_sqlite/connection.c | 5 |
3 files changed, 12 insertions, 1 deletions
diff --git a/Lib/sqlite3/test/regression.py b/Lib/sqlite3/test/regression.py index b927cb3..c557ab6 100644 --- a/Lib/sqlite3/test/regression.py +++ b/Lib/sqlite3/test/regression.py @@ -330,6 +330,11 @@ class RegressionTests(unittest.TestCase): datetime.datetime(2012, 4, 4, 15, 6, 0, 123456), ]) + def CheckInvalidIsolationLevelType(self): + # isolation level is a string, not an integer + self.assertRaises(TypeError, + sqlite.connect, ":memory:", isolation_level=123) + def suite(): regression_suite = unittest.makeSuite(RegressionTests, "Check") @@ -44,6 +44,9 @@ Core and Builtins Library ------- +- Issue #20026: Fix the sqlite module to handle correctly invalid isolation + level (wrong type). + - Issue #18829: csv.Dialect() now checks type for delimiter, escapechar and quotechar fields. Original patch by Vajrasky Kok. diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 50c6f0a..882424b 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -128,7 +128,10 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject Py_INCREF(isolation_level); } self->isolation_level = NULL; - pysqlite_connection_set_isolation_level(self, isolation_level); + if (pysqlite_connection_set_isolation_level(self, isolation_level) < 0) { + Py_DECREF(isolation_level); + return -1; + } Py_DECREF(isolation_level); self->statement_cache = (pysqlite_Cache*)PyObject_CallFunction((PyObject*)&pysqlite_CacheType, "Oi", self, cached_statements); |