From a063b1cd7596d8b3b0847bd207be07ceba3f0b00 Mon Sep 17 00:00:00 2001 From: "Erlend E. Aasland" Date: Fri, 15 Apr 2022 16:46:29 +0200 Subject: [PATCH] gh-69093: improve sqlite3.Connection.blobopen() error handling Unless sqlite3_blob_open() returns SQLITE_MISUSE, the error code and message are available on the connection object. This means we have to handle SQLITE_MISUSE error messages explicitly. --- Modules/_sqlite/connection.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 85fb128fc7f1c0..0028cf72f997a9 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -475,7 +475,11 @@ blobopen_impl(pysqlite_Connection *self, const char *table, const char *col, rc = sqlite3_blob_open(self->db, name, table, col, row, !readonly, &blob); Py_END_ALLOW_THREADS - if (rc != SQLITE_OK) { + if (rc == SQLITE_MISUSE) { + PyErr_Format(self->state->InterfaceError, sqlite3_errstr(rc)); + return NULL; + } + else if (rc != SQLITE_OK) { _pysqlite_seterror(self->state, self->db); return NULL; }