From: Christian Heimes Date: Thu, 8 Sep 2016 13:04:38 +0000 (+0200) Subject: sha3: let's keep it simple and always allocate enough extra space for uint64_t[20]. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c71ec8aef37f8a72d1dc3237b127f15a32ba0997;p=python sha3: let's keep it simple and always allocate enough extra space for uint64_t[20]. --- diff --git a/Modules/_sha3/sha3module.c b/Modules/_sha3/sha3module.c index 8d7eff4880..04ac6318b2 100644 --- a/Modules/_sha3/sha3module.c +++ b/Modules/_sha3/sha3module.c @@ -114,7 +114,7 @@ #endif #define SHA3_MAX_DIGESTSIZE 64 /* 64 Bytes (512 Bits) for 224 to 512 */ -#define SHA3_LANESIZE 96 /* ExtractLane needs an extra 96 bytes */ +#define SHA3_LANESIZE (20 * 8) /* ExtractLane needs max uint64_t[20] extra. */ #define SHA3_state Keccak_HashInstance #define SHA3_init Keccak_HashInitialize #define SHA3_process Keccak_HashUpdate @@ -605,8 +605,7 @@ _SHAKE_digest(SHA3object *self, unsigned long digestlen, int hex) /* ExtractLane needs at least SHA3_MAX_DIGESTSIZE + SHA3_LANESIZE and * SHA3_LANESIZE extra space. */ - digest = (unsigned char*)PyMem_Malloc(SHA3_LANESIZE + - ((digestlen > SHA3_MAX_DIGESTSIZE) ? digestlen : SHA3_MAX_DIGESTSIZE)); + digest = (unsigned char*)PyMem_Malloc(digestlen + SHA3_LANESIZE); if (digest == NULL) { return PyErr_NoMemory(); }