]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-142787: Handle empty sqlite3 blob slices (#142824)
authorA.Ibrahim <abdulrasheedibrahim47@gmail.com>
Thu, 26 Feb 2026 23:40:25 +0000 (23:40 +0000)
committerGitHub <noreply@github.com>
Thu, 26 Feb 2026 23:40:25 +0000 (23:40 +0000)
Lib/test/test_sqlite3/test_dbapi.py
Misc/NEWS.d/next/Library/2025-12-16-13-34-48.gh-issue-142787.wNitJX.rst [new file with mode: 0644]
Modules/_sqlite/blob.c

index 20e39f61e4dedbdf3ce203981a483dece71393f6..73b40e82a96811f38aee622cdd5eda0aee19da1c 100644 (file)
@@ -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 (file)
index 0000000..e928bd2
--- /dev/null
@@ -0,0 +1,2 @@
+Fix assertion failure in :mod:`sqlite3` blob subscript when slicing with\r
+indices that result in an empty slice.
index 4a213f348881b9b4ed5fd30e32e724c98379b354..8dad94556236bd6f5ac79d4a2527595b73c5cc7e 100644 (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);
     }