]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-111251: Fix error checking in _blake2 module init (GH-111252) (#111298)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 10 Nov 2023 14:43:51 +0000 (15:43 +0100)
committerGitHub <noreply@github.com>
Fri, 10 Nov 2023 14:43:51 +0000 (14:43 +0000)
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
Misc/NEWS.d/next/Library/2023-10-24-12-09-46.gh-issue-111251.urFYtn.rst [new file with mode: 0644]
Modules/_blake2/blake2module.c

diff --git a/Misc/NEWS.d/next/Library/2023-10-24-12-09-46.gh-issue-111251.urFYtn.rst b/Misc/NEWS.d/next/Library/2023-10-24-12-09-46.gh-issue-111251.urFYtn.rst
new file mode 100644 (file)
index 0000000..3a87cb2
--- /dev/null
@@ -0,0 +1 @@
+Fix :mod:`_blake2` not checking for errors when initializing.
index 44d783b40d0453905a04f510f0d93e46e1c0c6b7..93478f5c8bda0de8e9f650be249a63fc77f1ca28 100644 (file)
@@ -74,6 +74,12 @@ _blake2_free(void *module)
     Py_DECREF(x); \
 } while(0)
 
+#define ADD_INT_CONST(NAME, VALUE) do { \
+    if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) { \
+        return -1; \
+    } \
+} while (0)
+
 static int
 blake2_exec(PyObject *m)
 {
@@ -95,10 +101,10 @@ blake2_exec(PyObject *m)
     ADD_INT(d, "MAX_KEY_SIZE", BLAKE2B_KEYBYTES);
     ADD_INT(d, "MAX_DIGEST_SIZE", BLAKE2B_OUTBYTES);
 
-    PyModule_AddIntConstant(m, "BLAKE2B_SALT_SIZE", BLAKE2B_SALTBYTES);
-    PyModule_AddIntConstant(m, "BLAKE2B_PERSON_SIZE", BLAKE2B_PERSONALBYTES);
-    PyModule_AddIntConstant(m, "BLAKE2B_MAX_KEY_SIZE", BLAKE2B_KEYBYTES);
-    PyModule_AddIntConstant(m, "BLAKE2B_MAX_DIGEST_SIZE", BLAKE2B_OUTBYTES);
+    ADD_INT_CONST("BLAKE2B_SALT_SIZE", BLAKE2B_SALTBYTES);
+    ADD_INT_CONST("BLAKE2B_PERSON_SIZE", BLAKE2B_PERSONALBYTES);
+    ADD_INT_CONST("BLAKE2B_MAX_KEY_SIZE", BLAKE2B_KEYBYTES);
+    ADD_INT_CONST("BLAKE2B_MAX_DIGEST_SIZE", BLAKE2B_OUTBYTES);
 
     /* BLAKE2s */
     st->blake2s_type = (PyTypeObject *)PyType_FromModuleAndSpec(
@@ -117,14 +123,17 @@ blake2_exec(PyObject *m)
     ADD_INT(d, "MAX_KEY_SIZE", BLAKE2S_KEYBYTES);
     ADD_INT(d, "MAX_DIGEST_SIZE", BLAKE2S_OUTBYTES);
 
-    PyModule_AddIntConstant(m, "BLAKE2S_SALT_SIZE", BLAKE2S_SALTBYTES);
-    PyModule_AddIntConstant(m, "BLAKE2S_PERSON_SIZE", BLAKE2S_PERSONALBYTES);
-    PyModule_AddIntConstant(m, "BLAKE2S_MAX_KEY_SIZE", BLAKE2S_KEYBYTES);
-    PyModule_AddIntConstant(m, "BLAKE2S_MAX_DIGEST_SIZE", BLAKE2S_OUTBYTES);
+    ADD_INT_CONST("BLAKE2S_SALT_SIZE", BLAKE2S_SALTBYTES);
+    ADD_INT_CONST("BLAKE2S_PERSON_SIZE", BLAKE2S_PERSONALBYTES);
+    ADD_INT_CONST("BLAKE2S_MAX_KEY_SIZE", BLAKE2S_KEYBYTES);
+    ADD_INT_CONST("BLAKE2S_MAX_DIGEST_SIZE", BLAKE2S_OUTBYTES);
 
     return 0;
 }
 
+#undef ADD_INT
+#undef ADD_INT_CONST
+
 static PyModuleDef_Slot _blake2_slots[] = {
     {Py_mod_exec, blake2_exec},
     {0, NULL}