]> granicus.if.org Git - python/commitdiff
sha3: let's keep it simple and always allocate enough extra space for uint64_t[20].
authorChristian Heimes <christian@python.org>
Thu, 8 Sep 2016 13:04:38 +0000 (15:04 +0200)
committerChristian Heimes <christian@python.org>
Thu, 8 Sep 2016 13:04:38 +0000 (15:04 +0200)
Modules/_sha3/sha3module.c

index 8d7eff4880da112d698e07aa1c5ef98aaf307a24..04ac6318b251c2b2ce7530b10d415f569cd6a52a 100644 (file)
 #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();
     }