Skip to content

Commit ea033a3

Browse files
committed
Revert 5cd828a
1 parent 63db1de commit ea033a3

1 file changed

Lines changed: 59 additions & 55 deletions

File tree

Modules/md5module.c

Lines changed: 59 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -24,72 +24,76 @@
2424
#include "hashlib.h"
2525
#include "pycore_strhex.h" // _Py_strhex()
2626

27+
/*[clinic input]
28+
module _md5
29+
class MD5Type "MD5object *" "&PyType_Type"
30+
[clinic start generated code]*/
31+
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=6e5261719957a912]*/
32+
2733
/* The MD5 block size and message digest sizes, in bytes */
2834

2935
#define MD5_BLOCKSIZE 64
3036
#define MD5_DIGESTSIZE 16
3137

3238
#include "_hacl/Hacl_Hash_MD5.h"
3339

40+
3441
typedef struct {
3542
PyObject_HEAD
3643
HASHLIB_LOCK_HEAD
37-
Hacl_Hash_MD5_state_t *state;
44+
Hacl_Hash_MD5_state_t *hash_state;
3845
} MD5object;
3946

4047
#define _MD5object_CAST(op) ((MD5object *)(op))
4148

49+
#include "clinic/md5module.c.h"
50+
51+
4252
typedef struct {
43-
PyTypeObject *md5_type;
44-
} md5module_state;
53+
PyTypeObject* md5_type;
54+
} MD5State;
4555

46-
static inline md5module_state *
47-
get_md5module_state(PyObject *module)
56+
static inline MD5State*
57+
md5_get_state(PyObject *module)
4858
{
4959
void *state = PyModule_GetState(module);
5060
assert(state != NULL);
51-
return (md5module_state *)state;
61+
return (MD5State *)state;
5262
}
5363

