gh-142787: Handle empty sqlite3 blob slices (#142824)

This commit is contained in:
A.Ibrahim 2026-02-26 23:40:25 +00:00 committed by GitHub
parent 3fc945df22
commit 06b0920f12
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 0 deletions

View file

@ -1379,6 +1379,11 @@ def test_blob_get_slice(self):
def test_blob_get_empty_slice(self):
self.assertEqual(self.blob[5:5], b"")
def test_blob_get_empty_slice_oob_indices(self):
self.cx.execute("insert into test(b) values (?)", (b"abc",))
with self.cx.blobopen("test", "b", 2) as blob:
self.assertEqual(blob[5:-5], b"")
def test_blob_get_slice_negative_index(self):
self.assertEqual(self.blob[5:-5], self.data[5:-5])

View file

@ -0,0 +1,2 @@
Fix assertion failure in :mod:`sqlite3` blob subscript when slicing with
indices that result in an empty slice.

View file

@ -439,6 +439,10 @@ subscript_slice(pysqlite_Blob *self, PyObject *item)
return NULL;
}
if (len == 0) {
return PyBytes_FromStringAndSize(NULL, 0);
}
if (step == 1) {
return read_multiple(self, len, start);
}