Skip to content

Commit ef6c318

Browse files
committed
gh-129813, PEP 782: Use PyBytesWriter in _sha3
Replace PyBytes_FromStringAndSize(NULL, size) with the new public PyBytesWriter API.
1 parent 32b2c5d commit ef6c318

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

Modules/sha3module.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -509,14 +509,19 @@ _sha3_shake_128_digest_impl(SHA3object *self, Py_ssize_t length)
509509
if (length == 0) {
510510
return Py_GetConstant(Py_CONSTANT_EMPTY_BYTES);
511511
}
512-
513512
CHECK_HACL_UINT32_T_LENGTH(length);
514-
PyObject *digest = PyBytes_FromStringAndSize(NULL, length);
515-
uint8_t *buffer = (uint8_t *)PyBytes_AS_STRING(digest);
513+
514+
PyBytesWriter *writer = PyBytesWriter_Create(length);
515+
if (writer == NULL) {
516+
return NULL;
517+
}
518+
uint8_t *buffer = (uint8_t *)PyBytesWriter_GetData(writer);
519+
516520
HASHLIB_ACQUIRE_LOCK(self);
517521
(void)Hacl_Hash_SHA3_squeeze(self->hash_state, buffer, (uint32_t)length);
518522
HASHLIB_RELEASE_LOCK(self);
519-
return digest;
523+
524+
return PyBytesWriter_Finish(writer);
520525
}
521526

522527

0 commit comments

Comments
 (0)