54-
/*[clinic input]
55-
module _md5
56-
class MD5Type "MD5object *" "&PyType_Type"
57-
[clinic start generated code]*/
58-
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=6e5261719957a912]*/
59-
60-
#include "clinic/md5module.c.h"
61-
6264
static MD5object *
63-
newMD5object(md5module_state *st)
65+
newMD5object(MD5State * st)
6466
{
65-
MD5object *self = PyObject_GC_New(MD5object, st->md5_type);
66-
if (self == NULL) {
67+
MD5object *md5 = PyObject_GC_New(MD5object, st->md5_type);
68+
if (!md5) {
6769
return NULL;
6870
}
69-
HASHLIB_INIT_MUTEX(self);
70-
PyObject_GC_Track(self);
71-
return self;
71+
HASHLIB_INIT_MUTEX(md5);
72+
73+
PyObject_GC_Track(md5);
74+
return md5;
7275
}
7376

7477
/* Internal methods for a hash object */
7578
static int
76-
MD5_traverse(PyObject *op, visitproc visit, void *arg)
79+
MD5_traverse(PyObject *ptr, visitproc visit, void *arg)
7780
{
78-
Py_VISIT(Py_TYPE(op));
81+
Py_VISIT(Py_TYPE(ptr));
7982
return 0;
8083
}
8184

8285
static void
8386
MD5_dealloc(PyObject *op)
8487
{
85-
MD5object *self = _MD5object_CAST(op);
86-
Hacl_Hash_MD5_free(self->state);
88+
MD5object *ptr = _MD5object_CAST(op);
89+
Hacl_Hash_MD5_free(ptr->hash_state);
8790
PyTypeObject *tp = Py_TYPE(op);
88-
PyObject_GC_UnTrack(self);
89-
PyObject_GC_Del(self);
91+
PyObject_GC_UnTrack(ptr);
92+
PyObject_GC_Del(ptr);
9093
Py_DECREF(tp);
9194
}
9295

96+
9397
/* External methods for a hash object */
9498

9599
/*[clinic input]
@@ -104,28 +108,28 @@ static PyObject *
104108
MD5Type_copy_impl(MD5object *self, PyTypeObject *cls)
105109
/*[clinic end generated code: output=bf055e08244bf5ee input=d89087dcfb2a8620]*/
106110
{
107-
md5module_state *st = PyType_GetModuleState(cls);
111+
MD5State *st = PyType_GetModuleState(cls);
108112

109-
MD5object *copy = newMD5object(st);
110-
if (copy == NULL) {
113+
MD5object *newobj;
114+
if ((newobj = newMD5object(st)) == NULL) {
111115
return NULL;
112116
}
113117

114118
ENTER_HASHLIB(self);
115-
copy->state = Hacl_Hash_MD5_copy(self->state);
119+
newobj->hash_state = Hacl_Hash_MD5_copy(self->hash_state);
116120
LEAVE_HASHLIB(self);
117-
if (copy->state == NULL) {
118-
Py_DECREF(copy);
121+
if (newobj->hash_state == NULL) {
122+
Py_DECREF(self);
119123
return PyErr_NoMemory();
120124
}
121-
return (PyObject *)copy;
125+
return (PyObject *)newobj;
122126
}
123127

124128
static void
125129
md5_digest_compute_cond_lock(MD5object *self, uint8_t *digest)
126130
{
127131
ENTER_HASHLIB(self);
128-
Hacl_Hash_MD5_digest(self->state, digest);
132+
Hacl_Hash_MD5_digest(self->hash_state, digest);
129133
LEAVE_HASHLIB(self);
130134
}
131135

@@ -183,7 +187,7 @@ md5_update_state_with_lock(MD5object *self, uint8_t *buf, Py_ssize_t len)
183187
{
184188
Py_BEGIN_ALLOW_THREADS
185189
PyMutex_Lock(&self->mutex); // unconditionally acquire a lock
186-
_hacl_md5_update(self->state, buf, len);
190+
_hacl_md5_update(self->hash_state, buf, len);
187191
PyMutex_Unlock(&self->mutex);
188192
Py_END_ALLOW_THREADS
189193
}
@@ -192,7 +196,7 @@ static void
192196
md5_update_state_cond_lock(MD5object *self, uint8_t *buf, Py_ssize_t len)
193197
{
194198
ENTER_HASHLIB(self); // conditionally acquire a lock
195-
_hacl_md5_update(self->state, buf, len);
199+
_hacl_md5_update(self->hash_state, buf, len);
196200
LEAVE_HASHLIB(self);
197201
}
198202

@@ -240,7 +244,7 @@ static PyMethodDef MD5_methods[] = {
240244
MD5TYPE_DIGEST_METHODDEF
241245
MD5TYPE_HEXDIGEST_METHODDEF
242246
MD5TYPE_UPDATE_METHODDEF
243-
{NULL, NULL} /* sentinel */
247+
{NULL, NULL} /* sentinel */
244248
};
245249

246250
static PyObject *
@@ -265,20 +269,20 @@ static PyGetSetDef MD5_getseters[] = {
265269
{"block_size", MD5_get_block_size, NULL, NULL, NULL},
266270
{"name", MD5_get_name, NULL, NULL, NULL},
267271
{"digest_size", md5_get_digest_size, NULL, NULL, NULL},
268-
{NULL} /* sentinel */
272+
{NULL} /* Sentinel */
269273
};
270274

271275
static PyType_Slot md5_type_slots[] = {
272276
{Py_tp_dealloc, MD5_dealloc},
273277
{Py_tp_methods, MD5_methods},
274278
{Py_tp_getset, MD5_getseters},
275279
{Py_tp_traverse, MD5_traverse},
276-
{0, 0}
280+
{0,0}
277281
};
278282

279283
static PyType_Spec md5_type_spec = {
280284
.name = "_md5.md5",
281-
.basicsize = sizeof(MD5object),
285+
.basicsize = sizeof(MD5object),
282286
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION |
283287
Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_HAVE_GC),
284288
.slots = md5_type_slots
@@ -307,15 +311,15 @@ _md5_md5_impl(PyObject *module, PyObject *data, int usedforsecurity,
307311
return NULL;
308312
}
309313

310-
md5module_state *st = get_md5module_state(module);
311-
MD5object *self = newMD5object(st);
312-
if (self == NULL) {
314+
MD5object *new;
315+
MD5State *st = md5_get_state(module);
316+
if ((new = newMD5object(st)) == NULL) {
313317
return NULL;
314318
}
315319

316-
self->state = Hacl_Hash_MD5_malloc();
317-
if (self->state == NULL) {
318-
Py_DECREF(self);
320+
new->hash_state = Hacl_Hash_MD5_malloc();
321+
if (new->hash_state == NULL) {
322+
Py_DECREF(new);
319323
return PyErr_NoMemory();
320324
}
321325

@@ -326,19 +330,19 @@ _md5_md5_impl(PyObject *module, PyObject *data, int usedforsecurity,
326330
/* Do not use self->mutex here as this is the constructor
327331
* where it is not yet possible to have concurrent access. */
328332
Py_BEGIN_ALLOW_THREADS
329-
_hacl_md5_update(self->state, buf.buf, buf.len);
333+
_hacl_md5_update(new->hash_state, buf.buf, buf.len);
330334
Py_END_ALLOW_THREADS
331335
}
332336
else {
333-
_hacl_md5_update(self->state, buf.buf, buf.len);
337+
_hacl_md5_update(new->hash_state, buf.buf, buf.len);
334338
}
335339
PyBuffer_Release(&buf);
336340
}
337341

338-
return (PyObject *)self;
342+
return (PyObject *)new;
339343

340344
error:
341-
Py_XDECREF(self);
345+
Py_XDECREF(new);
342346
return NULL;
343347
}
344348

@@ -347,21 +351,21 @@ _md5_md5_impl(PyObject *module, PyObject *data, int usedforsecurity,
347351

348352
static struct PyMethodDef MD5_functions[] = {
349353
_MD5_MD5_METHODDEF
350-
{NULL, NULL} /* sentinel */
354+
{NULL, NULL} /* Sentinel */
351355
};
352356

353357
static int
354358
_md5_traverse(PyObject *module, visitproc visit, void *arg)
355359
{
356-
md5module_state *state = get_md5module_state(module);
360+
MD5State *state = md5_get_state(module);
357361
Py_VISIT(state->md5_type);
358362
return 0;
359363
}
360364

361365
static int
362366
_md5_clear(PyObject *module)
363367
{
364-
md5module_state *state = get_md5module_state(module);
368+
MD5State *state = md5_get_state(module);
365369
Py_CLEAR(state->md5_type);
366370
return 0;
367371
}
@@ -376,7 +380,7 @@ _md5_free(void *module)
376380
static int
377381
md5_exec(PyObject *m)
378382
{
379-
md5module_state *st = get_md5module_state(m);
383+
MD5State *st = md5_get_state(m);
380384

381385
st->md5_type = (PyTypeObject *)PyType_FromModuleAndSpec(
382386
m, &md5_type_spec, NULL);
@@ -402,7 +406,7 @@ static PyModuleDef_Slot _md5_slots[] = {
402406
static struct PyModuleDef _md5module = {
403407
PyModuleDef_HEAD_INIT,
404408
.m_name = "_md5",
405-
.m_size = sizeof(md5module_state),
409+
.m_size = sizeof(MD5State),
406410
.m_methods = MD5_functions,
407411
.m_slots = _md5_slots,
408412
.m_traverse = _md5_traverse,

0 commit comments

Comments
 (0)