Skip to content

Commit 452ce40

Browse files
author
Erlend E. Aasland
committed
Raise DataError if query contains null chars
1 parent e51d6c1 commit 452ce40

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

Lib/sqlite3/test/regression.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -338,12 +338,16 @@ def test_invalid_isolation_level_type(self):
338338

339339
def test_null_character(self):
340340
# Issue #21147
341-
con = sqlite.connect(":memory:")
342-
self.assertRaises(ValueError, con, "\0select 1")
343-
self.assertRaises(ValueError, con, "select 1\0")
344-
cur = con.cursor()
345-
self.assertRaises(ValueError, cur.execute, " \0select 2")
346-
self.assertRaises(ValueError, cur.execute, "select 2\0")
341+
cur = self.con.cursor()
342+
queries = ["\0select 1", "select 1\0"]
343+
msg = "the query contains a null character"
344+
for query in queries:
345+
with self.subTest(query=query):
346+
self.assertRaisesRegex(sqlite.DataError, msg,
347+
self.con.execute, query)
348+
with self.subTest(query=query):
349+
self.assertRaisesRegex(sqlite.DataError, msg,
350+
cur.execute, query)
347351

348352
def test_surrogates(self):
349353
con = sqlite.connect(":memory:")

Modules/_sqlite/statement.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql)
6767
return NULL;
6868
}
6969
if (strlen(sql_cstr) != (size_t)size) {
70-
PyErr_SetString(PyExc_ValueError,
70+
PyErr_SetString(connection->DataError,
7171
"the query contains a null character");
7272
return NULL;
7373
}

0 commit comments

Comments
 (0)