Skip to content

Commit 57bdf35

Browse files
authored
Enforce valid UTF-8 encoding for sqlite collation names (#6015)
* Make public `PyStr::ensure_valid_utf8` * Enforce valid UTF-8 encoding for sqlite collation names
1 parent bbe98dd commit 57bdf35

File tree

3 files changed

+2
-3
lines changed

3 files changed

+2
-3
lines changed

Lib/test/test_sqlite3/test_regression.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,8 +263,6 @@ def test_connection_call(self):
263263
"""
264264
self.assertRaises(TypeError, self.con, b"select 1")
265265

266-
# TODO: RUSTPYTHON
267-
@unittest.expectedFailure
268266
def test_collation(self):
269267
def collation_cb(a, b):
270268
return 1

stdlib/src/sqlite.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,7 @@ mod _sqlite {
11631163
callable: PyObjectRef,
11641164
vm: &VirtualMachine,
11651165
) -> PyResult<()> {
1166+
name.ensure_valid_utf8(vm)?;
11661167
let name = name.to_cstring(vm)?;
11671168
let db = self.db_lock(vm)?;
11681169
let Some(data) = CallbackData::new(callable.clone(), vm) else {

vm/src/builtins/str.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ impl PyStr {
457457
self.data.as_str()
458458
}
459459

460-
fn ensure_valid_utf8(&self, vm: &VirtualMachine) -> PyResult<()> {
460+
pub fn ensure_valid_utf8(&self, vm: &VirtualMachine) -> PyResult<()> {
461461
if self.is_utf8() {
462462
Ok(())
463463
} else {

0 commit comments

Comments
 (0)