Skip to content

Commit 2c6000c

Browse files
[3.12] gh-111251: Fix error checking in _blake2 module init (GH-111252) (#111297)
Co-authored-by: Nikita Sobolev <[email protected]>
1 parent 41b2d8c commit 2c6000c

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix :mod:`_blake2` not checking for errors when initializing.

Modules/_blake2/blake2module.c

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ _blake2_free(void *module)
7474
Py_DECREF(x); \
7575
} while(0)
7676

77+
#define ADD_INT_CONST(NAME, VALUE) do { \
78+
if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) { \
79+
return -1; \
80+
} \
81+
} while (0)
82+
7783
static int
7884
blake2_exec(PyObject *m)
7985
{
@@ -95,10 +101,10 @@ blake2_exec(PyObject *m)
95101
ADD_INT(d, "MAX_KEY_SIZE", BLAKE2B_KEYBYTES);
96102
ADD_INT(d, "MAX_DIGEST_SIZE", BLAKE2B_OUTBYTES);
97103

98-
PyModule_AddIntConstant(m, "BLAKE2B_SALT_SIZE", BLAKE2B_SALTBYTES);
99-
PyModule_AddIntConstant(m, "BLAKE2B_PERSON_SIZE", BLAKE2B_PERSONALBYTES);
100-
PyModule_AddIntConstant(m, "BLAKE2B_MAX_KEY_SIZE", BLAKE2B_KEYBYTES);
101-
PyModule_AddIntConstant(m, "BLAKE2B_MAX_DIGEST_SIZE", BLAKE2B_OUTBYTES);
104+
ADD_INT_CONST("BLAKE2B_SALT_SIZE", BLAKE2B_SALTBYTES);
105+
ADD_INT_CONST("BLAKE2B_PERSON_SIZE", BLAKE2B_PERSONALBYTES);
106+
ADD_INT_CONST("BLAKE2B_MAX_KEY_SIZE", BLAKE2B_KEYBYTES);
107+
ADD_INT_CONST("BLAKE2B_MAX_DIGEST_SIZE", BLAKE2B_OUTBYTES);
102108

103109
/* BLAKE2s */
104110
st->blake2s_type = (PyTypeObject *)PyType_FromModuleAndSpec(
@@ -117,14 +123,17 @@ blake2_exec(PyObject *m)
117123
ADD_INT(d, "MAX_KEY_SIZE", BLAKE2S_KEYBYTES);
118124
ADD_INT(d, "MAX_DIGEST_SIZE", BLAKE2S_OUTBYTES);
119125

120-
PyModule_AddIntConstant(m, "BLAKE2S_SALT_SIZE", BLAKE2S_SALTBYTES);
121-
PyModule_AddIntConstant(m, "BLAKE2S_PERSON_SIZE", BLAKE2S_PERSONALBYTES);
122-
PyModule_AddIntConstant(m, "BLAKE2S_MAX_KEY_SIZE", BLAKE2S_KEYBYTES);
123-
PyModule_AddIntConstant(m, "BLAKE2S_MAX_DIGEST_SIZE", BLAKE2S_OUTBYTES);
126+
ADD_INT_CONST("BLAKE2S_SALT_SIZE", BLAKE2S_SALTBYTES);
127+
ADD_INT_CONST("BLAKE2S_PERSON_SIZE", BLAKE2S_PERSONALBYTES);
128+
ADD_INT_CONST("BLAKE2S_MAX_KEY_SIZE", BLAKE2S_KEYBYTES);
129+
ADD_INT_CONST("BLAKE2S_MAX_DIGEST_SIZE", BLAKE2S_OUTBYTES);
124130

125131
return 0;
126132
}
127133

134+
#undef ADD_INT
135+
#undef ADD_INT_CONST
136+
128137
static PyModuleDef_Slot _blake2_slots[] = {
129138
{Py_mod_exec, blake2_exec},
130139
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},

0 commit comments

Comments
 (0)