From: A.Ibrahim Date: Thu, 26 Feb 2026 23:40:25 +0000 (+0000) Subject: gh-142787: Handle empty sqlite3 blob slices (#142824) X-Git-Tag: v3.15.0a7~138 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06b0920f1292690a22ab2b271dfefe2c63cacf07;p=thirdparty%2FPython%2Fcpython.git gh-142787: Handle empty sqlite3 blob slices (#142824) --- diff --git a/Lib/test/test_sqlite3/test_dbapi.py b/Lib/test/test_sqlite3/test_dbapi.py index 20e39f61e4de..73b40e82a968 100644 --- a/Lib/test/test_sqlite3/test_dbapi.py +++ b/Lib/test/test_sqlite3/test_dbapi.py @@ -1379,6 +1379,11 @@ class BlobTests(unittest.TestCase): 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]) diff --git a/Misc/NEWS.d/next/Library/2025-12-16-13-34-48.gh-issue-142787.wNitJX.rst b/Misc/NEWS.d/next/Library/2025-12-16-13-34-48.gh-issue-142787.wNitJX.rst new file mode 100644 index 000000000000..e928bd2cac72 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-12-16-13-34-48.gh-issue-142787.wNitJX.rst @@ -0,0 +1,2 @@ +Fix assertion failure in :mod:`sqlite3` blob subscript when slicing with +indices that result in an empty slice. diff --git a/Modules/_sqlite/blob.c b/Modules/_sqlite/blob.c index 4a213f348881..8dad94556236 100644 --- a/Modules/_sqlite/blob.c +++ b/Modules/_sqlite/blob.c @@ -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); }