https://github.com/python/cpython/commit/379ab856f59423c570333403a7d5d72f3ea82d52
commit: 379ab856f59423c570333403a7d5d72f3ea82d52
branch: main
author: Erlend E. Aasland <[email protected]>
committer: erlend-aasland <[email protected]>
date: 2025-01-27T18:16:19+01:00
summary:

gh-129346: Handle allocation errors for SQLite aggregate context (#129347)

files:
A Misc/NEWS.d/next/Library/2025-01-27-14-05-19.gh-issue-129346.gZRd3g.rst
M Modules/_sqlite/connection.c

diff --git 
a/Misc/NEWS.d/next/Library/2025-01-27-14-05-19.gh-issue-129346.gZRd3g.rst 
b/Misc/NEWS.d/next/Library/2025-01-27-14-05-19.gh-issue-129346.gZRd3g.rst
new file mode 100644
index 00000000000000..b5377277f6c51c
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-01-27-14-05-19.gh-issue-129346.gZRd3g.rst
@@ -0,0 +1,2 @@
+In :mod:`sqlite3`, handle out-of-memory when creating user-defined SQL
+functions.
diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c
index fc03e4a085c179..62598ecc864120 100644
--- a/Modules/_sqlite/connection.c
+++ b/Modules/_sqlite/connection.c
@@ -958,6 +958,11 @@ step_callback(sqlite3_context *context, int argc, 
sqlite3_value **params)
     assert(ctx != NULL);
 
     aggregate_instance = (PyObject**)sqlite3_aggregate_context(context, 
sizeof(PyObject*));
+    if (aggregate_instance == NULL) {
+        (void)PyErr_NoMemory();
+        set_sqlite_error(context, "unable to allocate SQLite aggregate 
context");
+        goto error;
+    }
     if (*aggregate_instance == NULL) {
         *aggregate_instance = PyObject_CallNoArgs(ctx->callable);
         if (!*aggregate_instance) {

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to