From 5957f5d31ad126181d70a8a7405eccd76ab1cdb4 Mon Sep 17 00:00:00 2001 From: Jiseok CHOI Date: Wed, 16 Jul 2025 01:53:20 +0900 Subject: [PATCH] Fix off-by-one error in SQL length limit check (#5982) --- Lib/test/test_sqlite3/test_regression.py | 2 -- stdlib/src/sqlite.rs | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/Lib/test/test_sqlite3/test_regression.py b/Lib/test/test_sqlite3/test_regression.py index ab265b180..e00e1bc64 100644 --- a/Lib/test/test_sqlite3/test_regression.py +++ b/Lib/test/test_sqlite3/test_regression.py @@ -349,8 +349,6 @@ class RegressionTests(unittest.TestCase): self.assertRaises(UnicodeEncodeError, cur.execute, "select '\ud8ff'") self.assertRaises(UnicodeEncodeError, cur.execute, "select '\udcff'") - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_large_sql(self): msg = "query string is too large" with memory_database() as cx, cx_limit(cx) as lim: diff --git a/stdlib/src/sqlite.rs b/stdlib/src/sqlite.rs index 830c5b581..7eb8f86db 100644 --- a/stdlib/src/sqlite.rs +++ b/stdlib/src/sqlite.rs @@ -2309,11 +2309,10 @@ mod _sqlite { )); } let sql_cstr = sql.to_cstring(vm)?; - let sql_len = sql.byte_len() + 1; let db = connection.db_lock(vm)?; - db.sql_limit(sql_len, vm)?; + db.sql_limit(sql.byte_len(), vm)?; let mut tail = null(); let st = db.prepare(sql_cstr.as_ptr(), &mut tail, vm)?;